Solicitare repetată automată

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În sistemele de telecomunicații, Automatic Repeat-reQuest este o strategie de verificare a erorilor , care face treaba de a detecta o eroare (dar nu de a o corecta). Pachetele corupte sunt eliminate și se solicită retransmiterea lor.

Sistem ARQ

Definiții

Pentru ca sistemul să poată recunoaște mesajele corupte, este necesar ca acestea să fie codificate preliminar de un codificator. După transmisie, decodificatorul decodează mesajul și, în funcție de faptul că este intact sau nu, se comportă în conformitate cu unul dintre cele mai comune 3 protocoale diferite:

  • Stop-and-wait : expeditorul trimite un mesaj și așteaptă de la destinatar o confirmare pozitivă ( ACK , confirmare), negativă ( NACK , contracție de confirmare negativă) sau o comandă; dacă expiră timpul de așteptare ( time-out ) pentru unul dintre aceste trei, expeditorul va retrimite pachetul și destinatarul se va angaja să renunțe la orice răspuns. În cazul în care apare o eroare la transmiterea semnalului de confirmare (ACK), expeditorul va retrimite pachetul; destinatarul va primi astfel o copie a pachetului deja primit, crezând că a fost primit un pachet nou. Pentru a depăși această problemă, puteți continua numerotând pachetele transmise, adică inserând un bit de numărare.
  • Go-Back-N : expeditorul are un buffer în care stochează N pachete pentru a fi trimise, deoarece primește confirmarea ACK, golește bufferul și îl umple cu pachete noi; în caz de pachete pierdute sau deteriorate și aruncate, blocul de pachete afectate este retrimis. Pachetele primite de destinatar după cel aruncat sunt aruncate.
  • Repetare selectivă : în acest caz, destinatarul are și un buffer pentru a stoca pachetele primite după cel / cele aruncate; când pachetele afectate sunt recepționate cu succes, fie tampoanele sunt golite (expeditor), fie pachetele conținute salvate (receptor).

În prezența comunicării în timp real , sistemul ARQ este inadecvat din cauza timpilor de latență ai retransmisiei. În acest caz, sunt preferate sistemele de corectare a erorilor înainte .

Opriți și așteptați

Protocolul Stop-and-wait este cel mai simplu protocol de comunicare de cerere de repetare automată (ARQ) a transmiterii unui pachet de informații în cazul detectării unei erori în pachetul însuși în aval în receptor. Un expeditor trimite doar un cadru la un moment dat. După ce fiecare cadru a fost trimis, nu mai este trimis nimic până când expeditorul nu primește un semnal ACK. După ce destinatarul primește un cadru corect, acesta trimite un ACK către expeditor. Dacă ACK nu ajunge la expeditor înainte de un anumit timp (timeout), expeditorul retrimite din nou cadrul.

Expeditorul adaugă de obicei un număr la sfârșitul fiecărui cadru, pe care destinatarul îl folosește pentru a verifica pachetul pentru eventuale erori. Dacă nu se găsește nicio eroare, destinatarul trimite un ACK, altfel aruncă pachetul și nu trimite nimic, interpretând pachetul ca fiind „pierdut” și nu doar „deteriorat”.

O altă problemă apare atunci când ACK trimis de destinatar este deteriorat sau pierdut: în acest caz, expeditorul nu primește ACK, expiră și retrimite cadrul. Acest comportament creează o problemă destinatarului, care se găsește cu două copii ale aceluiași cadru, neștiind dacă ceea ce a primit este un cadru duplicat sau un cadru care conține aceleași date ca și cel anterior.

Faptul că mediul de transmisie poate avea timpi de latență lungi introduce o altă dificultate, deoarece ar putea exista ocazia în care expeditorul expiră înainte ca pachetul să ajungă la destinatar. În acest caz, expeditorul ar trimite pachetul înapoi și, în cazul în care acesta ajunge la timp, destinatarul s-ar regăsi cu două pachete din nou. Dacă acest lucru ar decide să răspundă cu câte un ACK pentru fiecare, expeditorul ar avea două ACK, ceea ce ar duce la presupunerea că al doilea ACK este cel al următorului cadru din secvență. Pentru a evita aceste probleme, cea mai comună soluție este definirea unui număr de secvență de 1 bit (care alternează întotdeauna) în antetul cadrului. Când destinatarul trimite un ACK, acesta include și numărul de ordine al următorului cadru pe care îl așteaptă. În acest fel, receptorul este capabil să recunoască cadre duplicate prin simpla verificare a bitului de secvență. Aceasta înseamnă că, dacă două cadre consecutive au același număr de secvență, acestea sunt duplicate și, prin urmare, al doilea este eliminat. Același lucru se poate spune și pentru ACK-uri.

Chiar și această metodă nu rezolvă toate problemele, deoarece poate apărea posibilitatea în care expeditorul trimite un cadru cu bit de secvență egal cu zero care nu este primit de receptor și imediat după aceea primește un ACK cu bit de secvență egal cu unul: în acest modul în care se pierd două cadre din cauza sincronizării celor două contoare. O posibilă soluție pentru a limita acest tip de erori este creșterea numărului de biți de secvență, chiar dacă acest lucru face doar apariția descrisă mai sus mai puțin probabilă.

