Esercizio - TCP, slow start e 120 segmenti su un collegamento da 32 Mbps
In questa pagina 5
Testo. deve trasferire con TCP una sequenza di segmenti di dimensione massima a , su un collegamento con Mbit/s e ms. byte, intestazioni trascurabili, connessione aperta da con segmenti di apertura trascurabili, ACK trascurabili, MSS. Calcolare il tempo totale di trasferimento.
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 →. La convenzione di calcolo (apertura a , round a distanza di un RTT, flusso continuo) è spiegata in Esercizio - TCP, slow start e messaggio da 18 kB su un collegamento da 8 Mbps.
Dati
bit, ms, ms, apertura ms.
Quando il flusso diventa continuo. Una finestra di segmenti occupa di trasmissione; il primo ACK torna dopo . Il flusso è continuo se , cioè Con segmenti la finestra dura ms e lascia il collegamento fermo per ms; con dura ms : da qui non ci sono più pause.
Finestre round per round
: slow start (il raddoppio si ferma al raggiungimento di ), poi congestion avoidance
| round | inizio (ms) | segmenti inviati (totale) | (ms) | continuo? | |
|---|---|---|---|---|---|
| 1 | 1 | 3,00 | 1 | 0,25 | no |
| 2 | 2 | 6,25 | 3 | 0,50 | no |
| 3 | 4 | 9,50 | 7 | 1,00 | no |
| 4 | 8 | 12,75 | 15 | 2,00 | no |
| 5 | 9 | 16,00 | 24 | 2,25 | no |
| 6 | 10 | 19,25 | 34 | 2,50 | no |
| 7 | 11 | 22,50 | 45 | 2,75 | no |
| 8 | 12 | 25,75 | 57 | 3,00 | no |
| 9 | 13 | 29,00 | 70 | 3,25 | sì |
L'inizio del round è ms. Nei primi otto round si inviano segmenti: (somma geometrica1 + 2 + 4 + ... + 2^k = 2^(k+1) − 1, perché ogni termine è il doppio del precedenteSerie notevoli - geometrica, telescopica, armonica →) e (somma dei primi numeri naturali1 + 2 + ... + n = n(n+1)/2Sommatorie →: ). Restano segmenti, tutti inviati in modo continuo a partire dal round (qui e continuerà a crescere, quindi non ci sono più pause).
Grafico interattivo: Finestra cwnd all'inizio di ogni round (segmenti)
Tempo totale
Il round inizia a ms. I segmenti restanti escono uno ogni ms: l'ultimo comincia la trasmissione ms dopo, a ms, termina a ms, arriva a dopo altri ( ms) e il suo ACK torna a ms. In formula: (L'ultimo termine è l'ultimo ACK; è la durata di trasmissione dei segmenti rimasti.)
(Verificato con Python con un simulatore a eventi: ms.)
Confronto con la soluzione ufficiale
Le slide danno ms, con la scomposizione e "[Continuous transmission]": coincide, e nel grafico indicano lo stesso punto di inizio del flusso continuo ().
Errori comuni
- Sbagliare la soglia del flusso continuo: si confronta con il RTT intero (), non con .
- Continuare la serie con il raddoppio dopo .
- Dimenticare che, entrata nel flusso continuo, la finestra non limita più: il tempo dei segmenti rimasti è (collo di bottiglia), non RTT.
Versione ripasso
Dati. Mbit/s, ms, B, MSS, 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 →).
- ms; ms; apertura ms.
- Flusso continuo se , cioè .
- Finestre: slow start , poi avoidance . Il round inizia a ms.
| round | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | |
| inizio (ms) | 3 | 6,25 | 9,5 | 12,75 | 16 | 19,25 | 22,5 | 25,75 | 29 |
| inviati | 1 | 3 | 7 | 15 | 24 | 34 | 45 | 57 | 70 |
Nei primi otto round segmenti, nessuno continuo (); dal round (inizio ms) il flusso è continuo con i segmenti rimasti. (l'ultimo è l'ultimo ACK; coincide con le slide).
Errori: soglia confrontata con invece del RTT intero; raddoppio oltre ; RTT invece di .