Esercizio - TCP con finestra del ricevitore di 4 segmenti su tre collegamenti
In questa pagina 6
Testo. Catena con collegamenti bidirezionali, stessa capacità nei due versi, e ritardi di propagazione . Tra e c'è una connessione TCP con B, già a regime. Si supponga minore di e pari a MSS, quindi .
- Calcolare il tempo totale (dall'invio del primo segmento alla ricezione dell'ultimo ACK) per trasferire un flusso di byte prodotto dall'applicazione, con intestazioni IP , TCP e di collegamento , nessun errore, nessun traffico concorrente, ACK di lunghezza trascurabile.
- Quanto deve valere perché il flusso di segmenti sul collegamento 1 sia continuo?
Teoria usata: 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 →, 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 →, 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 →.
Modello e simboli
Il TCP a regime con finestra fissa si comporta come un protocollo a finestra scorrevole (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 →): il mittente può avere al massimo segmenti non confermati; ogni ACK che torna fa partire un segmento nuovo.
- Ogni segmento ha lunghezza (i dati sono byte, il resto è intestazione).
- Il tempo di trasmissione sul collegamento è ; poiché , il collegamento 1 è il collo di bottiglia: . I segmenti, uscendo da a distanza l'uno dall'altro, non si accodano mai nei router.
- RTT del primo segmento, con ACK trascurabili: va in avanti attraversando i tre collegamenti (trasmissione + propagazione), l'ACK torna solo con la propagazione:
- Numero di segmenti: .
(1) Tempo totale
Il comportamento dipende dal confronto tra il tempo che serve per inviare l'intera finestra e il RTT, cioè il tempo prima che torni il primo ACK.
Caso (finestra più corta del "tubo", cioè ). Il mittente invia i segmenti, poi resta fermo finché non torna l'ACK del primo. Ogni finestra dura quindi esattamente un RTT: la finestra () inizia a . Le finestre sono . L'ultima parte a ; il suo ultimo segmento esce dopo altri ed il relativo ACK torna un RTT dopo l'inizio della sua trasmissione:
Caso . Quando il primo ACK ritorna, il mittente sta ancora trasmettendo la finestra: non si ferma mai e il collegamento 1 resta occupato continuamente. Il segmento comincia dopo e il suo ACK torna un RTT dopo:
Le due formule coincidono sulla soglia : e .
(2) Finestra minima per il flusso continuo
Serve , cioè : la finestra deve contenere almeno il prodotto banda-ritardo (bandwidth-delay product, BDP) del collegamento 1 espresso in segmenti, e poiché è intero: (Nelle slide il RTT è scritto come , che è la stessa somma.)
Esempio numerico (verificato)
Scelgo , , byte, quindi B bit; , , Mbit/s; ms.
- ms, ms, ms; ms.
- : finestra corta, flusso non continuo:
- . Con il tempo scenderebbe a ms.
- Con ritardi più piccoli, ms: ms e , flusso continuo: ms.
Un simulatore a eventi (collegamenti in serie store-and-forward, ACK cumulativi) dà ms e ms, uguali alle formule.
Il grafico mostra per tutte le finestre, con la regola «una finestra ogni RTT se , flusso continuo altrimenti»: per (stop-and-wait) il tempo è ms, con vale ms e da in poi resta ms, perché la finestra copre già il prodotto banda-ritardo.
Grafico interattivo: Tempo totale T(w) in ms in funzione della finestra w, per l'esempio L = 2400 bit, C = 1, 2, 4 Mbit/s, τ = 1 ms (T1 = 2,4 ms, RTT = 10,2 ms): 139,8 ms con w = 4, 132,6 ms per w ≥ 5
Confronto con la soluzione ufficiale
Le slide scrivono con , e per il caso continuo: identiche alle formule trovate. Per la parte (2) danno senza arrotondare: va preso l'intero superiore.
Errori comuni
- Usare la formula del caso continuo quando (sottovalutando il tempo): si controlla sempre prima contro il RTT.
- Contare nel RTT la trasmissione degli ACK: sono trascurabili, tornano con la sola propagazione.
- Dimenticare che la formula vale se il collegamento 1 è il più lento (qui garantito da ); altrimenti i segmenti si accodano in .
- Non arrotondare per eccesso la finestra minima.
Versione ripasso
- ; (collo di bottiglia, nessun accodamento nei router).
- (gli ACK tornano con la sola propagazione).
- (1) Si confronta con il RTT. Se ogni finestra dura un RTT: finestre, . Se il flusso è continuo: . Le due formule coincidono per (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 →).
- (2) Flusso continuo se : , cioè il BDP in segmenti, arrotondato per eccesso.
Esempio. bit, Mbit/s, ms: ms, ms; , finestra corta: ms; ( ms). Con ms: , flusso continuo, ms. Le slide danno le stesse formule ma senza arrotondare .
Errori: formula continua con finestra corta; ACK contati nel RTT; non arrotondare .