ASR 2013–2014 TP n 12 Protocole TCP : connexions et gestion de flux – Sujet Corrigé 1 Définition Question 1.1. TCP est un protocole de transport qui est : — full-duplex, — fiable, — en mode connecté. Expliquez ces trois termes. Correction — full-duplex : connexion bidirectionnelle, permettant l’envoi et la réception simultanée. — fiable : Assure La réception de toutes les données envoyées dans l’ordre dans lequel elles ont été envoyées. — en mode connecté : l’échange de données entre deux points se fait au sein d’une connexion qui doit être établie avant l’envoi de données. 2 Mécanismes de connexion Question 2.1. Comment est identifiée une connexion TCP ? Correction Une connexion TCP est identifiée de façon unique par le couples des deux sockets aux extrémités, une socket étant identifiée par un couple (adresse, port). Question 2.2. Tracer le chronogramme correspondant à l’initialisation d’une connexion TCP entre 2 machine A et B. En donnant les valeurs des champs ACK, FIN, SYN, Sequence Number et Acknowledgement Number. Que se passe-t-il quand les deux machines cherchent à établir une connexion simultanément ? Correction Cf. Figure 1. Question 2.3. Tracer le chronogramme correspondant à l’envoi de 1 000 bits de données sur cette connexion. Question 2.4. Tracer le chronogramme correspondant à la fermeture de la connexion, à demande la clôture de la connexion. 3 Mécanismes de gestion du flux Question 3.1. Une machine A veut envoyer 1 Mo de données par TCP à une machine B. Que se passe-t-il si la machine B traite les données par blocs de 8 bits ? Comment modifier le fonctionnement du récepteur TCP pour atténuer ce problème ? Correction Syndrome de la fenêtre stupide : on envoie par grands blocs mais on les consomme par petits blocs. Le récepteur envoie une indication d’actualisation de la fenêtre à chaque octet consommé. Question 3.2. Lors de l’utilisation du protocole telnet, chaque caractère est envoyé dès sa frappe au serveur. Quel est le rendement de cette solution ? Comment modifier le fonctionnement de l’envoyeur TCP pour atténuer ce problème. E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar ASR 2013–2014 TP n 12 Hôte A Hôte B Hôte A Hôte B SYN (SEQ = x) SYN (SEQ = x) SYN (SEQ = x + 1) = x + 1) = y, ACK SYN (SEQ SYN(SE Q = x, A CK = y + 1) TEMPS = y, ACK TEMPS SYN (SEQ = y) (SEQ = x + 1, A CK = y + 1) F IGURE 1 – Initialisation d’une connexion TCP, cas normal et cas avec collision Correction Le drapeau PUSH est utilisé pour ne pas mettre les données en tampon avant de les envoyer. Le rendement est mauvais, car chaque octet envoyé nécessite un segment TCP de 21 octets (20 d’en-tête), avec 20 octets en plus d’en-tête IP. Il y a un acquittement par TCP, puis une indication de modfication de fenêtre, soit 121 octets. Algorithme de Nagle : on envoit le premier octet, et on attend son acquittement avant d’envoyer les autres. Ensuite, on envoie dès que la taille du segment est atteinte ou si la moitié de la fenêtre est remplie. Question 3.3. Pourquoi l’algorithme de Nagle peut-il être désactivé par l’application ? Correction En cas d’interaction rapide avec l’utilisateur (souris), ça pose des problèmes. Question 3.4. Latence (ping) et débit sont-ils reliés dans le cas du protocole TCP ? Correction Oui : si la latence est trop élevée, la fenêtre TCP sera rapidement remplie et l’émetteur ne pourra plus envoyer de nouveaux paquets avant l’acquittement. Le débit sera alors limité. Question 3.5. Qu’est-ce que le slow start ? Correction Mécanisme de base de TCP pour contrôler le flux : initialement la fenêtre TCP est petite (ce qui induit un faible débit) et est doublée tant que tout se passe bien. En cas de problème, la taille est réinitialisée. Question 3.6. Considérons l’effet de l’utilisation du Slow Start sur une ligne avec un RTT de 10 ms sans congestion. La fenêtre du récepteur est de 24 Kb avec une taille maximale de segment de 2 Kb. Le seuil est au départ fixé à 32 Kb. Combien de temps faut-il attendre pour que la taille de la fenêtre de congestion soit maximale sans tenir compte des délais d’émission et de réception ? Correction On suppose que l’émetteur désire émettre en continu. Au départ, la taille de la fenêtre de congestion est 1 MSS (maximum segment size), donc 2 Kb. Chaque émission de segments en rafale et réception des acquits correspondants se font en un RTT, c’est-à-dire 10 ms. E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar ASR 2013–2014 TP n 12 32 bits port source port destination Numéro de séquence Numéro d’accusé réception en-tête TCP Réservé URG ACK PSH RST SYN FIN Longueur Total de contrôle Taille de la fenêtre Pointeur urgent Options (facultatif) Données (facultatif) F IGURE 2 – Description d’un segment TCP F IGURE 3 – Connexion entre X et Y via R, S et T. — Transmission 1 : on émet 1 MSS, soit 2 Kb, après 10 ms, on reçoit 1 acquit, la fenêtre passe de 2 Kb à 4 Kb. — Transmission 2 : on émet 2 MSS, soit 4 Kb, après 10 ms, on reçoit 2 acquits, la fenêtre passe de 4 Kb à 8 Kb. — Transmission 3 : on émet 4 MSS, soit 8 Kb, après 10 ms, on reçoit 4 acquits, la fenêtre passe de 8 Kb à 16 Kb. — Transmission 4 : on émet 8 MSS, soit 16 Kb, après 10 ms, on reçoit 4 acquits, la fenêtre passe de 16 Kb à 24 Kb. Au total, il aura fallu 40 ms. Considérons maintenant le réseau décrit à la figure 3, dans lequel X et Y sont reliés l’un à l’autre via trois routeurs R, S et T. X transmet des données à Y à l’aide d’une connexion TCP. La fenêtre de réception de Y est de 12 MSS, sachant que la taille maximale des segments a été négociée à 512 Bytes. Le temps de réaction des routeurs est de 10 ms, et le temps de traitement des stations (vérification d’un segment et génération d’un acquit, vérification d’un acquit et préparation d’émission d’un nouveau segment) est de 15 ms. Chaque segment reçu par Y donne lieu à l’émission immédiate d’un acquit (segment TCP vide). Le timeout avant que X ne considère un segment comme perdu est de 2 s. On prendra en compte l’overhead introduit par TCP et IP (40 E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar ASR 2013–2014 TP n 12 bytes au total). Question 3.7. Quel temps faut-il à X et Y dans le meilleur des cas pour atteindre le débit maximal, sachant que le seuil de congestion est initialisé à 4 Kbytes ? Correction Dans un premier temps, il faut calculer le RTT. RTT = 3.5 ∗ T (transmission d’un MSS sur une liaison à 500 kbps) + 3.5 ∗ T (transmission d’un acquit sur une liaison à 500 kbps) + 6 ∗ T (réaction d’un routeur) + 2 ∗ T (traitement d’une station). Or on a : — T (transmission d’un MSS sur une liaison à 500 kbps) = (512 + 40) ∗ 8/(500 ∗ 103) = 8.83ms — T (transmission d’un acquit sur une liaison à 500 kbps) = 40 ∗ 8/(500 ∗ 103) = 0.64ms Donc RTT = 123.15ms. Ensuite, il faut déterminer si la vitesse qui corresponds à l’envoi du maximum que peut gérer le récepteur (=taille de la fenêtre de réception) en un RTT est plus petite ou plus grande que le débit le plus petit de la liaison. On a (12 ∗ (512 + 40) ∗ 8)/(123.15 ∗ 10 − 3) = 430304.51bit/s, soit 54 Ko/s, à comparer avec 500 Ko/s. On voit donc que c’est la fenêtre de réception qui limite la vitesse maximale d’émission. C’est l’algorithme du slow-start qui détermine comment les segments successifs sont envoyés, jusqu’à concurrence du seuil de congestion, à savoir 4KB. On a : Instant Transmission Taille du segment 0 1 1 MSS 1 2 2 MSS, soit 1 kB 2 3 4 MSS, soit 2 kB 3 4 8 MSS, soit 4 kB 4 5 9 MSS, soit 4,5 kB 5 6 10 MSS 6 7 11 MSS 7 8 12 MSS On le voit, il faut donc 7 RTT pour émettre le maximum acceptable par l’hôte de destination, soit 7 ∗ 123.15ms = 862.05ms. Question 3.8. Quelle est l’efficacité des différentes lignes au débit maximal ? Correction Sur une ligne à 1 Mbps, on émet au maximum 12 MSS, soit 12 ∗ (512) octets toutes les 123.15 ms (cette fois, on ne compte pas l’en-tête car on ne compte que les données utiles au niveau 4), donc [(12 ∗ (512) ∗ 8)/(123.15 ∗ 10 − 3)]/106 = 39, 91% et pour une ligne à 500 Kbps, on a une efficacité deux fois plus grande, donc à 79, 82% Question 3.9. Pour un seuil de congestion initial de 20 MSS, sachant que tous les acquits de la rafale la plus grande viennent d’être perdus, combien de temps faudra-t-il avant que le débit maximum ne soit récupéré ? Correction La rafale la plus grande correspond à l’envoi de 12 MSS. Si tous les acquite- ments sont perdus, il faut déjà 2 s pour que l’émetteur en prenne conscience. Le Seuil est à 6 MSS, soit 12/2. On voit donc : Instant Transmission Taille du segment 0 1 1 MSS 1 2 2 MSS, soit 1 kB 2 3 4 MSS, soit 2 kB 3 4 6 MSS, soit 3 kB on atteint pas 8, car le seuil est dépassé avant et c’est lui qui limite la phase de slow-start. E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar ASR 2013–2014 TP n 12 Instant Transmission Taille du segment 4 5 7 MSS 5 6 8 MSS 6 7 9 MSS 7 8 10 MSS 8 9 11 MSS 9 10 12 MSS Au total, il aura fallu 2 + 9 * (123.15 * 10-3) = 3.108 secondes. E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar