Salta al contenuto
Note per Studenti Esercizio - throughput TCP di tre flussi con la formula del modello

Esercizio - throughput TCP di tre flussi con la formula del modello

In questa pagina 10

Testo. Rete con cinque host A,…,EA,\dots,E e tre router. Collegamenti: L1L_1 (AA-router 1), L2L_2 (BB-router 1), L3L_3 (router 1-router 2), L4L_4 (CC-router 2), L7L_7 (router 2-router 3), L5L_5 (DD-router 3), L6L_6 (EE-router 3). Flussi TCP: A→EA\to E, B→DB\to D, C→AC\to A.

collegamento velocità BnB_n (Mbit/s) RTT RTTn\text{RTT}_n (ms) dev. std. σn\sigma_n (ms) errore
L1L_1 1000 2 0,1 p1=0p_1=0
L2L_2 100 2 0,1 p2=10−12p_2=10^{-12}
L3L_3 100 (figura; 200 nella tabella) 10 2 p3=0p_3=0
L4L_4 300 2,5 0,1 p4=0p_4=0
L5L_5 300 3 0,2 p5=10−12p_5=10^{-12}
L6L_6 600 5 0,5 Pbit=4⋅10−5P_{bit}=4\cdot10^{-5}
L7L_7 1000 10 1 p7=2⋅10−4p_7=2\cdot10^{-4}

