logo

Grįžti atgal N – slankiojančio lango protokolas

Go-Back-N (GBN) yra slankiojo lango ARQ protokolas, leidžiantis siuntėjui perduoti kelis kadrus (iki nustatyto lango dydžio), nelaukiant atskirų patvirtinimų.

oracle sql nelygu
  • Jei paketas pametamas arba sugadintas, siuntėjas pakartotinai persiunčia tą paketą ir visus vėlesnius paketus lange.
  • Pavyzdys: Jei siunčiami 1–5 paketai, o 3 paketas pametamas, 3, 4 ir 5 paketai persiunčiami pakartotinai.

Šis mechanizmas užtikrina patikimumą, tačiau gali eikvoti pralaidumą, jei dažnai pasitaiko klaidų.

Trys pagrindiniai GBN bruožai yra šie:



1. Siuntėjo lango dydis (W s )

Tai pats N. Jei sakome, kad protokolas yra GB10, tada Ws = 10. N visada turi būti didesnis nei 1, kad būtų galima įgyvendinti konvejerinį procesą. Jei N = 1, jis sumažinamas iki Sustabdymo ir laukimo protokolas .

GBN efektyvumas = N/(1+2a)

kur

a = Tp/Tt
Tp= plitimo delsa
Tt= Siuntėjo perdavimo delsa

Koks bus efektyvumas, jei apdorojimo delsos eilės delsa ir patvirtinimo perdavimo delsa nebus lygi nuliui?

Efektyvumas = N * (naudingas laikas) / (bendras laikas)

kur naudingas laikas = Tt

Visas laikas = Tt+ 2 * Tp+ Pr+ Pq + Tt(ack)

kur

  • T t = Siuntėjo pusės perdavimo delsa
  • T p = plitimo delsa
  • Pr = Apdorojimo delsa
  • Pq = Vėlavimas eilėje
  • T t (ack) = Patvirtinimo perdavimo delsa

Jei B yra kanalo pralaidumas, tada

Efektyvus pralaidumas arba pralaidumas
= Efektyvumas * Pralaidumas
= (N/(1+2a)) * B

2. Imtuvo lango dydis (W R )

  • Visada 1 GBN.
  • Gavėjas priima tik kitą laukiamą paketą.
  • Netvarkingi paketai išmetami.

3. Padėkos

Patvirtinimas (ACK) yra signalai, kuriuos siunčia imtuvas, patvirtinantis sėkmingą duomenų paketų gavimą. Jie užtikrina patikimą ryšį tarp siuntėjo ir gavėjo. Jei ACK negaunamas per nustatytą laiką, siuntėjas mano, kad paketas prarastas ir persiunčia jį iš naujo.

ACK tipai

Kaupiamasis ACK

  • Vienas patvirtinimas patvirtina, kad visi paketai buvo gauti iki tam tikro taško.
  • Privalumas: Mažiau srauto (mažiau ACK).
  • Trūkumas: Mažiau patikimas, jei vienas ACK yra prarastas, keli paketai atrodo nepatvirtinti.

Nepriklausomas ACK

  • Kiekvienas paketas patvirtinamas atskirai.
  • Privalumas: Didelis patikimumas.
  • Trūkumas: Didesnis srautas dėl daugiau ACK.

GB-N protokolo veikimas

Siunčiamas puslapis

  • Išlaiko N dydžio langą (pvz., GB4 lango dydis = 4).
  • Gali išsiųsti iki N nepatvirtintų paketų.
  • Kiekvienas perduotas paketas turi laikmatį.
  • Jei gaunamas ACK, langas slenka į priekį.
  • Jei įvyksta skirtasis laikas (dėl trūkstamo paketo), siuntėjas pakartotinai persiunčia tą paketą ir visus vėlesnius lange esančius.

Imtuvo pusė

  • Išlaikomas 1 lango dydis (WR = 1).
  • Iš eilės priima tik laukiamą paketą.
  • Jei gaunamas tinkamas paketas: siunčia ACK ir pereina prie kito laukiamo eilės numerio.
  • Jei gaunamas netvarkingas paketas: jį atmeta ir iš naujo siunčia ACK už paskutinį teisingai gautą paketą.
