Vous êtes sur la page 1sur 36

Introduction la simulation

Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Introduction ns-3

Sbastien Bindel

10 dcembre 2013

Sbastien Bindel Introduction ns-3 1 / 33


Introduction la simulation
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Plan

1 Introduction la simulation

2 Prsentation de ns-3

3 Les scripts sous ns-3

4 Conclusion

Sbastien Bindel Introduction ns-3 2 / 33


Introduction la simulation
Contexte
Prsentation de ns-3
Les outils
Les scripts sous ns-3
Les apports de la simulation
Conclusion

Sbastien Bindel Introduction ns-3 3 / 33


Introduction la simulation
Contexte
Prsentation de ns-3
Les outils
Les scripts sous ns-3
Les apports de la simulation
Conclusion

Contexte

Les rseaux
Rseau -> 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)

Problmatique
Cot
Temps de mise en oeuvre

Sbastien Bindel Introduction ns-3 4 / 33


Introduction la simulation
Contexte
Prsentation de ns-3
Les outils
Les scripts sous ns-3
Les apports de la simulation
Conclusion

Les outils

Les outils mathmatiques


Les graphes
Loi dErlang

Les outils de simulation


ns
omnet++

Implmentation relle

Sbastien Bindel Introduction ns-3 5 / 33


Introduction la simulation
Contexte
Prsentation de ns-3
Les outils
Les scripts sous ns-3
Les apports de la simulation
Conclusion

Les apports de la simulation

Simuler le rseau
Simuler lactivit du rseau
Outils de visualisation et danalyse
Possibilit dtre proche de la ralit
Ne ncessite pas dinvestissements particulier

Sbastien Bindel Introduction ns-3 6 / 33


Prsentation gnrale
Introduction la simulation
Outils
Prsentation de ns-3
Quelques possibilits de simulation dans ns-3
Les scripts sous ns-3
Modules prsents dans ns-3
Conclusion
Compiler ns-3

Sbastien Bindel Introduction ns-3 7 / 33


Prsentation gnrale
Introduction la simulation
Outils
Prsentation de ns-3
Quelques possibilits de simulation dans ns-3
Les scripts sous ns-3
Modules prsents dans ns-3
Conclusion
Compiler ns-3

Prsentation gnrale

NS acronyme pour Network Simulator

Simulation vnements discrets

3eme gnration (annonc le 2/7/2006)

Existe en version stable (3.18) et dveloppement

Compos de modules

Ecrit en C++

Scripts dutilisation en C++ ou Python

Sbastien Bindel Introduction ns-3 8 / 33


Prsentation gnrale
Introduction la simulation
Outils
Prsentation de ns-3
Quelques possibilits de simulation dans ns-3
Les scripts sous ns-3
Modules prsents dans ns-3
Conclusion
Compiler ns-3

A propos de ns-2 et ns-3

Dates importantes
dbut du projet ns-2 (6/11/1996) : fin du projet (4/11/2011)
ns-3 annonc le 2/07/2006 : premire 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 nest pas rtro compatible avec ns-2
ns-3 est amlior continuellement
Amlioration du dveloppement dans ns-3

Sbastien Bindel Introduction ns-3 9 / 33


Prsentation gnrale
Introduction la simulation
Outils
Prsentation de ns-3
Quelques possibilits de simulation dans ns-3
Les scripts sous ns-3
Modules prsents dans ns-3
Conclusion
Compiler ns-3

Outils

Outils de visualisation du scnario de simulation


PyViz (visualisation en temps rel)
NetAnim (visualisation base sur un fichier traant le scnario)

Outils de traages dinformation


Fichier ASCII
Fichier pcap (wireshark)

Outils de traage de traffic


Fichier simple
Fichier pour Gnuplot

Sbastien Bindel Introduction ns-3 10 / 33


Prsentation gnrale
Introduction la simulation
Outils
Prsentation de ns-3
Quelques possibilits de simulation dans ns-3
Les scripts sous ns-3
Modules prsents dans ns-3
Conclusion
Compiler ns-3

Quelques possibilits de simulation dans ns-3

Simulation de protocoles
TCP, UDP, IPv4, IPv6, OLSR, AODV . . .

Simulation de mdias
Ethernet, WIFI, WiMAX . . .

Dfinition de la topologie du rseau


Statique ou dynamique (modles de mobilit)

Possibilit dmulation
Execution dune implmentation dun protocole dans ns-3

Sbastien Bindel Introduction ns-3 11 / 33


Prsentation gnrale
Introduction la simulation
Outils
Prsentation de ns-3
Quelques possibilits de simulation dans ns-3
Les scripts sous ns-3
Modules prsents dans ns-3
Conclusion
Compiler ns-3

Modules prsents dans ns-3

Sbastien Bindel Introduction ns-3 12 / 33


Prsentation gnrale
Introduction la simulation
Outils
Prsentation de ns-3
Quelques possibilits de simulation dans ns-3
Les scripts sous ns-3
Modules prsents dans ns-3
Conclusion
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
 

Sbastien Bindel Introduction ns-3 13 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Sbastien Bindel Introduction ns-3 14 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Les rgles de base

Scripts en C++ ou Python (Plus de OTcl)