I RTT dei collegamenti sono variabili gaussiane indipendenti con media RTTn\text{RTT}_n e deviazione standard σn\sigma_n. Su L6L_6 c'è un livello MAC IEEE 802.11 e un ARQ stop-and-wait di collegamento con M=3M=3 tentativi per pacchetto; pacchetto di collegamento == intestazione di 3636 byte ++ segmento TCP. Altri dati: ritardo ACK b=2b=2; Wmax=200W_{max}=200 segmenti; intestazione IP 2020 B, TCP 4040 B; segmento TCP di 15001500 B; intestazione applicativa 2525 B.

  • Q1.1 Throughput TCP end-to-end del flusso A→EA\to E (flussi attivi uno alla volta). Q1.2 Throughput a livello applicativo.
  • Q2 Throughput di A→EA\to E con M=8M=8 (valore tipico del Wi-Fi).
  • Q3 Throughput di C→AC\to A. Q4 Throughput di B→DB\to D.
  • Q5 Throughput dei tre flussi attivi insieme, se i router assegnano al flusso ii la frazione ξi\xi_i del collegamento (ξ1=0,2\xi_1=0{,}2, ξ2=0,2\xi_2=0{,}2, ξ3=0,6\xi_3=0{,}6).
  • Q6.1 RTT massimo di L4L_4 perché C→AC\to A sfrutti tutta la velocità disponibile. Q6.2 Che cosa succede agli altri flussi se cambia il RTT di L4L_4.

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 pp, RTT, ritardo ACK bb e timeout T0T_0, è nella versione del corso B≃min⁡{WmaxRTT, 1RTT2bp3+T0min⁡{1,33bp8}p (1+2p+4p2)}  [seg/s],B\simeq\min\left\{\frac{W_{max}}{\text{RTT}},\ \frac1{\text{RTT}\sqrt{\frac{2bp}3}+T_0\min\left\{1,3\sqrt{\frac{3bp}8}\right\}p\,(1+2p+4p^2)}\right\}\ \ [\text{seg/s}], dove il primo termine nel minimo è il limite della finestra massima, il secondo il modello (che con p→0p\to0 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:

  1. RTT\text{RTT} del cammino == somma dei RTT dei collegamenti attraversati.
  2. pp del cammino: un segmento arriva se non è perso su nessun collegamento, e le perdite sono indipendenti: p=1−∏n(1−pn)p=1-\prod_n(1-p_n). Il perché: l'evento «arriva» è l'intersezione degli eventi «non perso sul collegamento nn», che essendo indipendenti hanno probabilità uguale al prodotto ∏n(1−pn)\prod_n(1-p_n); la perdita è il complementare, 11 meno quel prodotto.
  3. Il timeout: la varianza di somme di variabili indipendenti si somma (somma di gaussiane indipendenti è gaussiana, con medie e varianze che si sommano), σ2=∑σn2\sigma^2=\sum\sigma_n^2; per una variabile gaussiana la deviazione media assoluta (MAD) vale MAD=σ2/π≈0,797 σ\text{MAD}=\sigma\sqrt{2/\pi}\approx0{,}797\,\sigma (si ricava da MAD=2∫0∞yσ2πe−y2/2σ2dy\text{MAD}=2\int_0^{\infty}\frac y{\sigma\sqrt{2\pi}}e^{-y^2/2\sigma^2}dy, con la sostituzione u=y2/2σ2u=y^2/2\sigma^2). Il timeout è RTO=RTT+4 MAD\text{RTO}=\text{RTT}+4\,\text{MAD} e, come nell'RFC 6298, T0=max⁡{RTO,1 s}T_0=\max\{\text{RTO},1\ \text{s}\}.

Q1.1: flusso A→EA\to E, throughput TCP

Carico utile. 1500−20−40=14401500-20-40=1440 B =11 520=11\,520 bit.

Cammino. AA-L1L_1-L3L_3-L7L_7-L6L_6-EE: RTTAE=2+10+10+5=27\text{RTT}_{AE}=2+10+10+5=27 ms.

Perdite su L6L_6 (il tratto Wi-Fi). Il pacchetto di collegamento è lungo L=(36+1500)⋅8=12 288L=(36+1500)\cdot8=12\,288 bit. Una trasmissione fallisce se almeno un bit è errato: p~6=1−(1−Pbit)L=1−(1−4⋅10−5)12 288=0,3883.\tilde p_6=1-(1-P_{bit})^{L}=1-(1-4\cdot10^{-5})^{12\,288}=0{,}3883. Il passaggio: la trasmissione riesce se tutti i LL bit sono corretti, ognuno con probabilità 1−Pbit1-P_{bit} e indipendentemente, quindi con probabilità (1−Pbit)L(1-P_{bit})^L; il fallimento è il complementare. Numericamente, (1−Pbit)L=eLln⁡(1−Pbit)≃e−LPbit=e−0,4915=0,6117(1-P_{bit})^L=e^{L\ln(1-P_{bit})}\simeq e^{-LP_{bit}}=e^{-0{,}4915}=0{,}6117 (si usa ln⁡(1−x)≃−x\ln(1-x)\simeq-x, Mac-Laurin), e 1−0,6117=0,38831-0{,}6117=0{,}3883. L'ARQ ritenta fino a M=3M=3 volte: il pacchetto va perso solo se falliscono tutti i tentativi, che sono indipendenti, quindi p6=p~6 M=0,38833=0,0586p_6=\tilde p_6^{\,M}=0{,}3883^3=0{,}0586 (nelle slide 0,05850{,}0585 per arrotondamento).

Perdita end-to-end. pAE=1−(1−p1)(1−p3)(1−p7)(1−p6)=1−1⋅1⋅(1−2⋅10−4)(1−0,05855)=0,0587.p_{AE}=1-(1-p_1)(1-p_3)(1-p_7)(1-p_6)=1-1\cdot1\cdot(1-2\cdot10^{-4})(1-0{,}05855)=0{,}0587. Domina L6L_6, come atteso.

Timeout. σAE2=0,12+22+12+0,52=5,26\sigma_{AE}^2=0{,}1^2+2^2+1^2+0{,}5^2=5{,}26 ms2^2 (la varianza dei RTT di L1,L3,L7,L6L_1,L_3,L_7,L_6), quindi σAE=2,293\sigma_{AE}=2{,}293 ms; MAD=0,797⋅2,293=1,830\text{MAD}=0{,}797\cdot2{,}293=1{,}830 ms; RTO=27+4⋅1,830=34,32\text{RTO}=27+4\cdot1{,}830=34{,}32 ms. Poiché 34,3234{,}32 ms <1<1 s, T0=1T_0=1 s: il minimo di un secondo domina.

Tasso di invio. Il limite della finestra è 200/0,027=7407200/0{,}027=7407 seg/s, molto più alto del modello. Termini del denominatore:

  • RTT2bp/3=0,0272⋅2⋅0,05873=0,027⋅0,2799=0,007556\text{RTT}\sqrt{2bp/3}=0{,}027\sqrt{\tfrac{2\cdot2\cdot0{,}0587}{3}}=0{,}027\cdot0{,}2799=0{,}007556 s;
  • min⁡{1,33bp/8}=min⁡{1,30,0440}=min⁡{1,0,6297}=0,6297\min\{1,3\sqrt{3bp/8}\}=\min\{1,3\sqrt{0{,}0440}\}=\min\{1,0{,}6297\}=0{,}6297;
  • T0⋅0,6297⋅p (1+2p+4p2)=1⋅0,6297⋅0,0587⋅1,1313=0,04184T_0\cdot0{,}6297\cdot p\,(1+2p+4p^2)=1\cdot0{,}6297\cdot0{,}0587\cdot1{,}1313=0{,}04184 s.

Denominatore =0,04940=0{,}04940 s, quindi B=10,04940=20,2435 seg/s,ηAE=B⋅11 520=233,2 kbit/s.B=\frac1{0{,}04940}=20{,}2435\ \text{seg/s},\qquad\eta_{AE}=B\cdot11\,520=\boxed{233{,}2\ \text{kbit/s}}. Poche decine di segmenti al secondo: con p≈6%p\approx6\% il TCP spende quasi tutto il tempo a recuperare dopo timeout da 11 s. Le unità: BB è in segmenti/s e il payload in bit/segmento, quindi 20,2435⋅11 520=233 20520{,}2435\cdot11\,520=233\,205 bit/s.

Il grafico mostra lo stesso modello per tutte le pp (RTT 2727 ms): la curva parte dal tetto della finestra massima (Wmax/RTT=7407W_{max}/\text{RTT}=7407 seg/s, cioè 85,385{,}3 Mbit/s) e cala come 1/p1/\sqrt p finché i timeout non prendono il sopravvento; i due punti sono i casi M=3M=3 (p=5,87%p=5{,}87\%) e M=8M=8 (p=0,0717%p=0{,}0717\%) 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 2525 B: 1440−25=14151440-25=1415 B =11 320=11\,320 bit per segmento. ηAEAPP=B⋅11 320=20,2435⋅11 320=229,2 kbit/s.\eta^{APP}_{AE}=B\cdot11\,320=20{,}2435\cdot11\,320=\boxed{229{,}2\ \text{kbit/s}}.

Q2: A→EA\to E con M=8M=8 tentativi

Cambia solo p6=p~6 8=0,38838=5,169⋅10−4p_6=\tilde p_6^{\,8}=0{,}3883^8=5{,}169\cdot10^{-4} (tanti tentativi rendono il collegamento molto più affidabile). Quindi pAEnew=1−(1−2⋅10−4)(1−5,169⋅10−4)=7,168⋅10−4.p_{AE}^{new}=1-(1-2\cdot10^{-4})(1-5{,}169\cdot10^{-4})=7{,}168\cdot10^{-4}. RTO, RTT, T0=1T_0=1 s restano invariati. Denominatore: 0,0272⋅2⋅7,168⋅10−4/3=8,35⋅10−40{,}027\sqrt{2\cdot2\cdot7{,}168\cdot10^{-4}/3}=8{,}35\cdot10^{-4} s; min⁡{1,33bp/8}=0,0696\min\{1,3\sqrt{3bp/8}\}=0{,}0696; termine di timeout =1⋅0,0696⋅7,168⋅10−4⋅1,0014=5,0⋅10−5=1\cdot0{,}0696\cdot7{,}168\cdot10^{-4}\cdot1{,}0014=5{,}0\cdot10^{-5} s. Somma =8,85⋅10−4=8{,}85\cdot10^{-4} s, B=1130,4B=1130{,}4 seg/s (sotto il limite 74077407): ηAEnew=1130,4⋅11 520=13,022 Mbit/s.\eta_{AE}^{new}=1130{,}4\cdot11\,520=\boxed{13{,}022\ \text{Mbit/s}}. Cento volte meno probabilità di perdita: il throughput è circa 5656 volte più alto.

Q3: flusso C→AC\to A

Cammino CC-L4L_4-L3L_3-L1L_1-AA senza errori: pCA=0p_{CA}=0. Con p=0p=0 il termine del modello tende a +∞+\infty e resta il limite della finestra: B=Wmax/RTTCAB=W_{max}/\text{RTT}_{CA}. Il RTT è RTTCA=RTT4+RTT3+RTT1=2,5+10+2=14,5\text{RTT}_{CA}=\text{RTT}_4+\text{RTT}_3+\text{RTT}_1=2{,}5+10+2=14{,}5 ms, quindi B=2000,0145=13 793 seg/s,η=13 793⋅11 520=158,9 Mbit/s.B=\frac{200}{0{,}0145}=13\,793\ \text{seg/s},\qquad \eta=13\,793\cdot11\,520=158{,}9\ \text{Mbit/s}. Ma il flusso non può superare la velocità del collegamento più lento del cammino: min⁡{B1,B3,B4}=B3=100\min\{B_1,B_3,B_4\}=B_3=100 Mbit/s (figura). Quindi ηCA=min⁡{158,9, 100}=100 Mbit/s.\boxed{\eta_{CA}=\min\{158{,}9,\ 100\}=100\ \text{Mbit/s}}.

Q4: flusso B→DB\to D

Cammino L2,L3,L7,L5L_2,L_3,L_7,L_5: RTTBD=2+10+10+3=25\text{RTT}_{BD}=2+10+10+3=25 ms; σBD2=0,12+22+12+0,22=5,05\sigma^2_{BD}=0{,}1^2+2^2+1^2+0{,}2^2=5{,}05 ms2^2, σBD=2,247\sigma_{BD}=2{,}247 ms, MAD=1,793\text{MAD}=1{,}793 ms, RTO=25+4⋅1,793=32,17\text{RTO}=25+4\cdot1{,}793=32{,}17 ms ⇒T0=1\Rightarrow T_0=1 s. Perdita: pBD=1−(1−10−12)(1−0)(1−10−12)(1−2⋅10−4)≈p7=2⋅10−4p_{BD}=1-(1-10^{-12})(1-0)(1-10^{-12})(1-2\cdot10^{-4})\approx p_7=2\cdot10^{-4}. Formula: 0,0252⋅2⋅2⋅10−4/3=4,08⋅10−40{,}025\sqrt{2\cdot2\cdot2\cdot10^{-4}/3}=4{,}08\cdot10^{-4} s; min⁡{1,33bp/8}=0,0367\min\{1,3\sqrt{3bp/8}\}=0{,}0367; timeout =0,0367⋅2⋅10−4⋅1,0004=7,4⋅10−6=0{,}0367\cdot2\cdot10^{-4}\cdot1{,}0004=7{,}4\cdot10^{-6} s. Somma =4,16⋅10−4=4{,}16\cdot10^{-4} s, B=2406,2B=2406{,}2 seg/s (<200/0,025=8000<200/0{,}025=8000): ηBD=2406,2⋅11 520=27,72 Mbit/s.\eta_{BD}=2406{,}2\cdot11\,520=\boxed{27{,}72\ \text{Mbit/s}}.

Q5: i tre flussi contemporaneamente

I tre flussi attraversano tutti L3L_3 (da 100100 Mbit/s), che è il collo di bottiglia comune. Il router assegna al flusso ii la frazione ξi\xi_i: b1=100⋅0,2=20,b2=100⋅0,2=20,b3=100⋅0,6=60 Mbit/s.b_1=100\cdot0{,}2=20,\quad b_2=100\cdot0{,}2=20,\quad b_3=100\cdot0{,}6=60\ \text{Mbit/s}. Il throughput di ogni flusso è il minimo tra quello che il TCP otterrebbe da solo e la quota assegnata: ηAE=min⁡{13,022, 20}=13,022,ηBD=min⁡{27,72, 20}=20,ηCA=min⁡{158,9, 60}=60 Mbit/s.\eta_{AE}=\min\{13{,}022,\ 20\}=13{,}022,\qquad\eta_{BD}=\min\{27{,}72,\ 20\}=20,\qquad\eta_{CA}=\min\{158{,}9,\ 60\}=60\ \text{Mbit/s}. A→EA\to E resta limitato dalle perdite (usa meno della sua quota); B→DB\to D e C→AC\to A sono limitati dalla quota.

Q6: RTT massimo di L4L_4

Q6.1. Per sfruttare i 6060 Mbit/s assegnati a C→AC\to A serve WmaxRTTCA⋅11 520≥60⋅106\frac{W_{max}}{\text{RTT}_{CA}}\cdot11\,520\ge60\cdot10^6, cioè RTTCA≤200⋅11 52060⋅106=38,4\text{RTT}_{CA}\le\frac{200\cdot11\,520}{60\cdot10^6}=38{,}4 ms. Poiché RTTCA=RTT4+RTT3+RTT1\text{RTT}_{CA}=\text{RTT}_4+\text{RTT}_3+\text{RTT}_1: RTT4≤38,4−(10+2)=26,4 ms.\text{RTT}_4\le38{,}4-(10+2)=\boxed{26{,}4\ \text{ms}}.

Q6.2. L4L_4 è usato solo dal flusso C→AC\to A: gli altri flussi non cambiano. (Se lo usassero anche altri, i loro throughput andrebbero ricalcolati.)

(Tutti i numeri sono stati ricalcolati con Python: 20,243520{,}2435 seg/s, 233,205233{,}205 kbit/s, 229,156229{,}156 kbit/s, 1130,391130{,}39 seg/s e 13,022113{,}0221 Mbit/s, 2406,162406{,}16 seg/s e 27,71927{,}719 Mbit/s, 26,426{,}4 ms.)

Confronto con la soluzione ufficiale e anomalie

  • Q1, Q2, Q4, Q5 (parte A→EA\to E, B→DB\to D), Q6: i risultati coincidono con le slide.
  • Q3, RTT del cammino: le slide scrivono "RTTCA=RTT1+RTT3+RTT4=6,5\text{RTT}_{CA}=\text{RTT}_1+\text{RTT}_3+\text{RTT}_4=6{,}5 ms" e ne ricavano 30 76930\,769 seg/s e 354,5354{,}5 Mbit/s. Con i valori della tabella la somma è 14,514{,}5 ms (6,56{,}5 corrisponderebbe a RTT3=2\text{RTT}_3=2 ms invece di 1010). Che 14,514{,}5 sia il valore coerente lo conferma Q6.1 delle stesse slide, che usa RTT1+RTT3=12\text{RTT}_1+\text{RTT}_3=12 ms e ottiene 26,426{,}4 ms. Il risultato finale non cambia, perché in entrambi i casi il limite è il collo di bottiglia L3L_3 (100100 Mbit/s) e in Q5 la quota 6060 Mbit/s.
  • Velocità di L3L_3: la figura dice 100100 Mbit/s, la tabella 200200; le slide usano 100100 (Q3, Q5). Con 200200, in Q3 si avrebbe 158,9158{,}9 Mbit/s.
  • Q5, flusso A→EA\to E: la slide scrive "13,22113{,}221 Mbit/s": è un refuso per 13,022113{,}0221 Mbit/s (Q2).
  • Fattore p(1+2p+4p2)p(1+2p+4p^2). Le slide del corso usano questo fattore nell'approssimazione del modello; nel lavoro originale da cui il modello è tratto compare p(1+32p2)p(1+32p^2). Con il fattore originale i risultati sarebbero Q1 20,5620{,}56 seg/s (236,9236{,}9 kbit/s invece di 233,2233{,}2), Q2 13,02313{,}023 Mbit/s, Q4 27,71927{,}719 Mbit/s. La differenza è sensibile solo con perdite elevate (p≈6%p\approx6\%); i risultati da riportare all'esame sono quelli del corso.

Errori comuni

  • Moltiplicare i segmenti al secondo per 15001500 B invece del carico utile (14401440 B), o per 14151415 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: T0=max⁡{RTO,1 s}T_0=\max\{\text{RTO},1\ \text{s}\}.
  • Sommare le deviazioni standard invece delle varianze.
  • Usare p6=p~6p_6=\tilde p_6 invece di p~6 M\tilde p_6^{\,M}: l'ARQ riduce l'errore residuo.
  • Dimenticare il limite del collo di bottiglia con p=0p=0: il TCP non può superare la velocità del collegamento più lento.

Versione ripasso

Dati. Flussi A→EA\to E (L1,L3,L7,L6L_1,L_3,L_7,L_6), B→DB\to D (L2,L3,L7,L5L_2,L_3,L_7,L_5), C→AC\to A (L4,L3,L1L_4,L_3,L_1). RTT dei collegamenti (ms\text{ms}): L1L_1 22, L2L_2 22, L3L_3 1010, L4L_4 2,52{,}5, L5L_5 33, L6L_6 55, L7L_7 1010; σ\sigma: 0,1; 0,1; 2; 0,1; 0,2; 0,5; 10{,}1;\ 0{,}1;\ 2;\ 0{,}1;\ 0{,}2;\ 0{,}5;\ 1. Errori: p2=p5=10−12p_2=p_5=10^{-12}, p7=2⋅10−4p_7=2\cdot10^{-4}, L6L_6 con Pbit=4⋅10−5P_{bit}=4\cdot10^{-5} e ARQ con M=3M=3 tentativi (intestazione di collegamento 3636 B). b=2b=2, Wmax=200W_{max}=200, segmento 15001500 B, IP 2020, TCP 4040, applicazione 2525; L3=100L_3=100 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 →): B≃min⁡{WmaxRTT, 1RTT2bp3+T0min⁡{1,33bp8} p (1+2p+4p2)} seg/s,η=B⋅payload.B\simeq\min\left\{\frac{W_{max}}{\text{RTT}},\ \frac1{\text{RTT}\sqrt{\frac{2bp}3}+T_0\min\{1,3\sqrt{\tfrac{3bp}8}\}\,p\,(1+2p+4p^2)}\right\}\ \text{seg/s},\quad\eta=B\cdot\text{payload}. Parametri del cammino: RTT=∑RTTn\text{RTT}=\sum\text{RTT}_n; p=1−∏(1−pn)p=1-\prod(1-p_n); σ2=∑σn2\sigma^2=\sum\sigma_n^2, MAD=σ2/π\text{MAD}=\sigma\sqrt{2/\pi}, RTO=RTT+4 MAD\text{RTO}=\text{RTT}+4\,\text{MAD}, T0=max⁡{RTO,1 s}T_0=\max\{\text{RTO},1\ \text{s}\} (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 1500−20−40=14401500-20-40=1440 B =11 520=11\,520 bit.

Q1: A→EA\to E. RTT=2+10+10+5=27\text{RTT}=2+10+10+5=27 ms. L6L_6: pacchetto (36+1500)⋅8=12 288(36+1500)\cdot8=12\,288 bit, p~6=1−(1−4⋅10−5)12288=0,3883\tilde p_6=1-(1-4\cdot10^{-5})^{12288}=0{,}3883, p6=p~6 3=0,0586p_6=\tilde p_6^{\,3}=0{,}0586 (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 →). pAE=0,0587p_{AE}=0{,}0587. σ2=0,01+4+1+0,25=5,26\sigma^2=0{,}01+4+1+0{,}25=5{,}26, RTO=27+4⋅1,830=34,32\text{RTO}=27+4\cdot1{,}830=34{,}32 ms ⇒T0=1\Rightarrow T_0=1 s. Denominatore 0,007556+0,04184=0,049400{,}007556+0{,}04184=0{,}04940 s: B=20,2435B=20{,}2435 seg/s.

  • Q1.1: η=20,2435⋅11 520=233,2\eta=20{,}2435\cdot11\,520=233{,}2 kbit/s.
  • Q1.2: payload applicativo 1440−25=14151440-25=1415 B =11 320=11\,320 bit: 229,2229{,}2 kbit/s.

Q2 (M=8M=8): p6=0,38838=5,169⋅10−4p_6=0{,}3883^8=5{,}169\cdot10^{-4}, p=7,168⋅10−4p=7{,}168\cdot10^{-4}, B=1130,4B=1130{,}4 seg/s, η=13,022\eta=13{,}022 Mbit/s (circa 5656 volte più alto).

flusso RTT (ms) pp BB (seg/s) η\eta
C→AC\to A 2,5+10+2=14,52{,}5+10+2=14{,}5 00 200/0,0145=13 793200/0{,}0145=13\,793 158,9→158{,}9\to tetto L3L_3: 100100 Mbit/s
B→DB\to D 2+10+10+3=252+10+10+3=25 ≈2⋅10−4\approx2\cdot10^{-4} 2406,22406{,}2 27,7227{,}72 Mbit/s

(B→DB\to D: RTO=32,17\text{RTO}=32{,}17 ms ⇒T0=1\Rightarrow T_0=1 s; denominatore 4,16⋅10−44{,}16\cdot10^{-4} s.)

Q5 (quote di L3L_3, ξ=0,2;0,2;0,6\xi=0{,}2;0{,}2;0{,}6): 20,20,6020,20,60 Mbit/s; η=min⁡\eta=\min: A→EA\to E 13,02213{,}022, B→DB\to D 2020, C→AC\to A 6060 Mbit/s. Q6.1: 200⋅11 520RTTCA≥60⋅106⇒RTTCA≤38,4\frac{200\cdot11\,520}{\text{RTT}_{CA}}\ge60\cdot10^6\Rightarrow\text{RTT}_{CA}\le38{,}4 ms, RTT4≤38,4−12=26,4\text{RTT}_4\le38{,}4-12=26{,}4 ms. Q6.2: L4L_4 è usato solo da C→AC\to A: gli altri flussi non cambiano.

Anomalie delle slide: RTTCA=6,5\text{RTT}_{CA}=6{,}5 ms (corretto 14,514{,}5, confermato da Q6.1); L3L_3 100100 nella figura e 200200 nella tabella; "13,22113{,}221" per 13,022113{,}0221 Mbit/s; fattore 1+2p+4p21+2p+4p^2 del corso contro 1+32p21+32p^2 dell'articolo (Q1 diventerebbe 236,9236{,}9 kbit/s).

Errori: moltiplicare per 15001500 B invece del payload; T0<1T_0<1 s; sommare le σ\sigma invece delle varianze; p6p_6 senza l'esponente MM; dimenticare il tetto del collegamento più lento con p=0p=0.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata