Professional Documents
Culture Documents
Cration d'un scnario Pour dcrire un rseau et son trafic, il faut dfinir dans l'ordre : 1. 2. 3. 4. la topologie du rseau : les noeuds et les arcs la couche transport (UDP, TCP, ...) entre des pairs de noeuds la couche application qui va fournir les donnes des temporisateurs prcisant les instants auxquels les transferts vont dmarrer
La couche rseau correspond IP et est gre par ns-2. Dans un fichier otcl, on commence par crer un simulateur
Session 2009 Page 1 sur 5
NS-2
Pour conserver l'historique de la simulation (notamment pour la visualiser avec nam), on peut indiquer les deux fichiers vers lesquels seront dirigs les deux historiques : set f [open out.tr w] $ns trace-all $f set nf [open out.nam w] $ns namtrace-all $nf f et nf sont des descripteurs de fichier pralablement ouverts. Topologie Ensuite, on cre les noeuds du rseau, puis les liens qui les relient avec leur dbit et leur latence, et la politique de rejet des paquets en trop (ici DropTail mais il y en a d'autres). On peut aussi prciser le nombre limite de paquets dans la file d'attente. set n1 [$ns node] set n2 [$ns node] $ns duplex-link $n1 $n2 1Mb 250ms DropTail $ns queue-limit $n1 $n2 100
Transport Il faut crer les agents de transport, les attacher aux noeuds et les connecter entre eux. Parmi les agents disponibles, on trouve Agent/Null, Agent/UDP, Agent/TCP et Agent/TCPSink. Le code est par exemple: set udp [new Agent/UDP] set trappe [new Agent/Null] $ns attach-agent $n1 $udp $ns attach-agent $n2 $trappe $ns connect $udp $trappe # cre une source UDP # cre un puits d'information # attache la source un noeud # attache la destination un autre # associe la paire origine/destination
Noter qu'il n'est pas ncessaire de spcifier quelle est la route suivie par les paquets d'une paire d'agents : c'est le simulateur qui calcule les routes les plus courtes. Pour un trafic TCP, il faut un metteur et un puits : set tcp [new Agent/TCP] $tcp set fid_ 1 ;# Color it's packages red set sink [new Agent/TCPSink]
Session 2009 Page 2 sur 5
NS-2
$ns attach-agent $n1 $tcp $ns attach-agent $n2 $sink $ns connect $tcp $sink
Application Enfin, on cre les sources de trafic, c'est--dire des applications. Ici, nous n'allons considrer que deux types d'application : CBR (Constant Bit Rate) et FTP. Tous ont comme attributs packetSize_ (taille des paquets, qui sera constante) et rate_ (dbit en octets/s). Classe (<A>=Application) <A>/Traffic/CBR description paramtres
<A>/FTP
Il faut enfin attacher l'application l'agent de transport : set app [new Application/Traffic/CBR] $app attach-agent $udp
Pour dmarrer et arrter une source src, on a : $src start et $src stop
Temporisateurs Il est possible de programmer des vnements qui seront excuts des dates prcises de la simulation. Par exemple: $ns at 1.0 "$truc start" # dmarre l'application $truc t=1.0 $ns at 5.0 "$truc stop" # l'arrte t=5.0 $ns at 10.0 "finish" # invoque la procdure finish t=10.0
Typiquement, la fin de la simulation se fera par l'invocation d'une procdure charge du traitement final des statistiques. Exemple: proc finish { } {
Session 2009 Page 3 sur 5
NS-2
global ns f nf stat puts "C'est fini" close $f # fermeture du fichier de trace (s'il y a) close $nf # fermeture du fichier de trace animation puts "Dbit = $stat(debit)" # impression d'une statistique }
Test : Nous avons gnrs un programme en .tcl (test-suite-simple.tcl) qui nous a permis dobserver les performances via xgraph .
xgraphe
Voici quelques exemples de programme par dfauts que nous avons pus tester : - /home/vanet/Bureau/ns-allinone-2.31/ns-2.31/tcl/ex# ns simple-dyn.tcl cest une dmonstration illustrant un problme de communication et de rcupration ne prvoyant pas de routage dynamique.
Session 2009
Page 4 sur 5
NS-2
notre simulation gnre des traces, on peut les regarder laide dun diteur de texte.
- /home/vanet/Bureau/ns-allinone-2.31/ns-2.31/tcl/ex# ns simple-eqp1.tcl cest une demonstration du cout du chemin sur une topologie dynamique.
Session 2009
Page 5 sur 5