Vous êtes sur la page 1sur 35

DELAUNOY Yann - CORNILLEAU Kevin IR 3me anne - 2008/09 MDR - Projet Hakim Badis http://www-igm.univ-mlv.

fr/~badis/IR3/ns2/

Projet de modlisation des rseaux


Introduction .................................................................................. 2 Prsentation des outils utiliss ...................................................... 3 NS................................................................................................ 3 TCL .............................................................................................. 3 NAM ............................................................................................. 3 Configuration de travail ................................................................. 4 Installation des diffrents outils ........................................................ 4 Dpendances .............................................................................. 4 NS ............................................................................................. 4 NAM........................................................................................... 5 Patch UM-OLSR ........................................................................... 5 Prsentation gnrale de la dmarche ........................................... 6 Modle de simulation ...................................................................... 6 Scnarios d'tude ........................................................................... 6 Traitements automatiss ................................................................. 7 Algorithmes tudis ...................................................................... 13 DSR (Dynamic Source Routing) ................................................... 13 AODV (Ad-hoc On-demand Distance Vector).................................. 14 OLSR (Optimized Link State Routing Protocol) ............................... 14 tude d'un rseau ad-hoc statique ............................................... 15 Scripts de simulation..................................................................... 15 Rsultats de simulation ................................................................. 19 Bande passante moyenne ........................................................... 19 Probabilit de perte.................................................................... 20 Dlai de bout-en-bout ................................................................ 21 Conclusion de l'tude sur un rseau statique .................................... 21 tude dun rseau ad-hoc dynamique .......................................... 23 Scripts de simulation..................................................................... 23 Rsultats de simulation ................................................................. 28 Bande passante moyenne ........................................................... 28 Probabilit de perte.................................................................... 29 Dlai de bout-en-bout ................................................................ 30 Conclusion de l'tude sur un rseau dynamique ................................ 30 Comparaison des scnarios.......................................................... 32 Conclusion ................................................................................... 35

INTRODUCTION
Dans le cadre des enseignements de modlisation des rseaux, nous avons simul plusieurs types de rseaux sans fil. Ce projet a pour objectif de comparer et d'tudier les performances de diffrents protocoles de routage dans diffrents scnarios. En utilisant le logiciel de simulation NS2 (Network Simulator 2), dont programment en TCL/TK, nous avons valu par la simulation fonctionnement, et plus particulirement les performances, des (Dynamic Source Routing), AODV (Ad-hoc On-demand Distance (Optimized Link State Routing Protocol) dans des rseaux ad-hoc. les simulations se les principes de algorithmes DSR Vector) et OLSR

Lobjectif de ce rapport est de prsenter notre dmarche, les scripts que nous avons mis en place pour valuer les trois algorithmes dans les diffrentes situations, et les analyses que nous avons tires de ces expriences.

PRSENTATION DES OUTILS UTILISS


NS
NS est un outil logiciel de simulation de rseaux informatiques dvelopp lors d'un projet de la Defense Advanced Research Projects Agency. Il est principalement bti avec les ides de la conception par objets, de rutilisation 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 se compose d'une interface de programmation en TCL et d'un noyau crit en C++ dans lequel la plupart des protocoles rseaux ont t implments : Traffic parreto, ON/OFF, CBR, FTP, telnet, etc. Couche Transport TCP, UDP Couche Rseaux IP, routage dans les rseaux ad-hoc (aodv, dsr , dsdv, tora, amodv), routage dans les rseaux filaire (Link state, Distance vector), les rseaux multicast, IntServ, DiffServ Couche MAC CSMA, CDMA, 802,X, Token ring, MPLS, liens satellite, etc. Dans tous nos exemples, nous avons toujours simul des flux UDP constants, car ils permettent dtudier les phnomnes de rejet de paquets sans encombrer le rseau. NS-2 ne permet pas de visualiser le rsultat des exprimentations. Il permet uniquement de stocker une trace de la simulation, de sorte quelle puisse tre exploite par un autre logiciel, tel que NAM par exemple.

TCL
TCL (Tool Command Language) est un langage de commande, comme le shell UNIX, mais qui sert contrler les applications. 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++.

NAM
NAM est un outil de visualisation qui prsente deux intrts principaux : reprsenter la topologie dun rseau dcrit avec NS-2, et afficher temporellement les rsultats dune trace dexcution NS-2. Par exemple, il est capable de reprsenter des paquets TCP ou UDP, la rupture dun lien entre nuds, ou encore de reprsenter les paquets rejets dune file dattente pleine. Ce logiciel est souvent appel directement depuis les scripts TCL pour NS-2, afin de visualiser directement le rsultat de la simulation.

CONFIGURATION DE TRAVAIL
Nous effectuerons les manipulations sur une machine tournant sous GNU/Linux Debian ou une distribution drive (Ubuntu, etc...). Ainsi les installations de logiciels feront appel l'application Aptitude disponible pour grer les paquets et les dpendances sur ce type de systmes. La version de NS-2 la plus jour actuellement est la version 2.33 disponible en tlchargement sur le site officielle de NS mais pour plus de confort, nous utiliserons la version all-in-one 2.31 dj prsente sur nos machines. Celle-ci regroupe tous les utilitaires et les plugins ncessaires la compilation et au fonctionnement de de NS. NS nous permettra de compiler les scripts TCL que sur lesquels nous travaillerons. Sur nos postes de travail, NS-2 est excutable par la ligne de commande suivante : # /usr/local/apps/ns-allinone-2.31/ns-2.31/ns <arg>

