You are on page 1of 9

Anne Universitaire 2011/2012 Matire : Protocoles des rseaux mobiles : RT4 Filire

TP : Dmarrer avec NsNs-2


Dans ce TP, il s'agit de se familiariser avec le simulateur de rseaux NS2 qui est un outil qui permet dtudier le comportement de diffrents rseaux de transmission de donnes (mode paquet) filaires ou sans fils. Il permet de modliser les rseaux et dvaluer leurs performances. Pour le faire, dans ce TP ,qui est une initiation lutilisation de NS2, nous allons tudier le comportement des protocoles TCP et UDP en utilisant le simulateur NS2. Cest un simulateur (disponible partir des ressources), qui utilise un langage simple pour la description physique et comportementale des rseaux. Pour plus d'informations sur NS2, cf : http://www.isi.edu/nsnam/ns ou le tutorial : http://www.isi.edu/nsnam/ns/tutorial/ (toutefois, ces liens ne devraient pas tre d'une utilit primordiale pour ce TP). Pour visualiser vos courbes, vous pouvez utiliser Excel, Matlab, ou gnuplot. I- Prsentation Prsentation de NSNS-2 NS est un logiciel de simulation de rseaux informatiques dvelopp lors d'un projet de la DARPA. Il est principalement bti avec les ides de la conception par objets, de rutilisabilit du code et de modularit. Il est devenu aujourd'hui un standard de rfrence en ce domaine. C'est un logiciel dans le domaine public disponible sur Internet. Son utilisation est gratuite. Le logiciel est excutable tant sous Unix que sous Windows. Le Simulateur se compose d'une interface de programmation en tcl et d'un noyau crit en C++ dans lequel la plupart des protocoles rseaux ont t implments : Trafic Pareto, ON/OFF, CBR, FTP, telnet, etc. Couche Transport TCP, UDP Couche Rseaux IP, routage dans les rseaux ad hoc (aodv, dsr , dsdv, tora, amodv), routage dans les rseaux filaire (Link state, Distance vector), les rseaux multicast, IntServ, DiffServ Couche MAC CSMA, CDMA, 802,X, Token ring, MPLS, liens satellites, etc.

La mthode de simulation suivre est prsente dans la figure suivante :

NS-2 est un logiciel de simulation de rseaux informatique dvelopp lors d'un projet de la DARPA. 1.1 Le langage de script TCL Le langage TCL est un langage de script puissant qui permet dutiliser ventuellement une approche de programmation orient objet. Il est facilement extensible par un certain nombre de modules. Dans notre cas, il est indispensable dutiliser le langage TCL pour pouvoir travailler avec les objets fournis par NS-2. II. Installer NsNs-2 La version de NS-2 la plus jour actuellement est la version 2.34 disponible en http://www.isi.edu/nsnsam/ns/ mais pour plus de confort pour l'utilisateur il est conseill d'installer la version all-in-one. La version all-in-one regroupe tous les utilitaires et les plugin ncessaire la compilation et au fonctionnement de NS. IIIIII- Premiers pas avec NS2 3.1. Commenter et excuter le script tcl suivant : # Ecrire une procdure appele "test" proc test {} { set a 43

set b 27 set c [expr $a + $b] set d [expr [expr $a - $b] * $c] for {set k 0} {$k < 10} {incr k} { if {$k < 5} { puts "k < 5, pow = [expr pow($d, $k)]" } else { puts "k >= 5, mod = [expr $d % $k]" } } } # Appeler la procdure "test" cre ci-dessus test Pour excuter ce programme taper 3.2. Premire simulation NsNs-2 A- Utilisation du protocole UDP Cet exemple est une simple simulation dun rseau minimal constitu de deux stations communiquant lune avec lautre via une liaison spcialise. : tcl <file-name>.tcl ou ns <file-name>

Dans la terminologie NS, ce que nous appelons machine sappelle un noeud. Un noeud peut contenir des agents qui reprsentent des comportements, par exemple des applications. Une bibliothque assez complte de composants existe de faon standard. Une proprit intressante de ce systme est son extensibilit. En effet, il est assez facile dtendre la bibliothque des comportements, des types de liens, ou de tout autre lment du systme en programmant ses propres extensions qui deviennent alors intgres au systme. Pour traiter ce premier cas, nous allons donc crire un programme

