Esercizio - Collegamento di 35 km, stop-and-wait e Go-Back-N con pacchetto perso
In questa pagina 6
Testo. Collegamento punto-punto lungo km, bitrate al PHY Mbit/s, propagazione ideale ( m/s). Un file di byte è trasferito tra i due nodi in pacchetti da byte con intestazione di byte. Il tempo di elaborazione è trascurabile.
- Tempo totale di trasferimento (dalla trasmissione del primo bit alla ricezione dell'ultimo) e throughput con ARQ S&W, senza errori.
- Tempo totale e throughput con ARQ GBN (finestra di trasmissione , finestra di ricezione infinita, timeout s), supponendo che il -esimo pacchetto inviato da A si perda.
- Valore ottimo della finestra (GBN) per massimizzare il throughput.
Teoria usata: 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 →, 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 →; per gli ARQ visti dal lato dei sistemi di comunicazione anche 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 →.
Dati
- Payload per pacchetto bit; frame bit. Numero di pacchetti: .
- Tempo di trasmissione del frame: s.
- Propagazione: s.
- ACK trascurabile (nessun dato): ; tempo di ciclo s.
- Throughput = bit trasmessi sul collegamento (frame, intestazione compresa) per tempo totale; goodput = solo i bit di payload, per tempo totale. Con pacchetti: , .
Punto 1: stop-and-wait
Si manda un frame e si aspetta l'ACK: un frame ogni . L'ultimo frame parte a e arriva dopo : Perché: ogni frame, tranne l'ultimo, occupa un ciclo completo (trasmissione, andata, ritorno dell'ACK) prima che parta il successivo, quindi l'ultimo parte a ; per lui basta aspettare (l'ACK finale non serve, il tempo si ferma alla ricezione). Controllo con la teoria: , cioè a regime Mbit/s, poco meno del valore sotto perché l'ultimo frame non aspetta l'ACK. Throughput: Mbit/s. Goodput: Mbit/s (molto più basso del bitrate perché la finestra è e ).
Punto 2: Go-Back-N con e il -esimo pacchetto perso
Senza errori. Prima di tutto si controlla se la finestra basta per trasmettere in continuo: ✓ (equivalentemente ). Quindi il canale non resta mai vuoto: il tempo senza errori è s ms.
Con la perdita del pacchetto . Il pacchetto inizia a essere trasmesso a s. Il ricevitore ha finestra infinita: accetta e tiene in memoria i pacchetti che arrivano fuori ordine (non può consegnarli perché manca il ), e non invia ACK nuovi per il . Il mittente continua a trasmettere (la finestra – si riempie) e si ferma, perché il non può partire senza l'ACK del .
Il timer del pacchetto , contato dall'inizio della sua trasmissione, scade a s, mentre il è ancora in trasmissione (finisce a s). Il GBN riparte dal primo pacchetto non confermato: terminata la trasmissione del , A ritrasmette tutta la finestra ( pacchetti, s). Dopo, la ritrasmissione del è arrivata a destinazione, il ricevitore ha già in memoria – e invia un ACK cumulativo fino al (arriva a s, prima che la ritrasmissione finisca a s): la finestra scorre e A prosegue con senza pause.
Il totale è quindi quello senza errori più la ritrasmissione della finestra: Throughput: Mbit/s; goodput: Mbit/s.
Il costo della perdita è s: tutta una finestra ritrasmessa (anche pacchetti già ricevuti bene), il difetto del GBN rispetto al SR.
Punto 3: finestra ottima
Senza errori il throughput è massimo (trasmissione continua) se , cioè Con il canale sarebbe vuoto un po' (s: efficienza ); con è continuo. Non conviene andare oltre : non si guadagna nulla senza errori e, quando un pacchetto si perde, si ritrasmettono pacchetti, quindi una finestra più grande costa di più. La finestra ottima è . Senza errori l'utilizzazione del GBN è (con pacchetti in volo il trasmettitore lavora per su un ciclo di ): cresce linearmente con e arriva a per ; per vale , per vale .
Grafico interattivo: Utilizzazione ρ = min(1, N·t_F/t_G) del GBN senza errori, con t_F = 74,49 µs e t_G = 424,49 µs: sale linearmente fino a N = 5,70 e poi resta 1
Confronto con la soluzione ufficiale
- S&W: ms e throughput Mbit/s ✓. Goodput: ufficiale Mbit/s, ricalcolato Mbit/s ✗. Il rapporto goodput/throughput deve valere (come in GBN: ) e : non è coerente con il resto della soluzione, ed è probabilmente un refuso di battitura ().
- GBN: ms ✓; throughput Mbit/s ✓ e goodput Mbit/s ✓. Questo risultato richiede due ipotesi: finestra di ricezione infinita (il – non vanno ritrasmessi uno alla volta) e timer contato dall'inizio della trasmissione del pacchetto (se si contasse dalla fine, la scadenza sarebbe a s, A resterebbe fermo s e il totale sarebbe ms, non il valore ufficiale).
- ✓.
Errori comuni
- Dimenticare l'intestazione: usare byte (invece di ) per dà s, e tutti i valori cambiano.
- Calcolare invece di : i byte sono payload.
- Nel GBN ritrasmettere solo il pacchetto : in GBN si ripete tutta la finestra non confermata ( pacchetti).
- Confondere throughput e goodput: il primo conta anche l'intestazione, il secondo no.
(Verificato con Python: s, s, s; S&W ms, e Mbit/s; GBN: scadenza del timer a s, fine del pacchetto a s, totale ms, e Mbit/s; , .)
Versione ripasso
- s; s; s (ACK trascurabile).
- S&W: ms; Mbit/s; goodput Mbit/s.
- GBN : : continuo; senza errori ms. Pacchetto perso, timer da inizio trasmissione (s ): si ritrasmette la finestra – ( in più): ms; , goodput Mbit/s.
- ottimo: (più grande costa di più a ogni perdita).
- Ufficiale: coincide, tranne goodput S&W (refuso, corretto ).
- Errore tipico: intestazione dimenticata; ritrasmettere solo il pacchetto perso in GBN.