Pichat_Manano
Short Description
Download Pichat_Manano...
Description
Rapport de TP – Outil de simulation : NS2
2010-2011 Manano Camille Pichat Jonas
INTRODUCTION Nous allons ici étudier les fonctionnalités fonctionnalités offertes par le simulateur NS-2 à travers l’élaboration de scripts qui font appel à des outils tels que nam, pour nam, pour visualiser la simulation ou xgraph ou xgraph pour pour représenter les traces de la simulation sous forme de courbes. Le simulateur est conçu principalement pour le monde de l’Internet et plus particulièrement pour le protocole TCP. Sa bonne organisation hiérarchique 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 proposées pour améliorer la QoS dans l’Internet.
II-1-
EXERCICE 1 Présentation
Le premier exercice est une topologie simple avec deux nœuds et un lien un lien direct entre ces derniers (cf. figure (cf. figure 1). 1 ).
Figure 1: topologie du réseau
Voici le code commenté qui nous a permis de définir ce réseau sur l’outil de simulation : simulation : #Création 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 #Définir la procédure de terminaison de la simulation proc finish {} { global ns nf $ns flush-trace #fermer le fichier trace close $nf #Exécuter le nam avec en entrée le fichier trace exec nam out.nam & exit 0}
Page 1
Rapport de TP – Outil de simulation : NS2
2010-2011 Manano Camille Pichat Jonas
#code exercice1 #création 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 #création d'un agent UDP et l'attacher à n0 set transp0 [new Agent/UDP] $ns attach-agent $n0 $transp0 #création d'une source CBR set cbr [new Application/Traffic/CBR] $cbr set packetSize_ 500 $cbr set interval_ 0.005 #connexion $cbr attach-agent $transp0 #création d'un agent Null set null0 [new Agent/Null] $ns attach-agent $n1 $null0 #connexion $ns connect $transp0 $null0 #déclenchement $ns at 1 "$cbr start" $ns at 4.5 "$cbr stop" #Appeler la procédure de terminaison avec un temps t $ns at 5.0 "finish" #Executer la simulation $ns run
I-2-
Exploitation du code et des résultats
Le trafic CBR est déclenché normalement au bout de 1 seconde (cf. #déclenchement ) grâce à la commande : $ns at 1 "$cbr start" et s’interrompt 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 nœuds. Cela s’explique par le fait que la taille des paquets transitant sur le réseau est de 500 octets. Le lien duplex ayant une capacité de 1Mb, il n’y a pas de congestion.
II-
EXERCICE 2
II-1- Présentation Le deuxième exercice nous propose d’étudier une topologie de réseau plus complexe, comme illustré en figure 3.
Figure 3:topologie du réseau
Voici le code qui nous a permis de simuler la t ransmission des paquets sur ce réseau : #Création 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 #Définir la procédure de terminaison de la simulation proc finish {} { global ns nf $ns flush-trace #fermer le fichier trace close $nf #Exécuter le nam avec en entrée 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 #création 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 nœuds $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
#création d'un agent UDP set transp0 [new Agent/UDP] $ns attach-agent $n1 $transp0 #création d'un agent UDP set transp1 [new Agent/UDP] $ns attach-agent $n2 $transp1 #création d'un agent Null set null0 [new Agent/Null] $ns attach-agent $n8 $null0 #création 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 #déclenchement $ns at 1 "$cbr1 start" $ns at 7 "$cbr1 stop"
#création 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 #déclenchement $ns at 2 "$cbr2 start" $ns at 6 "$cbr2 stop"
Page 4
2010-2011 Manano Camille Pichat Jonas
Rapport de TP – Outil de simulation : NS2
2010-2011 Manano Camille Pichat Jonas
#rupture du lien $ns rtmodel-at 4.0 down $n5 $n8 #$ns v -t 4 link-down 4 7 4 #rétablissement 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 procédure de terminaison avec un temps t $ns at 8.0 "finish" #Exécuter la simulation $ns run
II-2- Exploitation du code et des résultats NB : nos numéros de nœuds sur la figure 3 correspondent avec le code ci -dessus de la manière suivante : Nœud 0 : n1 … Nœud 7 : n8 Au bout de 1 seconde, le trafic est déclenché entre le nœud 0 (n1 dans le code) et le nœud 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 déclenché. 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, c’est-à-dire celui passant par le nœud 4 (n5 dans le code).
Lors de la rupture du lien, au bout de 4 secondes, entre le nœud 4 et le nœud 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 façon périodique et les équipements les partagent. Les tables de routage sont donc constamment mises à jour. Cette rupture provoque une transmission à tous les nœuds de l’information 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 nœuds 4 et 7 au moment de la rupture.
Figure 6: rupture du lien entre nœud 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 nœuds 3, 5 et 6. Lorsque le lien est rétabli à t=5s, on retrouve le comportement initial, à savoir un flux de paquets transitant par le nœud 4. (cf. figure 5).
III-
EXERCICE 3
III-1- Présentation Le troisième exercice nous propose d’étudier la topologie illustrée en figure 7.
Figure 7: topologie du réseau
Voici le code qui nous a permis de simuler le réseau : #Création 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
n0 n1 n2 n3 n4
[$ns [$ns [$ns [$ns [$ns
node] node] node] node] node]
$ns $ns $ns $ns
duplex-link duplex-link duplex-link duplex-link
$n0 $n1 $n4 $n2
$n3 $n3 $n3 $n3
10Mb 10Mb 10Mb 10Mb
10ms 10ms 10ms 10ms
DropTail DropTail DropTail DropTail
Page 7
Rapport de TP – Outil de simulation : NS2
2010-2011 Manano Camille Pichat Jonas
#Définir la procédure de terminaison de la simulation proc finish {} { global f0 f1 f2 #fermer les fichiers traces close $f0 close $f1 close $f2 #Exécuter xgraph pour afficher les résultats exec xgraph out0.tr out1.tr out2.tr -geometry 800*400 & exit 0 } proc attach-expoo-traffic { node sink size burst idle rate } { #Création d'une instance de l'objet Simulator set ns [Simulator instance] #création d'un agent UDP et attachement au nœud set source [new Agent/UDP] $ns attach-agent $node $source #création du trafic Expoo et définition des paramètres 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 générateur 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 #création d'une instance de l'objet Simulator set ns [Simulator instance] #période après laquelle la procédure est rappelée set time 0.5 #nombre d’octets reçus par les sinks set bw0 [$sink0 set bytes_] set bw1 [$sink1 set bytes_] set bw2 [$sink2 set bytes_] #création d’une instance temps courant set now [$ns now] #calcul su débit 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 procédure $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 résultats
Détail des fonctions utilisées proc finish {}
: cette fonction sert à terminer le programme.
: cette fonction permet de créer des agents UDP sur les nœuds 0, 1 et 2. On note son utilisation de la manière 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 paramétrer ces nœuds en précisant la taille des paquets packetSize _, le temps moyen d’envoi des paquets burst_time_, le temps moyen pendant lequel il n’y a pas d’envoi de paquets idle_time_, et le débit rate_. Elle permet enfin de connecter un agent UDP à un Loss Monitor avec la commande :
$ns
connect $source $sink proc record {} :
cette fonction sert à paramétrer l’enregistrement du trafic entre les nœuds
du réseau.
Exploitation de la courbe On remarque l’activité des transmissions entre 10 et 50 secondes. A t=10s, les nœuds 0,1 et 2 atteignent respectivement les débits 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 débit apparaissent tous les burst_time_ (ici 2s) pendant idle_time_ (ici 1s). Les périodes d’envoi de paquets sont donc plus importantes que les périodes de silence sur le réseau.
Page 9
Rapport de TP – Outil de simulation : NS2
2010-2011 Manano Camille Pichat Jonas
Figure 8: observation du débit en fonction du temps pour les nœuds 0, 1 et 2
L’intervalle de temps entre chaque prise de mesure est de 0.5s ( set time 0.5) . C’est relativement long et il peut y avoir entre temps une reprise du trafic sur le réseau. On ne voit alors pas le retour à zéro.
IV-
EXERCICE 4
IV-1- Présentation Le quatrième exercice nous propose d’étudier la topologie illustrée dans la figure suivante avec comme indication le fait qu’il 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 réseau : #Création 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 #Définir la procédure de terminaison de la simulation proc finish {} { global ns nf $ns flush-trace #fermer le fichier trace close $nf #Exécuter le nam avec en entrée le fichier trace exec nam out.nam & exit 0 } #code exercice4 #création 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 #création d'un agent UDP et l'attacher à n1 set transp1 [new Agent/UDP] $ns attach-agent $n1 $transp1 #création d'une source CBR set cbr [new Application/Traffic/CBR] $cbr set packetSize_ 1000 $cbr set rate_ 1Mb #connexion $cbr attach-agent $transp1 #déclenchement $ns at 0.1 "$cbr start" $ns at 4.5 "$cbr stop" #création d'un agent TCP et l'attacher à n0 set transp0 [new Agent/TCP] $ns attach-agent $n0 $transp0 #création d'une source FTP set ftp [new Application/FTP]
Page 11
2010-2011 Manano Camille Pichat Jonas
Rapport de TP – Outil de simulation : NS2
2010-2011 Manano Camille Pichat Jonas
#connexion $ftp attach-agent $transp0 #déclenchement $ns at 1.0 "$ftp start" $ns at 4.0 "$ftp stop" #création d'un agent Null set null0 [new Agent/Null] $ns attach-agent $n3 $null0 #connexion $ns connect $transp1 $null0 #création 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 procédure de terminaison avec un temps t $ns at 5.0 "finish" #Executer la simulation $ns run
Remarques Une des difficultés dans le code était de bien joindre les différents agents : l’agent UDP était associé à l’agent NULL, qui est juste en écoute et ne renvoie rien, alors que l’agent TCP nécessite un agent SINK pour envoyer les accusés de réception afin de garantir la fiabilité de la connexion.
IV-2- Exploitation des résultats et du code Une fois ceci réalisé, nous avons lancé la simulation. A t=0.1s, la source CBR (représentée par les paquets bleus sur la figure suivante) s’active.
Page 12
Rapport de TP – Outil de simulation : NS2
2010-2011 Manano Camille Pichat Jonas
A t=1s, la source FTP (en rouge) est également active
Figure 9: trafic TCP et CBR
La source FTP étant portée par TCP, elle nécessite des accusés de réceptions envoyés par n3 vers n0 : ceux-ci sont visibles sur la figure ci-dessous (traits rouges)
On constate également que le buffer présent entre n2 et n3 peut saturer, ce qui entraîne 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 s’éteint : il n’y a désormais plus de paquets ni d’accusés de réception circulant sur le réseau.
Page 14
View more...
Comments