logo

Gå tilbage N - Sliding Window Protocol

Go-Back-N (GBN) er en glidende vindues ARQ-protokol, der gør det muligt for afsenderen at sende flere rammer (op til en defineret vinduesstørrelse) uden at vente på individuelle bekræftelser.

strsep
  • Hvis en pakke går tabt eller beskadiget, sender afsenderen den pakke og alle efterfølgende pakker i vinduet igen.
  • Eksempel: Hvis pakke 1-5 sendes, og pakke 3 går tabt, gentransmitteres pakke 3 4 og 5.

Denne mekanisme sikrer pålidelighed, men kan spilde båndbredde, hvis der ofte opstår fejl.

De tre hovedkarakteristiske træk ved GBN er:



1. Afsendervinduesstørrelse (W s )

Det er N selv. Hvis vi siger, at protokollen er GB10, så er Ws = 10. N bør altid være større end 1 for at implementere pipelining. For N = 1 reduceres det til Stop og vent protokol .

Effektivitet af GBN = N/(1+2a)

hvor

a = Ts/Tt
Ts= Udbredelsesforsinkelse
Tt= Transmissionsforsinkelse af afsender

Hvad vil effektiviteten være, hvis behandlingsforsinkelseskøforsinkelse og transmissionsforsinkelse af kvittering ikke er nul?

Effektivitet = N * (nyttig tid) / (samlet tid)

hvor nyttig tid=Tt

Samlet tid = Tt+ 2 * Ts+ Pr+ Pq + Tt(ack)

hvor

  • T t =Transmissionsforsinkelse af afsenderside
  • T s = Udbredelsesforsinkelse
  • Pr = Behandlingsforsinkelse
  • Pq = Forsinkelse i kø
  • T t (ack) = Transmissionsforsinkelse af bekræftelse

Hvis B er båndbredden af ​​kanalen, så

Effektiv båndbredde eller gennemløb
= Effektivitet * Båndbredde
= (N/(1+2a)) * B

2. Modtagervinduesstørrelse (W R )

  • Altid 1 i GBN.
  • Modtageren accepterer kun den næste forventede pakke.
  • Pakker, der ikke er i orden, kasseres.

3. Anerkendelser

Acknowledgements (ACK'er) er signaler sendt af modtageren for at bekræfte vellykket modtagelse af datapakker. De sikrer pålidelig kommunikation mellem afsender og modtager. Hvis en ACK ikke modtages inden for en fastsat tid, antager afsenderen, at pakken er tabt, og sender den igen.

Typer af ACK'er

Kumulativ ACK

  • En enkelt bekræftelse bekræfter modtagelsen af ​​alle pakker op til et vist punkt.
  • Fordel: Mindre trafik (færre ACK'er).
  • Ulempe: Mindre pålideligt, hvis en ACK går tabt, vises flere pakker ikke anerkendt.

Uafhængig ACK

  • Hver pakke kvitteres individuelt.
  • Fordel: Høj pålidelighed.
  • Ulempe: Højere trafik på grund af flere ACK'er.

Arbejdet med GB-N-protokollen

Sender Side

  • Vedligeholder et vindue i størrelse N (f.eks. GB4 vinduesstørrelse = 4).
  • Kan sende op til N ikke-bekræftede pakker.
  • Hver transmitteret pakke har en timer.
  • Hvis en ACK modtages, glider vinduet fremad.
  • Hvis der opstår en timeout (for en manglende pakke) gensender afsenderen denne pakke og alle efterfølgende i vinduet.

Modtager side

  • Bevarer en vinduesstørrelse på 1 (WR = 1).
  • Accepterer kun den forventede pakke i rækkefølge.
  • Hvis den korrekte pakke ankommer: sender en ACK og flytter til det næste forventede sekvensnummer.
  • Hvis en pakke, der ikke er i orden, ankommer: kasser den og sender ACK igen for den sidst korrekt modtagne pakke.
Sliding_SET_2-1' title=

Forholdet mellem vinduesstørrelse og sekvensnumre

De vinduesstørrelse og sekvensnumre i et glidende vindue er protokol som Go-Back-N eller Selective Repeat tæt beslægtede.

  • De vinduesstørrelse bestemmer, hvor mange pakker afsenderen kan sende uden at skulle bekræftes. Det er ligesom en grænse for, hvor meget data der kan sendes, før afsenderen skal stoppe og vente på bekræftelse.
  • Sekvensnumre bruges til at mærke pakker, så modtageren kender deres rækkefølge og kan opdage eventuelle manglende pakker.

De vinduesstørrelse skal være mindre end eller lig med rækkevidden af ​​tilgængelige sekvensnumre . Hvis vinduesstørrelsen er for stor sammenlignet med sekvensnummerområdet, kan modtageren blive forvirret, fordi det samme sekvensnummer kan genbruges, før det første er bekræftet. Dette ville gøre det svært at vide, om en pakke er ny eller en dublet.

Forholdet mellem vinduesstørrelse og sekvensnummer er givet ved formlen:

Is+ WR<= ASN

hvor Wser afsendervinduestørrelse og WRer modtagervinduesstørrelse og ASN er tilgængeligt sekvensnummer.

Is+ 1<= ASN because WR= 1 i GB-N protokol

Så minimumssekvensnumre påkrævet i GBN = N + 1

Bits påkrævet i GBN = ⌈ log2(N + 1)⌉

Den ekstra 1 er påkrævet for at undgå problemet med duplikerede pakker.

hvordan man lukker udviklertilstand

Eksempel på GB-N protokol

Overvej et eksempel på GB4.

  • Afsendervinduets størrelse er 4, derfor kræver vi minimum 4 sekvensnumre for at mærke hver pakke i vinduet.
  • Antag nu, at modtageren har modtaget alle pakkerne (0 1 2 og 3 sendt af afsender) og derfor nu venter på pakkenummer 0 igen (Vi kan ikke bruge 4 her, da vi kun har 4 sekvensnumre til rådighed, da N = 4).
  • Antag nu, at den kumulative ack for de ovennævnte 4 pakker er tabt i netværket.
  • På afsendersiden vil der være timeout for pakke 0, og derfor vil alle de 4 pakker blive transmitteret igen.
  • Problemet er nu, at modtageren venter på et nyt sæt pakker, som skulle have startet fra 0, men nu vil den modtage duplikatkopierne af de tidligere accepterede pakker.
  • For at undgå dette har vi brug for et ekstra sekvensnummer.
  • Nu kunne modtageren nemt afvise alle de duplikerede pakker, som startede fra 0, fordi den nu venter på pakke nummer 4 (Vi har tilføjet et ekstra sekvensnummer nu).

Dette forklares ved hjælp af illustrationerne nedenfor. Prøver med sekvensnummer 4.

Sliding_SET_2-3' loading='lazy' title=

Prøver nu med et ekstra sekvensnummer.

Sliding_SET_2-4' loading='lazy' title=

Nu er det klart, hvorfor vi har brug for en ekstra 1 bit i GBN-protokollen.

Fordele ved GBN Protocol

  • Enkel at implementere og effektiv til pålidelig kommunikation.
  • Bedre ydeevne end stop-og-vent-protokoller for fejlfrie eller lave fejl-netværk.

Ulemper ved GBN-protokollen

  • Ineffektiv, hvis fejl er hyppige, da flere frames muligvis skal gentransmitteres unødigt.
  • Båndbredde kan være spildt på grund af redundante retransmissioner.
Opret quiz