Salta al contenuto
Note per Studenti Esercizio - Trasferimento di 1,5 MB con handshake, stop-and-wait e limite di pacchetti per RTT

Esercizio - Trasferimento di 1,5 MB con handshake, stop-and-wait e limite di pacchetti per RTT

In questa pagina 6

Testo. Collegamento punto-punto tra l'host A e l'host B con bitrate R=10R=10 Mbps e RTTmin=80RTT_{min}=80 ms. Calcolare il tempo totale per trasferire 1,51{,}5 MB di dati nei casi seguenti:

  1. i dati sono divisi in pacchetti da 11 KB e i pacchetti si inviano in modo continuo, dopo un "handshake" iniziale di 2⋅RTTmin2\cdot RTT_{min};
  2. come al punto 1 ma, dopo ogni pacchetto, il trasmettitore attende un RTT prima di inviare il successivo; calcolare anche l'efficienza del collegamento;
  3. il collegamento permette una trasmissione infinitamente veloce ma limita il throughput in modo che si possano inviare solo 2020 pacchetti per RTT; calcolare l'efficienza.

Teoria usata: 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 →.

Dati

  • R=10R=10 Mbit/s; 11 KB =1000=1000 byte =8000=8000 bit; 1,51{,}5 MB =1 500 000=1\,500\,000 byte, quindi N=1500N=1500 pacchetti.
  • Tempo di trasmissione di un pacchetto: ttx=8000107=0,8t_{tx}=\dfrac{8000}{10^7}=0{,}8 ms.
  • RTTmin=2tprop+ttx(1 bit)≃2tpropRTT_{min}=2t_{prop}+t_{tx}(1\text{ bit})\simeq2t_{prop}, quindi tprop=RTTmin/2=40t_{prop}=RTT_{min}/2=40 ms.
  • RTT "vero" per un pacchetto da 11 KB (ACK trascurabile): RTT=2tprop+ttx=80,8RTT=2t_{prop}+t_{tx}=80{,}8 ms.

(1) Invio continuo

Si paga prima l'handshake, 2⋅RTTmin=1602\cdot RTT_{min}=160 ms. Poi i pacchetti partono uno dietro l'altro: il trasmettitore è occupato per 1500⋅ttx=1,21500\cdot t_{tx}=1{,}2 s. L'ultimo bit dell'ultimo pacchetto viene messo sul filo alla fine di questi 1,21{,}2 s e arriva a B dopo altri tprop=40t_{prop}=40 ms.

Non serve calcolare la propagazione di ogni pacchetto: i pacchetti arrivano a B a distanza di ttxt_{tx} l'uno dall'altro (trasmissione e propagazione avvengono "in parallelo" su pacchetti diversi), quindi basta aggiungere la propagazione una volta sola: T1=2RTTmin+N ttx+tprop=0,16+1,2+0,04=1,40 s.T_1=2RTT_{min}+N\,t_{tx}+t_{prop}=0{,}16+1{,}2+0{,}04=\mathbf{1{,}40\ s}.

(2) Un pacchetto per RTT (stop-and-wait)

