Vous êtes sur la page 1sur 19

Ateliers des Rseaux

Le Simulateur NS2
Dr. MOHAMMED BOUHORMA

Mr. BOUDHIR ANOUAR Abdelhakim

Ce document prsente quelques ateliers basiques sur le simulateur des rseaux filaires et sans fils NS2 : Network Simulator 2

1
Ateliers NS2 Computer Sciences Department

Introduction Gnrale
Les rseaux informatiques connaissent une expansion importante grce plusieurs moyens qui ont pu se dvelopper au
cours du temps. Devant l'volution des techniques et de la technologie, de nombreuses solutions sont envisageable pour un
mme problme. La simulation permet ainsi de tester sans aucun cot ces nouvelles technologies, les nouveaux protocoles
mais aussi d'anticiper les problmes qui pourront se poser dans le futur.

NS 2 : Network Simulator 2
NS est un outil logiciel de simulation de rseaux informatiques. 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 l'Internet. Son utilisation est gratuite. Le logiciel est excutable tant sous
Unix que sous Windows. Le simulateur NS actuel est particulirement bien adapt aux rseaux commutation de paquets et
la ralisation de simulations de petite taille. Il contient les fonctionnalits ncessaires l'tude des algorithmes de routage
unicast ou multicast, des protocoles de transport, de session, de rservation, des services intgrs, des protocoles
d'application comme HTTP. De plus le simulateur possde dj une palette de systmes de transmission (couche 1 de
l'architecture TCP/IP), d'ordonnanceurs et de politiques de gestion de files d'attente pour effectuer des tudes de contrle de
congestion.

Du point de vue de lutilisateur, la mise en uvre de ce simulateur se fait via une tape de programmation qui dcrit la
topologie du rseau et le comportement de ses composants, puis vient ltape de simulation proprement dite et enfin
linterprtation des rsultats. Cette dernire tape peut tre prise en charge par un outil annexe, appel nam qui permet une
visualisation et une analyse des lments simuls.

2
Ateliers NS2 Computer Sciences Department

Installation
Linstallation de NS2 peut se faire sous Windows utilisant loutil Cygwin comme mulateur de
lenvironnement linux ou encore sous une distribution linux en suivant les tapes suivantes :

1) Copier la version ns-allinone-2.xx dans le rpertoire de travail.


2) Ouvrir depuis le terminal le rpertoire de travail.
3) Si ns-allinone-2.xx est au format .tar.gz lextraire laide de la commande :

$tar -xvzf filename

4) Accder au dossier ns-allinone-2.xx

$cd ns-allinone-2.xx

Commencer linstallation en tapant :

$./install

5) Aprs fin de linstallation, il faut configure les variable denvironnement depuis le fichier ~/ .bashrc

$gedit ~/.bashrc

et ajouter les lignes suivantes :

3
Ateliers NS2 Computer Sciences Department

#=======================
# LD_LIBRARY_PATH
OTCL_LIB=/your/path/ns-allinone-2.xx/otcl-1.13
NS2_LIB=/your/path/ns-allinone-2.xx/lib
X11_LIB=/usr/X11R6/lib
USR_LOCAL_LIB=/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB:$X11_LIB:$USR_LOCAL_LIB
# TCL_LIBRARY
TCL_LIB=/your/path/ns-allinone-2.xx/tcl8.4.14/library
USR_LIB=/usr/lib
export TCL_LIBRARY=$TCL_LIB:$USR_LIB
# PATH
XGRAPH=/your/path/ns-allinone-2.xx/bin:/your/path/ns-allinone-2.xx/tcl8.4.14/unix:/your/path/ns-allinone-2.31/tk8.4.14/unix
NS=/your/path/ns-allinone-2.xx/ns-2.xx/
NAM=/your/path/ns-allinone-2.xx/nam-1.13/
PATH=$PATH:$XGRAPH:$NS:$NAM
#=======================
Aprs taper la commande :
$ source ~/.bashrc
1) Accder au dossier ns-2.xx :
$cd ns-2.xx
Taper la commande
$make
Et par la suite la commande :
$./validate
A ce point linstallation sest bien termine.
NB : A cause de quelques problmes de compatibilit de compilateurs et de bibliothques il faut appliquer quelques patchs
pour remdier ces bugs .
Syntaxe: patch p0 < [nom_patch].patch

4
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

