Go-Back-N (GBN) is een ARQ-protocol met glijdend venster waarmee de zender meerdere frames (tot een gedefinieerde venstergrootte) kan verzenden zonder op individuele bevestigingen te wachten.
javascan.nextstring
- Als een pakket verloren gaat of beschadigd raakt, verzendt de afzender dat pakket en alle daaropvolgende pakketten opnieuw in het venster.
- Voorbeeld: Als pakketten 1–5 worden verzonden en pakket 3 verloren gaat, worden pakketten 3, 4 en 5 opnieuw verzonden.
Dit mechanisme zorgt voor betrouwbaarheid, maar kan bandbreedte verspillen als er vaak fouten optreden.
De drie belangrijkste karakteristieke kenmerken van GBN zijn:
1. Venstergrootte afzender (B S )
Het is N zelf. Als we zeggen dat het protocol GB10 is, dan is Ws = 10. N moet altijd groter zijn dan 1 om pipelining te kunnen implementeren. Voor N = 1 reduceert het tot de Stop-en-Wacht-protocol .
Efficiëntie van GBN = N/(1+2a)
waar
een = TP/TT
TP= Voortplantingsvertraging
TT= Verzendvertraging van afzender
Wat zal de efficiëntie zijn als de verwerkingsvertraging, wachtrijvertraging en transmissievertraging van bevestiging niet nul zijn?
Efficiëntie = N * (nuttige tijd) / (totale tijd)
waarbij nuttige tijd=TT
Totale tijd = TT+ 2 * TP+ PR+ Pq + TT(ak)
waar
- T T =Verzendvertraging van zenderzijde
- T P = Voortplantingsvertraging
- Pr= Vertraging bij verwerking
- Pq = Wachtrij vertraging
- T T (ak) = Verzendvertraging van bevestiging
Als B de bandbreedte van het kanaal is, dan
Effectieve bandbreedte of doorvoer
= Efficiëntie * Bandbreedte
= (N/(1+2a)) * B
2. Venstergrootte ontvanger (B R )
- Altijd 1 in GBN.
- Ontvanger accepteert alleen het volgende verwachte pakket.
- Pakketten die niet in de juiste volgorde staan, worden weggegooid.
3. Dankbetuigingen
Bevestigingen (ACK's) zijn signalen die door de ontvanger worden verzonden om de succesvolle ontvangst van datapakketten te bevestigen. Ze zorgen voor een betrouwbare communicatie tussen zender en ontvanger. Als er binnen een bepaalde tijd geen ACK wordt ontvangen, gaat de afzender ervan uit dat het pakket verloren is gegaan en verzendt het opnieuw.
Soorten ACK's
Cumulatieve ACK
- Een enkele bevestiging bevestigt de ontvangst van alle pakketten tot op een bepaald punt.
- Voordeel: Minder verkeer (minder ACK's).
- Nadeel: Minder betrouwbaar als één ACK verloren gaat, lijken meerdere pakketten niet bevestigd.
Onafhankelijke ACK
- Elk pakket wordt afzonderlijk bevestigd.
- Voordeel: Hoge betrouwbaarheid.
- Nadeel: Meer verkeer dankzij meer ACK's.
Werking van het GB-N-protocol
Pagina verzenden
- Behoudt een venster met grootte N (bijvoorbeeld GB4-venstergrootte = 4).
- Kan maximaal N onbevestigde pakketten verzenden.
- Elk verzonden pakket heeft een timer.
- Als er een ACK wordt ontvangen, schuift het venster naar voren.
- Als er een time-out optreedt (voor een ontbrekend pakket), verzendt de afzender dat pakket en alle daaropvolgende pakketten opnieuw in het venster.
Ontvangerzijde
- Behoudt een venstergrootte van 1 (WR = 1).
- Accepteert alleen het verwachte pakket in de juiste volgorde.
- Als het juiste pakket arriveert: verzendt een ACK en gaat naar het volgende verwachte volgnummer.
- Als er een pakket in de verkeerde volgorde arriveert: verwijdert het en verzendt opnieuw een ACK voor het laatste correct ontvangen pakket.
Relatie tussen venstergrootte en volgnummers
De venstergrootte En volgnummers in een schuifvenster zijn protocollen zoals Go-Back-N of Selective Repeat nauw verwant.
instantiatie in Java
- De venstergrootte bepaalt hoeveel pakketten de afzender kan verzenden zonder dat er een bevestiging nodig is. Het is als een limiet voor de hoeveelheid gegevens die kan worden verzonden voordat de afzender moet stoppen en op bevestiging moet wachten.
- Volgnummers worden gebruikt om pakketten te labelen, zodat de ontvanger de volgorde kent en eventuele ontbrekende pakketten kan detecteren.
De venstergrootte moet kleiner zijn dan of gelijk zijn aan het beschikbare bereik volgnummers . Als de venstergrootte te groot is in vergelijking met het volgnummerbereik, kan de ontvanger in de war raken omdat hetzelfde volgnummer opnieuw kan worden gebruikt voordat het eerste wordt bevestigd. Dit zou het moeilijk maken om te weten of een pakket nieuw of een duplicaat is.
De relatie tussen venstergrootte en volgnummer wordt gegeven door de formule:
INS+ WR<= ASN
waar WSis de grootte van het afzendervenster en WRis de venstergrootte van de ontvanger en ASN is het beschikbare volgnummer.
INS+ 1<= ASN because WR= 1 in GB-N-protocol
Dus minimaal vereiste volgnummers in GBN = N + 1
Bits vereist in GBN = ⌈ log2(N+1)⌉
De extra 1 is nodig om het probleem van dubbele pakketten te voorkomen.
Voorbeeld van GB-N-protocol
Beschouw een voorbeeld van GB4.
- De venstergrootte van de afzender is 4. Daarom hebben we minimaal 4 volgnummers nodig om elk pakket in het venster te labelen.
- Stel nu dat de ontvanger alle pakketten heeft ontvangen (0 1 2 en 3 verzonden door de afzender) en dus nu weer wacht op pakketnummer 0 (we kunnen hier 4 niet gebruiken omdat we slechts 4 volgnummers beschikbaar hebben omdat N = 4).
- Stel nu dat de cumulatieve bevestiging voor de bovenstaande vier pakketten verloren gaat in het netwerk.
- Aan de kant van de afzender zal er een time-out zijn voor pakket 0 en daarom zullen alle 4 de pakketten opnieuw worden verzonden.
- Het probleem is nu dat de ontvanger wacht op een nieuwe set pakketten, die vanaf 0 had moeten beginnen, maar nu de dubbele kopieën van de eerder geaccepteerde pakketten ontvangt.
- Om dit te voorkomen hebben wij één extra volgnummer nodig.
- Nu kan de ontvanger gemakkelijk alle dubbele pakketten weigeren die bij 0 beginnen, omdat hij nu wacht op pakketnummer 4 (we hebben nu een extra volgnummer toegevoegd).
Dit wordt uitgelegd aan de hand van onderstaande illustraties. Proberen met volgnummers 4.
Nu proberen met één extra volgnummer.
Nu is het duidelijk waarom we een extra bit nodig hebben in het GBN-protocol.
Voordelen van het GBN-protocol
- Eenvoudig te implementeren en effectief voor betrouwbare communicatie.
- Betere prestaties dan stop-en-wacht-protocollen voor foutloze netwerken of netwerken met weinig fouten.
Nadelen van het GBN-protocol
- Inefficiënt als er veel fouten optreden, omdat meerdere frames mogelijk onnodig opnieuw moeten worden verzonden.
- Er kan bandbreedte worden verspild als gevolg van redundante hertransmissies.