Des fichiers d'exemples sont galement disponibles dans le rpertoire /usr/local/apps/ ns-allinone-2.31/ns-2.31/tcl/ex/.

Installation des diffrents outils


Voici les quelques tapes pour installer ces diffrents outils sur un poste n'en disposant pas.

Dpendances
Pralablement ces manipulations, il convient d'installer un certain nombre de paquets qui nous permettront de compiler les outils, grce la commande : # aptitude install libx11-dev tk8.5-dev libxt-dev libxmu-dev

NS
Il faut tlcharger le paquetage all-in-one accessible l'adresse : http://sourceforge.net/project/ showfiles.php?group_id=149743&package_id=169689&release_id=588643 On extrait ensuite les fichiers de l'archive et, dans le rpertoire nouvellement cr, on lance le script d'installation.

NAM
NAM tant inclus dans NS all-in-one, on se place dans le rpertoire nam-X.XX des fichiers de l'archive, et on excute les commandes : # ./configure # make

Patch UM-OLSR
Ce patch nous sera ncessaire car le protocole OLSR n'est pas inclus nativement dans l'outil NS. Il faut tout d'abord tlcharger le plugin : http://sourceforge.net/projects/um-olsr/ Il faut copier um-olsr-0.8.8.tgz (o "0.8.8" est la version du patch) dans le rpertoire nsallinone-2.31/ns-2.31/ (o "2.31" est la version de NS installe sur le systme). On excute ensuite les commandes : $ $ $ $ cd ns-allinone-2.29/ns-2.29/ tar zxvf um-olsr-0.8.8.tgz ln -s ./um-olsr-0.8.8 ./olsr patch -p1 < olsr/um-olsr_ns-2.31_v0.8.8.patch

Ensuite, pour que le patch soit pris en compte par NS : $ $ $ $ ./configure make distclean ./configure make

Des documentations pour ce patch sont accessibles aux adresses suivantes : http://masimum.inf.um.es/?Software:UM-OLSR http://masimum.inf.um.es/um-olsr/html/ /!\ Ce script est encore en dveloppement et les rsultats observs peuvent ne pas tre significatifs. Nous tenterons malgr tout cette simulation en tenant compte de ce point dans nos analyses.

PRSENTATION GNRALE DE LA DMARCHE


La dmarche prsente ici nous permettra de comparer les performances de trois protocoles diffrents sur des rseaux ad-hoc dans plusieurs situations : DSR (Dynamic Source Routing) ; AODV (Ad-hoc On-demand Distance Vector) ; OLSR (Optimized Link State Routing Protocol). /!\ En raison de la limitation de la puissance de calcul de nos machines personnelles, nous avons choisi aprs discussion avec le responsable de projet de limiter le cadre de notre tude. Les valeurs modifies sont graisses.

Modle de simulation
Le modle de simulation est le suivant : le protocole IEEE 802.11 est utilis comme protocole daccs au mdium ; la capacit du mdium est de 2Mbit/s ; la puissance de transmission est de 0.28183815 dB ; la porte de communication (threshold RXThresh_) est de 250 m ; la port de dtection (threshold CSThresh_) est de 500 m ; le rseau se trouve sur une rgion carre de 1 km de ct ; 25 nuds sont utiliss ; la taille de la queue de chaque nud est de 50 paquets, et sa gestion est faite selon la discipline FIFO ; les paquets ont une taille de 512 octets et sont envoys toutes les 0,1 s. pendant 30 secondes par le CRB ; la position initiale de chaque nud est alatoire, il peut utiliser ensuite le modle de mobilit random waypoint. Le modle random waypoint est couramment utilis dans lanalyse des performance d'un protocoles de routage. Chaque nud choisit alatoirement un point de destination et se dplace vers celui-ci une vitesse constante slectionne uniformment entre 0 et 10 m/s. Une fois la destination atteinte, le nud marque un pause de 5s.

Scnarios d'tude
Ltude que nous allons faire se divise en deux tapes. Tout d'abord, nous simulerons le fonctionnement de chacun des trois protocoles dans le cas d'un rseau statique, dont les nuds sont placs alatoirement dans la zone de couverture de ltude. Ensuite nous effectuerons nouveau ces simulations en affectant chaque nud le modle de mobilit alatoire dfini plus haut. Pour chacune des configurations tudies, nous ferons varier le nombre de nuds metteurs (le CBR) de 1 12 nuds (la moiti des nuds).

Chaque valeur obtenue exprimentalement est issue de la moyenne des rsultats de 20 simulations utilisant les mmes paramtres, et avec une valeur de seed diffrente. /!\ Afin d'obtenir un rsultat parfaitement satisfaisant, nous aurions du faire la moyenne de 100 valeurs. Toutefois, les simulations tant particulirement lentes sur notre matriel personnel, nous rduirons ce chiffre afin de pouvoir traiter l'ensemble des cas dans les dlais qui nous sont impartis.

Traitements automatiss
tant donn le nombre de simulations effectuer et le temps que prennent celles-ci avec notre matriel, nous effectuerons donc des simulation par lots, en faisant appel diffrents scripts. Un script start.sh a pour rle d'excuter les diffrentes simulations : pour chacun des 3 protocoles ; pour chacun des 2 scnarios ; pour chacune des valeurs de CBR (nombre d'metteurs) ; il effectue la simulation 20 fois ; il excute pour chaque simulation les scripts awk permettant d'extraire les valeurs attendues (bande passante, dlai bout-en-bout et perte des paquets) ; il excute un script awk permettant de calculer une valeur moyenne partir de ces 20 simulations pour chacune des valeurs tudies et exporte celles-ci dans un fichier qui sera ensuite trait par gnuplot. Ce script est retranscrit ci-dessous. start.sh #!/bin/bash # # # # # # Projet MdR DELAUNOY Yann - CORNILLEAU Kevin IR 3me anne - 2008/09 http://www-igm.univ-mlv.fr/~badis/IR3/ns2/ Script de lancement des diffrentes simulation

