Вы находитесь на странице: 1из 14

Rapport de TP Outil de simulation : NS2

INTRODUCTION

2010-2011 Manano Camille Pichat Jonas

Nous allons ici tudier les fonctionnalits offertes par le simulateur NS-2 travers llaboration de scripts qui font appel des outils tels que nam, pour visualiser la simulation ou xgraph pour reprsenter les traces de la simulation sous forme de courbes. Le simulateur est conu principalement pour le monde de lInternet et plus particulirement pour le protocole TCP. Sa bonne organisation hirarchique a permis son extension aux nouveaux protocoles du monde Internet (application, transport et routage), aux nouveaux supports de transmission (LAN, mobile) et aux nouvelles architectures proposes pour amliorer la QoS dans lInternet.

I-

EXERCICE 1

I-1- Prsentation
Le premier exercice est une topologie simple avec deux nuds et un lien direct entre ces derniers (cf. figure 1).

Figure 1: topologie du rseau

Voici le code comment qui nous a permis de dfinir ce rseau sur loutil de simulation :
#Cration d'une instance de l'objet Simulator set ns [new Simulator] #Ouvrir le fichier trace pour nam set nf [open out.nam w] $ns namtrace-all $nf #Dfinir la procdure de terminaison de la simulation proc finish {} { global ns nf $ns flush-trace #fermer le fichier trace close $nf #Excuter le nam avec en entre le fichier trace exec nam out.nam & exit 0}

Page 1

Rapport de TP Outil de simulation : NS2


#code exercice1 #cration de deux noeuds n0 et n1 set n0 [$ns node] set n1 [$ns node] #connection des noeuds $ns duplex-link $n0 $n1 Mb 10ms DropTail #cration d'un agent UDP et l'attacher n0 set transp0 [new Agent/UDP] $ns attach-agent $n0 $transp0 #cration d'une source CBR set cbr [new Application/Traffic/CBR] $cbr set packetSize_ 500 $cbr set interval_ 0.005 #connexion $cbr attach-agent $transp0 #cration d'un agent Null set null0 [new Agent/Null] $ns attach-agent $n1 $null0 #connexion $ns connect $transp0 $null0 #dclenchement $ns at 1 "$cbr start" $ns at 4.5 "$cbr stop" #Appeler la procdure de terminaison avec un temps t $ns at 5.0 "finish" #Executer la simulation $ns run

2010-2011 Manano Camille Pichat Jonas

I-2- Exploitation du code et des rsultats


