Universit e Paul Sabatier Master ISTR { Sp ecialit e ASTR

Preview:

Citation preview

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

Recommended