ATELIER N 1
Cest ainsi que deux nouveaux nuds sont cres portant les tiquettes
n0 et n1.

OBJECTIF : e) La ligne suivante permet de lier ces 2 nuds avec


une liaison duplex, bande passente de 1 mga-bit, de
dlai de 10 ms avec file dattente DropTail.
Dans cet atelier vous tes amen raliser une simulation simple et
reliant deux nuds dans le cas filaire. Pour cela, il va falloir au pralable :
$ns duplex-link $n0 $n1 1Mb 10ms DropTail

Dfinir les nuds du rseau, f) Par la suite lobjet simulator fais appel la
Dfinir les liens entre chaque nud, procdure finish aprs 6 seconde du temps du
a) Dabord il faut crer lobjet simulator en lanant la commande : simulation.
set ns [new Simulator] $ns at 6.0 "finish"
g) Le lancement de la simulation seffectue en lanant
b) Ouverture en mode w ( Ecriture ) le fichier
la commande :
qui sera utilis comme fichier de traces pour la
visualisation : $ns run

set nf [open atelier1.nam w]


$ns namtrace-all $nf

c) Ltape suivante consiste ajouter la procdure


finish qui ferme le fichier de trace el lance la
visualisation avec loutil NAM.

proc finish {} {
global ns nf
$ns flush-trace
close $nf
exec nam atelier1.nam &
exit 0
}
Fig1 : Rsultat de simulation
d) Les deux lignes suivantes dfinissent les deux
nuds du rseau :

set n0 [$ns node]


set n1 [$ns node]

5
Ateliers NS2 Computer Sciences Department

ATELIER N2
d) Il faut spcifier quel instant lagent CBR doit
envoyer et arrter lenvoi des paquets utilisant la
commande at utilis comme suit :
OBJECTIF :
$ns at 0.5 "$cbr0 start"
$ns at 4.5 "$cbr0 stop"
Cet atelier vise la simulation dun trafic gnrateur CBR 'constant bit rate' e) Termier la simulation faisant appel la
en crant un agent UDP. Pour cela on exploitera le mme fichier tcl labor en procdure finish aprs 6 seconde du temps du
Atelier 1.
simulation.
A fin de gnrer un fichier de trace .tr vous tes amen rajouter ( $ns at 6.0 "finish"
ltape b)) les lignes suivantes : f) Le lancement de la simulation seffectue en
lanant la commande :
set f [open atelier2.tr w]
$ns trace-all $f $ns run
a) Dans les lignes suivantes, on cre lagent UDP
quon lattache au nud n0, puis on attache le trafic
CBR lagent UDP.la taille des paquets est 500
bytes ainsi que le paquet sera envoy chaque 0.005
secondes. (i.e 200 paquets /s).

set udp0 [new Agent/UDP]


$ns attach-agent $n0 $udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
b) Un agent nul est crer pour se comporter en tant
que puit SINK , sera attach au nud n1. Fig2 : Rsultat de simulation

set null0 [new Agent/Null] g) Visualiser le fichier de trace out.tr :


$ns attach-agent $n1 $null0 $ gedit out.tr
c) Maintenant les deux agents doivent tre connects
entre eux :

$ns connect $udp0 $null0

6
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

b) Dfinition des nuds et des liens :


ATELIER N3 La dfinition des nuds est trs simple : pour dfinir le nud n0,
la syntaxe est la suivante :
OBJECTIF : set n0 [$ns node]

Cet Atelier vise la ralisation dun transfert FTP entre deux Dfinissez cinq autres nuds dans le fichier TP1.tcl
nuds dun rseau. Pour cela, il va falloir au pralable : que vous appellerez n1, n2, n3, n4, n5.Une fois les Nuds
dfinis, on peut dclarer les liens. Nous voulons obtenir la
a) Dfinir les nuds du rseau,
b) Dfinir les liens entre chaque nud, topologie ci-dessous :
c) Dfinir des agents TCP adquats pour les deux nuds
qui vont communiquer, Le lien entre les nuds n0 et n2 se dfini de la manire suivante :
d) Dfinir la couche applicative FTP de ces deux nuds.
$ns duplex-link $n0 $n2 10Mb 10ms DropTail
a) Dclaration de la simulation et des fichiers de sortie :
#Dclaration d'une nouvelle simulation
Cette ligne dfini le lien entre n0 et n2 avec les caractristiques
set ns [new Simulator] suivantes :
#Dclaration des fichiers contenant les rsultats
set ftrace [open atelier3.tr w] liaison full duplex (lien bidirectionnel)
set nf [open atelier3.nam w] bande passante : 10Mb pour chaque sens
$ns namtrace-all $nf
#Procdure qui termine la simulation dlai de propagation de 10ms
proc finish {} Option : Droptail
{
global ns ftrace nf 10Mb ,10ms
$ns flush-trace
close $nf
close $ftrace
exec nam atelier3.nam &
exit 0
}

