36
Introduction à la simulation Présentation de ns-3 Les scripts sous ns-3 Conclusion Introduction à ns-3 Sébastien Bindel 10 décembre 2013 Sébastien Bindel Introduction à ns-3 1 / 33

cours-ns3

Embed Size (px)

DESCRIPTION

SUPPORT NS3

Citation preview

Page 1: cours-ns3

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

Page 2: cours-ns3

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

Page 3: cours-ns3

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

Page 4: cours-ns3

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

Page 5: cours-ns3

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

Page 6: cours-ns3

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

Page 7: cours-ns3

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

Page 8: cours-ns3

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

Page 9: cours-ns3

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

Page 10: cours-ns3

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

Page 11: cours-ns3

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

Page 12: cours-ns3

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

Page 13: cours-ns3

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

Page 14: cours-ns3

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

Page 15: cours-ns3

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

Page 16: cours-ns3

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

Page 17: cours-ns3

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

Page 18: cours-ns3

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

Page 19: cours-ns3

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

Page 20: cours-ns3

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

Page 21: cours-ns3

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

Page 22: cours-ns3

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

Page 23: cours-ns3

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

Page 24: cours-ns3

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

Page 25: cours-ns3

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

Page 26: cours-ns3

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

Page 27: cours-ns3

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

Page 28: cours-ns3

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

Page 29: cours-ns3

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

Page 30: cours-ns3

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

Page 31: cours-ns3

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

Page 32: cours-ns3

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

Page 33: cours-ns3

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

Page 34: cours-ns3

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

Page 35: cours-ns3

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

Page 36: cours-ns3

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