TCP ou UDP, that is the question

Transcription

TCP ou UDP, that is the question
TP n◦ 10 – Vendredi 8 avril
ARCSYS2 2015–2016
TCP ou UDP, that is the question
Dans ce TP, nous allons découvrir le simulateur réseau ns3, un logiciel libre de simulation à
événements discrets très utilisé dans la communauté réseau. Il est codé en C++. Toutes les infos
nécessaires sur le site web du projet : https://www.nsnam.org.
Installer ns3
Le plus simple pour suivre ce TP est d’installer ns3 d’après un paquet Debian ou Ubuntu
(version 3.25+dfsg2-2 ou supérieure). La version prévue pour unstable sur les serveurs officiels
Debian semble fonctionner pour la version testing de Debian, ainsi que pour une Ubuntu récente.
Si vous avez une Ubuntu Trusty, téléchargez les paquets depuis la page suivante : http://
people.irisa.fr/Martin.Quinson/Teaching/ArcSys2/
Cette page explique également comment reconstruire les paquets sur votre variante de Debian
si les paquets proposés ne fonctionnent pas pour vous.
Si vous n’avez pas une Debian ou assimiliée, suivez les instructions détaillées sur le site de
ns3 (https://www.nsnam.org/wiki/Installation), puis vérifiez que tout marche avec
./test.py
Premiers pas
Nous recommandons la lecture des premières pages du tutorial. Ces pages se trouvent en
ligne aux adresses suivante, ainsi que dans le répertoire /usr/share/doc/ns3/tutorial/html
du paquet ns3-doc ou dans la page de manuel ns-3-tutorial(1).
Vue globale https://www.nsnam.org/docs/tutorial/html/conceptual-overview.html
Logging https://www.nsnam.org/docs/tutorial/html/tweaking.html
Topologies https://www.nsnam.org/docs/tutorial/html/building-topologies.html
Martin Quinson & Anne-Cécile Orgerie
TP n◦ 10 – Vendredi 8 avril
ARCSYS2 2015–2016
1
Premier exemple avec un trafic UDP
Nous considérons ici une topologie minimaliste comprenant deux nœuds reliés par un lien
direct (Figure 1). Un trafic UDP circule du premier nœud vers le second. Nous considérons également que :
— Le lien est duplex de capacité 5 Mbps avec un temps de propagation de 2 ms.
— Le trafic UDP est de type CBR (“Constant Bit Rate”) avec des paquets de 1024 octets chacun et un intervalle entre chaque transmission de paquets de 50 ms.
— Le flot UDP démarre à T=2s et s’arrête à T=10s.
F IGURE 1 – I know this great UDP joke, but you might not get it !
8 Question 1.1. Exécuter le programme ns3 vous permettant de réaliser cette expérience.
Installation Debian
cp /usr/share/doc/ns3/examples/udp-client-server/udp-client-server.cc .
ns3++ udp-client-server.cc -o udp-client-server
./udp-client-server
Source ns3
cd ns-3.25
cp examples/udp-client-server/udp-client-server.cc scratch/
./waf ---run udp-client-server
8 Question 1.2. Vous pouvez également visualiser cette expérience avec l’outil de visualisation PyViz de
ns3, bien que ce ne soit pas indispensable pour la suite du TP.
Installation Debian
./udp-client-server --SimulatorImplementationType=ns3::VisualSimulatorImpl
Source ns3
./waf ---run udp-client-server --visualize
8 Question 1.3. Quel est le délai observé pour chaque paquet du client vers le serveur ? Est-ce que ça
correspond aux valeurs données en paramètre ? Est-ce que ça nous permet de calculer la taille des en-têtes ?
Au besoin, regardez le code de udp-client.cc et udp-server.cc dans le source de ns3.
8 Question 1.4. Faites varier la taille des paquets UDP envoyés. Qu’observez-vous ?
Martin Quinson & Anne-Cécile Orgerie
TP n◦ 10 – Vendredi 8 avril
ARCSYS2 2015–2016
2
Concurrence de flots TCP
L’expérience à simuler dans cet exercice est représentée par la Figure 2. Le nœud n0 génère
du trafic TCP vers le nœud n3 (flux 0), tandis que le nœud n1 génère du trafic TCP vers le nœud
n2 (flux 1). Les caractéristiques de la topologie sont explicitées sur la figure. On utilisera des liens
PointToPoint qui auront une capacité de 2 Mbps et un temps de propagation de 10 ms chacun.
F IGURE 2 – The problem with TCP jokes is that people keep retelling them slower until you get
them.
Simuler dans ns3 le flux 0 de l’expérience de la Figure 2. On pourra en particulier s’inspirer
de l’exemple examples/tcp/tcp-bulk-send.cc (commencer par exemple par faire un cp
de cet exemple dans scratch puis le modifier comme demandé en gardant pour les paramètres
non spécifiés ci-dessus les valeurs déjà présentes dans l’exemple).
L’exemple examples/routing/dynamic-global-routing.cc pourra également s’avérer inspirant.
8 Question 2.1. Combien de paquets sont reçus par la destination ? Quel est le débit moyen du flux ?
Simuler maintenant les deux flux (on pourra par exemple utiliser des numéros de ports distincts).
8 Question 2.2. Quel flux a le plus grand débit moyen ? D’où cela provient-il ? Quelle solution pourriezvous imaginer pour équilibrer les débits des deux flux ?
8 Question 2.3. Remplir le tableau suivant :
Nœud Interface Packets transmis Octets transmis Packets droppés Octets droppés
n0
0
n1
0
n1
1
n2
0
n2
1
n3
0
Pour obtenir de l’aide sur les files d’attente en ns3 :
https://www.nsnam.org/doxygen/classns3_1_1_queue.html
https://www.nsnam.org/docs/models/html/queue.html
Comparez les valeurs obtenues avec celles de vos voisins. Sont-elles identiques ?
8 Question 2.4. Activez le tracing et ouvrez les fichiers pcap produits dans Wireshark. Tracez la bande
passante pour chaque interface. Qu’observez-vous ?
Martin Quinson & Anne-Cécile Orgerie