7
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

Comme aussi on peut dfinir la taille du buffer en file dattente : set ftp [new Application/FTP]
$ftp set agent_ $tcp0
$ns set queue-limit $n0 $n2 20

NB : Par dfaut cette dernire valeur est dclare au niveau du


fichier ns-default.tcl pour les diffrents liens : ii. Programmer les Applications :
La commande set ns [new simulator] cre un programmeur
Queue set limit _50 dvnements et applications et pourront tre lanc utilisant le
format suivante : $ns at <temps> <vnement>
Dfinissez les autres liaisons pour avoir la topologie
$ns at 1.0 "$ftp start"
souhaite. Toutes les autres liaisons ont les mmes $ns at 120.0 "$ftp stop"
caractristiques que la liaison dfinie ci-dessus.
d) Lancement et visualisation des rsultats
c) Dfinition des agents et des applications : Arrt de la simulation :
i. Dfinition dagents : La simulation sarrte suite lappel de la procdure
"finish" :
On souhaite tablir une communication entre n0 et n4 : nous $ns at 121.0 "finish"
allons donc attribuer a ces nuds des agents TCP. Pour le transfert
de fichier FTP, le nud n0 sera la source et le nud n4 le Pour la visualisation des rsultats, le fichier
destinataire. Pour NS, il faut dclarer : tp1.nam sera gnr par ns et lanc suite lappel de
la procdure "finish". Comme on pourra l'ouvrir avec
Lagent TCP attach au nud n0 : NAM, en tapant :
set tcp0 [new Agent/TCP] $nam atelier3.nam
$ns attach-agent $n0 $tcp0
Lancement de la simulation :
lagent TCP puis lassigner au nud n4 : Alors quaprs cette dclaration de l'instance de la
set tcp1 [new Agent/TCPSink/DelAck] simulation, il ne reste plus qu' lancer la simulation
$ns attach-agent $n4 $tcp1 par la commande :
$ns atelier3.tcl
Il reste enfin dfinir la couche applicative FTP de la source et
de l'attache n0 comme suit :

8
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

II. La dclaration du routage dynamique


ATELIER N4
Cet Atelier vise l'observation du principe du routage dynamique : NS-2 utilise un algorithme de routage utilisant la proximit pour
nous allons simuler un transfert FTP entre deux nuds du rseau et dterminer le plus court chemin, mais avec des tables de routage statiques.
rendre momentanment inutilisable le lien utiliser par le transfert. Ainsi, Pour viter la perte de paquets lors de la rupture des liens, il est
les tables de routages vont tre recalcules grce des changes de possible de prciser lalgorithme de routage que lon souhaite
paquets de signalisation entre les nuds. utiliser. Par exemple, on peut choisir lalgorithme de routage
dynamique Distance Vector (vecteur de distance) qui permet de
dterminer le plus court chemin parmi les liaisons disponibles.
I. Topologie et rseau : Pour cela, il suffit dajouter la ligne suivante juste aprs la
cration du simulateur :
Nous allons donc visualiser le routage dynamique sur la topologie $ns rtproto DV
suivante :
4 3 III. Disfonctionnement d'un lien
6 0
1 Ensuite, il reste faire "rompre" le lien entre le nud n1 et le
5 n2 l'instant t=1,0s et le rtablir t=1,2s. La syntaxe est la
2 suivante :

$ns rtmodel-at 1.0 down $n1 $n2


Comme dans le TP1, dfinissez correctement les nuds et les $ns rtmodel-at 1.2 up $n1 $n2
liens (on gardera le mme type de lien), les agents TCP et
l'application FTP. Le transfert FTP a lieu entre le nud n0 (source) Et finalement Lancer alors la simulation et observez le
et le n6 (Puit) : rsultat.

Caractristiques des liens : Travail faire :


