Esercizio - TCP e stop-and-wait su tre collegamenti, messaggio da 100 kB
In questa pagina 6
Testo. Una connessione TCP è stabilita tra il server e l'host (si trascura ogni altro traffico) attraverso con Mbit/s, ms; Mbit/s, ms; Mbit/s, ms. byte, segmenti di apertura e ACK di lunghezza trascurabile, come le intestazioni di tutti i livelli; iniziale B, kB, MB.
- Trovare il RTT e il valore della finestra che permette un flusso continuo di segmenti tra e .
- Calcolare il tempo totale di trasferimento di un messaggio di kB (dall'apertura della connessione alla ricezione dell'ultimo ACK), con i dati che partono il prima possibile.
- Ripetere il calcolo supponendo che, invece di TCP, sul livello di collegamento di ciascun collegamento si usi l'ARQ stop-and-wait.
Teoria usata: TCP - controllo di congestioneLa congestione nasce quando collegamenti veloci alimentano un collegamento lento: le code dei router si riempiono, i pacchetti si perdono o ritardano e, nel caso peggiore, la rete collassa (quasi solo ritrasmissioni). TCP controlla la propria finestra di congestione cwnd con il feedback delle perdite (timeout o tre ACK duplicati): slow start (cwnd raddoppia a ogni RTT) fino alla soglia ssthresh, poi congestion avoidance (+1 MSS per RTT); a ogni perdita ssthresh = W/2. Le varianti si distinguono per come reagiscono ai tre dupACK: Tahoe riparte da cwnd = 1 dopo la ritrasmissione rapida; Reno usa il fast recovery (ssthresh = cwnd/2, cwnd = ssthresh + 3, +1 per ogni altro dupACK); NewReno gestisce gli ACK parziali e recupera più perdite nella stessa finestra; SACK riscontra i blocchi ricevuti e ritrasmette solo quello che manca.TCP - controllo di congestione →, TCP - connessione, affidabilità e controllo di flussoTCP (Transmission Control Protocol) è il protocollo di trasporto con connessione e affidabile: trasforma il servizio senza connessione e inaffidabile di IP in un flusso di byte ordinato, senza errori né duplicati. La connessione si apre con l'handshake a tre vie (SYN, SYN+ACK, ACK) e si chiude con tre o quattro segmenti (FIN). I byte sono numerati: il numero di sequenza è quello del primo byte del segmento, il numero di ACK (cumulativo) è il prossimo byte atteso. Il mittente può inviare $\min(\text{rwnd},\text{cwnd})$ byte non ancora confermati; rwnd (finestra del ricevitore, in un campo di 16 bit) è il controllo di flusso. L'errore si gestisce con checksum, ACK, timeout di ritrasmissione (RTO) e ritrasmissione rapida dopo tre ACK duplicati. Per usare tutto il canale la finestra deve valere almeno il prodotto banda-ritardo (BDP); il throughput massimo è $\text{MSS}\cdot W_{\max}/\text{RTT}$.TCP - connessione, affidabilità e controllo di flusso →, 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 →, 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 →. Convenzione di calcolo (apertura a , round a distanza di un RTT, flusso continuo): vedi Esercizio - TCP, slow start e messaggio da 18 kB su un collegamento da 8 Mbps.
Dati
bit. Tempi di trasmissione: ms, ms, ms. Il collegamento 3 è il collo di bottiglia ( Mbit/s). ms. Segmenti: . segmenti.
(1) RTT e finestra per il flusso continuo
Un segmento attraversa i tre collegamenti (trasmissione e propagazione su ciascuno), l'ACK torna con le sole propagazioni: Il flusso è continuo se, quando torna il primo ACK, la finestra è ancora in trasmissione sul collo di bottiglia: : (Equivale a dire che la finestra deve contenere il prodotto banda-ritardo del cammino, bit segmenti.)
(2) TCP: tempo totale
Apertura: ms. Finestre: slow start (si ferma a ), poi avoidance
| round | inizio (ms) | segmenti inviati (totale) | continuo? | |
|---|---|---|---|---|
| 1 | 1 | 40 | 1 | no |
| 2 | 2 | 86,5 | 3 | no |
| 3 | 4 | 133 | 7 | no |
| 4 | 8 | 179,5 | 15 | no |
| 5 | 9 | 226 | 24 | no () |
| 6 | 10 | 272,5 | sì () |
I primi cinque round portano segmenti ( è una somma geometrica1 + 2 + 4 + ... + 2^k = 2^(k+1) − 1, perché ogni termine è il doppio del precedenteSerie notevoli - geometrica, telescopica, armonica →; poi la crescita lineare a round). Dal sesto round la finestra supera e il collegamento 3 non si ferma più: restano segmenti, uno ogni ms a partire da ms. L'ultimo inizia dopo ms, a ms, e l'ACK torna un RTT dopo: Lettura dei termini: ms l'apertura; i primi cinque round; la distanza tra il primo e l'ultimo dei segmenti; l'ultimo ACK.
Grafico interattivo: Finestra di invio (segmenti) nei round dopo l'apertura (40 ms; 1 round = 46,5 ms): dal round 6 la finestra (10) supera 9,3 e il flusso sul collegamento 3 è continuo
(3) Stop-and-wait su ogni collegamento
Qui non c'è finestra TCP: ogni collegamento ha il proprio ARQ stop-and-wait (trasmetto un pacchetto, aspetto il suo ACK, solo allora trasmetto il successivo, 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 →). Ogni collegamento può quindi emettere un pacchetto ogni Il più lento è il collegamento 3: il ritmo del trasferimento è un pacchetto ogni ms, mentre gli altri due collegamenti sono più veloci e i pacchetti si accodano in (buffer supposti sufficienti).
Il primo pacchetto arriva davanti al collegamento 3 a ms e da lì i pacchetti partono ogni ms: l'ultimo () parte a ms, viene trasmesso in ms, si propaga ms e arriva a a ms; l'ACK ripercorre i tre collegamenti in ms. In formula, come per il TCP si arriva fino all'ultimo ACK: Con la finestra TCP lo stesso trasferimento richiede ms: lo stop-and-wait tiene il collo di bottiglia occupato per soli ms ogni .
(Verificato con Python: simulatore a eventi per il TCP, ms; simulazione per-collegamento dello stop-and-wait con ACK trascurabili, consegna a a ms e ultimo ACK in a ms.)
Confronto con la soluzione ufficiale
Le slide danno MSS, ms (con " segmenti inviati in modo continuo") e ms: tutto coincide. Osservazione: nello stop-and-wait per collegamento l'ACK finale non arriva davvero fino ad (ogni collegamento ha i propri ACK); il risultato ufficiale conta comunque il ritorno dell'ultimo ACK lungo i tre collegamenti ( ms) per omogeneità con il caso TCP. Se si volesse il tempo di consegna a sarebbe ms.
Errori comuni
- Calcolare con il tempo di trasmissione sul collegamento 1 ( ms) invece che sul collo di bottiglia ( ms): la soglia sarebbe segmenti, sbagliata.
- Dopo la soglia continua, contare ancora un RTT per finestra: i segmenti rimasti escono uno ogni .
- Nello stop-and-wait usare dell'intero cammino come passo tra i pacchetti: il passo è il ciclo del collegamento più lento, ms.
- Fermare la crescita a segmenti pensando a kB: kB sono segmenti.
Versione ripasso
Dati. : Mbit/s ms, Mbit/s ms, Mbit/s ms; B bit; , , ms (collo di bottiglia: collegamento 3); ms; kB segmenti; kB segmenti; convenzione di Esercizio - TCP, slow start e messaggio da 18 kB su un collegamento da 8 Mbps (TCP - controllo di congestioneLa congestione nasce quando collegamenti veloci alimentano un collegamento lento: le code dei router si riempiono, i pacchetti si perdono o ritardano e, nel caso peggiore, la rete collassa (quasi solo ritrasmissioni). TCP controlla la propria finestra di congestione cwnd con il feedback delle perdite (timeout o tre ACK duplicati): slow start (cwnd raddoppia a ogni RTT) fino alla soglia ssthresh, poi congestion avoidance (+1 MSS per RTT); a ogni perdita ssthresh = W/2. Le varianti si distinguono per come reagiscono ai tre dupACK: Tahoe riparte da cwnd = 1 dopo la ritrasmissione rapida; Reno usa il fast recovery (ssthresh = cwnd/2, cwnd = ssthresh + 3, +1 per ogni altro dupACK); NewReno gestisce gli ACK parziali e recupera più perdite nella stessa finestra; SACK riscontra i blocchi ricevuti e ritrasmette solo quello che manca.TCP - controllo di congestione →).
(1) ms. Flusso continuo se : , cioè segmenti (il BDP del cammino).
(2) TCP. Apertura ms; finestre (slow start), (avoidance), , ognuna un RTT dopo la precedente (inizi ; ; ; ; ; ms). I primi cinque round portano segmenti (, non continui); dal round 6 () il collegamento 3 è sempre occupato, con i segmenti rimasti ogni ms.
(3) Stop-and-wait su ogni collegamento (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 →). Ciclo di ogni collegamento : , , ms. Il passo è quello del più lento, ms; i pacchetti si accodano in . La consegna a avviene a ms (l'ultimo ACK conta i ms di ritorno, come nelle slide, per omogeneità con TCP).
Errori: soglia con invece del collo di bottiglia ( segmenti); un RTT per finestra dopo la soglia; passo S&W uguale al RTT totale; kB letti come segmenti.