Aller au contenu principal

6.1. TCP

Les sections suivantes décrivent en détail la proposition d'utilisation d'ECN dans TCP. Cette proposition a été décrite essentiellement sous la même forme dans [Floyd94]. Nous supposons que le TCP source utilise les algorithmes de contrôle de congestion standards de Slow-start (Démarrage Lent), Fast Retransmit (Retransmission Rapide) et Fast Recovery (Récupération Rapide) [RFC2581].

Cette proposition spécifie deux nouveaux drapeaux dans le champ réservé (Reserved field) de l'en-tête TCP. Le mécanisme TCP pour négocier la capacité ECN utilise le drapeau ECN-Echo (ECE) dans l'en-tête TCP. Le bit 9 du champ réservé de l'en-tête TCP est désigné comme le drapeau ECN-Echo. La position du champ réservé de 6 bits dans l'en-tête TCP est montrée dans la Figure 4 du RFC 793 [RFC793] (reproduite ci-dessous pour l'exhaustivité). Cette spécification pour le champ ECN laisse le champ réservé comme un champ de 4 bits utilisant les bits 4-7.

Pour permettre au récepteur TCP de déterminer quand arrêter de définir le drapeau ECN-Echo, nous introduisons un deuxième nouveau drapeau dans l'en-tête TCP, le drapeau CWR. Le drapeau CWR est assigné au bit 8 du champ réservé de l'en-tête TCP.

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | U | A | P | R | S | F |
| Header Length | Reserved | R | C | S | S | Y | I |
| | | G | K | H | T | N | N |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

Figure 3 : Ancienne Définition des Octets 13 et 14 de l'En-tête TCP

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | C | E | U | A | P | R | S | F |
| Header Length | Reserved | W | C | R | C | S | S | Y | I |
| | | R | E | G | K | H | T | N | N |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

Figure 4 : Nouvelle Définition des Octets 13 et 14 de l'En-tête TCP

Ainsi, ECN utilise les drapeaux ECT et CE dans l'en-tête IP (comme montré dans la Figure 1) pour la signalisation entre les routeurs et les points de terminaison de connexion, et utilise les drapeaux ECN-Echo et CWR dans l'en-tête TCP (comme montré dans la Figure 4) pour la signalisation point de terminaison TCP à point de terminaison TCP. Pour une connexion TCP, la séquence typique d'événements pour une réponse de congestion basée sur ECN serait la suivante :

  • L'expéditeur définit le codepoint ECT dans les paquets transmis pour indiquer que l'entité de transport de ces paquets prend en charge ECN.

  • Un routeur compatible ECN détecte une congestion imminente et détecte que le codepoint ECT est défini dans le paquet qu'il est sur le point d'abandonner. Le routeur choisit de définir le codepoint CE dans l'en-tête IP et de transférer le paquet, plutôt que d'abandonner le paquet.

  • Le récepteur reçoit le paquet avec le codepoint CE défini et définit le drapeau ECN-Echo dans le prochain ACK TCP qu'il envoie à l'expéditeur.

  • L'expéditeur reçoit l'ACK TCP avec ECN-Echo défini et réagit à la congestion comme s'il avait été abandonné.

  • L'expéditeur définit le drapeau CWR dans l'en-tête TCP du prochain paquet envoyé au récepteur pour accuser réception de sa réception du drapeau ECN-Echo et de sa réponse à celui-ci.

La négociation pour que les entités de transport TCP utilisent ECN, ainsi que l'utilisation des drapeaux ECN-Echo et CWR, sont décrits plus en détail dans les sections ci-dessous.