o Pour les deux cas ci-dessous et faisant des ruptures des liens
liaison full duplex (n1-n2 ; n1-n3 ; n3-n4 ; n4-n5), dresser un tableau de variation
bande passante : 10Mb pour chaque sens du dlai et de nombre de sauts lors de lenvoi du trafic entre n0
dlai de propagation de 10ms et n6.
Option : droptail Cas 1 : Sans routage DV
Cas 2 : Avec routage DV
o Tracer une courbe pour ces deux cas et comparer.

9
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

ATELIER N5 Script TCL


Cration du simulateur
set ns [new Simulator]
La congestion se dfinit lorsque la capacit d'un rseau est Cration du fichier de traces NS-2
dpasse par la demande. Lors de cet atelier on simulera la set nf [open atelier5.nam w]
$ns namtrace-all $nf
congestion au niveau dun routeur (nud) et les modles de gestion
Procdure de fin de simulation, qui crit les donnes dans le
de files dattentes (DropTail, SFQ, RED).
fichier et lance NAM pour la visualisation
Pour ce faire, on considre la topologie (voir figure ci- proc finish {} {
dessous) compose de 3 nuds (2sources et 1 destination) et un global ns nf
nud centrale jouant le rle de routeur. $ns flush-trace
close $nf
exec nam atelier5.nam &
n0
exit 0
Flux UDP de 500 octets }
toutes les 5ms LIEN : 2 Mbps/10ms/Droptail Cration des noeuds
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
n3
Cration des liens, tous en 2Mbps/10ms de TR/file d'attente
n2 DropTail
n1 $ns duplex-link $n0 $n2 2Mb 10ms DropTail
Flux UDP de 500 octets $ns duplex-link $n1 $n2 2Mb 10ms DropTail
toutes les 5ms $ns duplex-link $n3 $n2 2Mb 10ms DropTail
Cration de deux agents implants dans n0 et n1
set udp0 [new Agent/UDP]
Aprs lancement du script ci-dessous et pour visualiser le $ns attach-agent $n0 $udp0
set udp1 [new Agent/UDP]
phnomne de congestion diminuer 1Mbps la valeur de la bande $ns attach-agent $n1 $udp1
passante. Observez le comportement du nud n2 au moment ou Les Traffic CBR de 500 octets toutes les 5 ms pour UDP0
deux nuds commencent lmission de leurs donnes en CBR en set cbr0 [new Application/Traffic/CBR]
mme temps. $cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0

10
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

Traffic CBR de 500 octets toutes les 5 ms pour UDP1


set cbr1 [new Application/Traffic/CBR]
$cbr1 set packetSize_ 500
$cbr1 set interval_ 0.005
$cbr1 attach-agent $udp1
Cration d'un agent vide, destin recevoir les paquets
implant dans n1
set null0 [new Agent/Null]
$ns attach-agent $n3 $null0
Le trafic issus des agents udp0 et udp1 est envoy vers null0 2- Utilisant le model DropTail, tous les paquets provenant du nud 0
$ns connect $udp0 $null0 sont transmis au nud 3, et un quart des paquets du nud 1 sont transmis
$ns connect $udp1 $null0 au nud 3, tandis que trois quart des paquets mis depuis le nud 1
Scnario de dbut et de fin de gnration des paquets par destination du nud 3 sont perdus.
cbr0 a. Calculer pour les deux cas (bp0=1Mbps et bp1= 2Mbps) :
o Le nombre de paquets transmis,
$ns at 0.5 "$cbr0 start" o Le nombre de paquets perdus.
$ns at 0.5 "$cbr1 start" 3- A fin dvaluer le modle de file dattente adquat on remplacera
$ns at 4.5 "$cbr0 stop"
le modle DropTail , bas sur la principe FIFO, par les modles RED et
$ns at 4.5 "$cbr1 stop"
SFQ :
La simulation va durer 5 secondes et appeller la proc finish
$ns at 5.0 "finish"
RED: Random Early Detection
SFQ: Stochastic Fair Queuing
Definition de classes pour la coloration
$udp0 set class_ 1
$udp1 set class_ 2
Coloration des classes : bleu pour udp0 (classe 1) et rouge Bande Paquets Paquets
Queue
Passante Transmis perdus
pour udp1 (classe 2)
$ns color 1 Blue
bp0
$ns color 2 Red Droptail (2Mbps)
dbut de la simulation bp1
$ns run (1Mbps)
SFQ bp1
(1Mbps)
1- Pour les deux cas de bandes passantes (1Mbps et 2Mbps), vous RED bp1
pouvez remarquer quel niveau se produit la congestion et la saturation de (1Mbps)
la file dattente.
NB: Un script awk ou perl savre utile pour faire ces calculs.

