Salta al contenuto
Note per Studenti Esercizio - Collegamento di 35 km, stop-and-wait e Go-Back-N con pacchetto perso

Esercizio - Collegamento di 35 km, stop-and-wait e Go-Back-N con pacchetto perso

In questa pagina 6

Testo. Collegamento punto-punto lungo d=35d=35 km, bitrate al PHY R=34,368R=34{,}368 Mbit/s, propagazione ideale (c=2⋅108c=2\cdot10^8 m/s). Un file di 28 00028\,000 byte è trasferito tra i due nodi in pacchetti da 280280 byte con intestazione di 4040 byte. Il tempo di elaborazione è trascurabile.

  1. Tempo totale di trasferimento (dalla trasmissione del primo bit alla ricezione dell'ultimo) e throughput con ARQ S&W, senza errori.
  2. Tempo totale e throughput con ARQ GBN (finestra di trasmissione N=7N=7, finestra di ricezione infinita, timeout t0=500 μt_0=500\ \mus), supponendo che il 2121-esimo pacchetto inviato da A si perda.
  3. Valore ottimo della finestra NN (GBN) per massimizzare il throughput.

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 →; per gli ARQ visti dal lato dei sistemi di comunicazione anche 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

  • Payload per pacchetto I=280⋅8=2240I=280\cdot8=2240 bit; frame F=(280+40)⋅8=2560F=(280+40)\cdot8=2560 bit. Numero di pacchetti: n=28 000280=100n=\dfrac{28\,000}{280}=100.
  • Tempo di trasmissione del frame: tF=FR=256034,368⋅106=74,49 μt_F=\dfrac{F}{R}=\dfrac{2560}{34{,}368\cdot10^6}=74{,}49\ \mus.
  • Propagazione: τp=dc=35⋅1032⋅108=175 μ\tau_p=\dfrac{d}{c}=\dfrac{35\cdot10^3}{2\cdot10^8}=175\ \mus.
  • ACK trascurabile (nessun dato): tA≈0t_A\approx0; tempo di ciclo tG=tF+2τp=74,49+350=424,49 μt_G=t_F+2\tau_p=74{,}49+350=424{,}49\ \mus.
  • Throughput = bit trasmessi sul collegamento (frame, intestazione compresa) per tempo totale; goodput = solo i bit di payload, per tempo totale. Con nn pacchetti: S=nF/TtotS=nF/T_{tot}, Sgood=nI/TtotS_{good}=nI/T_{tot}.

Punto 1: stop-and-wait

Si manda un frame e si aspetta l'ACK: un frame ogni tGt_G. L'ultimo frame parte a (n−1) tG(n-1)\,t_G e arriva dopo tF+τpt_F+\tau_p: Ttot=(n−1) tG+tF+τp=99⋅424,49+74,49+175=42 273,8 μs≈42,274 ms.T_{tot}=(n-1)\,t_G+t_F+\tau_p=99\cdot424{,}49+74{,}49+175=42\,273{,}8\ \mu\text{s}\approx42{,}274\ \text{ms}. Perché: ogni frame, tranne l'ultimo, occupa un ciclo completo tGt_G (trasmissione, andata, ritorno dell'ACK) prima che parta il successivo, quindi l'ultimo parte a (n−1) tG(n-1)\,t_G; per lui basta aspettare tF+τpt_F+\tau_p (l'ACK finale non serve, il tempo si ferma alla ricezione). Controllo con la teoria: ρSW=tF/tG=74,49/424,49=0,1755\rho_{SW}=t_F/t_G=74{,}49/424{,}49=0{,}1755, cioè a regime 0,1755⋅34,368=6,030{,}1755\cdot34{,}368=6{,}03 Mbit/s, poco meno del valore sotto perché l'ultimo frame non aspetta l'ACK. Throughput: S=100⋅25600,0422738=6,056S=\dfrac{100\cdot2560}{0{,}0422738}=6{,}056 Mbit/s. Goodput: Sgood=100⋅22400,0422738=5,299S_{good}=\dfrac{100\cdot2240}{0{,}0422738}=5{,}299 Mbit/s (molto più basso del bitrate perché la finestra è 11 e tG≈5,7 tFt_G\approx5{,}7\,t_F).

Punto 2: Go-Back-N con N=7N=7 e il 2121-esimo pacchetto perso

