You are on page 1of 5

NS-2

TRAN Alexandre & LAYOUNI Majid

Simulator Network 2 NS-2


Dans ce paragraphe nous allons donner les bases du langage Tcl, les principes de l'OTcl et les explications sur le mcanisme qui permet un programme C d'utiliser un interprteur Tcl. Pour crire un programme en NS-2 on peut utiliser un diteur de texte de notre choix (vim, emacs, joe, . . .). NS-2 est bas sur le langage TCL. On doit donc donner une extension .tcl nos fichiers. Quand on a crit un programme simu.tcl, on peut faire partir la simulation en tapant ns simu.tcl. Si notre simulation gnre des traces, on peut les regarder laide dun diteur de texte. Si notre simulation gnre un fichier nom.nam, on peut louvrir en tapant nam nom.nam. Tcl est un langage de commande comme le shell UNIX mais qui sert contrler les applications. Son nom signifie Tool Command Language. Tcl offre des structures de programmation telles que les boucles, les procdures ou les notions de variables. Il y a deux principales faons de se servir de Tcl: comme un langage autonome interprt ou comme une interface applicative d'un programme classique crit en C ou C++. En pratique, l'interprteur Tcl se prsente sous la forme d'une bibliothque de procdures C qui peut tre facilement incorpore dans une application. Cette application peut alors utiliser les fonctions standards du langage Tcl mais galement ajouter des commandes l'interprteur. Type et structures de contrle du langage (O)Tcl La fin de ligne est le dlimiteur d'instructions le seul type de donnes est le type chane de caractres (ou liste de chanes) Les commentaires commencent par # et finissent la fin de ligne La valeur d'une variable a est $a Le tableau suivant dcrit les principales instructions.

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

TRAN Alexandre & LAYOUNI Majid

set ns [new Simulator]

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

TRAN Alexandre & LAYOUNI Majid

$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

source dbit constant

interval_ intervalle entre paquets maxpkts_ nombre max de paquets

<A>/FTP

mule une application 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

TRAN Alexandre & LAYOUNI Majid

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

TRAN Alexandre & LAYOUNI Majid

Indique si le lien est dsactiv (down) ou active (up)

- /home/vanet/Bureau/ns-allinone-2.31/ns-2.31/tcl/ex# ns simple-rtg.tcl cest une dmonstration de routage dynamique.

notre simulation gnre des traces, on peut les regarder laide dun diteur de texte.

Ici on voit bien la gnration du fichier .nam

- /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

You might also like