Tecniche ARQ e loro prestazioni
In questa pagina 9
Premessa: le ipotesi di lavoro (pacchetti di bit, probabilità , coda sempre piena, , , , , timeout stringente, ACK sempre corretti, ritrasmissioni illimitate) sono nella nota Livello di collegamento - LLC, MAC e ipotesi di lavoroIl livello di collegamento vede un canale fisico con errori residui e deve offrire ai livelli superiori un canale affidabile; ha due sottolivelli: LLC (correzione residua, ARQ con ACK/NACK) e MAC (chi trasmette, perché con più trasmettitori il rapporto giusto è la SINR e non l'SNR e la capacità cala). Per analizzarlo si usano ipotesi standard: pacchetti di $L$ bit, probabilità $p$ di pacchetto errato (i.i.d., $p=1-(1-P_{bit})^L\simeq LP_{bit}$), coda sempre piena (heavy traffic), tempo di pacchetto $t_P=L/R_b$, $t_{RTT}=t_P+t_A+2\tau_P$, timeout stringente, ACK/NACK senza errori, ritrasmissioni illimitate ($E[#tx]=1/(1-p)$). Le metriche sono throughput (frazione di tempo d'aria) e ritardo (fino alla ricezione corretta). Una collisione è la sovrapposizione, anche minima, di due pacchetti.Livello di collegamento - LLC, MAC e ipotesi di lavoro →. Qui si definiscono i tre protocolli e si calcolano throughput, ritardo e condizione di stabilità.
Vedi anche le trattazioni equivalenti Protocolli ARQ - Stop-and-Wait, Go-Back-N e Selective RepeatARQ (Automatic Repeat reQuest) rende affidabile un collegamento che sbaglia: il ricevitore conferma (ACK) i frame ricevuti bene, il trasmettitore ritrasmette allo scadere del timeout. Servono timeout (contro il deadlock) e numeri di sequenza (contro i duplicati). Con $t_G=t_F+2\tau_p+t_A$ e probabilità di errore $p$: Stop-and-Wait $\rho=\frac{t_F(1-p)}{t_G}$; Go-Back-N con finestra $N\ge t_G/t_F$ $\rho=\frac{1-p}{1+(N-1)p}$; Selective Repeat $\rho=1-p$. Efficienza $\eta=\rho,I/F$. La finestra ottima è la capacità del tubo in pacchetti. In Selective Repeat esiste anche una lunghezza ottima del frame: con overhead $o$ e probabilità di errore sul bit $P_b$, $x_{ott}\simeq\frac o2+\sqrt{o/P_b}$ (frame più corti se il canale sbaglia di più).Protocolli ARQ - Stop-and-Wait, Go-Back-N e Selective Repeat → (Internet, con timeout, finestre e numeri di sequenza) e Tecniche ARQ - stop-and-wait, go-back-N e selective repeatL'ARQ (automatic repeat request) usa un codice che rivela gli errori e fa ritrasmettere i pacchetti sbagliati, con conferme ACK/NACK. Con $p=1-(1-P_{bit})^L$ la probabilità che un pacchetto sia errato, $t_P$ il tempo di pacchetto, $t_A$ quello dell'ACK e $\tau_P$ il ritardo di propagazione: stop-and-wait $S=\frac{t_P(1-p)}{t_P+t_A+2\tau_P}$; go-back-N $S=\frac{(1-p),t_P}{1+(N-1)p}$ con $N-1=\left\lceil\frac{2\tau_P}{t_P+t_A}\right\rceil$; selective repeat $S=(1-p)\frac{t_P}{t_P+t_A}$. Il numero medio di trasmissioni di un pacchetto è $\frac1{1-p}$.Tecniche ARQ - stop-and-wait, go-back-N e selective repeat → (Ing. Elettronica).
ARQ e FEC
- FEC (Forward Error Correction): codici che riparano i pacchetti; a livello 2 il throughput è e il ritardo (nessuna interruzione del flusso);
- ARQ (Automatic Repeat reQuest): rivelazione d'errore (parità, CRC: Codici di Hamming e CRCIl codice di Hamming $(2^h-1,,2^h-h-1)$ ha come matrice di controllo $H$ che ha per colonne tutte le sequenze non nulle di $h$ bit: colonne distinte e non nulle danno $d_{min}=3$, la sindrome di un errore singolo è la colonna corrispondente, quindi corregge 1 errore (o rivela 2) ed è un codice perfetto ($2^{n-k}=1+n$). Per $(7,4)$ e BSC: errore non rivelato $\simeq7P^3(1-P)^4$, parola sbagliata dopo correzione $\simeq\binom72P^2(1-P)^5$. Il CRC è un codice lineare ciclico usato per sola rivelazione: la parola è $m(x)x^r$ più il resto della divisione per il polinomio generatore $g(x)$ di grado $r$ (modulo 2); rivela ogni errore a burst di lunghezza $\le r$.Codici di Hamming e CRC →) e richiesta di ritrasmissione dei pacchetti errati.
Spesso si combinano nell'Hybrid ARQ (HARQ = ARQ + FEC): pochi errori li corregge il codice, se sono troppi si rivela e si ritrasmette (come nel 5G).
Modello generale
Il trasmettitore invia pacchetti di dimensione uguale, con un identificatore univoco, in ordine, attraverso un canale rumoroso. L'asse dei tempi si discretizza spesso in slot: unità di tempo = tempo per trasmettere un pacchetto (). A ogni pacchetto il ricevitore risponde con:
- ACK se il pacchetto è corretto;
- NACK se è errato.
ACK e NACK sono pacchetti brevi inviati su un canale di ritorno separato. Il tempo tra la trasmissione di un pacchetto e la ricezione del suo ACK/NACK è il round-trip time: comprende il tempo di trasmissione del pacchetto e dell'ACK, il doppio del tempo di elaborazione e il doppio del ritardo di propagazione (con elaborazione trascurabile ). Il trasmettitore "sa" l'esito solo a dall'inizio della trasmissione.
Ipotesi (ripetute perché essenziali): traffico pesante (il trasmettitore ha sempre qualcosa da trasmettere), ACK/NACK senza errori, timeout stringente (la mancata ricezione equivale a un NACK), errori i.i.d. con probabilità per pacchetto. Con la teoria delle code: il throughput è la frazione di tempo d'aria , dove è il tempo medio totale speso per un pacchetto.
Stop-and-Wait (SW)
È la tecnica più semplice: dopo ogni pacchetto si aspetta l'esito. Un ACK fa avanzare l'identificatore, un NACK no (si rimanda lo stesso pacchetto).
Il tempo dedicato a un pacchetto è (ogni tentativo, riuscito o no, occupa un round-trip intero). Con (vedi la nota sulle ipotesi): Si noti che anche per il throughput non tende a : resta , perché il trasmettitore sta fermo ad aspettare l'ACK.
Esempio. Mbit/s, kbit ( ms), , ms: ms. Senza errori ; con : ms e .
Ritardo. Per SW il ritardo medio è facile: il tempo della trasmissione riuscita più la propagazione, più ogni ritrasmissione che costa un (cioè si consuma un round-trip per scoprire il fallimento): Esempio: con i dati sopra, : ms.
Go-Back-N (GBN)
Se il round-trip equivale a pacchetti, , GBN trasmette in continuazione (occupazione del canale più alta) senza aspettare l'ACK. Dopo un NACK ritrasmette tutto l'ultimo round-trip: il pacchetto errato e quelli che lo seguono (già spediti) vengono rimandati, anche se erano corretti. Esempio con (dalle slide): si trasmettono ; il NACK sul pacchetto arriva quando il è già in volo; si riparte da (), anche se il e il erano arrivati bene.
Per ogni esito cattivo si consuma un (si aggiunge, non si sostituisce, perché il canale era comunque occupato dal flusso continuo); quando l'esito è finalmente buono si spende solo : Il tempo medio per pacchetto con è (Controllo: .) Per il throughput tende al , a differenza di SW; per coincide con .
Esempio. Con e : . Il costo di ogni errore è pacchetti (invece di ): al crescere di GBN degrada: con e : .
Selective Repeat (SR)
Migliora GBN permettendo ritrasmissioni selettive dei soli pacchetti errati. Richiede di riordinare i pacchetti arrivati fuori sequenza (buffer al ricevitore) e di richiamare pacchetti anche vecchi (buffer al trasmettitore). Il tempo dedicato a un pacchetto è di nuovo per ogni trasmissione, buona o cattiva: , da cui Significa che se si trasmette sempre (il del tempo) una frazione della trasmissione è persa. È il massimo ottenibile con ritrasmissioni.
Confronto e scelta
- Il throughput ordinato è quando ( grande); con (collegamento breve, cioè e piccoli) le differenze si riducono: SW , e GBN peggiora al crescere di .
- SR richiede buffer di riordino al ricevitore e di riserva al trasmettitore; se GBN va già bene, la complessità aggiuntiva di SR può essere ingiustificata. Il numero conta: un errore isolato fa perdere 1 pacchetto in SR e tutto il round-trip ( pacchetti) in GBN.
- Efficienza. Dei bit trasmessi solo il payload è "utile": (con ), come nelle curve del corso, in funzione di con .
Il grafico mostra in funzione di con parametri nostri ( bit, ): in alto con round-trip lungo (), SW è bassissimo e GBN crolla già a ; SR regge fino a . Con round-trip corto () le curve sono molto vicine; GBN è la peggiore perché ritrasmette comunque più del necessario.
Grafico interattivo: Efficienza di SR, GBN e SW in funzione di P_bit con round-trip lungo (N=25, L=300 bit, payload 93 %): Stop-and-Wait resta a circa 0,04, GBN crolla già verso 10⁻⁴, SR regge fino a circa 10⁻³.
Grafico interattivo: Stesso confronto con round-trip corto (N=1,07): le tre curve sono vicine, SW parte da 0,87 e GBN è la peggiore perché ritrasmette più del necessario.
Attenzione: i valori sono solo massimi, serve la stabilità
Tutte le formule precedenti valgono sotto traffico pesante (coda sempre piena): sono il massimo throughput raggiungibile. Se il traffico offerto è basso, il sistema semplicemente fa passare ciò che arriva. Quindi prima di usarle bisogna controllare la stabilità della coda ARQ: il throughput vale , dove è il tasso di arrivo e la velocità di servizio effettiva. Se la coda è stabile e (tutto ciò che entra, esce); se è instabile e il throughput è quello massimo di prima (con ).
Servizio per pacchetto (tempo che il pacchetto occupa il trasmettitore, ritrasmissioni incluse), con e :
- SW: , : , .
- GBN: con probabilità , con probabilità (si riparte da capo, con distribuita come ): , quindi ( di prima) e .
- SR: con un trucco ispirato all'ALOHA: il tasso totale di pacchetti trasmessi è , e la "velocità di servizio" è la velocità totale del canale, : stabile se , cioè .
Ricordare anche che il ritardo non è : è per ogni ritrasmissione più per la trasmissione che riesce, come visto sopra (per SR e GBN a coda vuota, ogni ritrasmissione costa : ).
Esempio completo (esercizio del corso, Esercizio - Throughput di SR-ARQ e stabilità della coda ARQ): canale a Mbit/s, , payload bit più intestazione di byte (). , ms, e la velocità di servizio SR è pkt/s ( pkt/s al lordo degli errori). Con pkt/s: stabile, throughput kbit/s. Con pkt/s: instabile (): il throughput è , cioè Mbit/s (il traffico offerto sarebbe Mbit/s).
Errori comuni
- Applicare senza controllare .
- Dire che per il throughput di Stop-and-Wait tende a : tende a .
- Dimenticare che in GBN ogni errore costa un round-trip intero ( pacchetti), non un solo pacchetto.
- Confondere il throughput (frazione di tempo d'aria) con l'efficienza (solo payload) e con il ritardo (non è ).
- Usare dimenticando e .
Collegamenti
Per i codici che rendono possibile la rivelazione: Codici di Hamming e CRCIl codice di Hamming $(2^h-1,,2^h-h-1)$ ha come matrice di controllo $H$ che ha per colonne tutte le sequenze non nulle di $h$ bit: colonne distinte e non nulle danno $d_{min}=3$, la sindrome di un errore singolo è la colonna corrispondente, quindi corregge 1 errore (o rivela 2) ed è un codice perfetto ($2^{n-k}=1+n$). Per $(7,4)$ e BSC: errore non rivelato $\simeq7P^3(1-P)^4$, parola sbagliata dopo correzione $\simeq\binom72P^2(1-P)^5$. Il CRC è un codice lineare ciclico usato per sola rivelazione: la parola è $m(x)x^r$ più il resto della divisione per il polinomio generatore $g(x)$ di grado $r$ (modulo 2); rivela ogni errore a burst di lunghezza $\le r$.Codici di Hamming e CRC →. Per l'accesso condiviso, dove le ritrasmissioni nascono dalle collisioni: Accesso al mezzo - ALOHA, CSMA e protocolli deterministiciQuando più nodi condividono il canale serve un protocollo di accesso (MAC): deterministico (TDMA, FDMA, SDMA, CDMA), a richiesta (polling, token) o casuale (ALOHA, CSMA). Con $N_u$ utenti, arrivi di Poisson $\lambda$ ciascuno e pacchetti da $t_P=L/R_b$: TDMA stabile se $N_u\lambda t_P<1$, $m_{delay}=\frac{N_ut_P}{2(1-\rho)}+t_P+\tau_P$; FDMA ha ritardo maggiore di $t_P(N_u/2-1)$. ALOHA puro: intervallo di vulnerabilità $2t_P$, $S=Ge^{-2G}$, $S_{max}=1/(2e)\simeq0{,}18$ per $G=1/2$; slotted ALOHA: vulnerabilità $t_P$, $S=Ge^{-G}$, $S_{max}=1/e\simeq0{,}37$. ALOHA è intrinsecamente instabile (oltre il massimo il throughput va a $0$). Il carrier sense riduce la vulnerabilità a $\tau_P$ (CSMA), CD interrompe le collisioni, CA (RTS/CTS) è per il wireless; la persistenza (1-, non-, $p$-persistente) può portare il throughput verso il $100,%$.Accesso al mezzo - ALOHA, CSMA e protocolli deterministici →. Altri esercizi: Esercizio - Pacchetti su BSC, stabilità e traffico offerto.
Versione ripasso
ARQ e FEC: con l'ARQ (Codici di Hamming e CRCIl codice di Hamming $(2^h-1,,2^h-h-1)$ ha come matrice di controllo $H$ che ha per colonne tutte le sequenze non nulle di $h$ bit: colonne distinte e non nulle danno $d_{min}=3$, la sindrome di un errore singolo è la colonna corrispondente, quindi corregge 1 errore (o rivela 2) ed è un codice perfetto ($2^{n-k}=1+n$). Per $(7,4)$ e BSC: errore non rivelato $\simeq7P^3(1-P)^4$, parola sbagliata dopo correzione $\simeq\binom72P^2(1-P)^5$. Il CRC è un codice lineare ciclico usato per sola rivelazione: la parola è $m(x)x^r$ più il resto della divisione per il polinomio generatore $g(x)$ di grado $r$ (modulo 2); rivela ogni errore a burst di lunghezza $\le r$.Codici di Hamming e CRC → per la rivelazione con CRC) il ricevitore risponde a ogni pacchetto con ACK (corretto) o NACK (errato) e il trasmettitore ritrasmette. Con la FEC (Codici a blocco - distanza minima, rivelazione e correzioneLa codifica di canale aggiunge ridondanza in modo mirato: $k$ bit di informazione diventano una parola di codice di $n>k$ bit scelta tra $2^k$ parole ammesse. Se la parola ricevuta non è una parola di codice l'errore è rivelato (e si può chiedere la ritrasmissione, ARQ) oppure corretto (FEC). La qualità dipende dalla distanza minima di Hamming $d_{min}$: si rivelano fino a $d_{min}-1$ errori e se ne correggono $t<d_{min}/2$, ma non contemporaneamente. Per un BSC con $P_{bit}<1/2$ la decisione ottima ML coincide con quella a distanza minima. Limite di Hamming: $k/n\le1-\frac1n\log_2\sum_{r=0}^t\binom nr$.Codici a blocco - distanza minima, rivelazione e correzione →) i pacchetti si riparano senza ritrasmettere. L'Hybrid ARQ unisce le due cose: pochi errori li corregge il codice, se sono troppi si ritrasmette.
Round-trip e parametri: Ipotesi (dalla nota Livello di collegamento - LLC, MAC e ipotesi di lavoroIl livello di collegamento vede un canale fisico con errori residui e deve offrire ai livelli superiori un canale affidabile; ha due sottolivelli: LLC (correzione residua, ARQ con ACK/NACK) e MAC (chi trasmette, perché con più trasmettitori il rapporto giusto è la SINR e non l'SNR e la capacità cala). Per analizzarlo si usano ipotesi standard: pacchetti di $L$ bit, probabilità $p$ di pacchetto errato (i.i.d., $p=1-(1-P_{bit})^L\simeq LP_{bit}$), coda sempre piena (heavy traffic), tempo di pacchetto $t_P=L/R_b$, $t_{RTT}=t_P+t_A+2\tau_P$, timeout stringente, ACK/NACK senza errori, ritrasmissioni illimitate ($E[#tx]=1/(1-p)$). Le metriche sono throughput (frazione di tempo d'aria) e ritardo (fino alla ricezione corretta). Una collisione è la sovrapposizione, anche minima, di due pacchetti.Livello di collegamento - LLC, MAC e ipotesi di lavoro →): traffico pesante, ACK/NACK senza errori, timeout stringente, errori indipendenti con probabilità per pacchetto.
Throughput massimo (frazione di tempo d'aria, coda sempre piena):
- Stop-and-Wait: ogni tentativo occupa un round-trip, quindi . Anche con il throughput resta .
- Esempio: Mbit/s, kbit ( ms), , ms, quindi ms. Senza errori ; con , ms e .
- Go-Back-N: ogni esito cattivo costa un intero ( pacchetti). Per il throughput tende al .
- Esempio: , : . Con : .
- Selective Repeat: si ritrasmettono solo i pacchetti errati; serve un buffer di riordino al ricevitore e uno di riserva al trasmettitore. , quindi , il massimo ottenibile con ritrasmissioni.
Ritardo medio (coda vuota), con e ogni ritrasmissione che costa :
- Esempio, con i dati dell'esempio SW e : ms.
Stabilità della coda ARQ: i valori sopra sono massimi. Il throughput vale , con (la coda è stabile e il throughput è ). Le velocità di servizio, con :
- SW: .
- GBN: .
- SR: .
Esempio completo (Esercizio - Throughput di SR-ARQ e stabilità della coda ARQ): canale a Mbit/s, , bit. Si ha , ms, pkt/s. Con pkt/s il throughput è kbit/s. Con pkt/s il sistema è instabile e il throughput è , cioè Mbit/s (traffico offerto Mbit/s). Vedi anche Esercizio - Pacchetti su BSC, stabilità e traffico offerto.
Efficienza (solo payload): , con e . Con bit e payload , SR regge fino a circa di , mentre GBN con crolla già verso . Accesso condiviso e ritrasmissioni per collisione: Accesso al mezzo - ALOHA, CSMA e protocolli deterministiciQuando più nodi condividono il canale serve un protocollo di accesso (MAC): deterministico (TDMA, FDMA, SDMA, CDMA), a richiesta (polling, token) o casuale (ALOHA, CSMA). Con $N_u$ utenti, arrivi di Poisson $\lambda$ ciascuno e pacchetti da $t_P=L/R_b$: TDMA stabile se $N_u\lambda t_P<1$, $m_{delay}=\frac{N_ut_P}{2(1-\rho)}+t_P+\tau_P$; FDMA ha ritardo maggiore di $t_P(N_u/2-1)$. ALOHA puro: intervallo di vulnerabilità $2t_P$, $S=Ge^{-2G}$, $S_{max}=1/(2e)\simeq0{,}18$ per $G=1/2$; slotted ALOHA: vulnerabilità $t_P$, $S=Ge^{-G}$, $S_{max}=1/e\simeq0{,}37$. ALOHA è intrinsecamente instabile (oltre il massimo il throughput va a $0$). Il carrier sense riduce la vulnerabilità a $\tau_P$ (CSMA), CD interrompe le collisioni, CA (RTS/CTS) è per il wireless; la persistenza (1-, non-, $p$-persistente) può portare il throughput verso il $100,%$.Accesso al mezzo - ALOHA, CSMA e protocolli deterministici →.
Errori tipici:
- Applicare senza controllare .
- Dire che per il throughput di Stop-and-Wait tende a : tende a .
- Dimenticare che in GBN ogni errore costa un round-trip intero ( pacchetti), non un solo pacchetto.
- Confondere il throughput con l'efficienza (solo payload) e con il ritardo.
- Usare dimenticando e .