Dopo l'handshake si invia il pacchetto 1, si attende l'ACK (un RTT dall'inizio della trasmissione), poi si invia il pacchetto 2, e così via. I primi N−1=1499N-1=1499 pacchetti occupano ciascuno un intero ciclo di durata RTT=80,8RTT=80{,}8 ms. L'ultimo pacchetto non deve attendere l'ACK: bastano la sua trasmissione e la propagazione fino a B. T2=2RTTmin+(N−1) RTT+ttx+tprop=0,16+1499⋅0,0808+0,0008+0,04=121,32 s.T_2=2RTT_{min}+(N-1)\,RTT+t_{tx}+t_{prop}=0{,}16+1499\cdot0{,}0808+0{,}0008+0{,}04=\mathbf{121{,}32\ s}. Efficienza. Il BDP calcolato sull'RTT è RTT⋅R=0,0808⋅107=808RTT\cdot R=0{,}0808\cdot10^7=808 kbit: in un ciclo il collegamento potrebbe trasportare 808808 kbit ma ne trasporta 88 kbit (11 KB): η=8 kbit808 kbit=ttxRTT=0,0099≃1%.\eta=\frac{8\ \text{kbit}}{808\ \text{kbit}}=\frac{t_{tx}}{RTT}=0{,}0099\simeq\mathbf{1\%}. Il throughput sperimentato è 8000/0,0808≃998000/0{,}0808\simeq99 kbps, cioè circa 100100 kbps su un collegamento da 1010 Mbps.

(3) Gruppi di 20 pacchetti per RTT

Ora si inviano finestre di 2020 pacchetti e poi si aspetta. Inviare 2020 pacchetti richiede 20 ttx=1620\,t_{tx}=16 ms, cioè molto meno dell'RTT (80,880{,}8 ms): il collegamento resta fermo per il tempo restante, per cui il ciclo dura ancora un RTT. Le finestre sono 1500/20=751500/20=75; le prime 7474 occupano un ciclo di RTTRTT ciascuna, l'ultima solo il tempo di trasmettere i suoi 2020 pacchetti più la propagazione: T3=2RTTmin+(75−1) RTT+20 ttx+tprop=0,16+74⋅0,0808+0,016+0,04=6,195 s.T_3=2RTT_{min}+(75-1)\,RTT+20\,t_{tx}+t_{prop}=0{,}16+74\cdot0{,}0808+0{,}016+0{,}04=\mathbf{6{,}195\ s}. Efficienza: in un ciclo si inviano 2020 KB sui 808808 kbit possibili, η=160 kbit808 kbit=0,198≃20%,\eta=\frac{160\ \text{kbit}}{808\ \text{kbit}}=0{,}198\simeq\mathbf{20\%}, con throughput 160 000/0,0808≃1,98160\,000/0{,}0808\simeq1{,}98 Mbps ≃2\simeq2 Mbps. È proporzionale alla dimensione della finestra: 2020 volte meglio di stop-and-wait. In generale, con WW pacchetti per RTT, η=W ttx/RTT\eta=W\,t_{tx}/RTT finché W ttx<RTTW\,t_{tx}<RTT; il collegamento è sempre occupato quando W≥RTT/ttx=80,8/0,8=101W\ge RTT/t_{tx}=80{,}8/0{,}8=101 pacchetti, che è il prodotto banda-ritardo in pacchetti.

Grafico interattivo: Efficienza η = min(1, W·t_tx/RTT) in funzione dei pacchetti inviati per RTT (t_tx = 0,8 ms, RTT = 80,8 ms): η = 1% per W = 1, 20% per W = 20, 1 per W ≥ 101

Caso Tempo totale η\eta Throughput
1 invio continuo 1,401{,}40 s ≈\approx pieno ≈8,6\approx8{,}6 Mbps (con handshake)
2 un pacchetto per RTT 121,32121{,}32 s 1%1\% ≈100\approx100 kbps
3 venti pacchetti per RTT 6,1956{,}195 s 20%20\% ≈2\approx2 Mbps

Confronto con la soluzione ufficiale

Ufficiale: 1,401{,}40 s; 121,32121{,}32 s con η=1%\eta=1\% e throughput 100100 kbps; 6,1956{,}195 s con η=20%\eta=20\% e throughput 22 Mbps. Tutto coincide. Una nota sul punto 3: il testo dice "trasmissione infinitamente veloce", ma la soluzione usa comunque ttx=0,8t_{tx}=0{,}8 ms per pacchetto (finestra da 1616 ms) e un ciclo di 80,880{,}8 ms. Se si prendesse alla lettera ttx=0t_{tx}=0 si avrebbe RTT=80RTT=80 ms e T=0,16+74⋅0,08+0,04=6,12T=0{,}16+74\cdot0{,}08+0{,}04=6{,}12 s, che non è il numero ufficiale. Il 6,1956{,}195 s si riproduce solo con la lettura della soluzione.

Errori comuni

  • Sommare la propagazione a ogni pacchetto nel caso (1): con invio continuo si paga una sola volta.
  • Nel caso (2) contare NN RTT invece di N−1N-1 più la parte finale dell'ultimo pacchetto.
  • Usare 11 KB =1024=1024 byte: qui 11 KB =1000=1000 byte, altrimenti non si ottengono 15001500 pacchetti e 0,80{,}8 ms.
  • Dimenticare di convertire RTTmin=80RTT_{min}=80 ms in tprop=40t_{prop}=40 ms per il ritardo di sola andata.

(Verificato con Python: ttx=0,8t_{tx}=0{,}8 ms; RTT=80,8RTT=80{,}8 ms; T1=1,400T_1=1{,}400 s; T2=121,320T_2=121{,}320 s; BDP=808BDP=808 kbit; η2=0,0099\eta_2=0{,}0099; T3=6,1952T_3=6{,}1952 s; η3=0,198\eta_3=0{,}198; T3T_3 con ttx=0t_{tx}=0: 6,126{,}12 s.)

Versione ripasso

Dati. R=10R=10 Mbps, RTTmin=80RTT_{min}=80 ms (tprop=40t_{prop}=40 ms), N=1500N=1500 pacchetti da 11 KB =8=8 kbit, ttx=0,8t_{tx}=0{,}8 ms, RTT=2tprop+ttx=80,8RTT=2t_{prop}+t_{tx}=80{,}8 ms (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 →).

  1. Continuo: T=2RTTmin+N ttx+tprop=0,16+1,2+0,04=1,40T=2RTT_{min}+N\,t_{tx}+t_{prop}=0{,}16+1{,}2+0{,}04=1{,}40 s.
  2. Un pacchetto per RTT: T=2RTTmin+(N−1)RTT+ttx+tprop=121,32T=2RTT_{min}+(N-1)RTT+t_{tx}+t_{prop}=121{,}32 s; BDP=808BDP=808 kbit, η=8/808=1%\eta=8/808=1\%, throughput ≈100\approx100 kbps.
  3. Finestre da 2020 (7575 finestre): T=2RTTmin+74 RTT+20ttx+tprop=6,195T=2RTT_{min}+74\,RTT+20t_{tx}+t_{prop}=6{,}195 s; η=160/808=20%\eta=160/808=20\%, ≈2\approx2 Mbps.
  • Tutti i valori coincidono con l'ufficiale.
  • Errori: propagazione per ogni pacchetto; NN invece di N−1N-1 cicli; 11 KB =1024=1024 B.

Lezioni in cui compare

Teoria collegata