Stumdomas_SET_2-1' title=

Ryšys tarp lango dydžio ir eilės numerių

The lango dydis ir eilės numeriai slankiojančio lango protokole, pvz., Grįžti atgal-N arba selektyvus kartojimas, yra glaudžiai susiję.

  • The lango dydis nustato, kiek paketų siuntėjas gali perduoti be patvirtinimo. Tai tarsi riba, kiek duomenų galima išsiųsti, kol siuntėjui reikia sustoti ir laukti patvirtinimo.
  • Eilės numeriai yra naudojami paketams pažymėti, kad imtuvas žinotų jų tvarką ir galėtų aptikti trūkstamus paketus.

The lango dydis turėtų būti mažesnis arba lygus turimam diapazonui eilės numeriai . Jei lango dydis yra per didelis, palyginti su eilės numerių diapazonu, imtuvas gali susipainioti, nes tas pats eilės numeris gali būti panaudotas dar kartą prieš patvirtinant pirmąjį. Dėl to būtų sunku sužinoti, ar paketas yra naujas, ar dublikatas.

Ryšys tarp lango dydžio ir eilės numerio nustatomas pagal formulę:

INs+ WR<= ASN

kur Wsyra siuntėjo lango dydis ir WRyra imtuvo lango dydis, o ASN yra prieinamas eilės numeris.

INs+1<= ASN because WR= 1 GB-N protokole

Taigi minimalūs eilės numeriai, reikalingi GBN = N + 1

Reikalingi bitai GBN = ⌈ log2(N + 1)⌉

Papildomas 1 reikalingas norint išvengti pasikartojančių paketų problemos.

Pavyzdys GB-N protokolas

Apsvarstykite GB4 pavyzdį.

  • Siuntėjo lango dydis yra 4, todėl kiekvienam paketui lange reikia pažymėti mažiausiai 4 eilės numerius.
  • Tarkime, kad gavėjas gavo visus siuntėjo išsiųstus paketus (0 1 2 ir 3) ir vėl laukia paketo numerio 0 (čia negalime naudoti 4, nes turime tik 4 eilės numerius, nes N = 4).
  • Dabar tarkime, kad tinkle prarastas kumuliacinis minėtų 4 paketų patvirtinimas.
  • Siuntėjo pusėje bus skirtas 0 paketo laikas, todėl visi 4 paketai bus perduoti dar kartą.
  • Problema ta, kad imtuvas laukia naujo paketų rinkinio, kuris turėjo prasidėti nuo 0, bet dabar jis gaus pasikartojančias anksčiau priimtų paketų kopijas.
  • Kad to išvengtume, mums reikia vieno papildomo eilės numerio.
  • Dabar imtuvas gali nesunkiai atmesti visus pasikartojančius paketus, kurie prasidėjo nuo 0, nes dabar jis lauks paketo numerio 4 (dabar pridėjome papildomą eilės numerį).

Tai paaiškinama toliau pateiktomis iliustracijomis. Bandymas su eilės numeriais 4.

padaryti apvalkalo scenarijų vykdomąjį
Stumdomas_SET_2-3' loading='lazy' title=

Dabar pabandykite su vienu papildomu eilės numeriu.

Stumdomas_SET_2-4' loading='lazy' title=

Dabar aišku, kodėl mums reikia papildomo 1 bito GBN protokole.

GBN protokolo privalumai

  • Paprasta įgyvendinti ir veiksminga patikimam bendravimui.
  • Geresnis našumas nei sustabdymo ir laukimo protokolai, skirti tinklams be klaidų arba mažų klaidų.

GBN protokolo trūkumai

  • Neefektyvu, jei klaidos yra dažnos, nes gali tekti be reikalo pakartotinai perduoti kelis kadrus.
  • Pralaidumas gali būti švaistomas dėl perteklinių pakartotinių siuntimų.
Sukurti viktoriną