11
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

set val(rp) DSDV


ATELIER N6 #set val(rp)
#set val(rp)
DSR
AODV
OBJECTIF :
set val(x) 500 ;#Pour dfinir la topologie
set val(y) 500 ;#utilise.
Latelier suivant fait lobjet dune simulation sans fil (Wireless) de deux
nuds, communiquant un trafic TCP et une application FTP dans un contexte de
mobilit. Pour ce faire, on procde comme suit : b) Dclaration des fichiers de traces et directeur doprations
gnrales :
Dfinir des paramtres et options de simulation, i. Dclarons, comme suit, les variables globales, les fichiers de
Type de canal, model de propagation, type dinterface rseau, traces ncessaires et la topologie utilise (Aire de simulation) :
Type de la couche MAC,
Interface de file dattente (queue), set ns_ [new Simulator]
set tracefd [open atelier6.tr w]
Couche de lien (Link Layer), $ns_ trace-all $tracefd
Model dantenne,
Le nombre de paquets max en file dattente, set namtrace [open atelier6.nam w]
Topologie, $ns_ namtrace-all-wireless $namtrace $val(x) $val(y)
Nombre des nuds, # set up topography object
Protocol de routage utiliser set topo [new Topography]
Dclaration des fichiers de traces et directeur doprations gnrales,
$topo load_flatgrid $val(x) $val(y)
Cration et Configuration des nuds mobiles,
Dfinition du model de mobilit,
Dfinition du trafic et son attachement aux nuds, ii. Loutil GOD permet lenregistrement du plus petit nombre de
Lancement et Visualisation de la simulation. sauts dun nud un autre et compare les performances du
routage de protocoles. Sa dclaration se fait comme suit :
a) Dfinition des options de simulation : create-god $val(nn)

Les paramtres et options de simulation pouvant tre dclare dune iii. La fonction de la classe channel est de dlivrer les paquets de
manire globale : nuds sans fil a ces voisins se trouvant dans la porte de
captage. (Voir Channel.cc).
set val(chan) Channel/WirelessChannel
set val(prop) Propagation/TwoRayGround
set val(netif) Phy/WirelessPhy La classe WirelessPhy de la couche physique a comme rle
set val(mac) Mac/802_11 lenvoi et la rception de parquets du canal ( Channel).
set val(ifq) Queue/DropTail/PriQueue
set val(ll) LL
set val(ant) Antenna/OmniAntenna set chan_ [new $val(chan)]
set val(ifqlen) 50
set val(nn) 2

12
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

c) Cration et Configuration des nuds mobiles :


i. La configuration des nuds se fait par dfinition doptions et $node_(1) set X_ 150.0
$node_(1) set Y_ 150.0
activation ou dsactivation de modules : $node_(1) set Z_ 0.0
Mouvements des nuds:
$ns_ node-config -adhocRouting $val(rp) \ $ns_ at 0.0 "$node_(0) setdest 50.0 50.0 5.0"
-llType $val(ll) \ $ns_ at 0.0 "$node_(1) setdest 60.0 40.0 10.0"
-macType $val(mac) \
-ifqType $val(ifq) \
Nouveau dplacement du nud 1 une vitesse de 30m/s
$ns_ at 3.0 "$node_(1) setdest 240.0 240.0 30.0"
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \ e) Dfinition du trafic et son attachement aux nuds :
-phyType $val(netif) \
-topoInstance $topo \
-agentTrace ON \ De mme la gnration de trafic peut tre faite dans le fichier source (.tcl)
-routerTrace ON \ ou par appel dun fichier comportant la dfinition de lapplication et trafic
-macTrace ON \
-movementTrace ON \ CBR/FTP et dagents TCP/UDP.
-channel $chan_
set tcp [new Agent/TCP]
$tcp set class_ 2
ii. Pour un nombre important de nuds, on a recours une set sink [new Agent/TCPSink]
boucle For : $ns_ attach-agent $node_(0) $tcp
$ns_ attach-agent $node_(1) $sink
for {set i 0} {$i < $val(nn)} {incr i} { $ns_ connect $tcp $sink
set node_($i) [$ns_ node] set ftp [new Application/FTP]
$node_($i) random-motion 0 $ftp attach-agent $tcp
$ns_ initial_node_pos $node_($i) 20 $ns_ at 0.5 "$ftp start"
}
f) Lancement et Visualisation de la simulation :
d) Dfinition du model de mobilit :
for {set i 0} {$i < $val(nn) } {incr i} {
$ns_ at 6.0 "$node_($i) reset";
La dfinition du model de mobilit des nuds se fait : }
$ns_ at 6.0 "stop"
$ns_ at 6.01 "puts \"NS EXITING...\" ; $ns_ halt"
Dans le fichier source (.tcl), proc stop {} {
Par appel dun fichier comportant les positions initiales et finales global ns_ tracefd
des nuds et en spcifiant le nud, la vitesse maximale et les cordonns $ns_ flush-trace
exec nam atelier6.nam &
atteindre.
close $tracefd
Dans cet atelier, les positions et mouvementes font partie du }
fichier source et sont dclars ainsi :
puts "Starting Simulation..."
$ns_ run
$node_(0) set X_ 15.0
$node_(0) set Y_ 15.0
$node_(0) set Z_ 0.0

