Vous êtes sur la page 1sur 6

TP Introduction au Simulateur réseaux

NS2

Ce TP a pour but de prendre en main l’utilisation de NS2 en particulier la définition du scénario


de simulation avec le script TCL ainsi que l’interprétation des résultats de simulation avec
l’analyse des fichiers traces. Il est divisé en deux parties, une partie dédiée au réseau filaire et la
deuxième partie dédiée au réseau mobile sans fil ad hoc.

I- Simulation d’un réseau filaire (Ethernet)


Dans cette partie, nous souhaitons simuler la topologie réseau suivante :

- Déclaration du scénario de simulation et les fichiers traces

#Déclaration d'une nouvelle simulation


set ns [new Simulator]
#Déclaration des fichiers contenant les résultats
set ftrace [open trace1.tr w]
set nf [open tp1.nam w]
$ns namtrace-all $nf
#Procédure qui termine la simulation
proc finish {}_
{
global ns ftrace nf
$ns flush-trace
close $nf
close $ftrace
exec nam tp1.nam &
exec xgraph ftp1.tr -geometry 800x400 &
exit 0
}

- Définir la durée de simulation


Pour terminer la simulation, il suffit d’ajouter la durée de simulation (par exemple 110
secondes) souhaitée comme suit :

A. RACHEDI TP-NS2 1
$ns at 110.0 ″finish″

- Définition des nœuds et des liens


Les lignes suivantes permettent de définir six nœuds de « n0 » jusqu’à « n5 »

set n0 [$ns node]


set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]

- Définition d’un lien de communication bidirectionnel


$ns duplex-link $n0 $n2 10Mb 10ms DropTail

Où duplex-link indique que le lien est bidirectionnel et pour utiliser un lien directionnel
il suffit de remplacer cette option par « simplex-link ». De plus, 10 ms représente le délai
de propagation et 10 Mb la capacité du lien de communication.
Dans NS2, la sortie de la file d’attente du nœud est conçue comme partie intégrante du
lien de communication. Par conséquent, la déclaration du lien, nécessite de définir la
méthode utilisée pour la gestion de la file d’attente. Dans cet exemple, nous avons utilisé
l’option « DropTail » qui consiste à supprimer tous les paquets en cas de débordement de
la file. Il existe d’autres mécanismes de gestion de la file sur NS2 comme : RED
(Random Early Discard), FQ (Fair Queuing), DRR (Deficit Round Robin), SFQ
(Stochastic Fair Queuing), etc.
La taille du buffer de la file est par défaut fixée à 50. Cependant, nous pouvons attribuer
une autre valeur comme suit :
$ns set queue-limit $n0 $n2 20

Remarque :
Toutes les valeurs par défaut sous NS2 sont déclarées dans le fichier nommé « ns-default.tcl »

La déclaration de tous les liens de la topologie réseau définis dans la figure précédente est
comme suit :

$ns duplex-link $n0 $n2 10Mb 10ms DropTail


$ns duplex-link $n1 $n2 10Mb 10ms DropTail
$ns simplex-link $n2 $n3 0.3Mb 100ms DropTail
$ns simplex-link $n3 $n2 0.3Mb 100ms DropTail
$ns duplex-link $n3 $n4 0.5Mb 30ms DropTail
$ns duplex-link $n3 $n5 0.5Mb 40ms DropTail

- Définition des agents et des applications


Une fois que nous avons défini la topologie du réseau, nous allons définir le type du trafic réseau
et les applications réseau associées. Nous utilisons deux applications : FTP (File Transfert
Protocol) entre les nœuds n0 et n4, CBR (Constant Bit Rate) entre les nœuds n1 et n5. Le

A. RACHEDI TP-NS2 2
protocole utilisé par l’application FTP est le protocole TCP, mais celui qui est utilisé par
l’application CBR est UDP.

Tout d’abord, il faut créer un agent pour chaque protocole TCP et UDP. Ensuite, il faut associer
les applications aux agents appropriés.
# Setup TCP connection
set tcp [new Agent/TCP]
$ns attach-agent $n0 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n4 $sink
$ns connect $tcp $sink
$tcp set fid_ 1
$tcp set packetSize 512
# Setup FTP over TCP connection
set ftp [new Application/FTP]
$ftp attach-agent $tcp

# Setup UDP connection


set udp [new Agent/UDP]
$ns attach-agent $n1 $udp
set null [new Agent/Null]
$ns attach-agent $n5 $null
$ns connect $udp $null
$udp set fid_ 2
# Setup CBR over UDP connection
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set packetSize_ 1000
$cbr set rate_ 0.01Mb
$cbr set random_ false

- Programmer le lancement des applications


Dans la définition du scénario, nous allons définir quand les événements se déclenchent. Dans
notre exemple, il faut indiquer quand les applications FTP et CBR se lancent et se terminent.

$ns at 0.1 ″$cbr start″


$ns at 1.0 ″$ftp start″
$ns at 100.0 ″$cbr stop″
$ns at 101.0 ″$ftp stop″