simple. En voici le contenu. Les commentaires (introduits par le caractre #) expliquent le rle de chaque instruction ou partie de programme. # cration d'un simulateur set ns [new Simulator] # cration du fichier de trace utilis par lafficheur et indication ns de l'utiliser set nf [open out.nam w] $ns namtrace-all $nf # lorsque la simulation sera termine, cette procdure est appele pour lancer automatiquement lafficheur proc finish {} { global ns nf $ns flush-trace close $nf exec nam out.nam & exit 0 } # cration de deux noeuds set n0 [$ns node] set n1 [$ns node] # cration d'une ligne de communication full duplex entre les noeuds n0 et n1 $ns duplex-link $n0 $n1 1Mb 10ms DropTail # cration d'un agent UDP implant dans n0 set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 # cration d'un trafic CBR pour le nud 0 gnrateur de paquets vitesse constante paquets de 500 octets, gnrs toutes les 5 ms. Ce trafic est attach au udp0 set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005

$cbr0 attach-agent $udp0

# cration d'un agent vide, destin recevoir les paquets implant dans n1 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 # le trafic issus de l'agent udp0 est envoy vers null0 $ns connect $udp0 $null0 # scnario de dbut et de fin de gnration des paquets par cbr0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" # la simulation va durer 5 secondes de temps simul $ns at 5.0 "finish" # dbut de la simulation $ns run Lors de cette simulation, les rsultats sont consigns dans un fichier de trace que loutil de visualisation nam va permettre de traiter. Dans notre programme, loutil de visualisation est appel directement la fin de la simulation. Deux lments intressants sont proposs la visualisation : un dessin de la topologie du rseau tudi, et une visualisation dynamique du droulement du programme dans le temps. B- Utilisation du protocole TCP Afin de vous familiariser avec ce langage, nous avons dtaill le script correspondant au fichier fenetre.tcl. L'excution de NS prsente une interface o vous pouvez taper une suite de commandes interprtes. Vous devez taper source fenetre.tcl pour simuler le rseau dcrit par le script fenetre.tcl. # Les instructions suivies du caractre # sont des commentaires # Initialisation du simulateur set ns [new Simulator] # Cration de fichiers de traces set ftrace [open fout.tr w] set nf [open out.nam w]

# traces animes $ns namtrace-all $nf # Procdure fermant les fichiers de traces proc finish {} { global ns ftrace nf $ns flush-trace close $nf close $ftrace exit 0 } # Procdure permettant d'obtenir la taille de la fentre de congestion # toutes les 0.01s proc tracefenetre {} { global tcp0 ftrace set ns [Simulator instance] set time 0.01 set now [$ns now] puts $ftrace "$now [$tcp0 set cwnd_]" $ns at [expr $now+$time] "tracefenetre" } # Initialisation de certains paramtres TCP # Taille des paquets TCP, en octets Agent/TCP set packetSize_ 1500 # Taille maximale de la fentre de congestion, en paquets Agent/TCP set maxcwnd_ 30 Agent/TCPSink/DelAck set interval_ 0.00001 # Cration du noeud n0 et de ses caractristiques # les connexions TCP tant unidirectionnelles, il y a une source et un puits par connexion # Cration du noeud n0 set n0 [$ns node] # Cration de la couche TCP (agent TCP), ct source set tcp0 [new Agent/TCP] # Attachement de la couche TCP au noeud $ns attach-agent $n0 $tcp0 # Cration de la couche applicative FTP

set ftp [new Application/FTP] # Attachement de la couche applicative la couche TCP $ftp attach-agent $tcp0 # Cration du noeud n1 set n1 [$ns node] # Cration de la couche TCP, ct puits set tcp1 [new Agent/TCPSink/DelAck] # Attachement de la couche TCP au noeud $ns attach-agent $n1 $tcp1 # Cration du lien point point bidirectionnel entre les deux noeuds # Le dbit du lien est de 10Mb/s et le dlai de propagation est de 10ms $ns duplex-link $n0 $n1 10Mb 10ms DropTail # Cration de la connexion entre les deux couches TCP $ns connect $tcp0 $tcp1 # Dpart de la source FTP la date 0.0 s $ns at 0.0 "$ftp start"" # Arrt de la source FTP la date 0.7 s $ns at 0.7 "$ftp stop" # Excution de la procdure tracefenetre $ns at 0.0 "tracefenetre" # Excution de la procdure finish la date 0.8 s $ns at 0.8 "finish" # Excution de la simulation $ns run Dcrire la topologie simule par le script fenetre.tcl ci-dessus. Interprter les rsultats de simulations

3.3. crire et tester le code correspondant ce modle de rseau

Le noeud n0 gnre un traffic UDP de type CBR vers le noeud n3. Un paquet de taille 500 octets est envoy vers le noeud n3 chaque 0,005s. Le noeud n1 gnre un traffic UDP de type CBR vers le noeud n3. Un paquet de taille 500 octets est envoy vers le noeud n3 chaque 0,005s. Pour sparer les flux au niveau de nam, on peut rajouter le code suivant. $udp0 set class_ 1 $udp1 set class_ 2 $ns color 1 Blue $ns color 2 Red

Changer la mthode de gestion des files d'attente . Vous remarquez quoi? Changer le code pour avoir des pertes uniquement au niveau des sources.

3.4. Exercice Afin d'tudier le comportement du partage des ressources de TCP, nous allons simuler le rseau reprsent dans la figure ci-aprs. Il est constitu de 4 stations (A, A', B et B') relis par un lien 10 Mb/s. Les dlais de propagation sparant les stations au lien sont ngligeables, par contre le dlai de propagation sur le lien est de 4 ms. Dans cette configuration, la ressource partage est le lien principal.

1) la date t = 0 s, une connexion TCP est ouverte entre A et B pour transporter un flux FTP continu. Ensuite, une connexion TCP est ouverte entre A' et B' pour transporter un flux FTP qui stoppera avant la fin de simulation (la dure totale de simulation est de 10 s). Simulez ce rseau en sinspirant du fichier fenetre.tcl que vous devrez modifier. 2) Visualisez le comportement de cette topologie avec le NAM 3) Quelles sont les modifications introduire ce dernier script si on compte utiliser un agent UDP

You might also like