Esercizio - throughput TCP di tre flussi con la formula del modello
In questa pagina 10
Testo. Rete con cinque host e tre router. Collegamenti: (-router 1), (-router 1), (router 1-router 2), (-router 2), (router 2-router 3), (-router 3), (-router 3). Flussi TCP: , , .
| collegamento | velocità (Mbit/s) | RTT (ms) | dev. std. (ms) | errore |
|---|---|---|---|---|
| 1000 | 2 | 0,1 | ||
| 100 | 2 | 0,1 | ||
| 100 (figura; 200 nella tabella) | 10 | 2 | ||
| 300 | 2,5 | 0,1 | ||
| 300 | 3 | 0,2 | ||
| 600 | 5 | 0,5 | ||
| 1000 | 10 | 1 |
I RTT dei collegamenti sono variabili gaussiane indipendenti con media e deviazione standard . Su c'è un livello MAC IEEE 802.11 e un ARQ stop-and-wait di collegamento con tentativi per pacchetto; pacchetto di collegamento intestazione di byte segmento TCP. Altri dati: ritardo ACK ; segmenti; intestazione IP B, TCP B; segmento TCP di B; intestazione applicativa B.
- Q1.1 Throughput TCP end-to-end del flusso (flussi attivi uno alla volta). Q1.2 Throughput a livello applicativo.
- Q2 Throughput di con (valore tipico del Wi-Fi).
- Q3 Throughput di . Q4 Throughput di .
- Q5 Throughput dei tre flussi attivi insieme, se i router assegnano al flusso la frazione del collegamento (, , ).
- Q6.1 RTT massimo di perché sfrutti tutta la velocità disponibile. Q6.2 Che cosa succede agli altri flussi se cambia il RTT di .
Teoria usata: Modello analitico del tasso di invio di TCPIl modello analitico del corso calcola il tasso di invio a regime B (segmenti al secondo) di un flusso TCP Reno in funzione della probabilità di perdita p, dell'RTT, del parametro di ACK ritardato b e del timeout T0. Il tempo è diviso in round di durata RTT; il ciclo della finestra tra due perdite segnalate da tre dupACK (TDP) ha media E[W] = (2-3b)/(3b) + sqrt(((3b-2)/(3b))^2 + 8(1-p)/(3bp)) e il tasso è B = E[Y]/E[A] (pacchetti inviati diviso durata di un TDP). Per p piccolo si ottiene la formula della radice quadrata B = (1/RTT) sqrt(3/(2bp)) (circa 1,22/(RTT sqrt p) per b = 1 e 0,87/(RTT sqrt p) per b = 2). Con i timeout si aggiungono la probabilità Q che una perdita finisca in timeout, E[R] = 1/(1-p) pacchetti e E[Z^TO] = T0 f(p)/(1-p) secondi di attesa: B = (E[Y] + Q E[R])/(E[A] + Q E[Z^TO]). Con la finestra massima Wmax il tasso non supera Wmax/RTT.Modello analitico del tasso di invio di TCP →, Stima del timeout di ritrasmissione (RTO)TCP ritrasmette un segmento se il suo ACK non arriva entro il timeout di ritrasmissione (RTO), che deve seguire il tempo di andata e ritorno (RTT) della rete: troppo corto provoca ritrasmissioni inutili, troppo lungo rallenta il recupero. L'RTT si misura con un solo timer per connessione (granularità G del clock). Si mantengono una media mobile esponenziale SRTT_i = (1-α)SRTT_{i-1} + α·rtt_i con α = 1/8 e la deviazione media MAD_i = (1-ρ)MAD_{i-1} + ρ|rtt_i - SRTT_{i-1}| con ρ = 1/4 (in RFC 6298 RTTVAR, β = 1/4); RTO = SRTT + 4·MAD, con minimo di 1 s. L'algoritmo di Karn ignora le misure dei segmenti ritrasmessi (non si sa a quale trasmissione si riferisce l'ACK) e a ogni timeout consecutivo il valore raddoppia fino a 64 volte T0. Per un RTT gaussiano la deviazione media vale MAD = σ·sqrt(2/π) ≈ 0,797σ.Stima del timeout di ritrasmissione (RTO) →, 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 →, 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 →. Richiami di probabilità: Indipendenza di eventiA e B sono indipendenti se P(A ∩ B) = P(A) P(B), cioè se sapere che uno si è verificato non cambia la probabilità dell'altro; l'indipendenza passa ai complementari, non va confusa con l'incompatibilità, e per più eventi va richiesta su ogni sottofamiglia.Indipendenza di eventi → (perdite su collegamenti diversi), Prove ripetute e 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 → (errori sui bit, tentativi dell'ARQ), Distribuzione gaussiana (normale)N(μ, σ²) ha densità e^(−(x−μ)²/(2σ²)) / √(2πσ²), a campana centrata in μ con larghezza σ; media μ, varianza σ²; si standardizza con Z = (X − μ)/σ ~ N(0, 1) e si calcola P(X ≤ x) = Φ((x − μ)/σ), con Φ(−z) = 1 − Φ(z); aX + b è ancora gaussiana, N(aμ + b, a²σ²).Distribuzione gaussiana (normale) → e Somma di variabili aleatorie indipendentiSe X e Y sono indipendenti, la legge di Z = X + Y è la convoluzione: p_Z(n) = Σ_k p_X(k) p_Y(n − k) nel discreto, f_Z(z) = ∫ f_X(z − y) f_Y(y) dy nel continuo. Casi notevoli: Bin(n,p) + Bin(m,p) = Bin(n+m,p), Poi(λ) + Poi(μ) = Poi(λ+μ), Geo + Geo con densità (n−1)p²(1−p)^(n−2), Exp(λ) + Exp(λ) = Γ(2,λ), gaussiane indipendenti sommano medie e varianze.Somma di variabili aleatorie indipendenti → (RTT dei collegamenti), Varianza e momentiI momenti E[X^k] e i momenti centrati E[(X − μ)^k] descrivono la forma di una legge; la varianza Var(X) = E[(X − μ)²] = E[X²] − E[X]² misura quanto X si disperde attorno alla media, vale Var(aX + b) = a² Var(X) e Var(X) = 0 solo se X è costante.Varianza e momenti →.
Lo strumento: la formula del tasso di invio
Il tasso di invio di un flusso TCP in segmenti al secondo, a partire da probabilità di perdita , RTT, ritardo ACK e timeout , è nella versione del corso dove il primo termine nel minimo è il limite della finestra massima, il secondo il modello (che con tende a infinito). Il throughput in bit/s si ottiene moltiplicando per la dimensione del carico utile TCP in bit (non del segmento intero).
Costruzione dei parametri per un cammino:
- del cammino somma dei RTT dei collegamenti attraversati.
- del cammino: un segmento arriva se non è perso su nessun collegamento, e le perdite sono indipendenti: . Il perché: l'evento «arriva» è l'intersezione degli eventi «non perso sul collegamento », che essendo indipendenti hanno probabilità uguale al prodotto ; la perdita è il complementare, meno quel prodotto.
- Il timeout: la varianza di somme di variabili indipendenti si somma (somma di gaussiane indipendenti è gaussiana, con medie e varianze che si sommano), ; per una variabile gaussiana la deviazione media assoluta (MAD) vale (si ricava da , con la sostituzione ). Il timeout è e, come nell'RFC 6298, .
Q1.1: flusso , throughput TCP
Carico utile. B bit.
Cammino. -----: ms.
Perdite su (il tratto Wi-Fi). Il pacchetto di collegamento è lungo bit. Una trasmissione fallisce se almeno un bit è errato: Il passaggio: la trasmissione riesce se tutti i bit sono corretti, ognuno con probabilità e indipendentemente, quindi con probabilità ; il fallimento è il complementare. Numericamente, (si usa , Mac-Laurin), e . L'ARQ ritenta fino a volte: il pacchetto va perso solo se falliscono tutti i tentativi, che sono indipendenti, quindi (nelle slide per arrotondamento).
Perdita end-to-end. Domina , come atteso.
Timeout. ms (la varianza dei RTT di ), quindi ms; ms; ms. Poiché ms s, s: il minimo di un secondo domina.
Tasso di invio. Il limite della finestra è seg/s, molto più alto del modello. Termini del denominatore:
- s;
- ;
- s.
Denominatore s, quindi Poche decine di segmenti al secondo: con il TCP spende quasi tutto il tempo a recuperare dopo timeout da s. Le unità: è in segmenti/s e il payload in bit/segmento, quindi bit/s.
Il grafico mostra lo stesso modello per tutte le (RTT ms): la curva parte dal tetto della finestra massima ( seg/s, cioè Mbit/s) e cala come finché i timeout non prendono il sopravvento; i due punti sono i casi () e () del testo.
Grafico interattivo: Throughput TCP del flusso A→E (RTT = 27 ms, b = 2, T0 = 1 s, payload 11 520 bit) in funzione della probabilità di perdita p: 0,233 Mbit/s con p = 5,87%, 13,0 Mbit/s con p = 0,0717%; tetto della finestra massima 85,3 Mbit/s
Q1.2: throughput a livello applicativo
L'applicazione vede solo i dati senza la sua intestazione di B: B bit per segmento.
Q2: con tentativi
Cambia solo (tanti tentativi rendono il collegamento molto più affidabile). Quindi RTO, RTT, s restano invariati. Denominatore: s; ; termine di timeout s. Somma s, seg/s (sotto il limite ): Cento volte meno probabilità di perdita: il throughput è circa volte più alto.
Q3: flusso
Cammino ---- senza errori: . Con il termine del modello tende a e resta il limite della finestra: . Il RTT è ms, quindi Ma il flusso non può superare la velocità del collegamento più lento del cammino: Mbit/s (figura). Quindi
Q4: flusso
Cammino : ms; ms, ms, ms, ms s. Perdita: . Formula: s; ; timeout s. Somma s, seg/s ():
Q5: i tre flussi contemporaneamente
I tre flussi attraversano tutti (da Mbit/s), che è il collo di bottiglia comune. Il router assegna al flusso la frazione : Il throughput di ogni flusso è il minimo tra quello che il TCP otterrebbe da solo e la quota assegnata: resta limitato dalle perdite (usa meno della sua quota); e sono limitati dalla quota.
Q6: RTT massimo di
Q6.1. Per sfruttare i Mbit/s assegnati a serve , cioè ms. Poiché :
Q6.2. è usato solo dal flusso : gli altri flussi non cambiano. (Se lo usassero anche altri, i loro throughput andrebbero ricalcolati.)
(Tutti i numeri sono stati ricalcolati con Python: seg/s, kbit/s, kbit/s, seg/s e Mbit/s, seg/s e Mbit/s, ms.)
Confronto con la soluzione ufficiale e anomalie
- Q1, Q2, Q4, Q5 (parte , ), Q6: i risultati coincidono con le slide.
- Q3, RTT del cammino: le slide scrivono " ms" e ne ricavano seg/s e Mbit/s. Con i valori della tabella la somma è ms ( corrisponderebbe a ms invece di ). Che sia il valore coerente lo conferma Q6.1 delle stesse slide, che usa ms e ottiene ms. Il risultato finale non cambia, perché in entrambi i casi il limite è il collo di bottiglia ( Mbit/s) e in Q5 la quota Mbit/s.
- Velocità di : la figura dice Mbit/s, la tabella ; le slide usano (Q3, Q5). Con , in Q3 si avrebbe Mbit/s.
- Q5, flusso : la slide scrive " Mbit/s": è un refuso per Mbit/s (Q2).
- Fattore . Le slide del corso usano questo fattore nell'approssimazione del modello; nel lavoro originale da cui il modello è tratto compare . Con il fattore originale i risultati sarebbero Q1 seg/s ( kbit/s invece di ), Q2 Mbit/s, Q4 Mbit/s. La differenza è sensibile solo con perdite elevate (); i risultati da riportare all'esame sono quelli del corso.
Errori comuni
- Moltiplicare i segmenti al secondo per B invece del carico utile ( B), o per B per il throughput TCP: il carico utile TCP esclude IP e TCP, quello applicativo anche l'intestazione dell'applicazione.
- Dimenticare il tetto di un secondo del timeout: .
- Sommare le deviazioni standard invece delle varianze.
- Usare invece di : l'ARQ riduce l'errore residuo.
- Dimenticare il limite del collo di bottiglia con : il TCP non può superare la velocità del collegamento più lento.
Versione ripasso
Dati. Flussi (), (), (). RTT dei collegamenti (): , , , , , , ; : . Errori: , , con e ARQ con tentativi (intestazione di collegamento B). , , segmento B, IP , TCP , applicazione ; Mbit/s (figura).
Strumento (Modello analitico del tasso di invio di TCPIl modello analitico del corso calcola il tasso di invio a regime B (segmenti al secondo) di un flusso TCP Reno in funzione della probabilità di perdita p, dell'RTT, del parametro di ACK ritardato b e del timeout T0. Il tempo è diviso in round di durata RTT; il ciclo della finestra tra due perdite segnalate da tre dupACK (TDP) ha media E[W] = (2-3b)/(3b) + sqrt(((3b-2)/(3b))^2 + 8(1-p)/(3bp)) e il tasso è B = E[Y]/E[A] (pacchetti inviati diviso durata di un TDP). Per p piccolo si ottiene la formula della radice quadrata B = (1/RTT) sqrt(3/(2bp)) (circa 1,22/(RTT sqrt p) per b = 1 e 0,87/(RTT sqrt p) per b = 2). Con i timeout si aggiungono la probabilità Q che una perdita finisca in timeout, E[R] = 1/(1-p) pacchetti e E[Z^TO] = T0 f(p)/(1-p) secondi di attesa: B = (E[Y] + Q E[R])/(E[A] + Q E[Z^TO]). Con la finestra massima Wmax il tasso non supera Wmax/RTT.Modello analitico del tasso di invio di TCP →): Parametri del cammino: ; ; , , , (Stima del timeout di ritrasmissione (RTO)TCP ritrasmette un segmento se il suo ACK non arriva entro il timeout di ritrasmissione (RTO), che deve seguire il tempo di andata e ritorno (RTT) della rete: troppo corto provoca ritrasmissioni inutili, troppo lungo rallenta il recupero. L'RTT si misura con un solo timer per connessione (granularità G del clock). Si mantengono una media mobile esponenziale SRTT_i = (1-α)SRTT_{i-1} + α·rtt_i con α = 1/8 e la deviazione media MAD_i = (1-ρ)MAD_{i-1} + ρ|rtt_i - SRTT_{i-1}| con ρ = 1/4 (in RFC 6298 RTTVAR, β = 1/4); RTO = SRTT + 4·MAD, con minimo di 1 s. L'algoritmo di Karn ignora le misure dei segmenti ritrasmessi (non si sa a quale trasmissione si riferisce l'ACK) e a ogni timeout consecutivo il valore raddoppia fino a 64 volte T0. Per un RTT gaussiano la deviazione media vale MAD = σ·sqrt(2/π) ≈ 0,797σ.Stima del timeout di ritrasmissione (RTO) →). Payload TCP B bit.
- Q1.1: kbit/s.
- Q1.2: payload applicativo B bit: kbit/s.
Q2 (): , , seg/s, Mbit/s (circa volte più alto).
| flusso | RTT (ms) | (seg/s) | ||
|---|---|---|---|---|
| tetto : Mbit/s | ||||
| Mbit/s |
(: ms s; denominatore s.)
Q5 (quote di , ): Mbit/s; : , , Mbit/s. Q6.1: ms, ms. Q6.2: è usato solo da : gli altri flussi non cambiano.
Anomalie delle slide: ms (corretto , confermato da Q6.1); nella figura e nella tabella; "" per Mbit/s; fattore del corso contro dell'articolo (Q1 diventerebbe kbit/s).
Errori: moltiplicare per B invece del payload; s; sommare le invece delle varianze; senza l'esponente ; dimenticare il tetto del collegamento più lento con .
Esercizi su questo argomento
Lezioni in cui compare
Teoria collegata
- Modello analitico del tasso di invio di TCP
- Stima del timeout di ritrasmissione (RTO)
- TCP - controllo di congestione
- Protocolli ARQ - Stop-and-Wait, Go-Back-N e Selective Repeat
- Indipendenza di eventi
- Prove ripetute e modello binomiale
- Distribuzione gaussiana (normale)
- Somma di variabili aleatorie indipendenti
- Varianza e momenti