# Config. des chemins TCL=simulations AWK=scripts_awk RESULT_DIR=results RESULT=./results.tr NS=../ns-allinone-2.33/ns-2.33/ns # set -x rm $RESULT_DIR/* # On effectue l'ensemble des simulation contenues dans le rpertoire for f in ./$TCL/*.tcl ; do echo "*** Operate $f"

TCL_FILE=${f%.*} TCL_FILE=${TCL_FILE##*/} j=1 # On fait varier le CRB de 1 12 while [ $j -lt 13 ] ; do echo "*** CBR=$j" i=0 # On fait 20 simulations while [ $i -lt 20 ] ; do echo "****** Simulation #$i" $NS $f $j for x in ./$AWK/*.awk ; do echo "********* Operate $x" AWK_FILE=${x%.*} AWK_FILE=${AWK_FILE##*/} $x $RESULT >> "$RESULT_DIR/$TCL_FILE-$AWK_FILE-$j.csv" done i=$[$i+1] echo echo done # On fait la moyenne des valeurs, pr export en courbe echo "****** Calculate average for CBR=$j" for x in ./$AWK/*.awk ; do AWK_FILE=${x%.*} AWK_FILE=${AWK_FILE##*/} echo -n "$j " >> "$RESULT_DIR/curve-$TCL_FILE-$AWK_FILE.csv" ./calc_average.awk $RESULT_DIR/$TCL_FILE-$AWK_FILE-$j.csv >> "$RESULT_DIR/curve-$TCL_FILE-$AWK_FILE.csv" done j=$[$j+1] echo echo done done rm $RESULT rm *.nam

La ralisation des programme TCL est dtaille dans les paragraphes d'tude. Les scripts awk chargs du calcul des valeurs tudies sont inspirs de ce qui a t ralis pralablement durant les TD. La bande passante est calcule en convertissant le nombre de paquets reus pour avoir l'unit qui nous intresse. bande_passante.awk

#!/usr/bin/awk -f # # # # # # Projet MdR DELAUNOY Yann - CORNILLEAU Kevin IR 3me anne - 2008/09 http://www-igm.univ-mlv.fr/~badis/IR3/ns2/ Fichier AWK qui permet calculer la bande passante

BEGIN { size_packets = 0 current_node = 0 node_dest = 0 node_src = 0 id = 0 } { # Rcupration des valeurs current_node = $3 # nud courant id = $6 # ID du paquet node_src = $14 # nud source node_dest = $15 # nud destination # On rcupre le nud destination sub(/\:([0-9]*)/,"", node_dest) sub(/\[/,"", node_dest) # On rcupre le nud source sub(/\:([0-9]*)/,"", node_src) sub(/\[/,"", node_src) # On supprime les "_" contenus dans le nud courant gsub(/_/, "", current_node); # Le type du paquet est cbr if($7=="cbr") { # Il s'agit d'une rception de paquet if($1 == "r") { # Si le nud destination est le nud courant if( packet_dest[id] == current_node ) { size_packets = size_packets + $8; } } # Il s'agit d'un envoi de paquet else if($1 == "s") { if ( !(id in start) ) { start[id] = time; packet_dest[id] = node_dest; packet_src[id] = node_src } }

} END { # print "Bande passante : " (size_packets * 8) / (30 * 1e6) " Mbits/sec"; print (size_packets * 8) / (30 * 1e6); }

Le dlai de bout en bout est obtenu par simple soustraction. delai_bout_en_bout.awk #!/usr/bin/awk -f # # # # # # # Projet MdR DELAUNOY Yann - CORNILLEAU Kevin IR 3me anne - 2008/09 http://www-igm.univ-mlv.fr/~badis/IR3/ns2/ Fichier AWK qui permet de calculer le dlai de bout en bout des paquets envoys

BEGIN { nb_packets = 0 time = 0 current_node = 0 node_dest = 0 node_src = 0 id = 0 highest_packet_id = 0 } { # Rcupration des valeurs time = $2 # Temps current_node = $3 # nud courant id = $6 # ID du paquet node_src = $14 # nud source node_dest = $15 # nud destination # On rcupre le nud destination sub(/\:([0-9]*)/,"", node_dest) sub(/\[/,"", node_dest) # On rcupre le nud source sub(/\:([0-9]*)/,"", node_src) sub(/\[/,"", node_src) # On supprime les "_" contenus dans le nud courant gsub(/_/, "", current_node); # Le type du paquet est cbr if($7=="cbr") {

10

# Il s'agit d'une rception de paquet if($1 == "r") { # Si le nud destination est le nud courant if( packet_dest[id] == current_node ) end[id] = time; if( id > highest_packet_id ) highest_packet_id = id; } # Il s'agit d'un envoi de paquet else if($1 == "s") { if ( !(id in start) ) { start[id] = time; packet_dest[id] = node_dest; packet_src[id] = node_src } }

END { for ( id = 0; id <= highest_packet_id; id++ ) { if( ( id in start ) && ( id in end ) ) { if ( start[id] < end[id] ) { total_time = end[id] - start[id] + total_time; nb_packets++; }

# Calcul du dlai de bout en bout delay = total_time / (nb_packets * 512 * 8); # Affichage du rsultat print delay;

La probabilit de perte de paquets est obtenue par un rapport du nombre de paquets envoys sur le nombre de paquets rejets. perte_paquets.awk #!/usr/bin/awk -f # # # # # # # Projet MdR DELAUNOY Yann - CORNILLEAU Kevin IR 3me anne - 2008/09 http://www-igm.univ-mlv.fr/~badis/IR3/ns2/ Fichier AWK qui permet de calculer le nombre de paquets perdus

BEGIN{

11

} {

packets_sent = 0 packets_received = 0 packets_dropped = 0

# Si le type du paquet est cbr if($7=="cbr"){ # Si il s'agit d'une rception de paquet if($1 == "r") packets_received++; # Si il s'agit d'un envoi ou d'un forward de paquet else if($1 == "s" || $1 =="f") packets_sent++; # Si il s'agit d'un paquet dropp else if($1 == "D") packets_dropped++;

END{ print (packets_dropped / packets_sent) * 100; }

Le calcul de la moyenne de chacune des simulations est obtenu trs simplement avec le script awk suivant. calc_average.awk #!/usr/bin/awk -f # # # # # # # Projet MdR DELAUNOY Yann - CORNILLEAU Kevin IR 3me anne - 2008/09 http://www-igm.univ-mlv.fr/~badis/IR3/ns2/ Fichier AWK qui permet calculer la moyenne des valeurs d'un fichier BEGIN { sum = 0; cpt = 0; } { } sum += $1; cpt++;

END { average = sum / cpt;

12

printf "%f\n", average;

Le trac des courbes sous GNUPLOT est ensuite obtenu l'aide des commandes suivantes (ces commandes sont donnes ici pour le calcul de la bande passante, dans le cas de nud mobiles, et sera adapt pour chaque courbe) : set term png set output "../graphs/dynamique-bande_passante.png" set xlabel 'CBR' set ylabel 'Bande passante' set title 'nuds dynamiques' plot "../results/curve-aodv_dynamique-bande_passante.csv" using 1:2 with linespoints, "../results/curve-dsr_dynamique-bande_passante.csv" using 1:2 with linespoints, "../results/curve-olsr_dynamique-bande_passante.csv" using 1:2 with linespoints

Algorithmes tudis
Un rseau ad-hoc est un rseau cr par les liaisons de nuds mobiles. Il s'agit donc d'un rseau ne s'appuyant pas sur une infrastructure prexistante.

DSR (Dynamic Source Routing)


DSR est un protocole ractif (c'est dire que les nuds ne possdent pas de table de routage jour, mais construisent des routes au besoin lors de l'envoi de paquets) utilis dans les rseaux ad-hoc. Une route est calcule par la source vers la destination. chaque nud intermdiaire travers, ladresse de ce dernier est inscrite dans le paquet. Le protocole est divis en deux phases : la dcouverte de routes et la maintenance de celles-ci. Pour la dcouverte, lmetteur envoie un paquet RouteRequest en inondant le rseau. la rception dun de ces paquets, le nud ragit diffremment suivant les cas. Si le nud est le destinataire, il retourne un paquet RouteReply contenant le chemin. Sinon, soit le nud a dj vu le paquet (son adresse est prsente dans le paquet) et dans ce cas, il rejette le paquet ; soit cest la premire fois que le paquet arrive par le nud et dans ce cas le nud inscrit son adresse dans la route (RouteRecord) et fait suivre le paquet. Afin de maintenir les routes, le concept utilis par DSR est simple : chaque nud est responsable de transfrer aux nuds suivants. Si plusieurs checs successifs arrivent lors de la transmission dun paquet, le nud envoie un message RouteError lmetteur qui supprime la route et en utilise soit une autre existante, soit en cherche une nouvelle.

13

AODV (Ad-hoc On-demand Distance Vector)


AODV est galement un protocole ractif. Contrairement DSR, AODV est bas sur la construction de table de routage. En effet, chaque nud possde sa propre table de routage contenant pour chaque destination, le prochain nud contacter. La dcouverte dune route se fait par inondation par lmetteur dun paquet RREQ. la rception dun de ces paquets, si le nud connat le chemin pour accder la destination, il envoie une rponse RREP lmetteur qui arrte alors dinonder le rseau. Sil le nud ne connat pas le chemin, il transmet le paquet ses voisins, tout en mmorisant le nud prcdent ayant fait la requte. En cas de cassure du lien, un message RERR est envoy lmetteur qui dcide ou non de recommencer lenvoi du paquet suivant le taux dutilisation de la route.

OLSR (Optimized Link State Routing Protocol)


OLSR est un protocole proactif (c'est dire que les nuds possdent une table de routage jour, grce l'change de paquets de contrle) ayant les mmes principes de base quOSPF, c'est--dire quil gre un tat des liens du rseau. Le concept principal est celui des MPR (Multi-Point Relays) qui sont des nuds choisis pour expdier les messages de diffusion pendant le processus dinitialisation. Afin de maintenir une table de routage jour, chaque nud envoie, toutes les deux secondes, un message de type Hello qui contient la liste de tous les voisins directs de lmetteur ainsi que ltat et le type des liens avec les voisins. Le message Hello permet aussi de spcifier le MPR choisi par lexpditeur.

14

TUDE D'UN RSEAU AD-HOC STATIQUE


Nous commenons par l'tude du rseau dont les nuds sont placs alatoirement et ne se dplacent pas.

Scripts de simulation
Le script est inspir de ce qui a t fait lors des TD et de l'exemple qui est notre disposition sur le sujet du projet. Le voici comment.

# Dfinition des variables pour la simulation de notre rseau sans-fil set val(chan) Channel/WirelessChannel; # Type de canal set val(prop) Propagation/TwoRayGround; # Propagation radio set val(netif) Phy/WirelessPhy; # Type de l'interface rseau set val(mac) Mac/802_11; # Support du wireless set val(ifq) Queue/DropTail/PriQueue; # Priorit de la file set val(ll) LL; # Type de la couche de liaison set val(ant) Antenna/OmniAntenna; # Type de l'antenne set val(ifqlen) 50; # Taille de la queue set val(x) 1000; # X Largeur de la rgion (en mtres) set val(y) 1000; # Y Hauteur de la rgion (en mtres) set val(nn) 25; # Nombre de nuds set val(stop) 30; # Temps de la simulation (en secondes) set val(sources) [lindex $argv 0] # Nombre de sources pass en argument set val(packet_size) 512; # Taille des paquets envoys (en octets) set val(interval) 0.1; # Intervalle d'envoi de paquets (en secondes) set val(rp) AODV; # Protocole de routage

# Dfinition de la variable de Random pour le placement des nuds dans la rgion global defaultRNG $defaultRNG seed 0 set sizeRNG [new RNG] $sizeRNG next-substream set size_ [new RandomVariable/Uniform]; # Variable Random uniforme $size_ set min_ 1; # Valeur minimum $size_ set max_ 999; # Valeur maximum $size_ use-rng $sizeRNG

# Cration du simulateur NS

15

set ns [new Simulator]

# Paramtrage de l'antenne Antenna/OmniAntenna Antenna/OmniAntenna de Y Antenna/OmniAntenna Antenna/OmniAntenna Antenna/OmniAntenna set X_ 0; # Direction de X set Y_ 0;&nbsp;&nbsp; &nbsp;&nbsp; set Z_ 1.5; set Gt_ 1.0; set Gr_ 1.0; # Direction de Z # Gain de transmission # Gain de rception # Direction

# Paramtrage de l'interface rseau Phy/WirelessPhy set CPThresh_ 10.0; # Collision Threshold Phy/WirelessPhy set CSThresh_ 1.559e-11;# Porte de dtection : 500 mtres Phy/WirelessPhy set RXThresh_ 0.652e-10; # Porte de communication : 250 mtres (-91,1db) Phy/WirelessPhy set bandwidth_ 2e6; # Capacit du mdium : 2Mbits Phy/WirelessPhy set Pt_ 0.28183815; # Puissance de transmission : 24.5dbm Phy/WirelessPhy set freq_ 914e+6; # Frquence : 914MHz Phy/WirelessPhy set L_ 1.0; # System Loss Factor

# Cration des fichiers de trace set f [open results.tr w] $ns trace-all $f $ns eventtrace-all set nf [open aodv_sim.nam w] $ns namtrace-all-wireless $nf $val(x) $val(y)

# Topographie de la simulation set topo [new Topography];

# Cration de la rgion pour la simulation $topo load_flatgrid $val(x) $val(y)

# Cration du God create-god $val(nn)

16

# Cration du canal set chan [new $val(chan)]

# Configuration du nud $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) \ -channel $chan \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace ON \ -movementTrace OFF

# Cration des nuds pour la simulation for {set i 0} {$i < $val(nn)} {incr i} { set node_($i) [$ns node] $node_($i) random-motion 0 }

# Position des nuds dans la rgion de manire alatoire for {set i 0} {$i < $val(nn)} {incr i} { $node_($i) set X_ [expr round([$size_ value])]] $node_($i) set Y_ [expr round([$size_ value])]] $node_($i) set Z_ 0.0 }

# Cration des agents pour les nuds sources for {set i 0} {$i < $val(sources)} {incr i} { # Cration de l'agent UDP set udp_($i) [new Agent/UDP] $ns attach-agent $node_($i) $udp_($i) # Cration de l'agent Null

17

set null_($i) [new Agent/Null] $ns attach-agent $node_([expr [expr $val(nn) - 1] - $i]) $null_($i) $ns connect $udp_($i) $null_($i) # Cration et paramtrage du CBR set cbr_($i) [new Application/Traffic/CBR]; $cbr_($i) attach-agent $udp_($i) $cbr_($i) set type_ CBR; # Type du CBR $cbr_($i) set packet_size_ $val(packet_size); # Taille des paquets envoys $cbr_($i) set rate_ [expr $val(packet_size) * 8 / [$ns delay_parse $val(interval)]]; # Taux $cbr_($i) set random_ false # Dbut d'envoi de paquets pas en mme temps, sinon Erreur de segmentation $ns at [expr 0.1 * $i] "$cbr_($i) start"; # Dbut d'envoi de paquets $ns at $val(stop) "$cbr_($i) stop"; # Fin d'envoi de paquets }

# Positionne les nuds sur la grille for {set i 0} {$i < $val(nn)} {incr i} { $ns initial_node_pos $node_($i) 30; # 30 : taille du nud dans nam }

# Arrt de la simulation $ns at $val(stop) "finish" $ns at [expr $val(stop) + 0.1] "$ns halt"

# Fonction appele pour terminer la simulation proc finish {} { global ns f nf val $ns flush-trace close $f close $nf exit 0 } # Dbut de la simulation $ns run

Ce mme script est adapt pour les deux autres protocoles.

18

Rsultats de simulation
On tudie ici les valeurs en faisant voluer le nombre de nuds metteurs de 1 12 selon le mode opratoire dfini prcdemment.

Bande passante moyenne

On s'aperoit la lecture de ces courbes que l'augmentation de la bande passante avec le nombre d'metteurs semble se faire de plus en plus rduite compter d'une dizaine d'metteurs. Cette observation serait confirmer avec un plus grand nombre de nuds. Il est possible que nous arrivions une saturation du rseau. DSR semble ici beaucoup plus performant que les autres protocoles pour un nombre limit d'metteurs. Cependant on semble observer qu'avec ce protocole galement, on a un phnomne de saturation, et que la bande passante maximale du rseau parat comparable quelque soit le protocole choisi. DSR et OLSR paraissent ici offrir des performances assez similaires.

19

Probabilit de perte

On observe assez logiquement que la probabilit de perte augmente avec le nombre de nuds metteurs. OLSR parat ici tre beaucoup moins performant que les deux autres protocoles. En effet ds le premier metteur nous avons un taux de perte de prs de 7%. Il semblerait que DSR soit lgrement plus performant qu'AODV au-dessus de 10 metteurs, mais cette hypothse serait confirmer avec une tude plus pousse. Une tude sur un plus grand nombre de nuds nous permettrait peut-tre d'observer des diffrences plus marques.

20

Dlai de bout-en-bout

L'tude des dlais de bout-en-bout parat plus intressante. On s'aperoit que le temps observ avec les diffrents protocoles est assez comparable (moins d'1/10000 de seconde) jusqu' 4 metteurs ; AODV se situant lgrement au dessus de DSR et OLSR. A partir de 5 metteurs, cette dure augmente de manire trs importante pour DSR et de manire beaucoup plus modre pour AODV et OLSR. OLSR et AODV restent assez comparables en terme de dure jusqu' 10 metteurs o la dure observe avec OLSR semble augmenter assez fortement.

Conclusion de l'tude sur un rseau statique


En conclusion, il semblerait qu'OLSR soit peu efficace dans les conditions du test, avec un taux de perte beaucoup plus lev que celui relev pour DSR et AODV. Avec une bande-passante plus leve, et un taux d'erreurs et un dlai quivalent aux 2 autres protocoles, DSR est le protocole le plus performant pour un faible nombre de nud.

21

Lorsque celui-ci augmente, DSR perd son avantage en terme de bande-passante et son taux de perte devient beaucoup plus lev. C'est alors AODV qui parat tre le plus performant.

22

TUDE DUN RSEAU AD-HOC DYNAMIQUE


Nous ralisons maintenant l'tude d'un systme dont les nuds sont mobiles.

Scripts de simulation
Les simulations utilises ici sont trs proches de celles pour les mesures statiques. Les scripts de simulation sont identiques ceux utilis pour les mesures statiques. Pour le dplacement des nuds, nous avons utilis une implmentation du Random Waypoint dans la procdure : proc setNewDest {node currentX currentY} { }

Voici un exemple comment. # Dfinition des variables pour la simulation de notre rseau sans-fil set val(chan) Channel/WirelessChannel; # Type de canal set val(prop) Propagation/TwoRayGround; # Propagation radio set val(netif) Phy/WirelessPhy; # Type de l'interface rseau set val(mac) Mac/802_11; # Support du wireless set val(ifq) Queue/DropTail/PriQueue; # Priorit de la file set val(ll) LL; # Type de la couche de liaison set val(ant) Antenna/OmniAntenna; # Type de l'antenne set val(ifqlen) 50; # Taille de la queue set val(x) 1000; # X Largeur de la rgion (en mtres) set val(y) 1000; # Y Hauteur de la rgion (en mtres) set val(nn) 25; # Nombre de nuds set val(stop) 30; # Temps de la simulation (en secondes) set val(sources) [lindex $argv 0] # Nombre de sources pass en argument set val(packet_size) 512; # Taille des paquets envoys (en octets) set val(interval) 0.1; # Intervalle d'envoi de paquets (en secondes) set val(rp) ## Mobilit # Dfinition de la variable de Random pour le placement des nuds dans la rgion global defaultRNG $defaultRNG seed 0 AODV; # Protocole de routage

23

set sizeRNG [new RNG] $sizeRNG next-substream # Variable de random utilise pour un point sur la grille set size_ [new RandomVariable/Uniform]; # Variable Random uniforme $size_ set min_ 1; # Valeur minimum $size_ set max_ 999; # Valeur maximum $size_ use-rng $sizeRNG # Variable de random utilise pour une vitesse de dplacement set sizespeed_ [new RandomVariable/Uniform]; # Variable Random uniforme $sizespeed_ set min_ 1; # Valeur minimum $sizespeed_ set max_ 10; # Valeur maximum $sizespeed_ use-rng $sizeRNG

# Cration du simulateur NS set ns [new Simulator] # Paramtrage de l'antenne Antenna/OmniAntenna Antenna/OmniAntenna Antenna/OmniAntenna Antenna/OmniAntenna Antenna/OmniAntenna set set set set set X_ 0; Y_ 0; Z_ 1.5; Gt_ 1.0; Gr_ 1.0; # Direction de X # Direction de Y # Direction de Z # Gain de transmission # Gain de rception

# Paramtrage de l'interface rseau Phy/WirelessPhy set CPThresh_ 10.0; # Collision Threshold Phy/WirelessPhy set CSThresh_ 1.559e-11;# Porte de dtection : 500 mtres Phy/WirelessPhy set RXThresh_ 0.652e-10; # Porte de communication : 250 mtres (-91,1db) Phy/WirelessPhy set bandwidth_ 2e6; # Capacit du mdium : 2Mbits Phy/WirelessPhy set Pt_ 0.28183815; # Puissance de transmission : 24.5dbm Phy/WirelessPhy set freq_ 914e+6; # Frquence : 914MHz Phy/WirelessPhy set L_ 1.0; # System Loss Factor

# Cration des fichiers de trace set f [open results.tr w] $ns trace-all $f $ns eventtrace-all set nf [open aodv_sim.nam w] $ns namtrace-all-wireless $nf $val(x) $val(y)

24

# Topographie de la simulation set topo [new Topography]; # Cration de la rgion pour la simulation $topo load_flatgrid $val(x) $val(y) # Cration du God create-god $val(nn) # Cration du canal set chan [new $val(chan)] # Configuration du nud $ns node-config -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ &nbsp; -phyType $val(netif) \ -channel $chan \ -topoInstance $topo \ -agentTrace ON \ &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; -routerTrace ON \ -macTrace ON \ -movementTrace OFF

# Cration des nuds pour la simulation for {set i 0} {$i < $val(nn)} {incr i} { set node_($i) [$ns node] $node_($i) random-motion 0 } # Position des nuds dans la rgion de manire alatoire # Spcification des dplacements alatoires for {set i 0} {$i < $val(nn)} {incr i} { set X [expr round([$size_ value])]; # Position X en random sur la grille set Y [expr round([$size_ value])]; # Position Y en random sur la grille $node_($i) set X_ $X]; # Position X du nud sur la grille

25

$node_($i) set Y_ $Y]; $node_($i) set Z_ 0.0;

# Position Y du nud sur la grille # Position Z du nud sur la grille

set speed [expr round([$sizespeed_ value])]; # vitesse en random entre 1m/s et 10m/s set newX [expr round([$size_ value])]; # Position X en random sur la grille set newY [expr round([$size_ value])]; # Position Y en random sur la grille # Dfinition du premier mouvement $ns at [expr 0.1 * $i] "$node_($i) setdest $newX $newY $speed"; # Dfinition des mouvements suivants si la simulation n'est pas termine $ns at [expr 0.1 * $i] "setNewDest $node_($i) $newX $newY";

# Mthode qui permet de dfinir une nouvelle destination au nud mobile proc setNewDest {node currentX currentY} { global ns sizespeed_ size_; # Rcupre les variables du programme set speed [expr round([$sizespeed_ value])]; # Vitesse en random entre 1m/s et 10m/s set nextX [expr round([$size_ value])]; # Position X en random sur la grille set nextY [expr round([$size_ value])]; # Position Y en random sur la grille set now [$ns now]; # Date courante de la simulation set longX [expr $nextX-$currentX]; # Distance en X parcourir set longY [expr $nextY-$currentY]; # Distance en Y parcourir # Calcul de la longueur du chemin set distance [expr sqrt(($longX*$longX)+($longY*$longY))]; # Dtermination de la date d'arrive au point destination set arrivalDate [expr $now + [expr $distance/$speed]]; # Dtermination de la prochaine date de mouvement aprs 5 secondes de pause set nextMove [expr $arrivalDate + 5.0]; # Dfinition de la prochaine destination $ns at $now "$node setdest $nextX $nextY $speed"; # Dfinition du prochain mouvement si la simulation n'est pas termine $ns at $nextMove "setNewDest $node $nextX $nextY";

# Cration des agents pour les nuds sources for {set i 0} {$i < $val(sources)} {incr i} {

26

# Cration de l'agent UDP set udp_($i) [new Agent/UDP] $ns attach-agent $node_($i) $udp_($i) # Cration de l'agent Null set null_($i) [new Agent/Null] $ns attach-agent $node_([expr [expr $val(nn) - 1] - $i]) $null_($i) $ns connect $udp_($i) $null_($i) # Cration et paramtrage du CBR set cbr_($i) [new Application/Traffic/CBR]; $cbr_($i) attach-agent $udp_($i) $cbr_($i) set type_ CBR; # Type du CBR $cbr_($i) set packet_size_ $val(packet_size); # Taille des paquets envoys $cbr_($i) set rate_ [expr $val(packet_size) * 8 / [$ns delay_parse $val(interval)]]; # Taux $cbr_($i) set random_ false # Dbut d'envoi de paquets pas en mme temps, sinon Erreur de segmentation $ns at [expr 0.1 * $i] "$cbr_($i) start"; # Dbut d'envoi de paquets $ns at $val(stop) "$cbr_($i) stop"; # Fin d'envoi de paquets } # Positionne les nuds sur la grille for {set i 0} {$i < $val(nn)} {incr i} { $ns initial_node_pos $node_($i) 30; # 30 : taille du nud dans nam } # Arrt de la simulation $ns at $val(stop) "finish" $ns at [expr $val(stop) + 0.1] "$ns halt" # Fonction appele pour terminer la simulation proc finish {} { global ns f nf val $ns flush-trace close $f close $nf exit 0 } # Dbut de la simulation $ns run

Ce mme script est adapt pour les deux autres protocoles.

27

Rsultats de simulation
On tudie galement ici les valeurs en faisant voluer le nombre de nuds metteurs de 1 12 selon le mode opratoire dfini prcdemment.

Bande passante moyenne

On observe l encore sans surprise que le dbit augmente avec le nombre de cellules mettrice jusqu' une valeur de saturation qui semble avoisiner les 10 cellules. Les trois protocoles semblent atteindre saturation un dbit similaire. On note ici aussi que le dbit augmente plus vite avec le nombre de nuds metteurs pour le protocole DSR, qui atteint donc plus rapidement le point de saturation. AODV et OLSR offrent des valeurs comparables. On remarque enfin que les valeurs releves ici sont trs proches de celles obtenues dans le cadre du rseau statique.

28

Probabilit de perte

On observe l encore que la mobilit des nuds ne permet pas de modifier les commentaires que nous avions relevs dans le cadre du rseau statique. AODV et DSR semblent offrir un taux de perte relativement comparable. Celui-ci augmentant avec le nombre de nuds metteurs. OLSR parat se trouver bien au dessus des 2 autres protocoles selon ce point de vue, mais suit toutefois une augmentation comparable. On observe nouveau que DSR parat lgrement plus performant qu'AODV au-dessus de 10 metteurs.

29

Dlai de bout-en-bout

L encore, l'analyse du scnario dynamique ne semble pas diffrer du scnario nuds statiques. On s'aperoit donc que le temps observ avec les diffrents protocoles est assez faible et comparable jusqu' 4 metteurs. La majoration de temps observe avec AODV parat ici un peu plus importante. partir de 5 metteurs, cette dure augmente de manire trs importante pour DSR et de manire beaucoup plus modre pour AODV et OLSR. OLSR et AODV restant assez comparables en terme de dure jusqu' 10 metteurs o la dure observe avec OLSR semble augmenter assez fortement.

Conclusion de l'tude sur un rseau dynamique


Les comportements observs paraissent comparables que les nuds soient mobiles ou non. En consquence, les conclusions que nous pouvons tirer de l'tude seront galement comparables. DSR est donc le protocole le plus performant pour un faible nombre de nuds, tandis que ds que ce nombre augmente, c'est AODV qui devient le plus intressant, avec un taux de perte qui reste faible.

30

OLSR quant lui prsente un taux de perte trs lev quand le dlai et le dbit relevs sont comparables aux autres.

31

COMPARAISON DES SCNARIOS


Arriv ce point de l'tude, il peut tre intressant de s'interroger sur la diffrence de rsultats observs sur l'un et l'autre des scnarios. la vue des premiers commentaires que nous avons fait, le scnario choisit ne parat pas influencer le comportement des protocoles en termes de tendance. La superposition des courbes nous permettra de vrifier ceci en termes de valeurs. Voici les rsultats concernant l'tude de la bande passante.

Voici la superposition des taux de perte de paquets.

32

Voici enfin l'tude des dlais bout-en-bout.

33

Ces diffrentes courbes permettent bien de confirmer que le scnario choisi ne modifie ni les comportements observs ni les valeurs mesures. Cette observation est toutefois nuancer par 2 point noncs plus tt : Les valeurs utilises pour nos courbes sont les rsultats de la moyenne de 20 simulations. Ce chiffre est insuffisant pour obtenir des valeurs rellement satisfaisantes. Un plus grand nombre de simulations aurait permis des estimations plus exactes et peut-tre d'observer un dcalage plus franc. Notre tude se limite un parc de 25 nuds. Nous ne pouvons donc observer de phnomnes pouvant apparatre aprs 12 metteurs.

34

CONCLUSION
En conclusion, ce projet nous a permis au travers d'un exemple concret d'tude de dcouvrir l'intrt certain de la modlisation des rseaux et de l'utilisation d'outils tels que NS. Nous avons pu sans aucun matriel spcifique, et sans raliser aucune configuration rseau : tester les comportements de diffrents protocoles dans des scnarios particuliers ; analyser ceux-ci. Nous avons pu en extraire une tude chiffre et comparer les performances de chacun en fonction des configurations observes. Cette tude nous a donc permis d'observer que le protocole OLSR semblait moins intressant qu'AODV et DSR avec un taux de perte qui semble particulirement lev. DSR, avec un dbit qui augmente rapidement avec le nombre d'metteurs, semble plus efficace lorsque le nombre d'metteurs est faible. Toutefois, il devient bien moins intressant ds que le nombre d'metteurs augmente (>6), avec un taux de perte qui devient rapidement trs important. Ds que le nombre d'metteurs augmente, c'est AODV qui est le plus performant avec un dlai et un taux de perte limits, mais une bande-passante presque aussi leve que DSR. D'une manire plus gnrale et avec un nombre d'metteurs levs, si l'on choisit de privilgier le taux de perte, on sera peut-tre plus enclin choisir DSR, tandis qu'AODV parat beaucoup plus judicieux si c'est le dlai bout en bout qui est le facteur de dcision. Toutefois, comme nous l'avons soulign plusieurs fois dans ce rapport, il est bon de garder l'esprit que nos tudes doivent tre nuances : l'tude est limite par le faible nombre de simulations que nous avons ralises ; le primtre de l'tude a port 25 le nombre de nuds tudis, et donc 12 le nombre maximal d'metteurs ; l'implmentation utilise du protocole OLSR est fournie par un patch dont le dveloppement est encore en cours (l'implmentation n'est pas parfaite) : certains rsultats peuvent tre moins bons que ceux attendus, et ne sont pas rellement significatifs.

35

Vous aimerez peut-être aussi