universit e paul sabatier master istr { sp ecialit e astr
TRANSCRIPT
Universite Paul SabatierMaster ISTR – Specialite ASTR
Simulation de systemes en reseau avec ns2
Guthemberg Silvestre(http://guthemberg.co.nr)
UE Reseau et Commande
Annee 2014-2015.
Sommaire.
I Les objectifs du cours,
I Les systemes connectes en reseau,
I La simulation,
I Une introduction au ns2,
I Collecte et analyse des resultats,
I Exemple de simulation.
Les objectifs du cours.
Le cours a les objectifs suivants :
I Comprendre le phenomene de congestion pouvant apparaıtre dans unreseau,
I Acquerir des connaissances sur les files d’attente et leurs politiquesd’ordonnancement,
I Appliquer les connaissances acquises dans d’autres modules.
Les etapes pour atteindre nos objectifs :
I Etude du comportement d’un protocole de transport comme TCP,
I Utilisation de mecanismes d’asservissement issus de l’automatique,
I Realisation de simulations et analyse des resultats obtenus.
Les systemes connectes en reseau.
Nous nous interessons aux systemes connectes en reseau.
Nœud A Routeur Routeur Nœud B
Les couches reseau se communiquententre nœuds voisins ou en pair-a-pair.
NœudA
Routeur RouteurNœud
B
Application
Transport
IP
Accès réseau
Application
Transport
IP
Accès réseau
IP IP
nœud-à-nœud
Accès réseau
Accès réseau
Fibre,Satellite,
etc.Ethernet
Flux de données
Topologie du réseau
Ethernet
processus-à-processus
Encapsulation de donnees et pile de protocoles TCP/IP.
Nœud B
Ethernet IP TPC FTP
Ethernet
IP ARP
TCP UDP
FTP Telnet
Routeur Routeur
Nœud A
Les couches Application et Transport.
I Application: Telnet (terminal a distance), FTP (transfert de fichier),etc.
I Transport: TCP (fiabilite et performance), UDP (performance), etc.
Le TCP utilise un espace en memoirepour stoker les segments.
window size window size
application application
TCP
Nœud A Nœud B
I Window size: pour ecriture et lecture des segments TCP,
I Utile pour le controle de congestion,
I Exemples d’algorithmes: tahoe, Reno, New Reno, et SACK TCP.
Les couches Internet, Acces Reseau et les queues.
queue queueNœud A
Routeur
Accesreseau
IP IP
Accesreseau
Transport
Application
queue
I Les files d’attente :I Presentes dans tout interface reseau / routeur,I Classer les paquets suivant des priorites (Qualite de Service),I Algorithmes d’ordonnancement: Drop-Tail, SFQ (Stochastic Fair queu-
ing), FQ (Fair Queuing), DRR (Deficit Round Robin), RED (RandomEarly-Detection) et CBQ (Class-Based Queueing).
Algorithmes d’ordonnancement.
Nœud A
Routeur Routeur
Nœud BFlux 1Flux 2
Transport
IP
I DropTail :Routeur
IPqueue
F1F2F2F2F2F1
F2F2F2
F1
I SFQ (Stochastic Fair queuing) :Routeur
IPqueue
F1F2F2F2F2F1
F2F2F2
F1
La couche Acces Reseau.
I Permet de gerer l’acces au support (si partage),
I Types basiques de lien : Simplex et Duplex.I Protocoles dependant du support physique :
I Ethernet/LAN : CSMA-CD,I Wi-Fi : 802.11*, TDMA,I Satellite : Unslotted Aloha, TDMA/DAMA.
Nous pouvons emuler l’envoi de donneespar TCP en utilisant l’outil iperf.
Clientip:localhostport:56500
Serveurip:localhost
port: 5001 (commplex-link)
window size window size
application: iperf iperf
I Les outils pour emuler l’exemple:
I iperf: un outil pour mesurer la bande-passante,I tcpdump: un outil pour capturer du trafic reseau.
Les etape pour faire tourner l’exempled’envoi de donnees par TCP.
I Le Serveur attend des connexions sur le port 5001 :
I Le tcpdump permet la collecte de paquets pour l’analyse :
I le Client ouvre une nouvelle connexion pour envoyer 1KByte :
Analyse : les paquets de notre connexion TCP peuventetre regroupes en trois types selon leur flags.
Ou trouver des informations complementairessur les systemes connectes en reseau ?
I Les outils iperf et tcpdump: iperf −−help (ou man iperf), tcpdump-help (man tcpdump)
I Un cours introductoire en ligne :
http://courses.cs.washington.edu/courses/csep561/13au/
I Autres references :I Seth, Sameer, and M. Ajaykumar Venkatesulu. TCP/IP architecture,
design and implementation in Linux. Vol. 68. John Wiley & Sons,2009.
I Anderson, Al, and Ryan Benedetti. Head First Networking. O’ReillyMedia, Inc., 2009.
La simulation.
La simulation permet de comprendre le comportementd’un systeme avec moins d’efforts.
réalisme
efforts
simulation
émulation
systèmeréel
Le systeme reel et son emulation.
I Experiences sur le systeme reel :I Resultats probants,I (Quand il est possible) La mise en place est eventuellement couteuse.
I Son emulation :I La prise en compte de plusieurs facteurs (logiciels et/ou materiels)
contribuent a l’obtention des resultats plus fiables,I Problemes liees au passage a l’echelle.
Exemples des systemes de diffusion de video sur Internet.
I Exemples: YouTube, Netflix, etc..
Les plate-formes cloud publiques nouspermettent d’emuler des systemes en reseaux.
I Exemples: PlanetLab.
I Autres: Microsoft Azure, Amazon EC2, etc.
La simulation utilise des modelespour representer le systeme.
I Avoir une comprehension du comportement du systeme,
I Permet de passer a l’echelle plus facilement,I Pour valider le modele, les resultats peuvent etre croises avec des
donnees du systeme reel,I Modelisation mathematique : Monte Carlo simulation, bootstrap, theorie
des reseaux, etc.I Modelisation informatique : transmission de messages d’une simulation
orientee evenements, protocoles de routages de paquets, etc.
Exemples des simulateurs.
I PeerSim ( http://peersim.sourceforge.net/).
I OMNeT++ ( http://www.omnetpp.org/).
I SimGrid (http://simgrid.gforge.inria.fr/).
I ns2 (http://www.isi.edu/nsnam/ns/) et ns3 (http://www.nsnam.org/) .
Temps de transmission de donnees entre deux nœuds.
Client Serveurdonnées
écriture
lecture
temps de transmission= temps d'écriture+ délai + temps de lecture
délai
10 Mbps
20 ms
10KB
données
Ou trouver des informations complementairessur la simulation ?
I Jain, Raj. The art of computer systems performance analysis. JohnWiley & Sons, 2008.
I Wehrle, Klaus, Mesut Gunes, and James Gross. Modeling and toolsfor network simulation. Heidelberg: Springer, 2010.
Une introduction au ns2.
ns2, le network simulator 2, est un simulateur aevenements discrets concu pour la recherche sur reseau.
I L’ordonnanceur d’evenements discret maintient l’etat du systeme.
Ordonnanceurd'événements
tête
time_uid_next_handlerhandler()
Objetréseau
time_uid_next_handlerObjetréseau
handler()
chemin de donées
ns2 a une riche librairie d’objets reseau et protocoles.
I Conception modulaire qui facilite la mise en place de modifications,
I ns2 utilise deux langages principales:
I Une librairie d’objets reseau et protocoles ecrite en C++ (Files d’attente,Liens, Sources et Puits. . . ),
I Un interpreteur script OTcl (une version du Tool Command Languageorientee objet).
La representation d’un nœud.
unicast node
agent
application
link
link
addrclassifier
portclassifier
nodeentry
La representation d’un lien simplex.
I Lien entre deux noeud,
I Parametres: delai, bande passante, type de file d’attente, etc..
Les files t’attente sont presentes dans toutes interfacesreseau et sont indispensables pour l’echange de paquets.
I Stocker les paquets en attendant l’envoi :I Presence de congestion,I Volonte de reguler le flux de donnees.
I Classifier les paquets suivant des priorites :I Mecanismes de Qualite de Service (QdS).I Indispensables dans les reseaux de communication.
Gestion de la congestion avec les files d’attente.
I Definies dans la classe Queue,I Composants de base :
I Methode enque : Ajoute un paquet dans la file,I Methode deque : Enleve un paquet dans la file,I Parametre len : Taille de la file.
I Algorithmes disponibles: DropTail, RED, SFQ, etc.
Les adresses et ports des couches Reseau et Transport.
I Deux types d’adressage :I Adressage hierarchique : declaration de plusieurs niveaux, proche de
IP mais plus complexe.I Adressage plat : utilisation de l’identifiant du nœud, plus abstrait donc
plus simpliste.
I Utilisation de ports :I Similaire aux ports reels,I Permettent de retrouver un agent,I Port 255 utilise par l’agent de routage.
Les objets de la classe application permettent degenerer du trafic sur le systeme en reseau simule.
I Les applications communes : Telnet et FTP.
I Autres generateurs de trafic : CBR, Pareto, Exponential, Trace.
Une application doit etre attachee unagent pour etablir une communication.
I Un agent est une entite du nœud qui communique avec l’exterieur(e.g. Protocole de Transport, Protocole de Routage, etc.)
0 1
tpcagent
ftpapplication
tcp_sink
I Si aucune action n’est necessaire en reception, l’agent null peut etreutilise.
L’utilisateur decrit une simulation avec script en OTcl.
I Definition du systeme en reseau a etre simuler et des resultats :I La topologie du reseau, les protocoles et les applications,I Duree simulee et evenements particuliers a etre introduits,I Collecte des metriques de performance.
I A chaque variable TCL du script correspond un objet C++ (le lienetant assure en TCL).
L’interaction des composants pendant une simulation.
La commande suivante lance la simulation defini dans exemple 01.tcl:
Le Network AniMator (NAM) nous permetde visualiser la communication simulee.
L’exercice consiste a simuler les transferts defichiers sur un reseau entre deux nœud avec ns2.
I Le Client envoie des fichiers de 10KB au Serveur en trois configura-tions differentes :
I Premiere, envoie des fichiers par une application CBR (Constant Bi-tRate) sur UDP comme protocole de transport;
I Deuxieme, CBR sur TCP;I Troisieme, FTP sur TCP (en effet, la taille de la fenetre TCP (buffer)
doit avoir approximativement la taille du fichier a etre transfere).
Client Serveur
10 Mbps
20 ms
10KB
I Vous trouvez en ligne un squelette du script tcl pour la premieresimulation. Pour le telecharger par un terminal unix/linux :
wget http://homepages.laas.fr/gdasilva/scripts/squelette.tcl
Ou trouver des informations complementairessur ns2 ?
I Comment installer ns2 (Mac et linux):
http://www.nsnam.com/2011/11/
installation-of-network-simulator-ns235.html
http://nsnam.isi.edu/nsnam/index.php/Downloading_and_
installing_ns-2
I Comment utiliser ns2 :
http://www.isi.edu/nsnam/ns/doc/index.html
http://www.isi.edu/nsnam/ns/tutorial/
http://nile.wpi.edu/NS/
http://nile.wpi.edu/NS/simple_ns.html
I La liste de parametres par defaut :
ns-allinone-RELEASE/ns-x.xx/tcl/lib/ns-default.tcl
L’exercice de lecture et simulation.
1. Choisir un article a lire. (liste suggeree : http://homepages.laas.fr/gdasilva/liste_de_confs.txt);
2. Faire un resume de l’article, puis indiquer au moins deux points fortset deux points faibles;
3. Ecrire un script tcl qui simule un systeme (inspire) de l’article;
Collecte et visualisation de resultats dessimulations.
ns2 permet d’enregistrer les traces d’unesimulation dans un fichier texte.
### Traces en t e x t e b r u t ASCIIset a l l [ open a l l . t r a c e w]$ns t r a c e− a l l $ a l l
### P r o c e d u r e de f i n a l i s a t i o nproc f i n i s h {} {
g l o b a l ns n f a l l$ns f l u s h− t r a c ec l o s e $n fc l o s e $ a l lexec nam out.nam &e x i t 0
}
Les resultats sont collectes par quatre objets.
Le fichier texte de traces contient des informationssur les evenements en ordre chronologique.
Event TimeFromNode
ToNode
PktType
PktSize
Flags Fid SrcAddr
DestAddr
SeqNum
PktId
= enqueue= dequeue= recv (at the output of the link)= dropped
+-rd
e.g. cbr, tcp, etc.
From, To are recorded by link events. Addr in "node.port" format.
One can set aFlow ID for each(agent) sourcein OTcl script.
Seq. Number can repeat (retrasmission).Pkt ID is always unique.
− 5 .016736 1 3 c b r 160 −−−−−−− 1 1 . 0 4 . 0 19 2803r 5 .016752 3 0 ack 40 −−−−−−− 0 4 . 1 0 . 0 1374 2765+ 5 .016752 0 3 tc p 1500 −−−−−−− 0 0 . 0 4 . 1 1394 2805− 5 .016752 0 3 tc p 1500 −−−−−−− 0 0 . 0 4 . 1 1394 2805
Nous pouvons collecter des informationsspecifiques d’une file d’attente.
I Le mecanisme monitor-queue collecte des echantillons de l’etatd’une file :
### f i c h i e r pour l e s queue t r a c e sset queue [ open q u e u e . t r a c e w]
# S u r v e i l l e r l a f i l e d ’ a t t e n t e e n t r e n3 e t n4# , c o l l e c t e r des i n f o s t o u s l e s 0 . 1 s e c , e t# l e s e n r e g i s t r e r dans $queueset qmon [ $ns monitor−queue $n3 $n4 $queue 0 . 1 ][ $ns l i n k $n3 $n4 ] queue−sample−t imeout
I Il y a aussi le monitor-queue, qui enregistre les evenements d’unefile en fichier.
Le fichier texte contient des statistiques surune file d’attente specifique.
TimeFromNode
ToNode
Queuesize B
Queuesize P
arr P dep P drop
current queue size in bytes during the monitor interval
From, To are recorded by link events
arrivals (packets) in monitor interval
same, in bytes
arr B dep B drop
current queue size in packets in the monitor interval
departures (packets) in monitor interval.
drops (packets) in monitor interval.
5 3 4 499 . 6 0 . 5 1517 1515 0 2245540 2243880 05 . 1 3 4 489 . 2 0 . 4 1651 1650 0 2415040 2414880 05 . 2 3 4 678 . 8 0 . 6 1794 1793 0 2599420 2597960 05 . 3 3 4 422 . 2 0 . 4 1920 1919 0 2756960 2755500 0
ns2 nous permet de surveiller une source TCP.
I Collecte de la taille de la fenetre de congestion et la taille de la fenetres(buffer) :
set c o n g e s t i o n w i n d o w \[ open c o n g e s t i o n w i n d o w . t r a c e w]
proc plotWindow { t c p S o u r c e o u t f i l e } {g l o b a l nsset time 0 . 1set now [ $ns now ]set cwnd [ $ t c p S o u r c e set cwnd ]set window [ $ t c p S o u r c e set window ]puts $ o u t f i l e ”$now\ t$cwnd\ t$window ”$ns a t [ expr $now+$t ime ] ” plotWindow \$ t c p S o u r c e $ o u t f i l e ”}$ns a t 1 ” plotWindow $tcp2 $ c o n g e s t i o n w i n d o w ”
Traitement de donnees et visualisation.
Ou trouver les scripts pour traiter et generer des graphesdes simulations ?
I Les scripts pour le traitement de donnees des simulations (code enPerl) :
http://homepages.laas.fr/gdasilva/scripts/format_
throughput_data.pl
http://homepages.laas.fr/gdasilva/scripts/format_
queue_data.pl
I Les scripts pour generer les graphes pour visualiser les resultats dessimulations (codes en gnuplot) :
http:
//homepages.laas.fr/gdasilva/scripts/plot_throughput.p
http://homepages.laas.fr/gdasilva/scripts/plot_queue.p
http://homepages.laas.fr/gdasilva/scripts/plot_
congestion_window.p
Comment utiliser les scripts a partir d’un terminal ?
I D’abord, if faut faire tourner la simulation :
ns s i m u l a t i o n d e f i n i t i o n . t c l
I Puis, traitez les donnees de sortie avec les scripts suivants :
p e r l f o r m a t t h r o u g h p u t d a t a . p l a l l . t r a c e \4 1 1000000 > t h r o u g h p u t . d a t
p e r l f o r m a t q u e u e d a t a . p l q u e u e . t r a c e \0 . 2 > q u e u e . d a t
I Finalement, generez les graphes :
g n u p l o t p l o t t h r o u g h p u t . pg n u p l o t p l o t q u e u e . pg n u p l o t p l o t c o n g e s t i o n w i n d o w . p