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