13
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

ATELIER N7
OBJECTIF : Dclaration du canal, model de propagation radio et de topographie :

set wchan [new $opt(chan)]


Lors de cet manipulation, on se focalisera sur la gestion de fichiers de set wprop [new $opt(prop)]
traces, de source de trafic et de scnario de mobilit en variant les protocoles set wtopo [new Topography]
utiliss (AODV, DSDV et DSR ) pour diffrentes vitesses des nuds. Loutil Dclaration de la topologie:
$wtopo load_flatgrid $opt(x) $opt(y)
Xgraph et script awk servira pour lexploitation des fichiers de trace. Dclaration des fichiers de traces et du GOD:

a) Dfinition des options de simulation : set tracefd [open $opt(tr) w]


set namtrace [open $opt(nam) w]
$ns_ trace-all $tracefd
Les paramtres de simulation sont les suivantes : $ns_ use-newtrace
$ns_ namtrace-all-wireless $namtrace 500 500
set opt(chan) Channel/WirelessChannel set god_ [create-god $opt(nn)]
set opt(prop) Propagation/TwoRayGround
set opt(netif) Phy/WirelessPhy c) Cration et Configuration des nuds mobiles :
set opt(mac) Mac/802_11
set opt(ifq) Queue/DropTail/PriQueue
set opt(ll) LL Configuration des nuds :
set opt(ant) Antenna/OmniAntenna
set opt(x) 500
set opt(y) 500 $ns_ node-config -adhocRouting $opt(adhocRouting) \
set opt(ifqlen) 50 -llType $opt(ll) \
set opt(seed) 0.0 -macType $opt(mac) \
set opt(tr) atelier7.tr -ifqType $opt(ifq) \
set opt(nam) visualisation7.nam -ifqLen $opt(ifqlen) \
set opt(adhocRouting) AODV -antType $opt(ant) \
set opt(nn) 3 -propType $opt(prop) \
set opt(cp) "cbr" -phyType $opt(netif) \
set opt(sc) "scen" -channelType $opt(chan) \
set opt(stop) 200.0 -topoInstance $wtopo \
-agentTrace ON \
-routerTrace OFF \
b) Dclaration des fichiers de traces et directeur doprations -macTrace ON
gnrales :
Cration des nuds:
Les variables globales sont dclares ainsi :
for {set i 0} {$i < $opt(nn) } {incr i} {
set ns_ [new Simulator] set node_($i) [$ns_ node]
set tracefd [open $opt(tr) w] $node_($i) random-motion 0
set windowVsTime2 [open win.tr w] }

14
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

Dfinition du trafic $ns_ at $opt(stop).000000001 "puts \"NS EXITING...\" ; $ns_ halt"


Fin de simulation :
puts "Starting Simulation..."
Le trafic utilis sera charg depuis le fichier cbr ., appel ainsi : $ns_ run

puts "Chargement du fichier des senarios..."


source $opt(cp) d) Manipulation de loutil Xgraph :

Gnration de mouvement : En exploitant le fichier win.tr on pourra visualiser lvolution


temporelle du trafic simul :
Les mouvements des nuds sera charg depuis un fichier scene xgraph win.tr
.lappel du fichier est comme suit :

