Vous êtes sur la page 1sur 16

TRAVAUXPRATIQUES:NS2

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

Puis le trafic reprend normalement avant de sinterrompre dfinitivement au bout de 4


secondespuisde4.5secondes.

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