Protocolli ARQ - Stop-and-Wait, Go-Back-N e Selective Repeat
In questa pagina 9
In questa pagina 9
Il problema e la terminologia
Uno dei servizi del livello di collegamento è il controllo degli errori (Livello di collegamento e framingIl livello di collegamento (DLL) consegna un frame da un nodo a un nodo adiacente su un collegamento. Servizi: framing, accesso al mezzo (MAC) con indirizzi MAC a 48 bit, controllo di flusso, rilevazione e correzione degli errori. Si divide in DLC (framing, controllo di errore e di flusso) e MAC (accesso al mezzo condiviso). Il framing delimita i frame con un flag: nei protocolli a byte (flag di 8 bit, ESC) si usa il byte stuffing, in quelli a bit (flag 01111110) il bit stuffing, che inserisce uno 0 dopo ogni cinque 1 consecutivi.Livello di collegamento e framing →), in due forme:
- correzione con codici FEC (Forward Error Correction), cioè con i codici a blocco di Codifica di canale - codici a blocco, distanza minima, rivelazione e correzioneLa codifica di canale aggiunge ridondanza ai bit per rivelare o correggere gli errori del canale. Un codice a blocco $(n,k)$ trasforma $k$ bit in $n$ bit (rendimento $R_c=\frac kn$). Con la distanza di Hamming minima $d_{min}$ il codice rivela fino a $d_{min}-1$ errori e ne corregge $t=\left\lfloor\frac{d_{min}-1}2\right\rfloor$ (decodifica a minima distanza). Vale il limite di Singleton $d_{min}\le n-k+1$. Su un canale binario simmetrico con errore $p$, la probabilità di parola sbagliata è $P_w\le\sum_{i>t}\binom nip^i(1-p)^{n-i}$ e, con $p$ piccola, $P_{bit}\approx\frac{d_{min}}n\binom n{t+1}p^{t+1}$.Codifica di canale - codici a blocco, distanza minima, rivelazione e correzione →;
- rilevazione con un codice CRC (Cyclic Redundancy Check, un codice a blocco che sa solo rivelare gli errori) combinata con ARQ (Automatic Repeat reQuest): se un frame arriva sbagliato lo si rimanda.
Definizione (ARQ). (Lo stesso argomento, visto con gli strumenti della teoria dell'informazione, è in 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 →.) Metodo di controllo degli errori che usa riscontri (ACK) per ottenere una trasmissione affidabile su un servizio inaffidabile. Se il trasmettitore non riceve l'ACK, ritrasmette il pacchetto finché non lo riceve o supera un numero massimo di ritrasmissioni.
Terminologia:
- ACK (acknowledgment): il ricevitore comunica al trasmettitore che un frame è stato ricevuto correttamente.
- ACK selettivo (SACK): indica l'insieme dei frame ricevuti bene (per esempio con una maschera di bit).
- ACK cumulativo (): il frame è stato ricevuto bene e anche tutti i precedenti.
- NACK (negative acknowledgment): il ricevitore rifiuta il frame per ora (per esempio per overflow del buffer).
Schema: il trasmettitore ha un buffer di trasmissione (TX) e uno di ritrasmissione (RETX); il canale può sbagliare; il ricevitore controlla il frame (errore?) e rimanda ACK o NACK dopo un ritardo di retroazione; un buffer di risequenziamento rimette in ordine i pacchetti arrivati fuori sequenza prima di consegnarli ai livelli superiori.
Proprietà (requisiti di un protocollo ARQ). Accuratezza: i pacchetti devono essere consegnati al livello del ricevitore senza errori, una e una sola volta (niente duplicati). Efficienza: va evitata la perdita di capacità per ritrasmissioni inutili e il tempo sprecato ad aspettare pacchetti o ACK.
Deadlock e timeout
Problema (deadlock): il trasmettitore aspetta un ACK positivo. Se il frame non arriva, il ricevitore non può mandare nessun ACK e il trasmettitore può aspettare per sempre. È contro il requisito di efficienza. Soluzione: timeout dell'ACK. Dopo aver spedito il frame, il trasmettitore fa partire un conto alla rovescia entro cui l'ACK deve arrivare; se il timer scade prima, ritrasmette.
Duplicati e numero di sequenza
Problema (duplicati): il frame arriva bene e viene consegnato in alto; l'ACK si perde prima di raggiungere il trasmettitore; scade il timeout e il trasmettitore rimanda lo stesso frame; il ricevitore lo riceve ancora bene e lo consegna di nuovo: duplicato. È contro il requisito di accuratezza. Soluzione: numero di sequenza (Sequence Number, SN). Ogni nuovo frame inviato porta un identificatore; il ricevitore scarta i frame consecutivi con lo stesso SN (ma risponde comunque con l'ACK). L'intestazione del livello contiene allora campi come: tipo, SN, ACK, e in coda il CRC.
Grandezze usate nelle formule
| Simbolo | Significato |
|---|---|
| bitrate del livello di collegamento [bit/s] | |
| dimensione del frame: intestazione + payload [bit] | |
| tempo di trasmissione del frame | |
| tempo di trasmissione dei soli dati | |
| tempo di trasmissione dell'ACK | |
| ritardo di propagazione (in un verso) | |
| tempo per trasmettere un pacchetto e ricevere l'ACK (un ciclo, quindi il tempo di una trasmissione riuscita) | |
| tempo totale di trasmissione del frame (incluse le ritrasmissioni) | |
| probabilità che una trasmissione (frame o ACK) fallisca | |
| fattore di utilizzazione | |
| efficienza |
Definizione (utilizzazione ed efficienza). Con valore medio del tempo per consegnare con successo un frame: è la frazione di tempo in cui il trasmettitore sta mandando frame, la frazione in cui sta mandando dati utili (senza intestazione).
Se le ritrasmissioni sono indipendentila riuscita di un tentativo non cambia la probabilità degli altri, quindi la probabilità di k fallimenti seguiti da un successo è il prodottoIndipendenza di eventi → con probabilità di fallimento , il numero di fallimenti prima del primo successo è una variabile geometricaGeo(p) è il numero della prova in cui arriva il primo successo in prove indipendenti: P(X = n) = (1−p)^(n−1) p per n ≥ 1, P(X > n) = (1−p)^n (lunga attesa), media 1/p, varianza (1−p)/p², ed è senza memoria.Distribuzione geometrica → con ( fallimenti, ciascuno di probabilità , e poi un successo di probabilità ) e valore medioIl valore atteso E[X] = Σ x p_X(x) è la media dei valori di X pesata con le loro probabilità (esiste se la serie converge assolutamente); per una funzione g vale E[g(X)] = Σ g(x) p_X(x) senza trovare la legge di g(X), ed E è lineare: E[aX + bY + c] = aE[X] + bE[Y] + c.Valore atteso → Passaggio: per definizione (il termine vale e si è raccolto un fattore ). La somma è la derivata rispetto a della serie geometricaLe serie di cui si conosce il carattere e da usare come termine di paragone: geometrica (converge a 1/(1-q) se |q|<1), telescopiche (somma b_1 - lim b_n, come Mengoli), armonica generalizzata (1/n^alpha converge se e solo se alpha>1).Serie notevoli - geometrica, telescopica, armonica → (valida per ), cioè . Quindi . Controllo: con si hanno in media fallimenti per ogni frame consegnato; con in media fallimento.
Stop-and-Wait (S&W-ARQ)
Definizione (Stop-and-Wait). Il più semplice protocollo ARQ: il trasmettitore spedisce un frame alla volta e aspetta il riscontro prima di spedire il successivo. Semplice non vuol dire inefficace: sul collegamento punto-punto, dove la capacità del tubo è vicina a 1, è ottimo.
Stati del trasmettitore: pronto (arriva un frame dall'alto: lo invia, ne tiene una copia, avvia il timer) e attesa (se scade il timeout rimanda il frame e riavvia il timer; se arriva l' con checksum corretto ferma il timer, scarta la copia e torna pronto).
Numeri di sequenza e di ACK. Basta un bit (aritmetica modulo ). L'ACK numero annuncia che si aspetta il pacchetto : il numero di ACK annuncia sempre il numero di sequenza del prossimo pacchetto atteso. Se il pacchetto è arrivato bene il ricevitore manda (si aspetta l'); se è arrivato l' manda .
Esempio (ACK perso). Il trasmettitore manda il frame SN ; il ricevitore lo riceve e genera , che si perde. Scade il timeout, il trasmettitore rimanda il frame SN . Il ricevitore si aspetta l' ma riceve lo : riconosce un duplicato, non lo consegna in alto, ma rimanda (continua ad aspettare l'). Il trasmettitore riceve finalmente l' e può mandare il frame .
Efficienza dello Stop-and-Wait
Una trasmissione riuscita occupa : il frame (), la sua propagazione (), l'ACK () e la sua propagazione di ritorno (). Ogni fallimento costa esattamente se il timeout è il minimo possibile (). Quindi
Formula (Stop-and-Wait).
Nota: l'ultima trasmissione (quella riuscita) è l'unica che conta come «utile»; per questo nell'espressione compare un solo al numeratore.
Esempio. Mbit/s, kbit ( ms), ms, : ms. Senza errori (): : il collegamento è usato un sesto del tempo. Con : ms, . Il collo di bottiglia è la capacità del tubo: pacchetti potrebbero stare in volo, ma se ne spedisce uno.
Finestre scorrevoli (sliding window)
Lo S&W permette un solo frame alla volta. La soluzione è il pipelining: spedire più frame non riscontrati uno dopo l'altro. Quanti dipende dal prodotto banda-ritardo (Analisi delle prestazioni di reteLe prestazioni di una rete si misurano con tre famiglie di metriche: traffico (bitrate $R_0$ massimo del collegamento, throughput $S\le R_0$ dati consegnati con successo, goodput al livello applicazione), ritardo (end-to-end $d_{tot}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$ con $d_{trans}=L/R$ e $d_{prop}=d/v$; jitter; RTT) e capacità del tubo (BDP $=R\cdot$ ritardo, bit che riempiono il collegamento), più l'affidabilità (PER, PDR, PLR). Il throughput di un percorso è quello del collegamento collo di bottiglia, $\min$ dei bitrate, ricordando che i collegamenti condivisi dividono la capacità.Analisi delle prestazioni di rete →). Sono i protocolli a finestra scorrevole: Go-Back-N e Selective Repeat.
Trasmettitore. Ha una finestra di trasmissione di dimensione : con
- : SN del primo pacchetto non riscontrato;
- : SN del prossimo pacchetto che si può spedire;
- : SN dell'ultimo pacchetto spedibile con la finestra attuale;
- pacchetti sono in volo (spediti ma non ancora riscontrati; sono tenuti nel buffer del trasmettitore), e al massimo .
Ricevitore. Ha una finestra di ricezione di dimensione : , gli SN che può accettare (dipende dal buffer).
- : SN del prossimo pacchetto atteso in ordine;
- : numero massimo di pacchetti che si possono tenere nel buffer;
- i pacchetti vanno al livello superiore solo in sequenza, senza buchi: quelli nella finestra restano fermi finché non arriva il pacchetto con .
Operazioni.
- Se il trasmettitore riceve con la finestra scorre: (ACK cumulativo) e .
- Quando al ricevitore arriva il pacchetto con : se è fuori dalla finestra di ricezione, è scartato; se è memorizzato nel buffer; se , passa all'SN del primo pacchetto mancante della sequenza e il ricevitore consegna in alto i pacchetti fino al nuovo .
- Il ricevitore risponde con (l'ACK del prossimo pacchetto in ordine atteso).
Problema: che cosa succede se un frame della sequenza è corrotto? Molti frame arrivano al ricevitore prima che il trasmettitore se ne accorga. Il ricevitore scarta il frame corrotto: che fa dei successivi? Due soluzioni.
Go-Back-N (GBN-ARQ)
Definizione (Go-Back-N). Finestra di trasmissione , finestra di ricezione (il ricevitore può memorizzare un solo pacchetto, quindi nessuna ricezione fuori ordine). Ricevitore: scarta tutti i pacchetti fuori ordine. Trasmettitore: allo scadere di un timeout ritrasmette tutti i frame dal primo non riscontrato in poi (l'intera finestra). Era la versione antica di TCP.
Esempio (, il pacchetto SN 3 si perde). Il trasmettitore spedisce SN 1-5. Il ricevitore riceve 1 e 2 e risponde e (cioè «aspetto il 3»); il frame 3 è perso. Il trasmettitore, ricevuti gli ACK, fa scorrere la finestra e spedisce SN 6 e 7. Ma il ricevitore aspetta il 3: scarta 4, 5, 6, 7 (ognuno provoca un ripetuto, che le slide chiamano NACK(3)). Scade il timeout relativo a SN 3: il trasmettitore torna indietro e rimanda 3, 4, 5, 6, 7. Il ricevitore ora li riceve in ordine e risponde ,... Totale: ritrasmessi pacchetti, anche se 4-7 erano arrivati correttamente (inefficiente).
Efficienza. Perché la trasmissione sia continua (il trasmettitore non resta mai fermo ad aspettare), l'ACK del primo pacchetto della finestra deve tornare mentre sta ancora trasmettendo gli pacchetti: , cioè Anche il timeout deve valere almeno (ma non meno di ).
Se un pacchetto fallisce, il suo recupero costa . Ragione: dopo aver spedito il frame guasto il trasmettitore continua a mandare i successivi (la finestra è di frame, quindi secondi di trasmissione); solo allo scadere del timeout si accorge dell'errore e riparte dal frame guasto, rimandando l'intera finestra. Il tempo speso per ogni tentativo fallito è quindi e non , mentre l'ultima trasmissione, quella riuscita, conta solo . Con fallimenti in media:
Formula (Go-Back-N, finestra ).
Passaggio: si divide numeratore e denominatore per , , e si moltiplica sopra e sotto per : (nel denominatore si è raccolto in ). Senza errori () : GBN è efficiente anche su collegamenti con grande capacità del tubo; con errori è inefficiente perché ritrasmette pacchetti già arrivati bene.
Esempio. (tubo di pacchetti), : . Letto in tempo: , di cui sono ritrasmissioni di finestre intere.
Selective Repeat (SR-ARQ)
Definizione (Selective Repeat). Finestra di ricezione uguale a quella di trasmissione (): il ricevitore accetta e memorizza anche i pacchetti fuori ordine (fino a ) e li consegna ai livelli superiori solo quando ha una sequenza consecutiva. Per ogni frame ricevuto bene (nuovo o duplicato) manda l'ACK con l'SN del primo pacchetto mancante (ACK cumulativo). Allo scadere di un timeout ritrasmette solo il frame corrispondente. Si può tenere un timeout (RTO) per ogni pacchetto in volo, oppure uno solo per tutta la finestra, riavviato a ogni ritrasmissione.
Esempio (stesso scenario, ). SN 3 perso. Il ricevitore salva in coda 4, 5, 6, 7 e continua a rispondere . Al timeout il trasmettitore rimanda solo SN 3. Appena il 3 arriva, il ricevitore ha 3-7 consecutivi: li riordina e li consegna tutti, e risponde . Totale: ritrasmesso pacchetto.
Efficienza. Una ritrasmissione dura soltanto (non si rimanda la finestra): ogni fallimento costa e non , cioè nella formula di GBN si pone nel termine di costo:
Formula (Selective Repeat).
Con , SR GBN e è massimo. Con e SR ha throughput maggiore di GBN, perché i PDU ricevuti correttamente non vengono mai ritrasmessi.
Esempio. Stesso caso (): contro di GBN e di S&W (: ).
Confronto
Con capacità del tubo pacchetti, trascurando :
| Protocollo | |
|---|---|
| S&W | |
| GBN () | |
| SR |
Grafico interattivo: Efficienza ρ in funzione della probabilità di errore p, capacità del tubo C = 10 pacchetti (S&W, GBN con N = 10, SR)
Grafico interattivo: Efficienza ρ in funzione di p, capacità del tubo C = 100 pacchetti: S&W vale ≈ 0,01, GBN crolla già a p ≈ 10⁻², SR resta 1 − p
Il ruolo della finestra si vede anche senza errori (): la trasmissione è continua solo se . Per il trasmettitore spedisce frame, aspetta l'ACK per il resto del ciclo e lavora quindi per la frazione del tempo; da in poi e altra finestra non serve ( è lo Stop-and-Wait, ).
Grafico interattivo: Utilizzazione ρ = min(1, N/C) senza errori, con capacità del tubo C = 10 pacchetti: cresce linearmente fino a N = C, poi resta 1
Conclusioni:
- le prestazioni dipendono dalla capacità del tubo;
- SR è sempre il migliore; S&W è il più semplice e peggiora rapidamente al crescere del tubo, ma è ottimo se la capacità del tubo è vicina a 1; nei collegamenti punto-punto è spesso , perciò S&W è comune a livello di collegamento;
- gli ARQ si usano anche ad altri livelli (trasporto con TCP, applicazione): lì il tubo può essere molto più grande e si preferiscono GBN e SR;
- nei protocolli a finestra la finestra di trasmissione ottima è uguale alla capacità del tubo (in pacchetti); una finestra maggiore va bene se il ritmo di invio è regolato dall'arrivo degli ACK;
- per SR la finestra di ricezione dovrebbe essere la più grande possibile, ma servono buffer grandi (costosi).
Dimensione ottima del frame in Selective Repeat
Finora la dimensione del frame era un dato. In realtà la si può scegliere, e c'è un compromesso:
- un frame lungo ha poche intestazioni per bit di dati (overhead relativo basso), ma ha più probabilità di contenere almeno un bit errato, e quindi di essere ritrasmesso per intero;
- un frame corto viene perso più di rado, ma l'intestazione e il CRC pesano molto sul totale.
Esiste un valore che massimizza il throughput utile. Si calcola per Selective Repeat (in cui l'unico costo di un errore è la ritrasmissione del frame sbagliato).
Grandezze. : bitrate disponibile al livello di collegamento [bit/s]; : lunghezza del frame (dati più overhead) [bit]; : overhead del frame (intestazione più CRC ) [bit]; : probabilità di errore sul bit (si assume che gli errori sui bit siano indipendenti e identicamente distribuiti, i.i.d.); : probabilità di errore sul frame.
Un frame di bit è corretto se tutti i suoi bit lo sono; con errori sui bit indipendentila probabilità che tutti i bit siano giusti è il prodotto delle probabilità dei singoli bitIndipendenza di eventi → la probabilità è (è il caso «zero errori in prove» del modello binomialen prove indipendenti, ciascuna con probabilità di successo p: una sequenza con k successi ha probabilità p^k (1−p)^(n−k), e la probabilità di esattamente k successi è (n su k) p^k (1−p)^(n−k) (modello binomiale); il primo successo alla prova k ha probabilità (1−p)^(k−1) p.Prove ripetute e modello binomiale →). Per piccolo vale , il primo termine del binomio di NewtonLa formula per sviluppare (a+b)^n con i coefficienti binomiali.Binomio di Newton →: Con Selective Repeat il fattore di utilizzazione è e la frazione di bit utili è : il goodput è
Formula (goodput di Selective Repeat in funzione di ).
Il primo fattore cresce con (meno overhead relativo); il secondo decresce (più errori). Il prodotto ha quindi un massimo. Per trovarlo si applica il teorema di Fermatx0 è punto di minimo (massimo) relativo se f(x0) ≤ f(x) (≥) per gli x del dominio vicini a x0. I candidati sono gli estremi del dominio, i punti dove f non è derivabile e i punti interni con f'(x0) = 0 (punti critici o stazionari). Teorema di Fermat: in un punto interno di minimo o massimo relativo dove f è derivabile, f'(x0) = 0. È solo una condizione necessaria: x³ in 0.Massimi e minimi relativi e teorema di Fermat →: si deriva rispetto a e si cerca dove la derivata si annulla. Con si ha ; con la regola del prodottoDerivate delle funzioni elementari e delle loro inverse (arcsin, arctan, settcosh...) e regole di calcolo: linearità, prodotto (Leibniz), quoziente, funzione composta (regola della catena), funzione inversa, f(x)^g(x).Regole di derivazione →, e (derivata di un esponenzialeLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →; qui indica il logaritmo naturale, scritto «log» nelle slide): dove si è raccolto e si è portato tutto sul denominatore (il secondo addendo è ). Sostituendo : Il segno è quello del numeratore, perché , , . Ponendo (negativo, perché ) e imponendo si annulla il numeratore: , cioè (sviluppando il prodotto) . È un'equazione di secondo grado in : dividendo per diventa e la formula risolutiva dà Poiché , e la radice supera : la soluzione con il segno è negativa e va scartata, resta quella con il . Che sia un massimo lo si vede dal segno: il numeratore vale in ed è una parabola con coefficiente di negativo (); è quindi positivo fino alla radice positiva e negativo dopo. La derivata cambia segno da a : cresce e poi decresce, e è il massimo.
Formula (dimensione ottima del frame).
Passaggio dell'approssimazione: per lo sviluppo di Mac-LaurinTabella degli sviluppi di Mac-Laurin da sapere a memoria (e^x, sin, cos, log(1+x), (1+x)^alpha, arctan, sinh, cosh, tan) e regole per combinarli: algebra degli o piccoli, prodotti, funzioni composte, quanti termini tenere.Sviluppi di Mac-Laurin notevoli → dà , enorme rispetto a (per e : contro ). Allora e, dividendo per , resta .
Esempio (le curve delle slide). Overhead bit.
- : , , bit. L'approssimazione dà . Efficienza massima: .
- : bit (approssimazione: ), efficienza massima .
Grafico interattivo: Efficienza di Selective Repeat η(x) = (x − o)/x · (1 − Pb)^x con overhead o = 50 bit: massimo 0,62 in x = 250 bit per Pb = 0,001 e 0,18 in x = 100 bit per Pb = 0,01
Osservazioni: le prestazioni di un ARQ dipendono dalla dimensione del pacchetto; la scelta può essere adattiva in funzione del BER; i pacchetti corti sono preferibili quando il canale è soggetto a errori (BER alto), quelli lunghi quando il canale è buono. Nel grafico delle slide con MTU , e byte, a BER molto basso vince l'MTU maggiore (meno overhead), a BER alto vince il minore.
Altre formule delle slide per lo stop-and-wait. In funzione di come probabilità di errore sul frame, con dati , intestazione e ACK di bit (quindi ): Per GBN con timeout «stringente» (cioè ) la stessa formula di prima si riscrive , che per tende a , mentre per lo S&W anche senza errori. Per SR: e .
Esempio. Mbit/s, bit, bit, bit, ms, : bit, (). Stop-and-wait: (il denominatore è in bit: bit pesano più del frame). Selective Repeat: . Il collegamento è lo stesso, la differenza è tutta nell'attesa degli ACK.
Dove si usano. Selective Repeat: livello di collegamento dei sistemi mobili (5G e le generazioni precedenti 4G, LTE, UMTS). TCP moderno (NewReno): Go-Back-N con ACK selettivi (SACK) per recuperare più errori nello stesso RTT; i nuovi Wi-Fi (802.11ax, Wi-Fi 6) usano S&W più SR (LAN - Ethernet e Wi-FiUna LAN copre un'area limitata ed è definita dalla famiglia IEEE 802.x (802.3 Ethernet, 802.11 Wi-Fi), che divide il livello di collegamento in LLC e MAC. Ethernet è senza connessione, senza controllo di flusso e senza ACK; usa CSMA/CD 1-persistent; il frame va da 64 a 1518 byte (indirizzi di 6 byte, tipo/lunghezza, dati 46-1500, CRC di 4) e il minimo di 64 B deriva da $t_F\ge2\tau_p$. Dal 10 Mbit/s a coassiale fino al 10 Gbit/s su fibra, con switch full-duplex che eliminano le collisioni. Il Wi-Fi (802.11) usa CSMA/CA, ha i modi BSS (con access point) e ad hoc, EBSS con sistema di distribuzione; adatta il bitrate all'SNR; ha problemi del terminale nascosto e del terminale esposto, risolti in parte da RTS/CTS e NAV.LAN - Ethernet e Wi-Fi →). TCP usa ACK cumulativi nel funzionamento normale e una finestra di congestione che varia dinamicamente (mai oltre fissato dal progetto).
Numeri di sequenza e dimensione della finestra
Con bit per l'SN esistono numeri (che si riusano ciclicamente). Il ricevitore non deve confondere un pacchetto nuovo con uno vecchio ritrasmesso: per GBN la finestra di trasmissione può arrivare al massimo a ; per SR (la finestra di ricezione sulle slide è ). Per S&W basta .
Si vedano gli esercizi su ARQ a una e più tratte: Esercizio - Due collegamenti con switch, file da 1250 MB e ARQ stop-and-wait, Esercizio - Due collegamenti da 10 e 2 Gbps, 1000 pacchetti con S&W e GBN, Esercizio - Finestra scorrevole e buffer del ricevitore, Esercizio - Collegamento di 35 km, stop-and-wait e Go-Back-N con pacchetto perso. Per l'accesso al mezzo su collegamenti condivisi: Protocolli di accesso multiplo - ALOHA e CSMAQuando più stazioni condividono lo stesso mezzo serve un protocollo di accesso (MAC) che decida chi trasmette. Accesso casuale: ALOHA puro (si trasmette subito, tempo vulnerabile $2t_F$), slotted ALOHA (si parte solo a inizio slot, vulnerabile $t_F$), CSMA (si ascolta prima di parlare, vulnerabile $\tau_p$) con le varianti 1-persistent, non persistent e p-persistent, CSMA/CD (rileva la collisione mentre trasmette: serve $t_F\ge2\tau_p$, quindi un frame minimo) e CSMA/CA del Wi-Fi (IFS, finestra di contesa con backoff esponenziale, ACK, RTS/CTS e NAV). Accesso controllato: prenotazione, polling, token. Canalizzazione: FDMA, TDMA, OFDMA, CDMA, SDMA.Protocolli di accesso multiplo - ALOHA e CSMA →.
Versione ripasso
- Controllo degli errori. Il CRC rileva l'errore, l'ARQ (Automatic Repeat reQuest) rende affidabile il collegamento con i riscontri: se il trasmettitore non riceve l'ACK, ritrasmette (Livello di collegamento e framingIl livello di collegamento (DLL) consegna un frame da un nodo a un nodo adiacente su un collegamento. Servizi: framing, accesso al mezzo (MAC) con indirizzi MAC a 48 bit, controllo di flusso, rilevazione e correzione degli errori. Si divide in DLC (framing, controllo di errore e di flusso) e MAC (accesso al mezzo condiviso). Il framing delimita i frame con un flag: nei protocolli a byte (flag di 8 bit, ESC) si usa il byte stuffing, in quelli a bit (flag 01111110) il bit stuffing, che inserisce uno 0 dopo ogni cinque 1 consecutivi.Livello di collegamento e framing →). Alternativa: FEC, che corregge senza ritrasmettere.
- Riscontri. ACK, NACK (rifiuto per ora, es. buffer pieno). ACK cumulativo : il frame e tutti i precedenti sono ricevuti. ACK selettivo (SACK): l'insieme dei ricevuti, per esempio con una maschera di bit.
- Requisiti. Accuratezza: consegna corretta, una e una sola volta, in ordine (buffer di risequenziamento). Efficienza: niente ritrasmissioni inutili e niente tempi morti.
- Deadlock. Se il frame si perde, il ricevitore non manda ACK e il trasmettitore aspetterebbe per sempre: soluzione, il timeout.
- Duplicati. Se l'ACK si perde, il frame viene rimandato e consegnato due volte: soluzione, il numero di sequenza (SN). Il ricevitore scarta il duplicato ma rimanda l'ACK.
Grandezze
- bitrate; (intestazione più payload); ; .
- : il tempo di un ciclo completo, cioè l'RTT (Analisi delle prestazioni di reteLe prestazioni di una rete si misurano con tre famiglie di metriche: traffico (bitrate $R_0$ massimo del collegamento, throughput $S\le R_0$ dati consegnati con successo, goodput al livello applicazione), ritardo (end-to-end $d_{tot}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$ con $d_{trans}=L/R$ e $d_{prop}=d/v$; jitter; RTT) e capacità del tubo (BDP $=R\cdot$ ritardo, bit che riempiono il collegamento), più l'affidabilità (PER, PDR, PLR). Il throughput di un percorso è quello del collegamento collo di bottiglia, $\min$ dei bitrate, ricordando che i collegamenti condivisi dividono la capacità.Analisi delle prestazioni di rete →).
- probabilità che una trasmissione fallisca. Fallimenti prima del successo: geometrica, .
- Utilizzazione (frazione di tempo che manda frame); efficienza (frazione che manda payload).
- Capacità del tubo: pacchetti.
Stop-and-Wait
- Un frame alla volta, con stati pronto e attesa. SN a 1 bit. L'ACK numero annuncia il prossimo pacchetto atteso.
- Esempio (ACK perso). Il frame SN 0 arriva, l'ACK 1 si perde. Il timeout fa rimandare SN 0; il ricevitore lo riconosce come duplicato, non lo consegna e rimanda ACK 1.
- Formula. Ogni fallimento costa : , quindi .
- Esempio. Mbit/s, kbit ( ms), ms, : ms. Con : . Con : ms, . Il collo di bottiglia è il tubo: pacchetti potrebbero stare in volo, se ne spedisce uno.
Finestre scorrevoli (pipelining)
- Trasmettitore. Finestra di ampiezza , con ; pacchetti in volo, al massimo . Un ACK in quel range fa scorrere la finestra ().
- Ricevitore. Finestra . Fuori finestra: scartato. Oltre : bufferizzato. Uguale a : consegnato in alto fino al primo buco, poi .
Go-Back-N
- Finestra di ricezione : il ricevitore scarta tutti i fuori ordine. Al timeout il trasmettitore torna indietro e rimanda l'intera finestra.
- Esempio (, SN 3 perso). Arrivano 1 e 2; il 3 si perde; il ricevitore scarta 4, 5, 6, 7 con ACK ripetuti di 3. Al timeout si rimandano 3, 4, 5, 6, 7: 5 pacchetti ritrasmessi, cioè , anche se 4–7 erano arrivati bene.
- Trasmissione continua se , cioè . Timeout almeno (e almeno ).
- Formula. , quindi ( se ).
- Esempio. , : .
Selective Repeat
- Finestra di ricezione : salva i fuori ordine, li consegna solo in sequenza. Per ogni frame ricevuto manda ACK con il primo SN mancante. Al timeout rimanda solo il frame scaduto; il timer può essere per pacchetto o per finestra.
- Esempio (stesso scenario, ). Il ricevitore salva 4–7 e risponde ACK(3). Si rimanda solo il 3; poi arriva ACK(8). 1 pacchetto ritrasmesso.
- Formula. , quindi ed .
- Esempio (): , contro di GBN e di S&W con tubo di 10 pacchetti.
Confronto (tubo , )
| Protocollo | |
|---|---|
| S&W | |
| GBN () | |
| SR |
- SR è sempre il migliore. S&W è ottimo quando il tubo è vicino a 1, cioè nei collegamenti punto-punto, quindi è comune a livello di collegamento (anche nel Wi-Fi 802.11, LAN - Ethernet e Wi-FiUna LAN copre un'area limitata ed è definita dalla famiglia IEEE 802.x (802.3 Ethernet, 802.11 Wi-Fi), che divide il livello di collegamento in LLC e MAC. Ethernet è senza connessione, senza controllo di flusso e senza ACK; usa CSMA/CD 1-persistent; il frame va da 64 a 1518 byte (indirizzi di 6 byte, tipo/lunghezza, dati 46-1500, CRC di 4) e il minimo di 64 B deriva da $t_F\ge2\tau_p$. Dal 10 Mbit/s a coassiale fino al 10 Gbit/s su fibra, con switch full-duplex che eliminano le collisioni. Il Wi-Fi (802.11) usa CSMA/CA, ha i modi BSS (con access point) e ad hoc, EBSS con sistema di distribuzione; adatta il bitrate all'SNR; ha problemi del terminale nascosto e del terminale esposto, risolti in parte da RTS/CTS e NAV.LAN - Ethernet e Wi-Fi →). GBN e SR servono per tubi grandi, come a livello di trasporto con TCP.
- Finestra ottima di trasmissione uguale alla capacità del tubo. Per SR la finestra di ricezione dovrebbe essere la più grande possibile, ma i buffer costano.
- Con bit di SN: GBN ; SR .
Dimensione ottima del frame (SR)
- Frame lungo: overhead relativo basso, ma più probabilità di un bit errato, quindi più ritrasmissioni intere. Frame corto: pochi errori, ma intestazione e CRC pesano.
- Con lunghezza del frame, overhead, probabilità di errore sul bit: . Goodput .
- Massimo: (si prende la radice con ).
- Esempio ( bit): dà bit ed ; dà bit ed . Canale cattivo, frame corti; canale buono, frame lunghi.
Esempio di efficienza S&W e SR
- Mbit/s, , bit, ms, : , .
- S&W: : il ritardo bit pesa più del frame.
- SR: . Stesso collegamento, differenza tutta nell'attesa degli ACK.
Dove si usano
SR nel collegamento dei sistemi mobili (LTE, UMTS, 5G). TCP usa GBN con SACK (NewReno) e ACK cumulativi. Il Wi-Fi 6 (802.11ax) usa S&W con SR.
Errori tipici: usare GBN con (la trasmissione non è continua); dimenticare che conta solo il payload (); contare l'ultima trasmissione riuscita come ritrasmissione; confondere (si attende ) con «ricevuto »; dimenticare che in GBN si ritrasmette tutta la finestra.
Esercizi su questo argomento
- Esercizio - Collegamento di 35 km, stop-and-wait e Go-Back-N con pacchetto perso
- Esercizio - Collegamento Terra-Luna, RTT, BDP ed efficienza
- Esercizio - Due collegamenti con switch, file da 1250 MB e ARQ stop-and-wait
- Esercizio - Due collegamenti da 10 e 2 Gbps, 1000 pacchetti con S&W e GBN
- Esercizio - Finestra scorrevole e buffer del ricevitore
- Esercizio - Go-Back-N end-to-end su tre collegamenti
- Esercizio - Go-Back-N su ogni collegamento con finestre 15 e 6 e confronto con stop-and-wait
- Esercizio - Go-Back-N su un collegamento e stop-and-wait sull'altro, messaggio da 300 KB
- Esercizio - Quattro pacchetti, UDP e ARQ GBN o stop-and-wait su ogni collegamento o end-to-end
- Esercizio - Ritardo end-to-end su 10 collegamenti e BDP
- Esercizio - RTT e swnd, TCP da 100 KB e stop-and-wait su ogni collegamento
- Esercizio - Satellite geostazionario e bit in volo prima dell'ACK
- Esercizio - TCP con finestra del ricevitore di 4 segmenti su tre collegamenti
- Esercizio - TCP e stop-and-wait su tre collegamenti, messaggio da 100 kB
- Esercizio - throughput TCP di tre flussi con la formula del modello
- Esercizio - Trasferimento di 1,5 MB con handshake, stop-and-wait e limite di pacchetti per RTT