TCP detecteert congestie via een combinatie van mechanismen, voornamelijk gebaseerd op feedback van het netwerk zelf:
1. Expliciete congestiemelding (ECN):
* Hoe het werkt: Routers langs het pad kunnen de Congestion Experienced (CE)-bit in de IP-header van een pakket instellen. Dit is een niet op verlies gebaseerd signaal dat congestie aangeeft *voordat* pakketverlies optreedt. De TCP-afzender ontvangt vervolgens dit gemarkeerde pakket en reageert overeenkomstig.
* Voordelen: Zorgt voor een vlottere congestiecontrole omdat het vroegtijdig waarschuwt. Voorkomt pakketverlies, wat meer storend is.
* Nadelen: Vereist routerondersteuning voor ECN, die niet universeel wordt ingezet.
2. Pakketverlies:
* Hoe het werkt: Dit is de meest gebruikelijke methode. Wanneer een pakket verloren gaat (als gevolg van congestie of andere redenen), ontvangt de TCP-afzender geen bevestiging (ACK) voor dat pakket binnen een redelijke tijd. Dit wordt geïnterpreteerd als een indicatie van congestie.
* Voordelen: Eenvoudig en breed toepasbaar; vereist geen speciale netwerkfuncties.
* Nadelen: Reageert op congestie *nadat* pakketverlies heeft plaatsgevonden, wat leidt tot een meer ontwrichtende ervaring. Het is ook minder nauwkeurig dan ECN, omdat verlies ook door andere redenen kan worden veroorzaakt dan congestie.
3. Time-outs:
* Hoe het werkt: TCP gebruikt timers om ACK's te verwachten. Als er geen ACK voor een pakket wordt ontvangen voordat de timer afloopt, gaat de afzender uit van pakketverlies (mogelijk als gevolg van congestie) en reageert dienovereenkomstig.
* Voordelen: Biedt een back-upmechanisme als andere methoden falen.
* Nadelen: Kan minder gevoelig zijn voor congestie dan andere methoden; timerwaarden vereisen een zorgvuldige afstemming.
4. Dubbele ACK's:
* Hoe het werkt: Als de afzender drie dubbele ACK's voor hetzelfde pakket ontvangt, wordt daaruit afgeleid dat een pakket dat volgt op het bevestigde pakket mogelijk verloren is gegaan (of vertraagd). Dit duidt op congestie.
* Voordelen: Detecteert opstoppingen *voordat* er een time-out optreedt, waardoor een snellere reactie mogelijk is.
* Nadelen: Is gebaseerd op de veronderstelling dat pakketverlies de oorzaak is, en niet noodzakelijkerwijs de congestie zelf. Kan worden veroorzaakt door andere netwerkproblemen.
Samengevat:
De congestiedetectie van TCP is een veelzijdige aanpak. Idealiter wordt ECN gebruikt voor vroege, niet-verstorende detectie. Als ECN niet beschikbaar of ineffectief is, valt het terug op de detectie van pakketverlies via time-outs en dubbele ACK's. Deze mechanismen, gecombineerd met de congestiecontrole-algoritmen van TCP (zoals langzame start, congestievermijding, snelle hertransmissie, snel herstel), werken samen om de verzendsnelheid aan te passen aan de capaciteit van het netwerk, waardoor congestie wordt vermeden of verminderd. |