puts "Chargement du scenario des mouvements..."


source $opt(sc)

Dclaration de la procdure plotWindow qui servira pour Xgraph

proc plotWindow {tcpSource file} {


global ns_
set time 0.01
set now [$ns_ now]
set cwnd [$tcpSource set cwnd_]
puts $file "$now $cwnd"
$ns_ at [expr $now+$time] "plotWindow $tcpSource $file" }
$ns_ at 10.1 "plotWindow $tcp $windowVsTime2"

Initialisation de la position des nuds : Fig.3 : trac du Xgraph

for {set i 0} {$i < $opt(nn)} {incr i} {

$ns_ initial_node_pos $node_($i) 20


}

Initialisation des nuds aprs fin de simulation :

for {set i 0} {$i < $opt(nn) } {incr i} {


$ns_ at $opt(stop).000000001 "$node_($i) reset";
}

Temps de fin de simulation pour loutil NAM :

$ns_ at $opt(stop) "$ns_ nam-end-wireless $opt(stop)" Fig.4 : Rsultat de simulation

15
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

e) Exploitation de fichier de trace :


for(seqno = 0; seqno < 100; seqno++) {
i. Filtrage de paquets reues : if(action== "s")
{
Utilisant la commande grep on pourra crire dans les fichiers rec.txt count1++;
}
et sent.txt les paquets reus et envoys: if (action=="r")
{
grep "^r " atelier7.tr >rec.txt count2++;
grep "^s " atelier7.tr >sent.txt }
}
}
END {
printf("===============Statistiques ===============\n");
printf("A-Paquets Envoys/Reus:\n============\n");
printf("Nb paquets reus: %d\n",count2);
printf("Nb paquets envoys: %d\n",count1);
}

Lapplication du script stat.awk au fichier de trace donne un rsultats


comme suit :

Tp7 atelier7.tr
Fig.5 : Fichiers filtrs

ii. Calcul de nombre de paquets envoys et reus :

Utilisant un script awk , on parvient calculer plusieurs mtriques


savoir le nombre de paquets envoys et reus, taux de paquets dlivre Tp7

le script awk enregistr sous un fichier (stat.awk) pourra tre lanc suite
la commande :

Awk f stat.awk atelier7.tr

BEGIN {
i=0;
count1=0;
count2=0;
}
{
action = $1;

16
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

set topo [new Topography]


ATELIER N8 $topo load_flatgrid $val(x) $val(y)
OBJECTIF :
create-god $val(nn)
On souhaite dans le prsent atelier valuer les performances des
protocoles de routage implments dans NS2 (AODV, DSDV et DSR) et mesurant
le taux de paquet dlivr et la consommation dnergie dans un contexte de b) Cration et Configuration des nuds mobiles :
mobilit des nuds.
for {set i 0} {$i < $val(nn) } { incr i } {
Les paramtres utilise sont dresss dans le tableau suivant : set node_($i) [$ns node]
}
Channel Channel/WirelessChannel
Radio-propagation model Propagation/TwoRayGround $ns node-config -adhocRouting $val(rp) \
Network interface type Phy/WirelessPhy -llType $val(ll) \
Mac Mac/802_11 -macType $val(mac) \
Interface queue type Queue/DropTail/PriQueue -ifqType $val(ifq) \
Protocol DSDV / DSR / AODV -ifqLen $val(ifqlen) \
Number of mobile nodes 10 -antType $val(ant) \
Topography 1000 m -propType $val(prop) \
Enery model -phyType $val(netif) \
EnergyModel
-channelType $val(chan) \
Initial energy in Joules 10
-topoInstance $topo \
Rxpower 0.3
-agentTrace ON \
Txpower 0.6 -routerTrace ON \
-macTrace OFF \
a) Dclaration des fichiers de traces et directeur doprations -movementTrace ON\
gnrales : -energyModel $opt(energymodel) \
-rxPower 0.3 \
Les variables globales sont dclares ainsi : -txPower 0.6 \
-initialEnergy $opt(initialenergy)
set ns [new Simulator]
set tracefd [open atelier8.tr w]
set windowVsTime2 [open atelier8_win.tr w]
set namtrace [open atelier8.nam w]

$ns trace-all $tracefd


$ns namtrace-all-wireless $namtrace $val(x) $val(y)
# set up topography object

17
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

c) Positionnement des nuds : set cwnd [$tcpSource set cwnd_]


