Wikipédia propose un article sur : « Network Simulator ».

Présentation modifier

Network Simulator ou plus communément NS est un logiciel libre de simulation par événements discrets très largement utilisé dans la recherche académique et dans l'industrie. Il est considéré par beaucoup de spécialistes des télécommunications comme le meilleur logiciel de simulation par événements discrets, en raison de son modèle libre, permettant l'ajout très rapide de modèles correspondant à des technologies émergentes.

Guide pratique ns-2 modifier

installation modifier

sous Windows modifier

Avec Cygwin installé sur votre OS, il suffit de l'installer de la même façon que sous GNU/Linux. Pensez seulement à vérifier que vous posséder bien les packages X11 ou Xfree86.

| Trouvez les détails de l'installation ici (wiki en anglais)

sous GNU/Linux modifier

Fonctionne sur toutes les distributions GNU/Linux.

Sous openSuse par exemple, c'est très simple, il suffit de | télécharger les sources puis placer les dans le répertoire de votre choix.

Dans ce répertoire taper:


   tar xvf ns-allinone-2.33.tar.gz


pour décompresser

rentrer dans le répertoire

   cd  ns-allinone-2.33

et lancer l'installation avec

   ./install

Si vous rencontrez un problème ou une erreur avant la fin de la compilation c'est sans doute qu'il vous manque un package. Repérez dans les erreurs la ligne qui pause problème, par exemple un problème avec gcc. Vérifiez avec Yast (ou autre application d'installation de votre distribution GNU/linux) que vous possédez bien la librairie demandée. Les problèmes les plus courants sont:

  • une mauvaise version d'une librairie (gcc par exemple)
  • une librairie de développement manquante car l'installation de base de GNU/linux ne les installe par forcement. ( par exemple xfree86-devel ou xorg-devel peuvent manquer)

Recommencez erreur après erreur en relançant l'installation


Une fois tout installé n'oubliez pas de créer un lien symbolique ou de faire un export PATH pour pouvoir utiliser network simulator.

Le plus simple étant de faire ceci: ("si vous êtes encore dans le répertoire ns-allinone-2.33)

   ln -s bin/ns /usr/local/bin/ns

et n'oubliez pas

   ln -s bin/nam /usr/local/bin/nam

Voilà maintenant de n'importe quelle console vous pourrez taper ns pour lancer network simulator. C'est surtout très important pour pouvoir appeler ns ou nam depuis un fichier tcl.

utilisation modifier

Voici les bases pour créer une petite simulation ultra simple. D'abord vous verrez le code permettant d'utiliser ns avec le nam. Puis vous verrez comment créer une topologie. Et enfin comment initier une communication entre deux nœuds de cette topologie.

les bases modifier

   #+++++++++++++++++++
   #
   # creation du simulator
   #
   #+++++++++++++++++++++++
   #création du simulateur => NB :on aurait pu l'appeler autrement que ns
   set ns [new Simulator]
   #on redirige la sortie vers un fichier nam => *.nam => NB: un autre nom que nf est possible
   set nf [open out.nam w]
   #on demande à ns de tout tracer dans le fichier nam
   $ns namtrace-all $nf
   #procédure obligatoire qui ferme tout proprement
   proc finish {} {
       global ns nf
       $ns flush-trace
       close $nf
       exec nam out.nam &
       exit 0
   }


création de topologie modifier

   #++++++++++++++++++++++++++++++++++++
   #
   #  création de la topologie
   #
   #+++++++++++++++++++++++++++++++++++++++


   #on créer des nœuds
   #set nomDunoeud [$varSimulateur node] => NB: varSimulateur est le nom du simulateur : ici ns
   set n0 [$ns node]
   set n1 [$ns node]
   set n2 [$ns node]
   set n3 [$ns node]


   #on créer les liens
   #$varSimulateur typeDeLiens $varNoeud $varNoeud2 vitesseLien delaiLiens typeQueue
   $ns duplex-link $n0 $n1 1Mb 10ms DropTail
   $ns duplex-link $n2 $n1 1Mb 10ms DropTail
   $ns duplex-link $n2 $n3 1Mb 10ms DropTail
   $ns duplex-link $n0 $n3 1Mb 10ms DropTail
   $ns duplex-link $n0 $n2 1Mb 10ms DropTail

Échange de données modifier

   #+++++++++++++++++++++++++++++++++++++++
   #
   #  simulation des paquets de données
   #
   #+++++++++++++++++++++++++++++++++++++


   #créer un agent udp
   set udp0 [new Agent/UDP]
   #attache cet agent au noeud n0
   $ns attach-agent $n0 $udp0
   #un générateur de trafic est créé
   #NB CBR = "constant bit rate"
   set cbr0 [new Application/Traffic/CBR]
   $cbr0 set packetSize_ 500
   $cbr0 set interval_ 0.005 # = 200 paquets / sec
   $cbr0 attach-agent $udp0
   #$cbr0 attach-agent $udp0 # on attache a l'agent UDP
   #on créer un agent null qui sera le puis
   set null0 [new Agent/Null] 
   $ns attach-agent $n1 $null0
   #les deux agents sont connectés entre eux
   $ns connect $udp0 $null0
   #on lance les comm des agents avec start et stop
   $ns at 0.5 "$cbr0 start" 
   # démarre 0.5 seconde après le début
   $ns at 4.5 "$cbr0 stop" 
   # s'arrête 0.5 secondes avant la fin

pour finir modifier

Ce code est à mettre obligatoirement tout à la fin

   #on appel la procedure finish dans 5 secondes
   $ns at 5.0 "finish"
   #on demarre ns
   $ns run

NotaBene modifier

Le code donné en exemple est tiré d'un très bon tutoriel, cette explication n'est autre qu'une traduction/simplification commentée par mes soins. Si vous désirez plus d'info et pour allez plus loin allez sur le lien suivant :

Marc Greis'Tutorial

Voir aussi modifier