Senza errori. Prima di tutto si controlla se la finestra basta per trasmettere in continuo: N tF=7⋅74,49=521,4 μs≥tG=424,5 μsN\,t_F=7\cdot74{,}49=521{,}4\ \mu\text{s}\ge t_G=424{,}5\ \mu\text{s} ✓ (equivalentemente N=7≥tG/tF=5,70N=7\ge t_G/t_F=5{,}70). Quindi il canale non resta mai vuoto: il tempo senza errori è n tF+τp=7449+175=7624 μn\,t_F+\tau_p=7449+175=7624\ \mus =7,624=7{,}624 ms.

Con la perdita del pacchetto 2121. Il pacchetto 2121 inizia a essere trasmesso a 20 tF=1489,8 μ20\,t_F=1489{,}8\ \mus. Il ricevitore ha finestra infinita: accetta e tiene in memoria i pacchetti 22,…,2722,\dots,27 che arrivano fuori ordine (non può consegnarli perché manca il 2121), e non invia ACK nuovi per il 2121. Il mittente continua a trasmettere 22,…,2722,\dots,27 (la finestra 2121–2727 si riempie) e si ferma, perché il 2828 non può partire senza l'ACK del 2121.

Il timer del pacchetto 2121, contato dall'inizio della sua trasmissione, scade a 1489,8+500=1989,8 μ1489{,}8+500=1989{,}8\ \mus, mentre il 2727 è ancora in trasmissione (finisce a 27 tF=2011,2 μ27\,t_F=2011{,}2\ \mus). Il GBN riparte dal primo pacchetto non confermato: terminata la trasmissione del 2727, A ritrasmette tutta la finestra 21,…,2721,\dots,27 (77 pacchetti, 521,4 μ521{,}4\ \mus). Dopo, la ritrasmissione del 2121 è arrivata a destinazione, il ricevitore ha già in memoria 2222–2727 e invia un ACK cumulativo fino al 2727 (arriva a 2011,2+74,5+350=2435,7 μ2011{,}2+74{,}5+350=2435{,}7\ \mus, prima che la ritrasmissione finisca a 2532,6 μ2532{,}6\ \mus): la finestra scorre e A prosegue con 28,…,10028,\dots,100 senza pause.

Il totale è quindi quello senza errori più la ritrasmissione della finestra: Ttot=(n+N) tF+τp=107⋅74,49+175=8145 μs≈8,145 ms.T_{tot}=(n+N)\,t_F+\tau_p=107\cdot74{,}49+175=8145\ \mu\text{s}\approx8{,}145\ \text{ms}. Throughput: S=100⋅25600,0081452=31,43S=\dfrac{100\cdot2560}{0{,}0081452}=31{,}43 Mbit/s; goodput: 100⋅22400,0081452=27,50\dfrac{100\cdot2240}{0{,}0081452}=27{,}50 Mbit/s.

Il costo della perdita è N tF=521 μN\,t_F=521\ \mus: tutta una finestra ritrasmessa (anche pacchetti già ricevuti bene), il difetto del GBN rispetto al SR.

Punto 3: finestra ottima

Senza errori il throughput è massimo (trasmissione continua) se N tF≥tGN\,t_F\ge t_G, cioè N≥tGtF=424,4974,49=5,70 ⇒ Nmin=6.N\ge\frac{t_G}{t_F}=\frac{424{,}49}{74{,}49}=5{,}70\ \Rightarrow\ N_{min}=6. Con N=5N=5 il canale sarebbe vuoto un po' (N tF=372,4<424,5 μN\,t_F=372{,}4<424{,}5\ \mus: efficienza 0,8770{,}877); con N≥6N\ge6 è continuo. Non conviene andare oltre 66: non si guadagna nulla senza errori e, quando un pacchetto si perde, si ritrasmettono NN pacchetti, quindi una finestra più grande costa di più. La finestra ottima è N=6N=6. Senza errori l'utilizzazione del GBN è ρ=min⁡{1, N tF/tG}\rho=\min\{1,\,N\,t_F/t_G\} (con NN pacchetti in volo il trasmettitore lavora per N tFN\,t_F su un ciclo di tGt_G): cresce linearmente con NN e arriva a 11 per N=tG/tF=5,70N=t_G/t_F=5{,}70; per N=5N=5 vale 5⋅74,49/424,49=0,8775\cdot74{,}49/424{,}49=0{,}877, per N≥6N\ge6 vale 11.

Grafico interattivo: Utilizzazione ρ = min(1, N·t_F/t_G) del GBN senza errori, con t_F = 74,49 µs e t_G = 424,49 µs: sale linearmente fino a N = 5,70 e poi resta 1

