3. Fonctions de contrôle de congestion
Le contrôle de congestion est un mécanisme qui
permet de régir le débit d'un ou de plusieurs flux. Ce
mécanisme vise généralement à répondre aux
trois exigences suivantes :
? Maximiser l'utilisation de la bande passante.
? Limiter le nombre de paquets perdus, c'est-à-dire ne pas
dépasser les capacités
des ressources du réseau.
? Partager équitablement la bande passante entre les
différents flux parcourant le
ou les liens les plus lents.
Ce contrôle est implémenté à l'aide
d'une variable (cwnd) nommée « congestion window » ou
fenêtre de congestion. Concrètement, le nombre maximum de segments
de données que l'émetteur peut envoyer avant d'en recevoir le
premier acquittement est le minimum entre cette variable (cwnd) et la taille de
la fenêtre annoncée par le récepteur à chaque
acquittement de paquet. Le contenu de cette variable est piloté par les
algorithmes de départ lent (slow start) et d'évitement de
congestion (congestion avoidance). La limite de croissance de la variable cwnd
est la taille de la fenêtre annoncée par le récepteur. Une
fois la capacité de débit maximale atteinte, si un paquet est
perdu, l'algorithme d'évitement
22
Chapitre I: Concepts de base
de congestion diminue linéairement la valeur de cwnd
(contrairement au slow start qui l'augmente exponentiellement).
Dans ce paragraphe nous allons décrire le
mécanisme sur lequel repose le contrôle de congestion des
différentes versions de TCP.
3.1. La phase slow-start (démarrage lent)
La phase de démarrage lent, ou slow-start est
utilisée quand le TCP ignore quelle est la bande passante disponible au
démarrage de la session, ou lorsque les conditions du réseau
semblent avoir grandement changé forçant à
redécouvrir la nouvelle bande passante disponible.TCP utilise ce
mécanisme pour sonder le réseau : il commence par émettre
une petite quantité de données puis augmente rapidement sa
capacité d'émission jusqu'à la détection d'un
événement de congestion ou au dépassement d'une variable
appelée slow-startthreshold (ssthresh), qui détermine si la
connexion doit continuer en slow-start ou passer à l'état
stable.
Durant le slow-start, l'émetteur commencera par
émettre le contenu de la fenêtre de congestion cwnd, dont la
taille est communément fixée à 3 segments par la RFC 3390
[29] et attend l'acquittement. Une fois l'acquittement reçu,
l'émetteur peut alors doubler le nombre de segments et attendre les
acquittements. Ce comportement se traduit par une croissance exponentielle de
la fenêtre de congestion qui double pour chaque délai
aller-retour, ou RTT jusqu'à trouver la limite de congestion du
réseau. Une fois cette limite atteinte, des segments commencent à
se perdre et l'émission reprend avec une fenêtre de congestion
à 1. TCP quitte alors la phase de slow-start pour passer en mode
d'évitement de congestion et divise par deux la fenêtre de
congestion. La figure suivante (figure 9) illustre la phase du slow-start:
Figure 9 : Démarrage lent de TCP
Le slow-start permet ainsi d'éviter une surcharge du
réseau qui serait préjudiciable non seulement à la
performance individuelle de la connexion mais également à la
23
Chapitre I: Concepts de base
performance collective du réseau. Cependant, il n'en
reste pas moins trop conservateur dans le cas des transmissions de connexions
courtes et inadapté aux réseaux à long RTT de par sa
dépendance directe à ce paramètre. Par exemple, la
transmission d'une connexion de 10 segments, représentative des objets
HTTP, nécessitera au minimum 3 RTTs et donc plus d'1.5 secondes dans un
environnement satellitaire.
|