logo

Înapoi N - Protocolul ferestrei glisante

Go-Back-N (GBN) este un protocol ARQ cu fereastră glisantă care permite expeditorului să transmită mai multe cadre (până la o dimensiune de fereastră definită) fără a aștepta confirmări individuale.

diferența dintre vulpe și lup
  • Dacă un pachet este pierdut sau corupt, expeditorul retransmite acel pachet și toate pachetele ulterioare în fereastră.
  • Exemplu: Dacă pachetele 1–5 sunt trimise și pachetul 3 este pierdut, atunci pachetele 3, 4 și 5 sunt retransmise.

Acest mecanism asigură fiabilitatea, dar poate pierde lățimea de bandă dacă apar frecvent erori.

Cele trei caracteristici principale ale GBN sunt:



1. Dimensiunea ferestrei expeditorului (W s )

Este N însuși. Dacă spunem că protocolul este GB10, atunci Ws = 10. N ar trebui să fie întotdeauna mai mare decât 1 pentru a implementa pipelineing. Pentru N = 1 se reduce la Protocolul Stop and Wait .

Eficiența GBN = N/(1+2a)

unde

a = Tp/Tt
Tp= Întârziere de propagare
Tt= Întârzierea transmisiei expeditorului

Care va fi eficiența dacă întârzierea procesării, întârzierea în coadă și întârzierea transmisiei de confirmare nu este zero?

Eficiență = N * (Timp util) / (Timp total)

unde timp util=Tt

Timp total = Tt+ 2 * Tp+ Pr+ Pq + Tt(ack)

unde

  • T t =Întârzierea transmisiei din partea expeditorului
  • T p = Întârziere de propagare
  • Pr = Întârziere de procesare
  • Pq = Întârziere la coadă
  • T t (ack) = Întârzierea transmisiei de confirmare

Dacă B este lățimea de bandă a canalului, atunci

Lățime de bandă efectivă sau debit
= Eficiență * Lățime de bandă
= (N/(1+2a)) * B

2. Dimensiunea ferestrei receptorului (W R )

  • Întotdeauna 1 în GBN.
  • Receptorul acceptă doar următorul pachet așteptat.
  • Pachetele necomandate sunt aruncate.

3. Mulțumiri

Confirmările (ACK) sunt semnale trimise de receptor pentru a confirma primirea cu succes a pachetelor de date. Acestea asigură o comunicare fiabilă între emițător și destinatar. Dacă un ACK nu este primit într-un timp stabilit, expeditorul presupune că pachetul este pierdut și îl retransmite.

Tipuri de ACK-uri

ACK cumulativ

  • O singură confirmare confirmă primirea tuturor pachetelor până la un anumit punct.
  • Avantaj: Mai puțin trafic (mai puține ACK-uri).
  • Dezavantaj: Mai puțin fiabile dacă se pierde un ACK, mai multe pachete apar neconfirmate.

ACK independent

  • Fiecare pachet este confirmat individual.
  • Avantaj: Fiabilitate ridicată.
  • Dezavantaj: Trafic mai mare datorită mai multor ACK-uri.

Funcționarea protocolului GB-N

Pagina de trimitere

  • Menține o fereastră de dimensiune N (de exemplu, dimensiunea ferestrei GB4 = 4).
  • Poate trimite până la N pachete neconfirmate.
  • Fiecare pachet transmis are un cronometru.
  • Dacă se primește un ACK, fereastra alunecă înainte.
  • Dacă are loc un timeout (pentru un pachet lipsă), expeditorul retransmite acel pachet și toate cele ulterioare în fereastră.

Partea receptorului

  • Menține dimensiunea ferestrei de 1 (WR = 1).
  • Acceptă numai pachetul așteptat în secvență.
  • Dacă sosește pachetul corect: trimite un ACK și trece la următorul număr de secvență așteptat.
  • Dacă sosește un pachet necomandat: îl aruncă și retrimite ACK pentru ultimul pachet primit corect.