A. RACHEDI TP-NS2 3
Une fois que nous avons terminé la définition du scénario de simulation, nous exécutons la
simulation à l’aide de la commande « ns nomscenario.tcl ».
Vous pouvez récupérer le fichier tcl qui décrit ce scénario nommé « scen-1.tcl » sur ma page
web.

Analyse des résultats de simulation

1- Tracer le débit moyen au niveau des nœuds n4 et n5 en fonction du temps de simulation.


2- Analyser les résultats obtenus.
Vous pouvez utiliser le script perl nommé « throughput » qui permet d'analyser le fichier
trace et d'extraire le débit chez un nœud donné. La syntaxe à respecter est la suivante :
$perl throughput nomFichierTrace numéroNoeud Granularité

II- Simulation d’un réseau mobile sans fil Ad hoc

Dans cette partie, nous allons simuler un scénario de trois nœuds mobiles distribués dans une
surface de 500x400 m2, comme sur la figure suivante :

Initialement, la position des nœuds 0, 1 et 2 est (5, 5, 0), (490, 285, 0) et (150, 240, 0)
respectivement. Cependant, après 10 secondes de simulation, le nœud 0 commence à se déplacer
vers la position (250, 250, 0) à la vitesse de 3 m/sec. Ensuite, à 20 secondes de la simulation, le
nœud 1 commence à se déplacer vers la position (45, 285, 0) à la vitesse de 5 m/sec. Le nœud 2 à
10 secondes de la simulation commence à se déplacer vers la position (480, 300, 0) avec une
vitesse de 5 m/sec.
De plus, le temps de simulation est de 150 sec et le flux TCP entre le nœud 0 et le nœud 1
commence 10 secondes après le lancement de la simulation.

Les paramètres de base de la simulation dans les différents niveaux sont les suivants :

# Define options
set val(chan) Channel/WirelessChannel ;# channel type
set val(prop) Propagation/TwoRayGround ;# radio-propagation model
set val(netif) Phy/WirelessPhy ;# network interface type
set val(mac) Mac/802_11 ;# MAC type
set val(ifq) Queue/DropTail/PriQueue ;# interface queue type
set val(ll) LL ;# link layer type
set val(ant) Antenna/OmniAntenna ;# antenna model
set val(ifqlen) 50 ;# max packet in ifq
set val(nn) 3 ;# number of mobilenodes
set val(rp) AODV ;# routing protocol
set val(x) 500 ;# X dimension of topography
set val(y) 400 ;# Y dimension of topography
A.set
RACHEDI
val(stop) 150 TP-NS2;# time of simulation end 4
La configuration des nœuds mobiles avec les différents paramètres est comme suit :

# configure the nodes


$ns node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace ON

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


set node_($i) [$ns node]
}

Les quatre derniers paramètres de « node-config » concernent l’activation ou la désactivation des


agents de trace au niveau routage, MAC et mobilité des nœuds.
Pour positionner les nœuds initialement, il faut donner les cordonnées X, Y, Z comme suit :

# Provide initial location of mobile nodes


$node_(0) set X_ 5.0
$node_(0) set Y_ 5.0
$node_(0) set Z_ 0.0

Le déplacement d’un nœud de sa position actuelle à une autre position est effectué comme suit :
# Generation of movements
$ns at 10.0 "$node_(0) setdest 250.0 250.0 5.0"
$ns at 15.0 "$node_(1) setdest 45.0 285.0 5.0"
$ns at 110.0 "$node_(0) setdest 480.0 300.0 5.0"

Où setdest X2 Y2 V, X2 et Y2 désigne la prochaine position du nœud et V représente la vitesse


de déplacement du nœud.

Le format des fichiers traces dans le cas des réseaux mobiles Ad hoc n’est pas le même que celui
du réseau local que nous avons vu dans la première partie.

- Le premier champ est une lettre qui peut être : r, s, f, D qui représente les états
suivants : réception, transmission (sent), retransmission (forwarded) et suppression
(dropped) respectivement. De plus, la première lettre peut être M pour indiquer la
position ou le mouvement du nœud à l’instant donné.
- Le deuxième champ représente le temps
- Le troisième champ désigne le numéro du nœud

A. RACHEDI TP-NS2 5
- Le quatrième champ indique le niveau du paquet qui peut être : MAC, AGT
(niveau transport), RTR (routage du paquet), IFQ (pour indiquer l’interférence de
priorité au niveau de la file d’attente, ce qui génère la suppression du paquet).
- Ensuite, c’est le numéro de séquence du paquet
- …etc

Analyse des résultats de simulation (rapport à rendre avant le 1er mars)


Récupérer le fichier du scénario nommé scen-2.tcl et lancer la simulation. Après avoir analysé
les fichiers traces, répondez aux questions suivantes :

1- Tracer le débit moyen en fonction du temps de simulation. Analyser le résultat obtenu.


2- Tracer le taux de perte des paquets en fonction du temps de simulation.
3- Tracer le débit en fonction de la taille de fenêtre du protocole TCP (20 et 140 octets).
Interpréter les résultats obtenus.

A. RACHEDI TP-NS2 6

Vous aimerez peut-être aussi