Network Simulator
Présentation
[modifier | modifier le wikicode]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 | modifier le wikicode]installation
[modifier | modifier le wikicode]sous Windows
[modifier | modifier le wikicode]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 | modifier le wikicode]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 | modifier le wikicode]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 | modifier le wikicode]#+++++++++++++++++++ # # 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 | modifier le wikicode]#++++++++++++++++++++++++++++++++++++ # # 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 | modifier le wikicode]#+++++++++++++++++++++++++++++++++++++++ # # 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 | modifier le wikicode]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 | modifier le wikicode]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 :
Voir aussi
[modifier | modifier le wikicode]- (anglais) Wiki du projet
- (anglais) Blog du projet pour la version ns-3.
- (anglais) Ancien site web jusqu'à la version ns-2.