Cours ns3
Cours ns3
Cours ns3
Prsentation de ns-3
Les scripts sous ns-3
Conclusion
Introduction ns-3
Sbastien Bindel
10 dcembre 2013
Plan
1 Introduction la simulation
2 Prsentation de ns-3
4 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
Les outils
Implmentation relle
Simuler le rseau
Simuler lactivit du rseau
Outils de visualisation et danalyse
Possibilit dtre proche de la ralit
Ne ncessite pas dinvestissements particulier
Prsentation gnrale
Compos de modules
Ecrit en C++
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
Outils
Simulation de protocoles
TCP, UDP, IPv4, IPv6, OLSR, AODV . . .
Simulation de mdias
Ethernet, WIFI, WiMAX . . .
Possibilit dmulation
Execution dune implmentation dun protocole dans 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
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
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
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) )
Dmarrage de simulation
C++
Simulator :: Run () ;
Simulator :: Destroy () ;
Python
ns . core . Simulator . Run ()
ns . core . Simulator . Destroy ()
Script en C++
./ waf -- run script
Script en Python
./ waf -- pyrun script . py
Premier script
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
Rsultat de PyViz
Netanim
Rsultat de Netanim
Trace 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)
Trace pcap
Conclusion
Conclusion
Conclusion