Sunteți pe pagina 1din 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

Introduction la simulation

Prsentation de ns-3

Les scripts sous ns-3

Conclusion

Sbastien Bindel

Introduction ns-3

2 / 33

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

Sbastien Bindel

Contexte
Les outils
Les apports de la simulation

Introduction ns-3

3 / 33

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

Contexte
Les outils
Les apports de la simulation

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Contexte
Les outils
Les apports de la simulation

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Contexte
Les outils
Les apports de la simulation

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

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

Sbastien Bindel

Prsentation gnrale
Outils
Quelques possibilits de simulation dans ns-3
Modules prsents dans ns-3
Compiler ns-3

Introduction ns-3

7 / 33

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

Prsentation gnrale
Outils
Quelques possibilits de simulation dans ns-3
Modules prsents dans ns-3
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

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

Prsentation gnrale
Outils
Quelques possibilits de simulation dans ns-3
Modules prsents dans ns-3
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

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

Prsentation gnrale
Outils
Quelques possibilits de simulation dans ns-3
Modules prsents dans ns-3
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

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

Prsentation gnrale
Outils
Quelques possibilits de simulation dans ns-3
Modules prsents dans ns-3
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

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

Prsentation gnrale
Outils
Quelques possibilits de simulation dans ns-3
Modules prsents dans ns-3
Compiler ns-3

Modules prsents dans ns-3

Sbastien Bindel

Introduction ns-3

12 / 33

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

Prsentation gnrale
Outils
Quelques possibilits de simulation dans ns-3
Modules prsents 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


Sbastien Bindel

Introduction ns-3

13 / 33

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

Sbastien Bindel

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

Introduction ns-3

14 / 33

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

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

La cration de noeuds
C++


NodeContainer nodes ;
nodes . Create (2) ;
nodes . Get (0) ;
nodes . Get (1) ;


//
//
//
//

creation
creation
acces au
acces au

dune fabrique de noeuds


de deux noeuds
premier noeud
deuxieme noeud

Python


nodes = ns . network . NodeContainer ()


nodes . Create (2)
nodes . Get (0)
nodes . Get (1)

Sbastien Bindel

#
#
#
#

creation
creation
acces au
acces au

dune fabrique de noeuds


de deux noeuds
premier noeud
deuxieme noeud

Introduction ns-3

16 / 33

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

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun 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 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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun 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 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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun 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 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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun 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
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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

Rsultat de PyViz

Pourquoi a t-on reu 1054 octets ?

Sbastien Bindel

Introduction ns-3

25 / 33

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

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

Rsultat de Netanim

Sbastien Bindel

Introduction ns-3

27 / 33

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

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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
Prsentation de ns-3
Les scripts sous ns-3
Conclusion

Les rgles de base


Etude dun 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)
Sbastien Bindel

Introduction ns-3

29 / 33

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

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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/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 " )

Sbastien Bindel

Introduction ns-3


30 / 33

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

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

Rendu des traces pcap

Sbastien Bindel

Introduction ns-3

31 / 33

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

Les rgles de base


Etude dun script de simulation pas pas
Etude des outils ns-3

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

S-ar putea să vă placă și