Vous êtes sur la page 1sur 5

NS-2 TRAN Alexandre & LAYOUNI Majid

Session 2009 Page 1 sur 5











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. la topologie du rseau : les noeuds et les arcs
2. la couche transport (UDP, TCP, ...) entre des pairs de noeuds
3. 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
Simulator Network 2
NS-2
NS-2 TRAN Alexandre & LAYOUNI Majid
Session 2009 Page 2 sur 5

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] # cre une source UDP
set trappe [new Agent/Null] # cre un puits d'information
$ns attach-agent $n1 $udp # attache la source un noeud
$ns attach-agent $n2 $trappe # 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-2 TRAN Alexandre & LAYOUNI Majid
Session 2009 Page 3 sur 5

$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)
description paramtres
<A>/Traffic/CBR source dbit constant interval_ intervalle entre
paquets
<A>/FTP mule une application
FTP
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" # 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 { } {
NS-2 TRAN Alexandre & LAYOUNI Majid
Session 2009 Page 4 sur 5

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 .







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.
xgraphe
NS-2 TRAN Alexandre & LAYOUNI Majid
Session 2009 Page 5 sur 5




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




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



Ici on voit bien la gnration du fichier
.nam
notre simulation gnre des traces,
on peut les regarder laide dun
diteur de texte.
Indique si le lien est dsactiv
(down) ou active (up)

Vous aimerez peut-être aussi