SIMULATIONDERESEAUX
BENJAMINGHIS
MATTHIEUCHARPENTIER
T2TELECOM,S4,MARS2008,ENSEIRB
Professeur:N.MBAREK
ghis@enseirb.fr | charpenm@enseirb.fr
Sommairedesfigures
Figure1:Rseausimuler................................................................................................................. 3
Figure2:TraficCBRentreN0etN1 ................................................................................................... 4
Figure3:LienFullduplexentrelesnudsN1etN2......................................................................... 5
Figure4:UtilisationdeNAM ............................................................................................................. 5
Figure5:Figuresimuler .................................................................................................................. 6
Figure6:TrafficCBRetTCP ............................................................................................................... 8
Figure7:Pertedepaquetlorsdelmissiondepaquets .................................................................. 8
Figure8:TraficTCPavecaccusderception................................................................................... 9
Figure9:Rseausimuler................................................................................................................. 9
Figure10:pertedetraficentrelesnudsN2,N4etN7 ................................................................ 11
Figure11:Redirectionduflux.......................................................................................................... 11
Figure12:Fluxnormaldutrafic....................................................................................................... 12
Figure13:RupturedulienentrelesnudsN4etN7 ..................................................................... 12
Figure14:Repriseducoursnormaldutrafic................................................................................... 13
Figure15:Rseausimuler............................................................................................................. 13
Figure16:Tempsdenregistrementde0.1seconde ....................................................................... 15
Figure17:Tempsdenregistrementde0.5seconde ....................................................................... 15
Figure18:Tempsdenregistrementde1seconde .......................................................................... 16
TPNS2
ENSEIRBMars2008
Page2/16
MatthieuCHARPENTIER
BenjaminGHIS
ButduTP:
Se familiariser avec le simulateur de rseaux NS2 en dcouvrant les fonctionnalits
quoffrecederniertraversltudeetllaborationdescriptsquifontappeldesoutilscomme
namquivisualiselasimulationouencorexgraphquipermetdereprsenterlestracesdela
simulationsousformedecourbes.
I. Exercice1:
I.1. Enonc:
Danscetexerciceonseproposedesimulerlerseausuivant:
Figure1:Rseausimuler
I.2. Ralisation
#creationd'uninstancedel'objetsimulator
setns[newSimulator]
#ouvrirlefichiertracepournam
setnf[openout.namw]
$nsnamtraceall$nf
#definirlaproceduredeterminaisondelasimulation
procfinish{}{
globalnsnf
$nsflushtrace
#fermerlefichiertrace
close$nf
#executerlenamavecenentreelefichiertrace
execnamout.nam&
exit0
}
#creationdesneoudsn0etn1
setn0[$nsnode]
setn1[$nsnode]
#linkdesnoeuds
TPNS2
ENSEIRBMars2008
Page3/16
MatthieuCHARPENTIER
BenjaminGHIS
$nsduplexlink$n0$n11Mb10msDropTail
#creationdesagents
settransp0[newAgent/UDP]
$nsattachagent$n0$transp0
#sourcedetraffic
setcbr[newApplication/Traffic/CBR]
$cbrsetpacketSize_500
$cbrsetinterval_0.005
#connectiondeCBRavecUDP
$cbrattachagent$transp0
#creationdel'agentNULL
settransp1[newAgent/Null]
$nsattachagent$n1$transp1
#connexionNULLetUDP
$nsconnect$transp0$transp1
#debutdesimulation
$nsat1"$cbrstart"
#findesimulation
$nsat4.5"$cbrstop"
#appelerlaproceduredeterminaisonapresuntempst
$nsat5.0"finish"
#executerlasimulation
$nsrun
I.3. Observation
A1seconde,letraficCBRapparaitentrelenudN0etN1.
Figure2:TraficCBRentreN0etN1
On observe un trafic sans perte entre les deux nuds. La simulation se termine
normalementaprs5secondes.
TPNS2
ENSEIRBMars2008
Page4/16
MatthieuCHARPENTIER
BenjaminGHIS
I.4. Explication
Onutiliseunlienduplexdecapacit1Mbetonfaittransiterdespaquetsde500octets.
Figure3:LienFullduplexentrelesnudsN1etN2
Ilnyadoncpasdeproblmedecongestiondanslerseausimul.Lutilisationdeloutil
namestassezintuitive,lelogicielselanceparlacommandens:
Figure4:UtilisationdeNAM
Pour construire le scnario sans utiliser de script, il a fallu utiliser les outils offerts par
nam:Constructiondenuds,deliens,dagentsLesparamtressontentrslaidedunclic
droit directement sur les objets. A noter, que ce logiciel est assez buge malgr que son
maniementsoitassezintuitif.
TPNS2
ENSEIRBMars2008
Page5/16
MatthieuCHARPENTIER
BenjaminGHIS
II. Exercice2:
II.1. Enonc:
Danscetexerciceonseproposedesimulerlerseausuivant:
Figure5:Figuresimuler
II.2. Ralisation
#creationd'uninstancedel'objetsimulator
setns[newSimulator]
#ouvrirlefichiertracepournam
setnf[openout.namw]
$nsnamtraceall$nf
#definirlaproceduredeterminaisondelasimulation
procfinish{}{
globalnsnf
$nsflushtrace
#fermerlefichiertrace
close$nf
#executerlenamavecenentreelefichiertrace
execnamout.nam&
exit0
}
#creationdesnoeudsn0an3
setNodeNb3
seti0
for{seti0}{$i<=$NodeNb}{seti[expr$i+1]}{setn($i)[$nsnode]}
#linkdesnoeuds
$nsduplexlink$n(0)$n(2)2Mb10msDropTail
$nsduplexlink$n(1)$n(2)2Mb10msDropTail
$nsduplexlink$n(2)$n(3)1.7Mb20msDropTail
#creationdesagents
settransp0[newAgent/TCP]
$nsattachagent$n(0)$transp0
settransp1[newAgent/UDP]
$nsattachagent$n(1)$transp1
settransp31[newAgent/TCPSink]
$nsattachagent$n(3)$transp31
TPNS2
ENSEIRBMars2008
Page6/16
MatthieuCHARPENTIER
BenjaminGHIS
settransp32[newAgent/Null]
$nsattachagent$n(3)$transp32
#sourcedetraffic
setcbr[newApplication/Traffic/CBR]
$cbrsetpacketSize_1000
$cbrsetrate_1Mb
setftp[newApplication/FTP]
#connectiondeCBRavecUDP
$cbrattachagent$transp1
#connectiondeFTPavecTCP
$ftpattachagent$transp0
#connexionNULLetUDP
$nsconnect$transp32$transp1
#connexionTCPetSink
$nsconnect$transp0$transp31
#tailledebufferentren2etn3
$nsqueuelimit$n(2)$n(3)10
#Positionnementdesnoeuds
$nsduplexlinkop$n(0)$n(2)orientrightdown
$nsduplexlinkop$n(2)$n(1)orientleftdown
$nsduplexlinkop$n(2)$n(3)orientright
#Colorationdesflux
$nscolor1Blue
$transp1setclass_1
$nscolor2Red
$transp0setclass_2
#debutdesimulation
$nsat0.1"$cbrstart"
#findesimulation
$nsat4.5"$cbrstop"
#debutdesimulation
$nsat1"$ftpstart"
#findesimulation
$nsat4.0"$ftpstop"
#appelerlaproceduredeterminaisonapresuntempst
$nsat5.0"finish"
#executerlasimulation
$nsrun
TPNS2
ENSEIRBMars2008
Page7/16
MatthieuCHARPENTIER
BenjaminGHIS
II.3. Observation
A0.1seconde,letraficCBRapparaitentrelenudN1etlenudN3.Puisauboutde1s,
cestletraficduftpquiapparait.
Figure6:TrafficCBRetTCP
Cependant,onremarqueunepertedepaquetsuninstantdonnquandlesdeuxtrafics
ontlieusimultanment.
Figure7:Pertedepaquetlorsdelmissiondepaquets
TPNS2
ENSEIRBMars2008
Page8/16
MatthieuCHARPENTIER
BenjaminGHIS
II.4. Explication
OnutiliseuntraficdetypeTCPSinkentrelesnudsN0etN3.Ilyadoncrgulirement
desaccussderception.
Figure8:TraficTCPavecaccusderception
Dans le protocole TCP, une fentre dmission est utilise. Quand les paquets sont reus
correctement,latailledecettefentreestmultipliepardeux.Lorsquunacquittementnestpas
rceptionn,latailledelafentrerevientcellededpart:lalgorithmeSlowStartestutilis
ici.Onobservebiencephnomnedansnotreexercice.Auninstantdonn,ilnyaplusrception
despaquetscausedunproblmedecongestion.Lespaquetsalorssurlerseausontperduset
onrevientalorsunefentredmissionmoinsimportante.
III. Exercice3:
III.1. Enonc:
Danscetexerciceonseproposedecrerlerseausuivant:
Figure9:Rseausimuler
TPNS2
ENSEIRBMars2008
Page9/16
MatthieuCHARPENTIER
BenjaminGHIS
III.2. Ralisation:
setns[newSimulator]
setnf[openout.namw]
$nsnamtraceall$nf
procfinish{}{
globalnsnf
$nsflushtrace
close$nf
execnamout.nam&
exit0
}
setn0[$nsnode]
setn1[$nsnode]
setn2[$nsnode]
setn3[$nsnode]
setn4[$nsnode]
setn5[$nsnode]
setn6[$nsnode]
setn7[$nsnode]
$nsduplexlink$n0$n210Mb10msDropTail
$nsduplexlink$n1$n210Mb10msDropTail
$nsduplexlink$n2$n410Mb10msDropTail
$nsduplexlink$n2$n310Mb10msDropTail
$nsduplexlink$n3$n510Mb10msDropTail
$nsduplexlink$n5$n610Mb10msDropTail
$nsduplexlink$n6$n710Mb10msDropTail
$nsduplexlink$n7$n410Mb10msDropTail
settransp0[newAgent/UDP]
$nsattachagent$n0$transp0
setcbr0[newApplication/Traffic/CBR]
$cbr0setpacketSize_500
$cbr0setinterval_0.005
$cbr0attachagent$transp0
settransp1[newAgent/UDP]
$nsattachagent$n1$transp1
setcbr1[newApplication/Traffic/CBR]
$cbr1setpacketSize_500
$cbr1setinterval_0.005
$cbr1attachagent$transp1
settranspnul[newAgent/Null]
$nsattachagent$n7$transpnul
$nsconnect$transp1$transpnul
$nsconnect$transp0$transpnul
$nscolor0Blue
$nscolor1Red
$transp0setclass_0
$transp1setclass_1
$nsrtprotoDV
$nsrtmodelat4.0down$n4$n7
$nsrtmodelat5.0up$n4$n7
$nsat1"$cbr0start"
$nsat7"$cbr0stop"
$nsat2"$cbr1start"
$nsat6"$cbr1stop"
TPNS2
ENSEIRBMars2008
Page10/16
MatthieuCHARPENTIER
BenjaminGHIS
$nsat8"finish"
$nsrun
III.3. Observation:
AudpartapparaitletraficentrelenudN0etN71s,puisletraficentrelesnudsN1
etN7apparait.LetraficdespaquetspasseaudpartentrelenudN4.Cependant,onremarque
unepertedepaquetslorsdelarupturedulienentrelesnudsN4etN7.
Figure10:pertedetraficentrelesnudsN2,N4etN7
LefluxdespaquetsvaalorspasserparlesnudsN3,N5,N6etN7.
Figure11:Redirectionduflux
OnretrouveraensuiteunfluxpassantparlenudN4lorsdurtablissementdulienentre
lesnudsN4etN7.
TPNS2
ENSEIRBMars2008
Page11/16
MatthieuCHARPENTIER
BenjaminGHIS
III.4. Explication
Le routage utilis dans cet exercice est un routage dynamique. Il y a donc diffusion
priodique sur le rseau des informations de routage. Les quipements changent leurs
informationsderoutageetlestablesderoutagesontconstammentmisentjour.Audpart,le
traficpasseparlenudN4carcestlepluscourtcheminpourarriverdestinationdunudN7.
Figure12:Fluxnormaldutrafic
Lors de la rupture du lien entre les nuds N4 et N7, linformation sur la rupture est
transmisetouslesnudsetdoncilyachangementdechemindutrafic.
Figure13:RupturedulienentrelesnudsN4etN7
SeulslespaquetsquisetrouvaientdjentrelesnudsN2,N4etN7serontperdus.Enfin
aurtablissementdulien,linformationestdenouveautransmiseestletraficreprendsoncourt
normalparlenudN4.
TPNS2
ENSEIRBMars2008
Page12/16
MatthieuCHARPENTIER
BenjaminGHIS
Figure14:Repriseducoursnormaldutrafic
IV. Exercice4:
IV.1. Enonc:
Danscetexerciceonseproposedecrerlerseausuivant:
Figure15:Rseausimuler
IV.2. Ralisation
setns[newSimulator]
setf0[openout0.trw]
setf1[openout1.trw]
setf2[openout2.trw]
setnf[openout.namw]
$nsnamtraceall$nf
setn0[$nsnode]
setn1[$nsnode]
setn2[$nsnode]
setn3[$nsnode]
setn4[$nsnode]
TPNS2
ENSEIRBMars2008
Page13/16
MatthieuCHARPENTIER
BenjaminGHIS
$nsduplexlink$n0$n31Mb100msDropTail
$nsduplexlink$n1$n31Mb100msDropTail
$nsduplexlink$n2$n31Mb100msDropTail
$nsduplexlink$n3$n41Mb100msDropTail
procfinish{}{
globalf0f1f2nfns
$nsflushtrace
close$nf
close$f0
close$f1
close$f2
execnamout.nam&
exit0
}
procattachexpootraffic{nodesinksizeburstidlerate}{
setns[Simulatorinstance]
setsource[newAgent/UDP]
$nsattachagent$node$source
settraffic[newApplication/Traffic/Exponential]
$trafficsetpacketSize_$size
$trafficsetburst_time_$burst
$trafficsetidle_time_$idle
$trafficsetrate_$rate
$trafficattachagent$source
$nsconnect$source$sink
return$traffic
procrecord{}{
globalsink0sink1sink2f0f1f2
setns[Simulatorinstance]
settime0.5
setbw0[$sink0setbytes_]
setbw1[$sink1setbytes_]
setbw2[$sink2setbytes_]
setnow[$nsnow]
puts$f0"$now[expr$bw0/$time*8/1000000]"
puts$f1"$now[expr$bw1/$time*8/1000000]"
puts$f2"$now[expr$bw2/$time*8/1000000]"
$sink0setbytes_0
$sink1setbytes_0
$sink2setbytes_0
$nsat[expr$now+$time]"record"
}
setsink0[newAgent/LossMonitor]
setsink1[newAgent/LossMonitor]
setsink2[newAgent/LossMonitor]
$nsattachagent$n4$sink0
$nsattachagent$n4$sink1
$nsattachagent$n4$sink2
$nscolor0Blue
$sink0setclass_0
$nscolor1Red
$sink1setclass_1
TPNS2
ENSEIRBMars2008
Page14/16
MatthieuCHARPENTIER
BenjaminGHIS
$nscolor2Green
$sink2setclass_2
setsource0[attachexpootraffic$n0$sink02002s1s100k]
setsource1[attachexpootraffic$n1$sink12002s1s200k]
setsource2[attachexpootraffic$n2$sink22002s1s300k]
$nsat0.0"record"
$nsat10.0"$source0start"
$nsat10.0"$source1start"
$nsat10.0"$source2start"
$nsat50.0"$source0stop"
$nsat50.0"$source1stop"
$nsat50.0"$source2stop"
$nsat60.0"finish"
$nsrun
IV.3. Observation
Un trafic apparait au bout de 10s entre les nuds N0, N1, N2 et N4. A laide du logiciel
xgraph,onremarquedesretourszroplusfrquentquandonauntempsdenregistrement
de0.1sparrapportdestempsdenregistrementde1s.Deplusletracdugrapheestplusprcis
pourdesfaiblestempsdenregistrement.
Figure16:Tempsdenregistrementde0.1seconde
Figure17:Tempsdenregistrementde0.5seconde
TPNS2
ENSEIRBMars2008
Page15/16
MatthieuCHARPENTIER
BenjaminGHIS
Figure18:Tempsdenregistrementde1seconde
IV.4. Explicationducode
Troisfonctionssontdfinies:finish,attachexpootrafficetrecord.Lapremire
fonctionsertterminerleprogramme.LadeuximesertcrerdesagentsUDPsurlesnuds
N0,N1etN2etdelesparamtreravec:packetSize_latailledespaquets,burst_time_letemps
moyendenvoidespaquets,idel_time_letempsmoyendurantlequelaucunpaquetnestenvoy,
etratepourledbit.EllesertgalementconnecterlesagentsUDPetlesagentsLossMonitor.
Enfin la dernire fonction record sert paramtrer lenregistrement du trafic entre les
diffrentsnuds:settimeestlintervalledetempsentrechaqueprisedemesuresurletrafic,
[expr $now+$time] record permet de rappeler la fonction record sur lintervalle de temps
suivantetainsidesuite.
LafinduprogrammecorrespondunmaindulangageCenpermettantdappelerles
fonctionsprcdemmentmentionnesetdedbuterlasimulation.Anoterquunagentdetype
LossMonitorestunesortedemoniteurparamtrablequipermetdemesurerletrafic.
IV.5. Explicationdelobservation
Quandnousutilisonsunintervalledetempsd1seconde,nousavonsbeaucoupmoinsde
retourzroquedanslecasd0.1seconde.Lintervalledetempsentrechaqueprisedemesure
esttrslongetilpeutyavoireutunereprisedetraficsurlerseauentretemps,onnevoitalors
pasleretourzro.Aucontrairesurunintervalled0.1seconde,onaletempsdapercevoirles
remiseszros.
Lavariabletimejoueenfaitsurlaprcisiondelamesure.Celleciseraplusprcisepour
unevaleurde0.1squunevaleurd1s.Pourtantavoiruneprcisiontrsimportantenestpastrs
utile car elle plus longue obtenir. On peut donc dcider de prendre le juste milieu avec une
valeurde0.5sparexemple.Anoterqueletempsdebursttantsuprieurautempsdidle,on
obtientdesintervallesdetempsdenvoidepaquetsplusimportantquedesintervallesdesilence
surlerseau.
TPNS2
ENSEIRBMars2008
Page16/16
MatthieuCHARPENTIER
BenjaminGHIS