Le trafic CBR est dclench normalement au bout de 1 seconde (cf. #dclenchement) grce la commande : $ns at 1 "$cbr start" et sinterrompt au bout de 4.5 secondes avec la commande : $ns at 4.5 "$cbr stop" La simulation prend fin au bout de 5 secondes : $ns at 5.0 "finish".

Figure 2: trafic entre N0 et N1


Page 2

Rapport de TP Outil de simulation : NS2

2010-2011 Manano Camille Pichat Jonas

On observe un trafic sans perte entre les deux nuds. Cela sexplique par le fait que la taille des paquets transitant sur le rseau est de 500 octets. Le lien duplex ayant une capacit de 1Mb, il ny a pas de congestion.

II-

EXERCICE 2

II-1- Prsentation
Le deuxime exercice nous propose dtudier une topologie de rseau plus complexe, comme illustr en figure 3.

Figure 3:topologie du rseau

Voici le code qui nous a permis de simuler la transmission des paquets sur ce rseau :
#Cration d'une instance de l'objet Simulator set ns [new Simulator] #Ouvrir le fichier trace pour nam set nf [open out.nam w] $ns namtrace-all $nf #Dfinir la procdure de terminaison de la simulation proc finish {} { global ns nf $ns flush-trace #fermer le fichier trace close $nf #Excuter le nam avec en entre le fichier trace exec nam out.nam & exit 0 }

Page 3

Rapport de TP Outil de simulation : NS2


#code exercice2 #routage dynamique $ns rtproto DV #cration des noeuds set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] set n6 [$ns node] set n7 [$ns node] set n8 [$ns node] #connexion des nuds $ns duplex-link $n1 $n3 $ns duplex-link $n2 $n3 $ns duplex-link $n4 $n3 $ns duplex-link $n5 $n3 $ns duplex-link $n5 $n8 $ns duplex-link $n7 $n8 $ns duplex-link $n7 $n6 $ns duplex-link $n4 $n6 10Mb 10Mb 10Mb 10Mb 10Mb 10Mb 10Mb 10Mb 10ms 10ms 10ms 10ms 10ms 10ms 10ms 10ms DropTail DropTail DropTail DropTail DropTail DropTail DropTail DropTail

2010-2011 Manano Camille Pichat Jonas

#cration d'un agent UDP set transp0 [new Agent/UDP] $ns attach-agent $n1 $transp0 #cration d'un agent UDP set transp1 [new Agent/UDP] $ns attach-agent $n2 $transp1 #cration d'un agent Null set null0 [new Agent/Null] $ns attach-agent $n8 $null0 #cration d'une source CBR set cbr1 [new Application/Traffic/CBR] $cbr1 set packetSize_ 500 $cbr1 set interval_ 0.005 #connexion $cbr1 attach-agent $transp0 #connexion $ns connect $transp0 $null0 #dclenchement $ns at 1 "$cbr1 start" $ns at 7 "$cbr1 stop" #cration d'une source CBR set cbr2 [new Application/Traffic/CBR] $cbr2 set packetSize_ 500 $cbr2 set interval_ 0.005 #connexion $cbr2 attach-agent $transp1 #connexion $ns connect $transp1 $null0 #dclenchement $ns at 2 "$cbr2 start" $ns at 6 "$cbr2 stop"

Page 4

Rapport de TP Outil de simulation : NS2


#rupture du lien $ns rtmodel-at 4.0 down $n5 $n8 #$ns v -t 4 link-down 4 7 4 #rtablissement du lien $ns rtmodel-at 5.0 up $n5 $n8 #$ns v -t 5 link-up 5 4 7 #couleurs $transp0 set class_ 1 $ns color 1 Orange $transp1 set class_ 2 $ns color 1 Green #Appeler la procdure de terminaison avec un temps t $ns at 8.0 "finish" #Excuter la simulation $ns run

2010-2011 Manano Camille Pichat Jonas

II-2- Exploitation du code et des rsultats


NB : nos numros de nuds sur la figure 3 correspondent avec le code ci -dessus de la manire suivante : Nud 0 : n1 Nud 7 : n8 Au bout de 1 seconde, le trafic est dclench entre le nud 0 (n1 dans le code) et le nud 7, comme illustr en figure 4.

Figure 4: observation du trafic (en vert) entre n1 et n8

Page 5

Rapport de TP Outil de simulation : NS2

2010-2011 Manano Camille Pichat Jonas

Au bout de 2 secondes, le trafic entre n2 et n8 est dclench. On observe ce trafic simultan sur la figure 5.

Figure 5: envoi simultan de paquet depuis n1 (vert) et n2 (noir)

On remarque que le chemin emprunt est toujours le plus court, cest--dire celui passant par le nud 4 (n5 dans le code).

Lors de la rupture du lien, au bout de 4 secondes, entre le nud 4 et le nud 7 (comme illustr en figure 6), on note un changement de chemin. Le routage utilis est un routage dynamique. Les informations de routage sont transmises de faon priodique et les quipements les partagent. Les tables de routage sont donc constamment mises jour. Cette rupture provoque une transmission tous les nuds de linformation relative cette situation et il y a alors adaptation et changement dans le chemin du trafic. Les paquets perdus seront uniquement ceux qui se trouvaient entre les nuds 4 et 7 au moment de la rupture.

Figure 6: rupture du lien entre nud 4 et 7 - observation du comportement


Page 6

Rapport de TP Outil de simulation : NS2

2010-2011 Manano Camille Pichat Jonas

Le flux de paquets passe alors par les nuds 3, 5 et 6. Lorsque le lien est rtabli t=5s, on retrouve le comportement initial, savoir un flux de paquets transitant par le nud 4. (cf. figure 5).

III-

EXERCICE 3

III-1- Prsentation
Le troisime exercice nous propose dtudier la topologie illustre en figure 7.

Figure 7: topologie du rseau

Voici le code qui nous a permis de simuler le rseau :


#Cration d'une instance de l'objet Simulator set ns [new Simulator] #Ouvrir le fichier trace pour nam set f0 [open out0.tr w] set f1 [open out1.tr w] set f2 [open out2.tr w] set set set set set $ns $ns $ns $ns n0 n1 n2 n3 n4 [$ns [$ns [$ns [$ns [$ns node] node] node] node] node] $n0 $n1 $n4 $n2 $n3 $n3 $n3 $n3 10Mb 10Mb 10Mb 10Mb 10ms 10ms 10ms 10ms DropTail DropTail DropTail DropTail

duplex-link duplex-link duplex-link duplex-link

Page 7

Rapport de TP Outil de simulation : NS2

2010-2011 Manano Camille Pichat Jonas

#Dfinir la procdure de terminaison de la simulation proc finish {} { global f0 f1 f2 #fermer les fichiers traces close $f0 close $f1 close $f2 #Excuter xgraph pour afficher les rsultats exec xgraph out0.tr out1.tr out2.tr -geometry 800*400 & exit 0 } proc attach-expoo-traffic { node sink size burst idle rate } { #Cration d'une instance de l'objet Simulator set ns [Simulator instance] #cration d'un agent UDP et attachement au nud set source [new Agent/UDP] $ns attach-agent $node $source #cration du trafic Expoo et dfinition des paramtres set traffic [new Application/Traffic/Exponential] $traffic set packetSize_ $size $traffic set burst_time_ $burst $traffic set idle_time_ $idle $traffic set rate_ $rate #attachement de la source du trafic au gnrateur de trafic $traffic attach-agent $source #Connecte la source au sink $ns connect $source $sink return $traffic } proc record {} { global sink0 sink1 sink2 f0 f1 f2 #cration d'une instance de l'objet Simulator set ns [Simulator instance] #priode aprs laquelle la procdure est rappele set time 0.5 #nombre doctets reus par les sinks set bw0 [$sink0 set bytes_] set bw1 [$sink1 set bytes_] set bw2 [$sink2 set bytes_] #cration dune instance temps courant set now [$ns now] #calcul su dbit puts $f0 "$now [expr $bw0/$time*8/1000000]" puts $f1 "$now [expr $bw1/$time*8/1000000]" puts $f2 "$now [expr $bw2/$time*8/1000000]" #mise jour les valeurs de bytes_ sur les sinks $sink0 set bytes_ 0 $sink1 set bytes_ 0 $sink2 set bytes_ 0 #rappel de la procdure $ns at [expr $now+$time] "record" } set set set $ns $ns $ns sink0 [new Agent/LossMonitor] sink1 [new Agent/LossMonitor] sink2 [new Agent/LossMonitor] attach-agent $n4 $sink0 attach-agent $n4 $sink1 attach-agent $n4 $sink2

Page 8

Rapport de TP Outil de simulation : NS2

2010-2011 Manano Camille Pichat Jonas

set source0 [attach-expoo-traffic $n0 $sink0 200 2s 1s 100k] set source1 [attach-expoo-traffic $n1 $sink1 200 2s 1s 200k] set source2 [attach-expoo-traffic $n2 $sink2 200 2s 1s 300k] $ns $ns $ns $ns $ns $ns $ns $ns at at at at at at at at 0.0 "record" 10.0 "$source0 10.0 "$source1 10.0 "$source2 50.0 "$source0 50.0 "$source1 50.0 "$source2 60.0 "finish" start" start" start" stop" stop" stop"

$ns run

III-2- Exploitation du code et des rsultats

Dtail des fonctions utilises


proc finish {}

: cette fonction sert terminer le programme.

: cette fonction permet de crer des agents UDP sur les nuds 0, 1 et 2. On note son utilisation de la manire suivante :
proc attach-expoo-traffic { node sink size burst idle rate } set source0 [attach-expoo-traffic $n0 $sink0 200 2s 1s 100k] set source1 [attach-expoo-traffic $n1 $sink1 200 2s 1s 200k] set source2 [attach-expoo-traffic $n2 $sink2 200 2s 1s 300k]

Elle permet galement de paramtrer ces nuds en prcisant la taille des paquets packetSize_, le temps moyen denvoi des paquets burst_time_, le temps moyen pendant lequel il ny a pas denvoi de paquets idle_time_, et le dbit rate_. Elle permet enfin de connecter un agent UDP un Loss Monitor avec la commande :
connect $source $sink proc record {} : $ns

cette fonction sert paramtrer lenregistrement du trafic entre les nuds

du rseau.

Exploitation de la courbe
On remarque lactivit des transmissions entre 10 et 50 secondes. A t=10s, les nuds 0,1 et 2 atteignent respectivement les dbits de 100, 200 et 300 kbit/s. La simulation prend fin au bout de 60 secondes. Les fluctuations de ces courbes sont dues aux valeurs prises par burst_time_ et idle_time_ Globalement, les chutes de dbit apparaissent tous les burst_time_ (ici 2s) pendant idle_time_ (ici 1s). Les priodes denvoi de paquets sont donc plus importantes que les priodes de silence sur le rseau.

Page 9

Rapport de TP Outil de simulation : NS2

2010-2011 Manano Camille Pichat Jonas

Figure 8: observation du dbit en fonction du temps pour les nuds 0, 1 et 2

Lintervalle de temps entre chaque prise de mesure est de 0.5s (set time 0.5). Cest relativement long et il peut y avoir entre temps une reprise du trafic sur le rseau. On ne voit alors pas le retour zro.

IV-

EXERCICE 4

IV-1- Prsentation
Le quatrime exercice nous propose dtudier la topologie illustre dans la figure suivante avec comme indication le fait quil existe un buffer entre n2 et n3 de taille 10.

Page 10

Rapport de TP Outil de simulation : NS2


Voici le code qui nous permis de simuler le rseau :
#Cration d'une instance de l'objet Simulator set ns [new Simulator] #Ouvrir le fichier trace pour nam set nf [open out.nam w] $ns namtrace-all $nf #Dfinir la procdure de terminaison de la simulation proc finish {} { global ns nf $ns flush-trace #fermer le fichier trace close $nf #Excuter le nam avec en entre le fichier trace exec nam out.nam & exit 0 } #code exercice4 #cration de deux noeuds n0, n1, n2 et n3 set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] #liens $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n1 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 20ms DropTail #buffer $ns queue-limit $n2 $n3 10 #positionnement des noeuds $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right #cration d'un agent UDP et l'attacher n1 set transp1 [new Agent/UDP] $ns attach-agent $n1 $transp1 #cration d'une source CBR set cbr [new Application/Traffic/CBR] $cbr set packetSize_ 1000 $cbr set rate_ 1Mb #connexion $cbr attach-agent $transp1 #dclenchement $ns at 0.1 "$cbr start" $ns at 4.5 "$cbr stop" #cration d'un agent TCP et l'attacher n0 set transp0 [new Agent/TCP] $ns attach-agent $n0 $transp0 #cration d'une source FTP set ftp [new Application/FTP]

2010-2011 Manano Camille Pichat Jonas

Page 11

Rapport de TP Outil de simulation : NS2


#connexion $ftp attach-agent $transp0 #dclenchement $ns at 1.0 "$ftp start" $ns at 4.0 "$ftp stop" #cration d'un agent Null set null0 [new Agent/Null] $ns attach-agent $n3 $null0 #connexion $ns connect $transp1 $null0 #cration d'un agent TCP Sink et l'attacher n0 set transp2 [new Agent/TCPSink] $ns attach-agent $n3 $transp2 #connexion $ns connect $transp2 $transp0 #couleur $transp1 set class_ 1 $ns color 1 Blue $transp0 set class_ 2 $ns color 2 Red #Appeler la procdure de terminaison avec un temps t $ns at 5.0 "finish" #Executer la simulation $ns run

2010-2011 Manano Camille Pichat Jonas

Remarques
Une des difficults dans le code tait de bien joindre les diffrents agents : lagent UDP tait associ lagent NULL, qui est juste en coute et ne renvoie rien, alors que lagent TCP ncessite un agent SINK pour envoyer les accuss de rception afin de garantir la fiabilit de la connexion.

IV-2- Exploitation des rsultats et du code


Une fois ceci ralis, nous avons lanc la simulation. A t=0.1s, la source CBR (reprsente par les paquets bleus sur la figure suivante) sactive.

Page 12

Rapport de TP Outil de simulation : NS2


A t=1s, la source FTP (en rouge) est galement active

2010-2011 Manano Camille Pichat Jonas

Figure 9: trafic TCP et CBR

La source FTP tant porte par TCP, elle ncessite des accuss de rceptions envoys par n3 vers n0 : ceux-ci sont visibles sur la figure ci-dessous (traits rouges)

On constate galement que le buffer prsent entre n2 et n3 peut saturer, ce qui entrane la destruction des paquets en trop :

Page 13

Rapport de TP Outil de simulation : NS2

2010-2011 Manano Camille Pichat Jonas

A t=4s, la source FTP steint : il ny a dsormais plus de paquets ni daccuss de rception circulant sur le rseau.

Page 14

Вам также может понравиться