puts $file "$now $cwnd"
$ns_ at [expr $now+$time] "plotWindow $tcpSource $file" }
En respectant la syntaxe suivante, essayez de positionnez les 10 $ns_ at 10.1 "plotWindow $tcp $windowVsTime2"
nuds dans la topologie mentionne (1000 m):
g) Dfinition de la position initiale des nuds dans NAM
$node set X_ <x1>
$node set Y_ <y1> for{set i 0} {$i < $val(nn)} { incr i } {
$node set Z_ <z1> # 30 defines the node size for nam
$ns initial_node_pos $node_($i) 30
}
NB : L e Z et toujours 0.0 (la simulation se fait deux dimensions)
h) Initialisation des nuds aprs fin de simulation :
d) Gnration des mouvements :
for {set i 0} {$i < $val(nn) } { incr i } {
La gnration des mouvements des nuds sera faite en se basant sur la $ns at $val(stop) "$node_($i) reset";
}
syntaxe suivante :

$ns at $time "$node setdest <x2> <y2> <speed>" i) Arrt et lancement de simulation :

$ns at $val(stop) "$ns nam-end-wireless $val(stop)"


e) Dfinition du trafic et son attachement aux nuds : $ns at $val(stop) "stop"
$ns at 150.01 "puts \"end simulation\" ; $ns halt"
proc stop {} {
set tcp [new Agent/TCP] global ns tracefd namtrace
$tcp set class_ 2 $ns flush-trace
set sink [new Agent/TCPSink] close $tracefd
$ns attach-agent $node_(0) $tcp close $namtrace
}
$ns attach-agent $node_(6) $sink
$ns connect $tcp $sink $ns run
set ftp [new Application/FTP]
$ftp attach-agent $tcp j) Affichage graphique avec Xgraph et NAM :
$ns at 10.0 "$ftp start"
Lancer la visualisation avec NAM utilisant la commande :
f) Dclaration de la procdure plotWindow pour le traage avec
Xgraph : $nam atelier8.nam

proc plotWindow {tcpSource file} {


global ns_ Afficher lvolution du trafic, puis comparer :

set time 0.01 $Xgraph atelier8_win.tr


set now [$ns_ now]

18
Dr. BOUHORMA, A.BOUDHIR
Ateliers NS2 Computer Sciences Department

if (action == "r"){
nombres_de_paquets_transmis = nombres_de_paquets_transmis +1 ;
Travail faire: }
1) Plusieurs simulations sont raliser en variant le protocole if (action == "s"){
utilis, la vitesse des nuds (entre 5 et 30m/s), et retirant pour nombres_de_paquets_recus = nombres_de_paquets_recus +1 ;
}
chaque cas lnergie consomme par le sink tout en remplissant if (action == "f"){
le tableau suivant : nombres_de_paquets_forwardes = nombres_de_paquets_forwardes +1 ;
}
if (action == "D"){
Protocol Speed (m/s) PS PR DR Energy of sink nombres_de_paquets_dropes = nombres_de_paquets_dropes +1 ;
AODV 5 }
if(niveau == "IFQ") {
10 nombres_de_paquets_dropes_IFQ++;
15 }
}
20 END {
30 printf "les noeuds ont transmis %f paquets\n",
DSDV 5 nombres_de_paquets_transmis;
printf "les noeuds ont recu %f paquets\n", nombres_de_paquets_recus;
10 printf "les noeuds ont forwarde %f paquets\n",
15 nombres_de_paquets_forwardes;
20 printf "les noeuds ont drope %f paquets\n",
nombres_de_paquets_dropes;
30 printf "les noeuds ont drope %f paquets IFQ\n",
DSR 5 nombres_de_paquets_dropes_IFQ;}
10
15 Le calcul est bas sur les formules mentionnes dans le tableau
20 suivant :
30

NB :

Le calcul de PS, PR et PDR et lnergie du sink sera fait par script awk :

BEGIN {
nombres_de_paquets_transmis = 0 ;
nombres_de_paquets_recus = 0 ;
nombres_de_paquets_forwardes = 0 ;
nombres_de_paquets_dropes = 0 ; A la fin, tracer lvolution de DR et de lnergie en fonction de la
nombres_de_paquets_dropes_IFQ = 0;
}
vitesse des nuds pour chaque protocole.
{
action = $1;
temps = $2;

19
Dr. BOUHORMA, A.BOUDHIR