Network Simulator
Présentation.
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.
installation.
sous Windows.
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.
sous GNU/Linux.
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:
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.
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.
 #
 # 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.
 #
 # 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.
 #
 # 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.
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.
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

Mécanique, enseignée via l'Histoire des Sciences/La balistique extérieure