En octobre 1986, l'Internet naissant a subi son premier effondrement par congestion : le débit entre le Lawrence Berkeley Lab et l'UC Berkeley, distants de 400 yards, est passé de 32 Kbps à 40 bps. Les hôtes retransmettaient les paquets perdus à pleine vitesse, inondant davantage le réseau.
L'article de Van Jacobson de 1988, Congestion Avoidance and Control, expliquait le mécanisme et prescrivait le remède : les émetteurs devraient augmenter leur fenêtre d'un paquet par aller-retour en l'absence de perte, et la réduire de moitié lorsqu'un paquet est perdu, une politique d'augmentation additive et de diminution multiplicative.
Parce que chaque émetteur TCP suit le même algorithme, le réseau atteint un équilibre stable et à peu près équitable sans aucun contrôleur central. L'idée a été adoptée dans TCP puis codifiée dans la RFC 5681 avec le démarrage lent, la retransmission rapide et la récupération rapide.
Détecter la perte, diviser la vitesse par deux ; puis remonter doucement
La perte est un signal de congestion que chaque émetteur reçoit déjà, donc aucune machinerie réseau supplémentaire n'est nécessaire.
La diminution multiplicative réagit vite aux problèmes ; l'augmentation additive sonde la capacité lentement.
Le fait que tous les émetteurs partagent la règle signifie que l'équité émerge du comportement individuel.
Cela a corrigé la défaillance sans modifier les routeurs ni ajouter de bande passante.
Lorsque la réponse rationnelle de chaque acteur aggrave une ressource partagée, changez la règle que tous suivent : faites en sorte que l'action sûre augmente lentement et que l'action nuisible diminue fortement.
Suites
L'algorithme est devenu le comportement par défaut de TCP, le protocole de transport qui achemine la majeure partie du trafic Internet. La RFC 5681, publiée en 2009, liste toujours le démarrage lent, l'évitement de congestion, la retransmission rapide et la récupération rapide comme standard, et la recherche sur le contrôle de congestion est née de cet article pour devenir un domaine à part entière.
VÉRIFIEZ LES SOURCES
Les sources
- Congestion Avoidance and Control (Van Jacobson & Michael Karels, November 1988) Lawrence Berkeley National Laboratory · ee.lbl.gov
- RFC 5681 — TCP Congestion Control Internet Engineering Task Force · rfc-editor.org