Glisare_SET_2-1' title=

Relația dintre dimensiunea ferestrei și numerele de secvență

The dimensiunea ferestrei şi numere de ordine într-un protocol de fereastră glisantă precum Go-Back-N sau Selective Repeat sunt strâns legate.

  • The dimensiunea ferestrei determină câte pachete poate transmite expeditorul fără a avea nevoie de o confirmare. Este ca o limită a câte date pot fi trimise înainte ca expeditorul să se oprească și să aștepte confirmarea.
  • Numerele de ordine sunt folosite pentru a eticheta pachetele, astfel încât receptorul să cunoască ordinea acestora și să poată detecta orice pachete lipsă.

The dimensiunea ferestrei ar trebui să fie mai mic sau egal cu intervalul disponibil numere de ordine . Dacă dimensiunea ferestrei este prea mare în comparație cu intervalul de numere de secvență, receptorul poate deveni confuz, deoarece același număr de secvență ar putea fi reutilizat înainte ca primul să fie confirmat. Acest lucru ar face dificil de știut dacă un pachet este nou sau un duplicat.

Relația dintre dimensiunea ferestrei și numărul de secvență este dată de formula:

ÎNs+ WR<= ASN

unde Wseste dimensiunea ferestrei expeditorului și WReste dimensiunea ferestrei receptorului și ASN este numărul de secvență disponibil.

ÎNs+ 1<= ASN because WR= 1 în protocolul GB-N

Deci numerele de secvență minime necesare în GBN = N + 1

Biți necesari în GBN = ⌈ log2(N + 1)⌉

1 suplimentar este necesar pentru a evita problema pachetelor duplicate.

Exemplu de Protocolul GB-N

Luați în considerare un exemplu de GB4.

  • Dimensiunea ferestrei expeditorului este 4, prin urmare, avem nevoie de minimum 4 numere de secvență pentru a eticheta fiecare pachet din fereastră.
  • Acum să presupunem că receptorul a primit toate pachetele (0 1 2 și 3 trimise de expeditor) și, prin urmare, așteaptă din nou pachetul numărul 0 (Nu putem folosi 4 aici, deoarece avem doar 4 numere de secvență disponibile deoarece N = 4).
  • Acum să presupunem că ack-ul cumulat pentru cele 4 pachete de mai sus se pierde în rețea.
  • Pe partea expeditorului va exista timeout pentru pachetul 0 și, prin urmare, toate cele 4 pachete vor fi transmise din nou.
  • Problema acum este că receptorul așteaptă un nou set de pachete care ar fi trebuit să înceapă de la 0, dar acum va primi copiile duplicate ale pachetelor acceptate anterior.
  • Pentru a evita acest lucru, avem nevoie de un număr de secvență suplimentar.
  • Acum receptorul ar putea respinge cu ușurință toate pachetele duplicate care porneau de la 0, deoarece acum va aștepta pachetul numărul 4 (am adăugat un număr suplimentar de secvență acum).

Acest lucru este explicat cu ajutorul ilustrațiilor de mai jos. Încercați cu numerele de secvență 4.

Glisare_SET_2-3' loading='lazy' title=

Acum încercăm cu un număr suplimentar de secvență.

lungimea șirului java
Glisare_SET_2-4' loading='lazy' title=

Acum este clar de ce avem nevoie de un bit suplimentar în protocolul GBN.

Avantajele protocolului GBN

  • Simplu de implementat și eficient pentru o comunicare fiabilă.
  • Performanță mai bună decât protocoalele stop-and-wait pentru rețele fără erori sau cu erori reduse.

Dezavantajele protocolului GBN

  • Ineficient dacă erorile sunt frecvente, deoarece mai multe cadre s-ar putea să fie nevoie să fie retransmise în mod inutil.
  • Lățimea de bandă poate fi irosită din cauza retransmisiilor redundante.
Creați un test