Confronto con la soluzione ufficiale

  • S&W: 42,27442{,}274 ms e throughput 6,0566{,}056 Mbit/s ✓. Goodput: ufficiale 5,235{,}23 Mbit/s, ricalcolato 5,299≈5,305{,}299\approx5{,}30 Mbit/s ✗. Il rapporto goodput/throughput deve valere I/F=280/320=0,875I/F=280/320=0{,}875 (come in GBN: 27,5/31,4327{,}5/31{,}43) e 6,056⋅0,875=5,2996{,}056\cdot0{,}875=5{,}299: 5,235{,}23 non è coerente con il resto della soluzione, ed è probabilmente un refuso di battitura (5,305{,}30).
  • GBN: 8,1458{,}145 ms ✓; throughput 31,4331{,}43 Mbit/s ✓ e goodput 27,527{,}5 Mbit/s ✓. Questo risultato richiede due ipotesi: finestra di ricezione infinita (il 2222–2727 non vanno ritrasmessi uno alla volta) e timer contato dall'inizio della trasmissione del pacchetto (se si contasse dalla fine, la scadenza sarebbe a 2064 μ2064\ \mus, A resterebbe fermo 53 μ53\ \mus e il totale sarebbe 8,1988{,}198 ms, non il valore ufficiale).
  • N=6N=6 ✓.

Errori comuni

  • Dimenticare l'intestazione: usare 280280 byte (invece di 320320) per tFt_F dà 65,2 μ65{,}2\ \mus, e tutti i valori cambiano.
  • Calcolare n=28 000/320n=28\,000/320 invece di 28 000/28028\,000/280: i 28 00028\,000 byte sono payload.
  • Nel GBN ritrasmettere solo il pacchetto 2121: in GBN si ripete tutta la finestra non confermata (NN pacchetti).
  • Confondere throughput e goodput: il primo conta anche l'intestazione, il secondo no.

(Verificato con Python: tF=74,488 μt_F=74{,}488\ \mus, τp=175 μ\tau_p=175\ \mus, tG=424,488 μt_G=424{,}488\ \mus; S&W 42,273842{,}2738 ms, 6,05586{,}0558 e 5,29885{,}2988 Mbit/s; GBN: scadenza del timer a 1989,8 μ1989{,}8\ \mus, fine del pacchetto 2727 a 2011,2 μ2011{,}2\ \mus, totale 8,14528{,}1452 ms, 31,4331{,}43 e 27,5027{,}50 Mbit/s; tG/tF=5,699t_G/t_F=5{,}699, N=6N=6.)

Versione ripasso

Dati. d=35d=35 km, R=34,368R=34{,}368 Mbit/s, c=2⋅108c=2\cdot10^8 m/s; n=28 000/280=100n=28\,000/280=100 pacchetti, payload I=2240I=2240 bit, frame F=320⋅8=2560F=320\cdot8=2560 bit. (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=F/R=74,49 μt_F=F/R=74{,}49\ \mus; τp=175 μ\tau_p=175\ \mus; tG=tF+2τp=424,49 μt_G=t_F+2\tau_p=424{,}49\ \mus (ACK trascurabile).
  • S&W: T=(n−1)tG+tF+τp=42,274T=(n-1)t_G+t_F+\tau_p=42{,}274 ms; S=nF/T=6,056S=nF/T=6{,}056 Mbit/s; goodput nI/T=5,30nI/T=5{,}30 Mbit/s.
  • GBN N=7N=7: NtF=521 μs≥tGNt_F=521\ \mu s\ge t_G: continuo; senza errori ntF+τp=7,624nt_F+\tau_p=7{,}624 ms. Pacchetto 2121 perso, timer da inizio trasmissione (1989,8 μ1989{,}8\ \mus <2011,2<2011{,}2): si ritrasmette la finestra 2121–2727 (N tFN\,t_F in più): T=(n+N)tF+τp=8,145T=(n+N)t_F+\tau_p=8{,}145 ms; S=31,43S=31{,}43, goodput 27,527{,}5 Mbit/s.
  • NN ottimo: N≥tG/tF=5,70⇒N=6N\ge t_G/t_F=5{,}70\Rightarrow N=6 (più grande costa di più a ogni perdita).
  • Ufficiale: coincide, tranne goodput S&W 5,235{,}23 (refuso, corretto 5,30=6,056⋅280/3205{,}30=6{,}056\cdot280/320).
  • Errore tipico: intestazione dimenticata; ritrasmettere solo il pacchetto perso in GBN.

Lezioni in cui compare

Teoria collegata