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

Enseignements : Master1 - Ns-2 Tutoriel

Page 1 sur 4

Enseignements
Master 1 Ns-2 Tutoriel
LPARS LPQCI L3 Master1 Master2

Tutoriel ns-2
Ce tutoriel a t ralise par P. Mathis. 1. Introduction Le simulateur ns-2 permet la description et la simulation de rseaux. Le rseaux ainsi que le trafic qu'il supporte doivent tre dcrit en (o)tcl dans un fichier. La commande ns fichier.tcl lance le simulateur qui va excuter le scnario dcrit dans fichier.tcl, par exemple le transfert de 1Mo entre deux noeuds d'un rseau dont on aura prcis la topologie (noeuds, arcs) et les capacit de chaque arc. L'utilitaire nam rcupre les donnes textuelles fournies en sortie par ns-2 et offre une visualisation du scnario. Le fichier comment ns_simple.tcl montre comment saisir un scnario. 2. Type et structures de contrle du langage (O)Tcl Le langage tcl est un langage de scripts : 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.
set a 18 set a "bonjour tous" set b $a puts $b puts "B vaut $b" set a(couleur) "red" [fonc par1 par2] set obj [new Class1/Class2] [$obj meth par1 par2] $obj set field val set a [$obj set field] [expr $a + 8 * $b] set f [open "File" w] puts $f "truc" exec wc & affecter la chane de caractre 18 la variable a autre affectation affecter le contenu de la variable a la variable b imprimer le contenu de la variable b idem, mais l'intrieur d'une chane de caractres les tableaux ont des indices qui sont des chanes de caractres appeler la fonction fonc avec des paramtres crer une instance d'un objet invoquer la mthode meth de l'objet obj instancier une variable de l'objet obj rcuprer la valeur d'une variable de l'objet obj valuer l'expression arithmtique ouvrir le fichier de nom File en criture, et mettre le descripteur dans f crire une chane dans le fichier de descripteur f excuter un processus systme (en arrire plan avec &)

Les structures de contrle sont : Conditionnelles : if { $a = $b } { # code if

mhtml:file://C:\Users\Chafik\Desktop\simulation des reaseaux\Enseignements Master... 04/03/2011

Enseignements : Master1 - Ns-2 Tutoriel

Page 2 sur 4

} else { # code else }

Itrations : for { set i 0 } { $i < 10 } { incr i } { # code de la boucle }

Enfin, il est possible de dfinir des fonctions: proc fonc { par1 par2 } { global var1 var2 # code return $quelquechose }

3. Cration d'un scnario Pour 1. 2. 3. dcrire un rseau et son trafic, il faut dfinir dans l'ordre : la topologie du rseau : les noeuds et les arcs la couche transfort (UDP, TCP, ...) entre des pairs de noeuds (par ncessairement adjacents) la couche application qui va fournir les donnes

4. 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 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 $ns set $ns f [open out.tr w] trace-all $f nf [open out.nam w] namtrace-all $nf

f et nf sont des descripteurs de fichier pralablement ouverts. Attention: ces instructions doivent venir avant celles de cration des objets de la simulation ! 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

mhtml:file://C:\Users\Chafik\Desktop\simulation des reaseaux\Enseignements Master... 04/03/2011

Enseignements : Master1 - Ns-2 Tutoriel

Page 3 sur 4

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 set $ns $ns udp [new Agent/UDP] trappe [new Agent/Null] attach-agent $n1 $udp attach-agent $n2 $trappe # # # # cre une source UDP cre un puits d'information attache la source un noeud attache la destination un autre

$ns connect $udp $trappe

# 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] $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 <A>/FTP description source dbit constant mule une application FTP paramtres interval_ intervalle entre paquets maxpkts_ nombre max de paquets

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" $ns at 5.0 "$truc stop" $ns at 10.0 "finish" # dmarre l'application $truc t=1.0 # l'arrte t=5.0 # 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:

mhtml:file://C:\Users\Chafik\Desktop\simulation des reaseaux\Enseignements Master... 04/03/2011

Enseignements : Master1 - Ns-2 Tutoriel

Page 4 sur 4

proc finish { } { global ns f nf stat puts "C'est fini" close $f close $nf puts "Dbit = $stat(debit)" }

# fermeture du fichier de trace (s'il y a) # fermeture du fichier de trace animation # impression d'une statistique

On utilisera aussi souvent des procdures qui se re-programment, telle: proc perpetuelle { } { global ns # ici un traitement utile... set now [$ns now] set delai 0.1 $ns at [expr $now+$delai] "perpetuelle" }
2011 Julien Montavont Powered by PmWiki

# rcupration de la date courante # incrent de temps # c'est reparti

mhtml:file://C:\Users\Chafik\Desktop\simulation des reaseaux\Enseignements Master... 04/03/2011

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