În concluzie, metoda stop-și-așteptare ARQ este destul de ineficientă ( producție redusă) comparativ cu alte protocoale ARQ, în special datorită timpului care trece între trimiterea diferitelor cadre și, de asemenea, având în vedere faptul că există ACK-uri, timpul de terminare a comunicării se dublează, limitând efectiv capacitatea canalului de comunicare. S-au implementat diferite soluții cu Go-Back-N și protocoalele de repetare selectivă .

Go-Back-N

Go-Back-N ARQ este o instanță specifică a protocolului ARQ, în care procesul de trimitere continuă să trimită un număr de cadre specificate de o dimensiune a ferestrei chiar și fără a primi cadre ACK de la receptor.

Expeditorul și destinatarul trebuie să fie de acord în prealabil cu privire la semantica confirmărilor, deoarece sunt posibile trei moduri:

Primul, care utilizează ACK-uri individuale (sau selective ), atribuie semnificația „Am primit cadrul n ” către ACK ( n ) și solicită destinatarului să țină evidența numărului de secvență al următorului cadru pe care se așteaptă să îl primească și trimite acest lucru numărul, de fiecare dată când trimite un semnal ACK. Dacă un cadru trimis de expeditor nu ajunge la destinatar, expeditorul va înceta să trimită cadrele. Odată ce expeditorul a trimis toate cadrele în fereastra sa, își va da seama că toate cadrele de la prima pierdere au fost îndeplinite și va reveni la ultimul număr de secvență ACK primit de la procesul destinatarului și va începe să creeze din nou mesajul. , pornind chiar de la acel cadru.

Al doilea, care utilizează ACK cumulative și atribuie ACK ( n ) semnificația „Am primit toate cadrele până la n excluse”, funcționează similar cu primul, dar pe grupuri de cadre: acest lucru vă permite să economisiți pe ACK-uri trimise, dar în cazul unei erori, întreaga fereastră trebuie retransmisă.

În ultimă instanță, există ACK negativ , în care destinatarul notifică necesitatea retransmisiei unui singur cadru.

Dimensiunea ferestrei trebuie să fie un număr comparabil cu cel al secvenței pentru a permite verificarea transmiterii cu succes chiar și în cazul în care fiecare cadru este pierdut. Dacă se utilizează numere de secvență m- bit pentru ordonarea cadrelor, dimensiunea maximă a ferestrei va fi de 2m.

Metoda Go-Back N este una dintre cele mai eficiente modalități de a face o conexiune, deoarece, spre deosebire de a aștepta ca fiecare cadru să-și trimită propriul cadru ACK, conexiunea este utilizată mai mult, trimitând mai multe cadre în timp ce așteaptă. Cu alte cuvinte, în timpul de așteptare altfel, sunt trimise cadre suplimentare indiferent de rezultatul trimiterii anterioare. De fapt, sosirea unui ACK relativ la cadrul care ocupă capătul inferior al ferestrei, generează anularea acestui cadru din memoria tampon de transmisie și „derularea” consecventă a ferestrei cu o poziție înainte, pentru a permite trimiterea de încă un cadru.

Cu toate acestea, această metodă poate duce la trimiterea mai multor cadre (în cazul în care se pierde un cadru sau ACK). Pentru a evita acest lucru, se utilizează adesea metoda ARQ de repetare selectivă.

Ca o metodă suplimentară de optimizare, se poate introduce piggyback-ul care, în cazul fluxurilor de informații bidirecționale, constă în scrierea informațiilor de confirmare (ACK) ale unui cadru în antetul următorului cadru de informații care se deplasează în direcția opusă evitând latențele. numai la transmiterea ACK.

Repetare selectivă

Repetarea selectivă este o metodă similară cu Go-Back-N, cu diferența că aveți o fereastră de recepție în plus față de fereastra de transmisie.

Repetarea selectivă acceptă orice PDU valid în fereastra de recepție. Sosirea cadrelor corecte la receptor generează derularea ferestrei de recepție, sosirea ACK la transmițător generează derularea ferestrei de transmisie.

Dacă se utilizează ACK cumulative și temporizatoare asociate, expeditorul se comportă după cum urmează:

  • trimite Protocol Data Unit (PDU), făcând o copie
  • activează doar un ceas din PDU-uri, apoi se resetează la transmisii
  • Așteptă confirmarea (ACK)
  • Dacă există timeout, acesta repetă transmisiile PDU-urilor

Receptorul verifică corectitudinea PDU. Dacă este livrarea la nivelul superior, dacă nu este în ordine, fie o stochează, fie o elimină, în funcție de fereastra de recepție.

Dacă există o scurgere, protocolul se comportă ca protocolul Go-Back-N.

Are avantaje dacă timpul de călătorie dus -întors (RTT) este mai mic decât transmisia pe fereastră sau dacă în cazul pierderilor multiple se poate trimite o singură copie către receptor.

Elemente conexe

linkuri externe

Telematică Portal telematic : accesați intrări Wikipedia care vorbesc despre rețele, telecomunicații și protocoale de rețea