Go-Back-N (GBN) je protokol ARQ s posuvným oknom, ktorý umožňuje odosielateľovi prenášať viacero rámcov (až do definovanej veľkosti okna) bez čakania na jednotlivé potvrdenia.
čo je zásobník v jave
- Ak sa paket stratí alebo poškodí, odosielateľ znova odošle tento paket a všetky nasledujúce pakety v okne.
- Príklad: Ak sa odošlú pakety 1–5 a paket 3 sa stratí, potom sa pakety 3, 4 a 5 znova prenesú.
Tento mechanizmus zaisťuje spoľahlivosť, ale môže plytvať šírkou pásma, ak sa chyby vyskytujú často.
Tri hlavné charakteristické znaky GBN sú:
1. Veľkosť okna odosielateľa (š s )
Je to samotné N. Ak povieme, že protokol je GB10, potom Ws = 10. N by malo byť vždy väčšie ako 1, aby sa implementovalo prepojenie. Pre N = 1 sa redukuje na Protokol Stop and Wait .
Účinnosť GBN = N/(1+2a)
kde
a = Tp/Tt
Tp= Oneskorenie šírenia
Tt= Oneskorenie prenosu odosielateľa
Aká bude efektívnosť, ak oneskorenie spracovania pri zaradení do frontu a oneskorenie potvrdenia prenosu nebude nulové?
Efektivita = N * (užitočný čas) / (celkový čas)
kde užitočný čas = Tt
Celkový čas = Tt+ 2 * Tp+ Pr+ Pq + Tt(potvrdenie)
kde
- T t = Oneskorenie prenosu na strane odosielateľa
- T p = Oneskorenie šírenia
- Pr = Oneskorenie spracovania
- Pq = Oneskorenie zaradenia
- T t (potvrdenie) = Oneskorenie potvrdenia prenosu
Ak B je šírka pásma kanála, potom
Efektívna šírka pásma alebo priepustnosť
= Účinnosť * Šírka pásma
= (N/(1+2a))* B
2. Veľkosť okna prijímača (W R )
- Vždy 1 v GBN.
- Prijímač akceptuje iba nasledujúci očakávaný paket.
- Nefunkčné pakety sú vyradené.
3. Poďakovanie
Potvrdenia (ACK) sú signály odosielané prijímačom na potvrdenie úspešného prijatia dátových paketov. Zabezpečujú spoľahlivú komunikáciu medzi odosielateľom a príjemcom. Ak ACK nie je prijaté v stanovenom čase, odosielateľ predpokladá, že paket je stratený a odošle ho znova.
Typy ACK
Kumulatívne ACK
- Jedno potvrdenie potvrdí prijatie všetkých paketov do určitého bodu.
- Výhoda: Menšia prevádzka (menej ACK).
- Nevýhoda: Menej spoľahlivé, ak dôjde k strate jedného ACK, viaceré pakety sa zdajú byť nepotvrdené.
Nezávislé ACK
- Každý paket je potvrdený individuálne.
- Výhoda: Vysoká spoľahlivosť.
- Nevýhoda: Vyššia návštevnosť v dôsledku väčšieho počtu ACK.
Fungovanie protokolu GB-N
Stránka odosielania
- Zachováva okno veľkosti N (napr. veľkosť okna GB4 = 4).
- Môže odoslať až N nepotvrdených paketov.
- Každý prenášaný paket má časovač.
- Ak je prijaté ACK, okno sa posunie dopredu.
- Ak nastane časový limit (pre chýbajúci paket), odosielateľ znova odošle tento paket a všetky nasledujúce v okne.
Strana prijímača
- Zachováva veľkosť okna 1 (WR = 1).
- Prijíma iba očakávaný paket v poradí.
- Ak príde správny paket: pošle ACK a presunie sa na ďalšie očakávané poradové číslo.
- Ak príde paket mimo poradia: zahodí ho a znova odošle ACK pre posledný správne prijatý paket.
Vzťah medzi veľkosťou okna a poradovými číslami
The veľkosť okna a poradové čísla v protokoloch posuvného okna ako Go-Back-N alebo Selective Repeat spolu úzko súvisia.
- The veľkosť okna určuje, koľko paketov môže odosielateľ preniesť bez potreby potvrdenia. Je to ako limit počtu údajov, ktoré možno odoslať, kým sa odosielateľ musí zastaviť a čakať na potvrdenie.
- Poradové čísla sa používajú na označovanie paketov, takže prijímač pozná ich poradie a môže zistiť chýbajúce pakety.
The veľkosť okna by mala byť menšia alebo rovnaká ako rozsah dostupných poradové čísla . Ak je veľkosť okna príliš veľká v porovnaní s rozsahom sekvenčných čísel, prijímač môže byť zmätený, pretože rovnaké poradové číslo by sa mohlo znova použiť pred potvrdením prvého. To by sťažilo zistenie, či je paket nový alebo duplikát.
Vzťah medzi veľkosťou okna a poradovým číslom je daný vzorcom:
INs+ WR<= ASN
kde Wsje veľkosť okna odosielateľa a WRje veľkosť okna prijímača a ASN je dostupné poradové číslo.
INs+ 1<= ASN because WR= 1 v protokole GB-N
Takže minimálne poradové čísla požadované v GBN = N + 1
Bity požadované v GBN = ⌈ log2(N + 1)⌉
Extra 1 sa vyžaduje, aby sa predišlo problémom s duplicitnými paketmi.
arraylist
Príklad Protokol GB-N
Zvážte príklad GB4.
- Veľkosť okna odosielateľa je 4, preto požadujeme minimálne 4 poradové čísla na označenie každého paketu v okne.
- Teraz predpokladajme, že prijímač prijal všetky pakety (0 1 2 a 3 odoslané odosielateľom) a teda teraz opäť čaká na paket číslo 0 (tu nemôžeme použiť 4, keďže máme k dispozícii iba 4 poradové čísla, keďže N = 4).
- Teraz predpokladajme, že kumulatívne potvrdenie pre vyššie uvedené 4 pakety je stratené v sieti.
- Na strane odosielateľa uplynie časový limit pre paket 0 a teda všetky 4 pakety budú znova prenesené.
- Problém je teraz v tom, že prijímač čaká na novú sadu paketov, ktorá mala začať od 0, ale teraz dostane duplicitné kópie predtým prijatých paketov.
- Aby sme tomu zabránili, potrebujeme jedno poradové číslo navyše.
- Teraz môže prijímač jednoducho odmietnuť všetky duplicitné pakety, ktoré začínali od 0, pretože teraz bude čakať na paket číslo 4 (teraz sme pridali ďalšie poradové číslo).
Toto je vysvetlené pomocou ilustrácií nižšie. Skúšanie s poradovými číslami 4.
Teraz to skúste s jedným poradovým číslom navyše.
Teraz je jasné, prečo potrebujeme 1 bit navyše v protokole GBN.
Výhody protokolu GBN
- Jednoduchá implementácia a efektívna pre spoľahlivú komunikáciu.
- Lepší výkon ako protokoly stop-and-wait pre siete bez chýb alebo s nízkou chybovosťou.
Nevýhody GBN protokolu
- Neefektívne, ak sú chyby časté, pretože môže byť potrebné zbytočne prenášať viacero rámcov.
- Šírka pásma môže byť plytvaná kvôli redundantným opakovaným prenosom.