3.2. Congestion avoidance (évitement de
congestion)
La phase d'évitement de congestion est utilisée
quand le flux connaît approximativement quel est le débit
disponible. Celui-ci est estimé à la valeur du débit
utilisé lors de la dernière perte. Il s'agit pendant cette phase
de se rapprocher lentement du débit disponible pour éviter de
provoquer une congestion trop importante. Quand une perte est
détectée (par trois ACK identiques ou par l'expiration du
délai de retransmission (RTO)), la fenêtre de congestion est
diminuée en fonction d'un paramètre ?.
3.3. L'algorithme Additive Increase and Multiplicative
Decrease (AIMD)
TCP utilise l'algorithme distribué Additive Increase
and Multiplicative Decrease (AIMD) permettant de faire converger les
différents flux partageant les mêmes conditions réseaux
vers le même débit équitable. Cet algorithme est
basé sur une augmentation additive assuré par la phase
d'évitement de congestion et une réduction multiplicative de la
fenêtre cwnd réalisée à chaque congestion où
cwnd est réduite de moitié.
Lorsque cwnd atteint la taille correspondant à un
partage équitable de la bande passante, le même débit est
obtenu par chaque flux TCP de même RTT traversant le lien
congestionné. Dans ce cas, chaque flux subit les cycles d'une perte
suivie d'une phase d'évitement de congestion [100].
Pour sortir d'une congestion d'autres solutions ont
été proposées où la fenêtre de congestion est
réduite différemment. Les objectifs à garder en vue pour
ces algorithmes sont d'être efficaces, équitables et qu'ils
présentent une convergence vers une solution adéquate à
partir d'un état quelconque et avec une vitesse assez rapide. Ainsi
Z.Wang et J. Crowcroft [101] proposent l'algorithme DUAL dans lequel la
fenêtre de congestion CW est réduite d'un facteur 8 en fonction
des RTT mesurés tous les round-trip. De même que R. Jain [102]
propose une solution TRI-S dans laquelle la fenêtre est également
réduite d'un facteur 8.
3.4. La reprise sur erreur
L'expiration d'une temporisation sur la non-réception
d'un ACK a longtemps été le seul moyen de détecter une
perte. Cette temporisation appelée Retransmission Time Out (RTO) est
enclenchée à l'établissement de la connexion et remise
à zéro chaque fois que la
24
Chapitre I: Concepts de base
transmission d'un segment est correctement validée. Sa
durée importante, fixée à 3 secondes par la RFC 2988
[110], permet d'être certain que le segment attendu est bien perdu mais
également de s'assurer que le réseau a eu le temps
nécessaire pour sortir d'un état potentiel de congestion.
L'expiration du Timer entraîne alors irrémédiablement le
retour dans l'état précédent avec une CW égale
à 1.
Avec ce seul mécanisme de détection, aucune
distinction n'est par exemple possible entre les pertes dues à des
erreurs sur le support et les pertes dues à une congestion majeure du
réseau. Toute perte résulte en une même limitation du
débit de la connexion.
Depuis certaines versions, la reprise sur erreur de TCP a
été affinée en ajoutant des mécanismes qui lui
permettent de distinguer les raisons d'une perte afin de la traiter plus
efficacement. Ces mécanismes reposent sur un des principes de TCP qui
veut que le récepteur envoie à chaque réception de segment
un ACK du dernier segment reçu de façon ordonnée. Ainsi,
la réception d'un segment ne faisant pas numériquement suite au
précédent entraîne l'émission d'un DupACK,
c'est-à-dire un ACK en tout point équivalent au dernier
envoyé.
3.4.1. Fast retransmit (retransmission rapide)
Fast Retransmit utilise la réception de ces DupACKs
pour statuer sur la raison de la perte. La réception de 3 DupACKs,
nombre jugé suffisant pour considérer que les segments
n'arriveront pas de façon désordonnée et que la perte
n'était pas due à une congestion majeure du réseau mais
à un événement isolé, entraîne la
retransmission instantanée du prochain segment attendu par le
récepteur et la transition vers l'état stable.
|