Salta al contenuto
Note per Studenti Esercizio - Finestra scorrevole e buffer del ricevitore

Esercizio - Finestra scorrevole e buffer del ricevitore

In questa pagina 7

Testo. Collegamento punto-punto con bitrate al PHY R=1R=1 Mbit/s e ritardo di propagazione τp=25\tau_p=25 ms. Il DLL usa ARQ a finestra scorrevole e controllo di flusso a finestra scorrevole. Un file di 12 50012\,500 byte è trasferito tra i due nodi in pacchetti da 12501250 byte, con intestazione trascurabile. Il ricevitore ha un buffer DLL di dimensione QB=2500Q_B=2500 byte.

  1. Tempo totale di trasferimento (dalla trasmissione del primo bit alla ricezione dell'ultimo), senza errori.
  2. Massimo throughput effettivo ottenuto nel trasferimento del file.
  3. Che ritardo si avrebbe senza il DLL (cioè senza ARQ e controllo di flusso)?
  4. Come cambiano i risultati se la finestra fosse più grande del BDP?

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

  • Pacchetto: F=1250⋅8=10 000F=1250\cdot8=10\,000 bit; numero di pacchetti n=12 5001250=10n=\dfrac{12\,500}{1250}=10 (file =100 000=100\,000 bit).
  • Tempo di trasmissione: tF=FR=104106=10t_F=\dfrac{F}{R}=\dfrac{10^4}{10^6}=10 ms.
  • Ciclo (ACK trascurabile): RTT=tF+2τp=10+50=60RTT=t_F+2\tau_p=10+50=60 ms.
  • Finestra imposta dal buffer: il ricevitore non può avere più di QB/F=2500/1250=2Q_B/F=2500/1250=2 pacchetti non ancora consegnati: la finestra del mittente è N=2N=2 pacchetti.
  • BDP (con l'RTT come ritardo): R⋅RTT=106⋅0,06=60 000R\cdot RTT=10^6\cdot0{,}06=60\,000 bit =6=6 pacchetti. La finestra minima per trasmettere in continuo è N≥tG/tF=60/10=6N\ge t_G/t_F=60/10=6.

Poiché N=2<6N=2<6 la finestra è troppo piccola: il mittente trasmette 22 pacchetti e si ferma ad aspettare l'ACK. Unità: R⋅RTT=106 bit/s⋅0,06 s=60 000R\cdot RTT=10^6\ \text{bit/s}\cdot0{,}06\ \text{s}=60\,000 bit, e dividendo per i 10 00010\,000 bit di un pacchetto si hanno i 66 pacchetti della capacità del tubo.

Punto 1: tempo totale con N=2N=2

Sia sks_k l'istante di inizio della trasmissione del pacchetto kk. L'ACK di kk arriva a sk+RTT=sk+60s_k+RTT=s_k+60 ms. Il pacchetto k+2k+2 può partire solo quando è libera la finestra (arrivato l'ACK di kk) e quando il pacchetto k+1k+1 ha finito di essere trasmesso: sk+2=max⁡(sk+1+tF, sk+RTT).s_{k+2}=\max\left(s_{k+1}+t_F,\ s_k+RTT\right).

kk 1 2 3 4 5 6 7 8 9 10
sks_k (ms) 00 1010 6060 7070 120120 130130 180180 190190 240240 250250

La trasmissione procede quindi a raffiche di due pacchetti ogni 6060 ms (due pacchetti =20=20 ms di trasmissione, poi 4040 ms di attesa). L'ultimo pacchetto parte a 250250 ms, finisce di essere trasmesso a 260260 ms e arriva a 260+25=285260+25=285 ms: Ttot=285 ms.T_{tot}=285\ \text{ms}.

Punto 2: throughput effettivo

S=bit del fileTtot=100 0000,285≈351 kbit/s (≈350 kbit/s).S=\frac{\text{bit del file}}{T_{tot}}=\frac{100\,000}{0{,}285}\approx351\ \text{kbit/s}\ (\approx350\ \text{kbit/s}). Controllo: in ogni ciclo da 6060 ms si trasmettono N⋅F=20 000N\cdot F=20\,000 bit, cioè 333333 kbit/s a regime; il valore finale è un po' maggiore perché l'ultimo ciclo non aspetta l'ACK.

Punto 3: senza DLL

Senza ARQ né controllo di flusso il mittente trasmette in continuo, con tutti i pacchetti uno dietro l'altro: T=n tF+τp=10⋅10+25=125 ms.T=n\,t_F+\tau_p=10\cdot10+25=125\ \text{ms}. (Il buffer del ricevitore farebbe perdere i pacchetti in eccesso, ma nell'esercizio si calcola solo il tempo.)

Punto 4: finestra maggiore del BDP

Con N≥6N\ge6 pacchetti (finestra ≥\ge BDP) il mittente non si ferma mai: la trasmissione è continua, come senza DLL. Il tempo è 125125 ms e il throughput effettivo S=100 0000,125=800 kbit/s.S=\frac{100\,000}{0{,}125}=800\ \text{kbit/s}. 800800 kbit/s è inferiore a R=1R=1 Mbit/s per via della propagazione non trascurabile (2525 ms su 125125): lo stesso valore si ottiene con N=6N=6, e una finestra più grande non migliora ancora, perché è già continuo.

TtotT_{tot} throughput effettivo
N=2N=2 (buffer 25002500 B) 285285 ms ≈351\approx351 kbit/s
senza DLL 125125 ms 800800 kbit/s
N≥6N\ge6 (finestra ≥\ge BDP) 125125 ms 800800 kbit/s

Valori intermedi: con la stessa regola sk+N=max⁡(sk+N−1+tF, sk+RTT)s_{k+N}=\max(s_{k+N-1}+t_F,\ s_k+RTT) il tempo cala con NN finché la finestra non copre il tubo, poi si ferma a n tF+τp=125n\,t_F+\tau_p=125 ms.

Grafico interattivo: Tempo totale T(N) in ms in funzione della finestra N (file da 10 pacchetti, t_F = 10 ms, RTT = 60 ms, τ_p = 25 ms): N = 2 dà 285 ms, N ≥ 6 dà 125 ms

Grafico interattivo: Throughput effettivo S(N) = 100 000 bit / T(N) in kbit/s: 351 kbit/s con N = 2 (buffer da 2500 B), 800 kbit/s con N ≥ 6

Confronto con la soluzione ufficiale

Ufficiale: ≈285\approx285 ms; ≈350\approx350 kbit/s; 125125 ms; per finestra maggiore del BDP 125125 ms e 800800 kbit/s. Coincide (351351 kbit/s è arrotondato a 350350 dalla soluzione).

Errori comuni

  • Confondere le unità del buffer: QBQ_B è in byte e il pacchetto pure, quindi la finestra è 2500/1250=22500/1250=2 pacchetti (non 25002500 bit divisi per byte).
  • Ignorare il buffer e usare subito la finestra del BDP (66 pacchetti): nel controllo di flusso a finestra è il buffer del ricevitore a fissare la finestra.
  • Calcolare 285285 ms come 55 cicli da 6060 ms più qualcosa: l'ultimo ciclo è più corto (250+10+25250+10+25).
  • Dividere i bit per il tempo senza chiarire se si include la propagazione: qui il throughput effettivo è bit del file/Ttot\text{bit del file}/T_{tot}.

(Verificato con Python: tF=10t_F=10 ms, RTT=60RTT=60 ms, BDP =60 000=60\,000 bit =6=6 pacchetti; istanti di partenza 0,10,60,70,…,2500,10,60,70,\dots,250 ms; Ttot=285T_{tot}=285 ms, 350,9350{,}9 kbit/s; senza DLL 125125 ms, 800800 kbit/s.)

Versione ripasso

Dati. R=1R=1 Mbit/s, τp=25\tau_p=25 ms; file 12 50012\,500 B in n=10n=10 pacchetti da F=1250F=1250 B =10 000=10\,000 bit; buffer QB=2500Q_B=2500 B. (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 →)

  • tF=10t_F=10 ms, RTT=tF+2τp=60RTT=t_F+2\tau_p=60 ms, BDP =R⋅RTT=60=R\cdot RTT=60 kbit =6=6 pacchetti; finestra N=QB/F=2<6N=Q_B/F=2<6.
  • sk+2=max⁡(sk+1+tF, sk+RTT)s_{k+2}=\max(s_{k+1}+t_F,\ s_k+RTT): partenze 0,10,60,70,120,130,180,190,240,2500,10,60,70,120,130,180,190,240,250 ms.
  • Totale: 250+10+25=285250+10+25=285 ms; throughput =100 000/0,285≈351=100\,000/0{,}285\approx351 kbit/s.
  • Senza DLL: n tF+τp=125n\,t_F+\tau_p=125 ms. Finestra ≥\ge BDP: trasmissione continua, 125125 ms e 800800 kbit/s.
  • Ufficiale: 285285 ms, 350350 kbit/s, 125125 ms, 800800 kbit/s: coincide.
  • Errore tipico: finestra sbagliata (buffer in byte); sommare cicli interi invece di fermarsi all'ultimo pacchetto.

Lezioni in cui compare

Teoria collegata