De drie belangrijkste componenten van TCP-congestiecontrole-algoritmen zijn:
1. Langzame start: Dit is de eerste fase van congestiebestrijding. Wanneer een TCP-verbinding tot stand is gebracht, begint de afzender met het verzenden van pakketten met een kleine congestievenstergrootte (doorgaans 1 MSS, waarbij MSS de maximale segmentgrootte is). Elke keer dat er een bevestiging (ACK) wordt ontvangen voor een verzonden pakket, wordt de grootte van het congestievenster vergroot met 1 MSS. Dit leidt tot een exponentiële groei van de transmissiesnelheid. Door een trage start kan de afzender snel de juiste transmissiesnelheid vinden zonder het netwerk te overbelasten.
2. Congestie vermijden: Zodra het congestievenster een bepaalde drempel bereikt (meestal de langzame startdrempel, ssthresh), komt de zender in de fase van het vermijden van congestie. In deze fase wordt het congestievenster langzamer vergroot – met 1 MSS voor elke retourtijd (RTT) van ontvangen bevestigingen. Deze extra verhoging heeft tot doel de netwerkcapaciteit geleidelijk te onderzoeken zonder congestie te veroorzaken. Het algoritme blijft het congestievenster vergroten totdat congestie wordt gedetecteerd.
3. Detectie en herstel van congestie: Dit onderdeel wordt geactiveerd wanneer congestie wordt gedetecteerd. Deze detectie vindt doorgaans plaats wanneer pakketverlies optreedt (bijvoorbeeld als gevolg van weggevallen pakketten of time-outs). Bij het detecteren van congestie onderneemt het algoritme drastische actie om de transmissiesnelheid te verlagen. Het meest gebruikelijke herstelmechanisme is het halveren van de congestievenstergrootte (multiplicatieve afname). Deze plotselinge vermindering helpt de congestie snel te verlichten. De langzame startdrempel (ssthresh) wordt gewoonlijk ook bijgewerkt tot de helft van de grootte van het congestievenster op het moment van congestiedetectie, om te voorkomen dat de zender zijn transmissiesnelheid te snel opnieuw agressief verhoogt.
Het is belangrijk op te merken dat er binnen deze drie kerncomponenten veel variaties en verfijningen bestaan voor verschillende TCP-congestiecontrole-algoritmen (bijvoorbeeld Tahoe, Reno, New Reno, Cubic). Deze variaties zijn voornamelijk gericht op de manier waarop congestie wordt gedetecteerd, hoe het congestievenster wordt aangepast en hoe de langzame startdrempel wordt bijgewerkt. |