Introduction à ns-3

Transcription

Introduction à ns-3
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
Introduction à la simulation
Présentation de ns-3
Les 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Sébastien Bindel
Contexte
Les outils
Les apports de la simulation
Introduction à ns-3
3 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Contexte
Les outils
Les apports de la simulation
Contexte
Les réseaux
Réseau -> communication (du niveau physique au niveau
applicatif)
Evolution des communications
Mise en place de nouvelles communications
Besoins
Tester (e.g. comportement)
Analyser (e.g. performance)
Problématique
Coût
Temps de mise en oeuvre
Sébastien Bindel
Introduction à ns-3
4 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Contexte
Les outils
Les apports de la simulation
Les outils
Les outils mathématiques
Les graphes
Loi d’Erlang
Les outils de simulation
ns
omnet++
Implémentation réelle
Sébastien Bindel
Introduction à ns-3
5 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Contexte
Les outils
Les 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Sébastien Bindel
Présentation générale
Outils
Quelques possibilités de simulation dans ns-3
Modules présents dans ns-3
Compiler ns-3
Introduction à ns-3
7 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Présentation générale
Outils
Quelques possibilités de simulation dans ns-3
Modules présents dans ns-3
Compiler 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Présentation générale
Outils
Quelques possibilités de simulation dans ns-3
Modules présents dans ns-3
Compiler ns-3
A propos de ns-2 et ns-3
Dates importantes
dé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 scripts
OTcl pour ns-2
C++ 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Présentation générale
Outils
Quelques possibilités de simulation dans ns-3
Modules présents dans ns-3
Compiler ns-3
Outils
Outils de visualisation du scénario de simulation
PyViz (visualisation en temps réel)
NetAnim (visualisation basée sur un fichier traçant le scénario)
Outils de traçages d’information
Fichier ASCII
Fichier pcap (wireshark)
Outils de traçage de traffic
Fichier simple
Fichier pour Gnuplot
Sébastien Bindel
Introduction à ns-3
10 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Présentation générale
Outils
Quelques possibilités de simulation dans ns-3
Modules présents dans ns-3
Compiler ns-3
Quelques possibilités de simulation dans ns-3
Simulation de protocoles
TCP, UDP, IPv4, IPv6, OLSR, AODV . . .
Simulation de médias
Ethernet, WIFI, WiMAX . . .
Définition de la topologie du réseau
Statique ou dynamique (modèles de mobilité)
Possibilité d’émulation
Execution d’une implémentation d’un protocole dans ns-3
Sébastien Bindel
Introduction à ns-3
11 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Présentation générale
Outils
Quelques possibilités de simulation dans ns-3
Modules présents dans ns-3
Compiler ns-3
Modules présents dans ns-3
Sébastien Bindel
Introduction à ns-3
12 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Présentation générale
Outils
Quelques possibilités de simulation dans ns-3
Modules présents dans ns-3
Compiler 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Sébastien Bindel
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Introduction à ns-3
14 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude 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. echo
UDP)
Le channel représente le cannal (e.g. WIFI, PPP, Ethernet)
Le Net Device représente la carte physique et son driver
Exemples disponible dans le dossier examples
Sébastien Bindel
Introduction à ns-3
15 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
La création de noeuds
C++
NodeContainer nodes ;
nodes . Create (2) ;
nodes . Get (0) ;
nodes . Get (1) ;
//
//
//
//
creation
creation
acces au
acces au
d’une fabrique de noeuds
de deux noeuds
premier noeud
deuxieme noeud
Python
nodes = ns . network . NodeContainer ()
nodes . Create (2)
nodes . Get (0)
nodes . Get (1)
Sébastien Bindel
#
#
#
#
creation
creation
acces au
acces au
d’une fabrique de noeuds
de deux noeuds
premier noeud
deuxieme noeud
Introduction à ns-3
16 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Définition et installation du média de communication
C++
P o i n t To P oi n t He l pe r pointToPoint ;
// definition du media PPP
// definition de la bande passante et du delai
pointToPoint . Se t De v ic e A tt r ib u t e ( " DataRate " , StringValue ( " 5 Mbps " ) ) ;
pointToPoint . S e t C h a n n e l A t t r i b u t e ( " Delay " , StringValue ( " 2 ms " ) ) ;
N e t D e vi c eC o n ta i ne r devices ; // creation d’un conteneur d’interfaces reseau
// creation et installation des interfaces reseau aux noeuds
devices = pointToPoint . Install ( nodes ) ;
Python
# definition du media PPP
pointToPoint = ns . point_to_point . P oi n t To P oi n tH e l pe r ()
# definition de la bande passante et du delai
pointToPoint . Se t De v ic e A tt r ib u t e ( " DataRate " , ns . core . StringValue ( " 5 Mbps " ) )
pointToPoint . S e t C h a n n e l A t t r i b u t e ( " Delay " , ns . core . StringValue ( " 2 ms " ) )
# creation et installation des interfaces reseau aux noeuds
devices = pointToPoint . Install ( nodes )
Sébastien Bindel
Introduction à ns-3
17 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Installation du protocole IP
C++
I n t e r n e t S t a c k H e l p e r stack ; // declaration de la pile protocolaire IP
stack . Install ( nodes ) ; // installation de la pile
I p v 4 Add re ssH el per address ; // construction d’un espace d’adressage
// definition de l’espace d’adressage
address . SetBase ( " 10.1.1.0 " , " 255.255.255.0 " ) ;
// assignation des adresses
I p v 4 I n t e r f a c e C o n t a i n e r interfaces = address . Assign ( devices ) ;
Python
stack = ns . internet . I n t e r n e t S t a c k H e l p e r () # creation de la pile IP
stack . Install ( nodes ) # installation de la pile
address = ns . internet . I pv 4Ad dr ess He lpe r ()
# definition
address . 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Mise en place du serveur
C++
// declaration du serveur (ouverture du port 9)
U d p E c h o S e r v e r H e l p e r echoServer (9) ;
// installation de l’application serveur sur le noeud 2
A p p l i c a t i o n C o n t a i n e r 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 . U d p Ec h o S e r v e r H e l p e r (9)
# installation de l’application serveur sur le noeud 2
serverApps = 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Installation du client
C++
// declaration du client (adresse,numero de port)
U d p E c h o C l i e n t H e l p e r echoClient ( interfaces . GetAddress (1) , 9) ;
// MaxPackets : nombre max de paquets envoyes
echoClient . SetAttribute ( " MaxPackets " , UintegerValue (1) ) ;
echoClient . SetAttribute ( " Interval " , TimeValue ( Seconds (1.0) ) ) ;
echoClient . SetAttribute ( " PacketSize " , UintegerValue (1024) ) ;
// installation de l’application cliente
A p p l i c a t i o n C o n t a i n e r clientApps = echoClient . Install ( nodes . Get (0) ) ;
clientApps . Start ( Seconds (2.0) ) ; // demarrage du traffic a 2s
xclientApps . Stop ( Seconds (10.0) ) ; // arret du traffic a 10s
Python
echoClient = ns . applications . U d p Ec h o C l i e n t H e l p e r ( 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Premier script
Copiez le fichier examples/tutorial/first.cc dans le dossier
scratch
Lancez la commande ./waf build
Lancez la commande ./waf –run scratch/myfirst
Résultat
At time 2 s client sent 1024 bytes to 10.1.1.2 port 9
At time 2.00369 s server received 1024 bytes from
10.1.1.1 port 49153
At time 2.00369 s server sent 1024 bytes to 10.1.1.1
port 49153
At 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
PyViz
Permet de visualiser le scénario de simulation
N’utilise pas de fichiers traces
Le 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)
i m p o r t ns . core
i m p o r t ns . visualizer
[...]
cmd = ns . core . CommandLine ()
cmd . Parse ( sys . argv )
[...]
ns . core . Simulator . Run ()
Sébastien Bindel
Introduction à ns-3
24 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Résultat de PyViz
Pourquoi a t-on reçu 1054 octets ?
Sébastien Bindel
Introduction à ns-3
25 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Netanim
Permet de visualiser le scénario de simulation offline
Utilise un fichier trace
Fichier trace => xml
Ajout de codes supplémentaires
Non disponible sous les scripts Python
Ajoutez dans le script (C++)
#i n c l u d e " ns3 / netanim - module . h " // inclure le header
...
// generation du fichier animation.xml
// a inclure juste avant Simulator::Run ();
A n i m a ti o nI n t er f ac e anim ( " animation . xml " ) ;
Sébastien Bindel
Introduction à ns-3
26 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Résultat de Netanim
Sébastien Bindel
Introduction à ns-3
27 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Trace ASCII
Permet de visualiser les informations véhiculées
Similaire aux traces pcap
S’active sur le channel pour que les interfaces puissent
capturer le trafic
Ajoutez dans le script (C++)
A s c iiTrac eHelper 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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Rendu partiel des traces ascii
+ 2 /NodeList/0/DeviceList/0/$ns3 : :PointToPointNetDevice/TxQueue/Enqueue ns3 : :PppHeader (Point-to-Point
Protocol : IP (0x0021)) ns3 : :Ipv4Header (tos 0x0 DSCP Default
ECN 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 : 1032
49153 > 9) Payload (size=1024)
- 2 /NodeList/0/DeviceList/0/$ns3 : :PointToPointNetDevice/TxQueue/Dequeue ns3 : :PppHeader (Point-to-Point
Protocol : IP (0x0021)) ns3 : :Ipv4Header (tos 0x0 DSCP Default
ECN 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 : 1032
49153 > 9) Payload (size=1024)
Sébastien Bindel
Introduction à ns-3
29 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Trace pcap
Permet de visualiser les informations véhiculées
Utilisé par tcpdump ou wireshark
S’active sur le channel pour que les interfaces puissent
capturer le trafic
Documentation www.nsnam.org/doxygenrelease/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 simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Rendu des traces pcap
Sébastien Bindel
Introduction à ns-3
31 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Les règles de base
Etude d’un script de simulation pas à pas
Etude des outils ns-3
Traçage de graphiques avec Gnuplot
Permet de tracer des graphiques
Utilisable de deux façons
Création de fichier de contrôle : commandes Gnuplot
Création de fichier de données : données à afficher
Outil très utilisé
Example (C++)
#i n c l u d e " ns3 / stats - module . h " // utilise pour Gnuplot
Gnuplot plot ( graphicsFileNam e ) ; // objet Gnuplot
G n u plot2d Dataset dataset ; // donnees pour Gnuplot
Sébastien Bindel
Introduction à ns-3
32 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Conclusion
Les points abordés durant ce cours
Les outils d’étude des réseaux
Le simulateur ns-3 et ses outils
Comprendre l’écriture d’un script simple
Sébastien Bindel
Introduction à ns-3
33 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Conclusion
Les points abordés durant ce cours
Les outils d’étude des réseaux
Le simulateur ns-3 et ses outils
Comprendre l’écriture d’un script simple
Les points importants
Scripts ns-3 en C++ ou Python
Savoir appeler les outils de ns
Ecrire et comprendre un script simple
Sébastien Bindel
Introduction à ns-3
33 / 33
Introduction à la simulation
Présentation de ns-3
Les scripts sous ns-3
Conclusion
Conclusion
Les points abordés durant ce cours
Les outils d’étude des réseaux
Le simulateur ns-3 et ses outils
Comprendre l’écriture d’un script simple
Les points importants
Scripts ns-3 en C++ ou Python
Savoir appeler les outils de ns
Ecrire et comprendre un script simple
Les points restant à aborder en TD
Ecriture de scripts plus complexes
Voir certains protocoles et leurs mécanismes associés
Sébastien Bindel
Introduction à ns-3
33 / 33

Documents pareils