Les noeuds reprsentent les entits (e.g. PC)
Lapplication gnre sa propore activit rseau (e.g. echo
UDP)
Le channel reprsente le cannal (e.g. WIFI, PPP, Ethernet)
Le Net Device reprsente la carte physique et son driver
Exemples disponible dans le dossier examples

Sbastien Bindel Introduction ns-3 15 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

La cration de noeuds

C++
 
NodeContainer nodes ; // creation dune fabrique de noeuds
nodes . Create (2) ; // creation de deux noeuds
nodes . Get (0) ; // acces au premier noeud
nodes . Get (1) ; // acces au deuxieme noeud
 

Python
 
nodes = ns . network . NodeContainer () # creation dune fabrique de noeuds
nodes . Create (2) # creation de deux noeuds
nodes . Get (0) # acces au premier noeud
nodes . Get (1) # acces au deuxieme noeud
 

Sbastien Bindel Introduction ns-3 16 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Dfinition et installation du mdia 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 dun conteneur dinterfaces 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 )
 
Sbastien Bindel Introduction ns-3 17 / 33
Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

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 dun espace dadressage

// definition de lespace dadressage


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 " ) , # dun espace
ns . network . Ipv4Mask ( " 255.255.255.0 " ) ) # dadressage

interfaces = address . Assign ( devices ) ; # assignation des adresses


 
Sbastien Bindel Introduction ns-3 18 / 33
Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

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 lapplication 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 lapplication 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


 
Sbastien Bindel Introduction ns-3 19 / 33
Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

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 lapplication 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) )
 
Sbastien Bindel Introduction ns-3 20 / 33
Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Dmarrage de simulation

C++
 
Simulator :: Run () ;
Simulator :: Destroy () ;
 
Python
 
ns . core . Simulator . Run ()
ns . core . Simulator . Destroy ()
 

Sbastien Bindel Introduction ns-3 21 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Execution dun script de simulation

Script en C++
 
./ waf -- run script
 
Script en Python
 
./ waf -- pyrun script . py
 

Sbastien Bindel Introduction ns-3 22 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

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
Rsultat
 
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
 

Sbastien Bindel Introduction ns-3 23 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

PyViz
Permet de visualiser le scnario de simulation
Nutilise pas de fichiers traces
Le script doit pouvoir parser les arguments donns (argc,argv)
Aucun ajout de code supplmentaire
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 ()
 
Sbastien Bindel Introduction ns-3 24 / 33
Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Rsultat de PyViz

Pourquoi a t-on reu 1054 octets ?

Sbastien Bindel Introduction ns-3 25 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Rsultat de PyViz

Pourquoi a t-on reu 1054 octets ?


Donnes (1024 o) + Header UDP (8 o) + Header IP (20 o) +
Header PPP (2 o) = 1054 octets

Sbastien Bindel Introduction ns-3 25 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Netanim

Permet de visualiser le scnario de simulation offline


Utilise un fichier trace
Fichier trace => xml
Ajout de codes supplmentaires
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 " ) ;
 

Sbastien Bindel Introduction ns-3 26 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Rsultat de Netanim

Sbastien Bindel Introduction ns-3 27 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Trace ASCII

Permet de visualiser les informations vhicules


Similaire aux traces pcap
Sactive 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 " )
 

Sbastien Bindel Introduction ns-3 28 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Rendu partiel des traces ascii

+ 2 /NodeList/0/DeviceList/0/$ns3 : :PointToPointNetDe-
vice/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 : :PointToPointNetDe-
vice/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)

Sbastien Bindel Introduction ns-3 29 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Trace pcap

Permet de visualiser les informations vhicules


Utilis par tcpdump ou wireshark
Sactive sur le channel pour que les interfaces puissent
capturer le trafic
Documentation 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 " )
 
Sbastien Bindel Introduction ns-3 30 / 33
Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Rendu des traces pcap

Sbastien Bindel Introduction ns-3 31 / 33


Introduction la simulation
Les rgles de base
Prsentation de ns-3
Etude dun script de simulation pas pas
Les scripts sous ns-3
Etude des outils ns-3
Conclusion

Traage de graphiques avec Gnuplot

Permet de tracer des graphiques


Utilisable de deux faons
Cration de fichier de contrle : commandes Gnuplot
Cration de fichier de donnes : donnes afficher
Outil trs 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
 

Sbastien Bindel Introduction ns-3 32 / 33


Introduction la simulation
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Conclusion

Les points abords durant ce cours


Les outils dtude des rseaux
Le simulateur ns-3 et ses outils
Comprendre lcriture dun script simple

Sbastien Bindel Introduction ns-3 33 / 33


Introduction la simulation
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Conclusion

Les points abords durant ce cours


Les outils dtude des rseaux
Le simulateur ns-3 et ses outils
Comprendre lcriture dun script simple

Les points importants


Scripts ns-3 en C++ ou Python
Savoir appeler les outils de ns
Ecrire et comprendre un script simple

Sbastien Bindel Introduction ns-3 33 / 33


Introduction la simulation
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Conclusion

Les points abords durant ce cours


Les outils dtude des rseaux
Le simulateur ns-3 et ses outils
Comprendre lcriture dun 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 mcanismes associs

Sbastien Bindel Introduction ns-3 33 / 33