Upload
saadi-badis
View
52
Download
0
Embed Size (px)
DESCRIPTION
SUPPORT NS3
Citation preview
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Introduction à ns-3
Sébastien Bindel
10 décembre 2013
Sébastien Bindel Introduction à ns-3 1 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Plan
1 Introduction à la simulation
2 Présentation de ns-3
3 Les scripts sous ns-3
4 Conclusion
Sébastien Bindel Introduction à ns-3 2 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
ContexteLes outilsLes apports de la simulation
Sébastien Bindel Introduction à ns-3 3 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
ContexteLes outilsLes apports de la simulation
Contexte
Les réseauxRéseau -> communication (du niveau physique au niveauapplicatif)Evolution des communicationsMise en place de nouvelles communications
BesoinsTester (e.g. comportement)Analyser (e.g. performance)
ProblématiqueCoûtTemps de mise en oeuvre
Sébastien Bindel Introduction à ns-3 4 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
ContexteLes outilsLes apports de la simulation
Les outils
Les outils mathématiquesLes graphesLoi d’Erlang
Les outils de simulationnsomnet++
Implémentation réelle
Sébastien Bindel Introduction à ns-3 5 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
ContexteLes outilsLes apports de la simulation
Les apports de la simulation
Simuler le réseau
Simuler l’activité du réseau
Outils de visualisation et d’analyse
Possibilité d’être proche de la réalité
Ne nécessite pas d’investissements particulier
Sébastien Bindel Introduction à ns-3 6 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Présentation généraleOutilsQuelques possibilités de simulation dans ns-3Modules présents dans ns-3Compiler ns-3
Sébastien Bindel Introduction à ns-3 7 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Présentation généraleOutilsQuelques possibilités de simulation dans ns-3Modules présents dans ns-3Compiler ns-3
Présentation générale
NS acronyme pour Network Simulator
Simulation à évènements discrets
3eme génération (annoncé le 2/7/2006)
Existe en version stable (3.18) et développement
Composé de modules
Ecrit en C++
Scripts d’utilisation en C++ ou Python
Sébastien Bindel Introduction à ns-3 8 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Présentation généraleOutilsQuelques possibilités de simulation dans ns-3Modules présents dans ns-3Compiler ns-3
A propos de ns-2 et ns-3
Dates importantesdébut du projet ns-2 (6/11/1996) : fin du projet (4/11/2011)ns-3 annoncé le 2/07/2006 : première version 3.1 (06/2008)
Programmation des scriptsOTcl pour ns-2C++ et Python pour ns-3
Apports plus nombreux dans ns-2
ns-3 n’est pas rétro compatible avec ns-2
ns-3 est amélioré continuellement
Amélioration du développement dans ns-3
Sébastien Bindel Introduction à ns-3 9 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Présentation généraleOutilsQuelques possibilités de simulation dans ns-3Modules présents dans ns-3Compiler ns-3
Outils
Outils de visualisation du scénario de simulationPyViz (visualisation en temps réel)NetAnim (visualisation basée sur un fichier traçant le scénario)
Outils de traçages d’informationFichier ASCIIFichier pcap (wireshark)
Outils de traçage de trafficFichier simpleFichier pour Gnuplot
Sébastien Bindel Introduction à ns-3 10 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Présentation généraleOutilsQuelques possibilités de simulation dans ns-3Modules présents dans ns-3Compiler ns-3
Quelques possibilités de simulation dans ns-3
Simulation de protocolesTCP, UDP, IPv4, IPv6, OLSR, AODV . . .
Simulation de médiasEthernet, WIFI, WiMAX . . .
Définition de la topologie du réseauStatique ou dynamique (modèles de mobilité)
Possibilité d’émulationExecution d’une implémentation d’un protocole dans ns-3
Sébastien Bindel Introduction à ns-3 11 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Présentation généraleOutilsQuelques possibilités de simulation dans ns-3Modules présents dans ns-3Compiler ns-3
Modules présents dans ns-3
Sébastien Bindel Introduction à ns-3 12 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Présentation généraleOutilsQuelques possibilités de simulation dans ns-3Modules présents dans ns-3Compiler ns-3
Compiler ns-3
Configuration du builder� �./ waf configure --enable - examples --enable - tests� �
Compilation de ns-3� �./ waf build� �
Nettoyage de la compilation� �./ waf clean� �
Sébastien Bindel Introduction à ns-3 13 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Sébastien Bindel Introduction à ns-3 14 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Les règles de base
Scripts en C++ ou Python (Plus de OTcl)Les noeuds représentent les entités (e.g. PC)L’application génère sa propore activité réseau (e.g. echoUDP)Le channel représente le cannal (e.g. WIFI, PPP, Ethernet)Le Net Device représente la carte physique et son driverExemples disponible dans le dossier examples
Sébastien Bindel Introduction à ns-3 15 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
La création de noeuds
C++� �NodeContainer nodes ; // creation d’une fabrique de noeudsnodes . Create (2); // creation de deux noeudsnodes .Get (0); // acces au premier noeudnodes .Get (1); // acces au deuxieme noeud� �
Python� �nodes = ns. network . NodeContainer () # creation d’une fabrique de noeudsnodes . Create (2) # creation de deux noeudsnodes .Get (0) # acces au premier noeudnodes .Get (1) # acces au deuxieme noeud� �
Sébastien Bindel Introduction à ns-3 16 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Définition et installation du média de communicationC++� �
PointToPointHelper pointToPoint ; // definition du media PPP
// definition de la bande passante et du delaipointToPoint . SetDeviceAttribute (" DataRate ", StringValue ("5Mbps"));pointToPoint . SetChannelAttribute (" Delay ", StringValue ("2ms"));
NetDeviceContainer devices ; // creation d’un conteneur d’interfaces reseau
// creation et installation des interfaces reseau aux noeudsdevices = pointToPoint . Install ( nodes );� �
Python� �# definition du media PPPpointToPoint = ns. point_to_point . PointToPointHelper ()
# definition de la bande passante et du delaipointToPoint . SetDeviceAttribute (" DataRate ", ns.core. StringValue ("5Mbps"))pointToPoint . SetChannelAttribute (" Delay ", ns.core. StringValue ("2ms"))
# creation et installation des interfaces reseau aux noeudsdevices = pointToPoint . Install ( nodes )� �
Sébastien Bindel Introduction à ns-3 17 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Installation du protocole IPC++� �
InternetStackHelper stack ; // declaration de la pile protocolaire IPstack . Install ( nodes ); // installation de la pile
Ipv4AddressHelper address ; // construction d’un espace d’adressage
// definition de l’espace d’adressageaddress . SetBase (" 10.1.1.0 ", " 255.255.255.0 ");
// assignation des adressesIpv4InterfaceContainer interfaces = address . Assign ( devices );� �
Python� �stack = ns. internet . InternetStackHelper () # creation de la pile IPstack . Install ( nodes ) # installation de la pile
address = ns. internet . Ipv4AddressHelper () # definitionaddress . SetBase (ns. network . Ipv4Address (" 10.1.1.0 "), # d’un espace
ns. network . Ipv4Mask (" 255.255.255.0 ")) # d’adressage
interfaces = address . Assign ( devices ); # assignation des adresses� �Sébastien Bindel Introduction à ns-3 18 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Mise en place du serveurC++� �
// declaration du serveur (ouverture du port 9)UdpEchoServerHelper echoServer (9);
// installation de l’application serveur sur le noeud 2ApplicationContainer serverApps = echoServer . Install ( nodes .Get (1));
serverApps . Start ( Seconds (1.0) ); // demarrage du traffic a 1s
serverApps .Stop ( Seconds (10.0) ); // arret du traffic a 10s� �Python� �
# declaration du serveur (ouverture du port 9)echoServer = ns. applications . UdpEchoServerHelper (9)
# installation de l’application serveur sur le noeud 2serverApps = echoServer . Install ( nodes .Get (1))
serverApps . Start (ns.core. Seconds (1.0) ) # demarrage du traffic a 1s
serverApps .Stop(ns.core. Seconds (10.0) ) # arret du traffic a 10s� �Sébastien Bindel Introduction à ns-3 19 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Installation du clientC++� �
// declaration du client (adresse,numero de port)UdpEchoClientHelper echoClient ( interfaces . GetAddress (1) , 9);// MaxPackets : nombre max de paquets envoyesechoClient . SetAttribute (" MaxPackets ", UintegerValue (1));echoClient . SetAttribute (" Interval ", TimeValue ( Seconds (1.0) ));echoClient . SetAttribute (" PacketSize ", UintegerValue (1024) );// installation de l’application clienteApplicationContainer clientApps = echoClient . Install ( nodes .Get (0));clientApps . Start ( Seconds (2.0) ); // demarrage du traffic a 2sxclientApps .Stop ( Seconds (10.0) ); // arret du traffic a 10s� �
Python� �echoClient = ns. applications . UdpEchoClientHelper ( interfaces . GetAddress (1)
,9)echoClient . SetAttribute (" MaxPackets ", ns.core. UintegerValue (1))echoClient . SetAttribute (" Interval ", ns.core. TimeValue (ns.core. Seconds
(1.0) ))echoClient . SetAttribute (" PacketSize ", ns.core. UintegerValue (1024) )
clientApps = echoClient . Install ( nodes .Get (0))clientApps . Start (ns.core. Seconds (2.0) )clientApps .Stop(ns.core. Seconds (10.0) )� �
Sébastien Bindel Introduction à ns-3 20 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Démarrage de simulation
C++� �Simulator :: Run ();Simulator :: Destroy ();� �
Python� �ns.core. Simulator .Run ()ns.core. Simulator . Destroy ()� �
Sébastien Bindel Introduction à ns-3 21 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Execution d’un script de simulation
Script en C++� �./ waf --run script� �
Script en Python� �./ waf --pyrun script .py� �
Sébastien Bindel Introduction à ns-3 22 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Premier script
Copiez le fichier examples/tutorial/first.cc dans le dossierscratchLancez la commande ./waf buildLancez la commande ./waf –run scratch/myfirst
Résultat� �At time 2s client sent 1024 bytes to 10.1.1.2 port 9At time 2.00369 s server received 1024 bytes from
10.1.1.1 port 49153At time 2.00369 s server sent 1024 bytes to 10.1.1.1
port 49153At time 2.00737 s client received 1024 bytes from
10.1.1.2 port 9� �Sébastien Bindel Introduction à ns-3 23 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
PyViz
Permet de visualiser le scénario de simulationN’utilise pas de fichiers tracesLe script doit pouvoir parser les arguments donnés (argc,argv)Aucun ajout de code supplémentaire
Ajoutez dans le script (C++)� �CommandLine cmd;cmd. Parse (argc , argv);� �
Ajoutez dans le script (Python)� �import ns.coreimport ns. visualizer[...]cmd = ns.core. CommandLine ()cmd. Parse (sys.argv)[...]ns.core. Simulator .Run ()� �
Sébastien Bindel Introduction à ns-3 24 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Résultat de PyViz
Pourquoi a t-on reçu 1054 octets ?
Données (1024 o) + Header UDP (8 o) + Header IP (20 o) +Header PPP (2 o) = 1054 octets
Sébastien Bindel Introduction à ns-3 25 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Résultat de PyViz
Pourquoi a t-on reçu 1054 octets ?Données (1024 o) + Header UDP (8 o) + Header IP (20 o) +
Header PPP (2 o) = 1054 octets
Sébastien Bindel Introduction à ns-3 25 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Netanim
Permet de visualiser le scénario de simulation offlineUtilise un fichier traceFichier trace => xmlAjout de codes supplémentairesNon disponible sous les scripts Python
Ajoutez dans le script (C++)� �#inc l u d e "ns3/netanim - module .h" // inclure le header...// generation du fichier animation.xml// a inclure juste avant Simulator::Run ();AnimationInterface anim (" animation .xml");� �
Sébastien Bindel Introduction à ns-3 26 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Résultat de Netanim
Sébastien Bindel Introduction à ns-3 27 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Trace ASCII
Permet de visualiser les informations véhiculéesSimilaire aux traces pcapS’active sur le channel pour que les interfaces puissentcapturer le trafic
Ajoutez dans le script (C++)� �AsciiTraceHelper ascii ;pointToPoint . EnableAsciiAll ( ascii . CreateFileStream (" myfirst .tr"));� �
Ajoutez dans le script (Python)� �pointToPoint . EnableAsciiAll (" ascii ")� �
Sébastien Bindel Introduction à ns-3 28 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Rendu partiel des traces ascii
+ 2 /NodeList/0/DeviceList/0/$ns3 : :PointToPointNetDe-vice/TxQueue/Enqueue ns3 : :PppHeader (Point-to-PointProtocol : IP (0x0021)) ns3 : :Ipv4Header (tos 0x0 DSCP DefaultECN Not-ECT ttl 64 id 0 protocol 17 offset (bytes) 0 flags [none]length : 1052 10.1.1.1 > 10.1.1.2) ns3 : :UdpHeader (length : 103249153 > 9) Payload (size=1024)- 2 /NodeList/0/DeviceList/0/$ns3 : :PointToPointNetDe-vice/TxQueue/Dequeue ns3 : :PppHeader (Point-to-PointProtocol : IP (0x0021)) ns3 : :Ipv4Header (tos 0x0 DSCP DefaultECN Not-ECT ttl 64 id 0 protocol 17 offset (bytes) 0 flags [none]length : 1052 10.1.1.1 > 10.1.1.2) ns3 : :UdpHeader (length : 103249153 > 9) Payload (size=1024)
Sébastien Bindel Introduction à ns-3 29 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Trace pcap
Permet de visualiser les informations véhiculéesUtilisé par tcpdump ou wiresharkS’active sur le channel pour que les interfaces puissentcapturer le traficDocumentation www.nsnam.org/doxygen-release/classns3_1_1_pcap_helper_for_device.html
Ajoutez dans le script (C++)� �pointToPoint . EnablePcapAll ("trace - files ");� �
Ajoutez dans le script (Python)� �pointToPoint . EnablePcapAll ("trace - files ")� �
Sébastien Bindel Introduction à ns-3 30 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Rendu des traces pcap
Sébastien Bindel Introduction à ns-3 31 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Les règles de baseEtude d’un script de simulation pas à pasEtude des outils ns-3
Traçage de graphiques avec Gnuplot
Permet de tracer des graphiquesUtilisable de deux façons
Création de fichier de contrôle : commandes GnuplotCréation de fichier de données : données à afficher
Outil très utilisé
Example (C++)� �#inc l u d e "ns3/stats - module .h" // utilise pour Gnuplot
Gnuplot plot ( graphicsFileName ); // objet GnuplotGnuplot2dDataset dataset ; // donnees pour Gnuplot� �
Sébastien Bindel Introduction à ns-3 32 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Conclusion
Les points abordés durant ce coursLes outils d’étude des réseauxLe simulateur ns-3 et ses outilsComprendre l’écriture d’un script simple
Les points importantsScripts ns-3 en C++ ou PythonSavoir appeler les outils de nsEcrire et comprendre un script simple
Les points restant à aborder en TDEcriture de scripts plus complexesVoir certains protocoles et leurs mécanismes associés
Sébastien Bindel Introduction à ns-3 33 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Conclusion
Les points abordés durant ce coursLes outils d’étude des réseauxLe simulateur ns-3 et ses outilsComprendre l’écriture d’un script simple
Les points importantsScripts ns-3 en C++ ou PythonSavoir appeler les outils de nsEcrire et comprendre un script simple
Les points restant à aborder en TDEcriture de scripts plus complexesVoir certains protocoles et leurs mécanismes associés
Sébastien Bindel Introduction à ns-3 33 / 33
Introduction à la simulationPrésentation de ns-3Les scripts sous ns-3
Conclusion
Conclusion
Les points abordés durant ce coursLes outils d’étude des réseauxLe simulateur ns-3 et ses outilsComprendre l’écriture d’un script simple
Les points importantsScripts ns-3 en C++ ou PythonSavoir appeler les outils de nsEcrire et comprendre un script simple
Les points restant à aborder en TDEcriture de scripts plus complexesVoir certains protocoles et leurs mécanismes associés
Sébastien Bindel Introduction à ns-3 33 / 33