Het logaritmische backoff-algoritme in de MAC-laag, voornamelijk gebruikt in CSMA/CA-protocollen (Carrier Sense Multiple Access with Collision Vermijdance) zoals Wi-Fi (802.11), heeft tot doel botsingen op te lossen door een willekeurige vertraging te introduceren voordat een frame opnieuw wordt verzonden. Het is "logaritmisch" omdat het bereik van mogelijke vertragingen exponentieel toeneemt bij elke opeenvolgende botsing. Hier ziet u hoe het wordt geïmplementeerd:
1. Botsingsdetectie:
* Het zendende knooppunt luistert naar een botsing na het verzenden van een frame. Als het een botsing detecteert (bijvoorbeeld door tijdens het verzenden een ander signaal op het kanaal waar te nemen), weet het dat de verzending is mislukt.
2. Initialisatie uitstelteller:
* Er wordt een uitstelteller geïnitialiseerd. De initiële waarde is gewoonlijk 'CWmin' (Contention Window minimum), een vaste waarde gedefinieerd door de standaard (bijvoorbeeld 31 in sommige 802.11-configuraties). Deze teller vertegenwoordigt het aantal tijdsleuven dat het knooppunt moet wachten voordat een poging tot hertransmissie wordt ondernomen. Een tijdslot is een kort, vooraf gedefinieerd interval.
3. Willekeurig uitstel:
* Er wordt uniform een willekeurig getal gegenereerd tussen 0 en de huidige waarde van de backoff-teller (`CW`). Dit willekeurige getal bepaalt de specifieke vertraging vóór hertransmissie. Deze willekeur helpt om aanhoudende botsingen te voorkomen die zouden kunnen optreden als alle knooppunten op precies hetzelfde tijdstip opnieuw zouden verzenden.
4. Afname van de uitstelteller:
* Het knooppunt wacht op het willekeurige aantal tijdslots. Tijdens deze wachtperiode blijft het knooppunt het kanaal waarnemen. Als het kanaal vrij is, wordt de uitstelteller in elk tijdslot verlaagd totdat deze nul bereikt.
5. Doorgifte:
* Wanneer de backoff-teller nul bereikt, probeert het knooppunt het frame opnieuw te verzenden.
6. Botsingsresolutie:
* Als er nog een botsing plaatsvindt, wordt het contentievenster (`CW`) verdubbeld (of vergroot volgens een specifiek algoritme binnen de standaard), tot een maximale waarde (`CWmax`). Dit zorgt ervoor dat de knooppunten hun hertransmissiepogingen over een groter tijdsinterval spreiden, waardoor de kans op verdere botsingen kleiner wordt.
7. Exponentiële uitstel:
* Het logaritmische karakter vloeit voort uit de exponentiële toename van het twistvenster. Elke botsing vergroot het bereik van mogelijke vertragingen aanzienlijk, wat leidt tot een snelle afname van de botsingskans. Als een maximaal aantal hertransmissiepogingen zonder succes wordt bereikt, wordt het frame weggegooid.
8. Voorbeeld:
Laten we zeggen dat 'CWmin' 31 is en dat 'CWmax' 1023 is.
* 1e botsing: `CW` =31. Willekeurige vertraging:0-31 tijdslots.
* 2e botsing: `CW` =63 (verdubbeld). Willekeurige vertraging:0-63 tijdslots.
* 3e botsing: `CW` =127. Willekeurige vertraging:0-127 tijdslots.
* ...enzovoort, totdat `CW` `CWmax` bereikt of het frame met succes wordt verzonden.
Implementatiedetails (voorbeeld 802.11):
De precieze implementatie varieert enigszins, afhankelijk van de specifieke 802.11-standaard (bijvoorbeeld 802.11a, 802.11b, 802.11g, 802.11n, 802.11ax). De details zouden zijn ingebed in de firmware of het stuurprogramma van de draadloze netwerkinterfacekaart (NIC). Deze details omvatten:
* Specifieke waarden van `CWmin` en `CWmax`.
* Het exacte algoritme voor het verdubbelen of vergroten van het contentievenster.
* Mechanismen voor het omgaan met verschillende soorten fouten en kanaalomstandigheden.
In wezen is het logaritmische backoff-algoritme een sleutelcomponent om CSMA/CA effectief te maken bij het beheren van gelijktijdige toegang tot een gedeeld draadloos medium, het vermijden van catastrofale botsingen en het mogelijk maken van efficiënte communicatie. |