Salta al contenuto
Note per Studenti Esercizio - Go-Back-N end-to-end su tre collegamenti

Esercizio - Go-Back-N end-to-end su tre collegamenti

In questa pagina 7

Testo. Si trasmette un messaggio di M=135M=135 KB, diviso in pacchetti di L=1500L=1500 byte, dall'host A all'host B attraverso due router in serie: A−-R1 con C1=2,4C_1=2{,}4 Mbit/s e τ1=5\tau_1=5 ms, R1−-R2 con C2=20C_2=20 Mbit/s e τ2=3\tau_2=3 ms, R2−-B con C3=24C_3=24 Mbit/s e τ3=2\tau_3=2 ms.

  1. Determinare il tempo totale di trasferimento (dalla trasmissione del primo byte alla ricezione dell'ultimo byte) se si usa GBN con finestra N=4N=4 eseguito end-to-end a livello DLL. Ritardi di elaborazione e di coda e intestazioni trascurati; anche gli ACK hanno dimensione trascurabile.
  2. Ripetere il calcolo contando il tempo fino alla ricezione dell'ultimo ACK.
  3. Ripetere con N=6N=6.

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

  • Numero di pacchetti: K=135 0001500=90K=\dfrac{135\,000}{1500}=90, ciascuno di L=1500 B=12 000L=1500\ \text{B}=12\,000 bit.
  • Tempi di trasmissione: T1=12 0002,4⋅106=5 ms,T2=12 00020⋅106=0,6 ms,T3=12 00024⋅106=0,5 ms.T_1=\frac{12\,000}{2{,}4\cdot10^6}=5\ \text{ms},\quad T_2=\frac{12\,000}{20\cdot10^6}=0{,}6\ \text{ms},\quad T_3=\frac{12\,000}{24\cdot10^6}=0{,}5\ \text{ms}.
  • Propagazioni: τ1=5\tau_1=5, τ2=3\tau_2=3, τ3=2\tau_3=2 ms.

Collo di bottiglia. È il collegamento con il tempo di trasmissione più lungo: il collegamento 1 (T1=5T_1=5 ms, contro 0,60{,}6 e 0,50{,}5 ms). Gli altri due sono molto più veloci, quindi i pacchetti non si accumulano nei router: T2,T3<T1T_2,T_3<T_1 vuol dire che ogni pacchetto trova libero il collegamento successivo.

Che cos'è GBN end-to-end. La finestra NN conta i pacchetti inviati da A e non ancora confermati da B (ACK di B che torna ad A attraverso tutta la rete). Il tempo di andata e ritorno è quindi quello dell'intero percorso: RTTe2e=T1+τ1+T2+τ2+T3+τ3+τ3+τ2+τ1⏟ritorno ACK=5+5+0,6+3+0,5+2+2+3+5=26,1 ms.\text{RTT}_{e2e}=T_1+\tau_1+T_2+\tau_2+T_3+\tau_3+\underbrace{\tau_3+\tau_2+\tau_1}_{\text{ritorno ACK}}=5+5+0{,}6+3+0{,}5+2+2+3+5=26{,}1\ \text{ms}.

Passo 1: la trasmissione è continua?

Il mittente non deve mai fermarsi se l'ACK del primo pacchetto di una finestra arriva prima che il mittente abbia finito di inviarla: N Tb≥RTTe2eN\,T_{b}\ge\text{RTT}_{e2e}, con Tb=T1T_b=T_1 il tempo di trasmissione del collo di bottiglia.

  • N=4N=4: 4⋅5=20<26,14\cdot5=20<26{,}1 ms: no. A invia 44 pacchetti (in 2020 ms), poi resta fermo per i 6,16{,}1 ms restanti prima che arrivi il primo ACK. Si lavora a finestre, una ogni RTTe2e\text{RTT}_{e2e}.
  • N=6N=6: 6⋅5=30≥26,16\cdot5=30\ge26{,}1 ms: sì. Il primo ACK torna mentre A sta ancora trasmettendo la finestra: GBN si comporta come se non ci fosse alcun ARQ.

(1) N=4N=4, fino all'ultimo byte

Con K=90K=90: ⌊90/4⌋=22\lfloor90/4\rfloor=22 finestre complete (88 pacchetti); l'ultima ha 90−88=290-88=2 pacchetti. Le 2222 finestre complete durano 22⋅26,1=574,222\cdot26{,}1=574{,}2 ms. Nell'ultima finestra non si attende alcun ACK: il pacchetto 90 parte dopo 2T12T_1 dall'inizio della finestra, e poi attraversa i tre collegamenti (τ1+T2+τ2+T3+τ3\tau_1+T_2+\tau_2+T_3+\tau_3):

Ttot=22 RTTe2e+2T1+τ1+T2+τ2+T3+τ3=574,2+10+5+0,6+3+0,5+2=595,3 ms.T_{tot}=22\,\text{RTT}_{e2e}+2T_1+\tau_1+T_2+\tau_2+T_3+\tau_3=574{,}2+10+5+0{,}6+3+0{,}5+2=\mathbf{595{,}3\ ms}.

(2) N=4N=4, fino all'ultimo ACK

Basta aggiungere il ritorno dell'ultimo ACK, τ3+τ2+τ1=10\tau_3+\tau_2+\tau_1=10 ms: Ttot=595,3+10=605,3 ms.T_{tot}=595{,}3+10=\mathbf{605{,}3\ ms}. (Equivalente: 22 RTTe2e+RTTe2e+T122\,\text{RTT}_{e2e}+\text{RTT}_{e2e}+T_1, perché l'ultima finestra termina quando torna l'ACK del primo dei suoi due pacchetti più il tempo T1T_1 del secondo: 574,2+26,1+5=605,3574{,}2+26{,}1+5=605{,}3.)

(3) N=6N=6

La trasmissione è continua: A invia i 9090 pacchetti uno dopo l'altro, ognuno occupando T1=5T_1=5 ms, per 90⋅5=45090\cdot5=450 ms; poi l'ultimo pacchetto attraversa i tre collegamenti. Non servono finestre: Ttot=K T1+τ1+T2+τ2+T3+τ3=450+5+0,6+3+0,5+2=461,1 ms(ultimo byte),T_{tot}=K\,T_1+\tau_1+T_2+\tau_2+T_3+\tau_3=450+5+0{,}6+3+0{,}5+2=\mathbf{461{,}1\ ms}\quad(\text{ultimo byte}), Ttot=461,1+10=471,1 ms(ultimo ACK).T_{tot}=461{,}1+10=\mathbf{471{,}1\ ms}\quad(\text{ultimo ACK}).

NN Trasmissione continua? Fino all'ultimo byte Fino all'ultimo ACK
44 no (20<26,120<26{,}1) 595,3595{,}3 ms 605,3605{,}3 ms
66 sì (30≥26,130\ge26{,}1) 461,1461{,}1 ms 471,1471{,}1 ms

La finestra minima per la trasmissione continua è N≥⌈RTTe2e/T1⌉=⌈26,1/5⌉=⌈5,22⌉=6N\ge\lceil\text{RTT}_{e2e}/T_1\rceil=\lceil26{,}1/5\rceil=\lceil5{,}22\rceil=6 (si arrotonda per eccesso: con N=5N=5, 5⋅5=25<26,15\cdot5=25<26{,}1, restano 1,11{,}1 ms di pausa a ogni giro): con N=6N=6 si ottiene il tempo minimo possibile (K T1K\,T_1 più la propagazione); con N=4N=4 si perdono 134134 ms in attese (595,3−461,1595{,}3-461{,}1).

Il grafico mostra T(N)T(N) per ogni finestra (con la stessa regola, ⌈90/N⌉\lceil90/N\rceil finestre, l'ultima più corta): scende velocemente finché N<6N<6 e poi si ferma al minimo 461,1461{,}1 ms. Aumentare NN oltre 66 non serve.

Grafico interattivo: Tempo totale fino all'ultimo byte T(N) in ms del GBN end-to-end (K = 90 pacchetti, T1 = 5 ms, RTT = 26,1 ms): 595,3 ms con N = 4, 461,1 ms con N ≥ 6

Confronto con la soluzione ufficiale

Ufficiale: 595,3595{,}3, 605,3605{,}3 e 461,1461{,}1 ms (con ultimo ACK per N=6N=6: 471,1471{,}1 ms). Coincidono tutti, anche confrontando con una simulazione a eventi del GBN end-to-end senza perdite.

Errori comuni

  • Usare per la continuità il bitrate medio o il collegamento più veloce: conta il collo di bottiglia, qui il collegamento 1.
  • Calcolare RTTe2e\text{RTT}_{e2e} senza i tre tempi di trasmissione (T1+T2+T3=6,1T_1+T_2+T_3=6{,}1 ms): si otterrebbe 2020 ms e N=4N=4 sembrerebbe sufficiente, ma 4⋅5=20<26,14\cdot5=20<26{,}1.
  • Contare 2323 finestre da 44: 90=22⋅4+290=22\cdot4+2, l'ultima ne ha solo due e non dura un RTT intero.
  • Per N=6N=6 usare ancora le finestre: l'ACK torna in tempo e la trasmissione è continua.

(Verificato con Python: RTTe2e=26,1\text{RTT}_{e2e}=26{,}1 ms; simulazione GBN end-to-end: N=4→595,3N=4\to595{,}3 (con ACK 605,3605{,}3), N=6→461,1N=6\to461{,}1 (471,1471{,}1) ms.)

Versione ripasso

Dati. K=135 000/1500=90K=135\,000/1500=90 pacchetti da 1212 kbit; T1=5T_1=5, T2=0,6T_2=0{,}6, T3=0,5T_3=0{,}5 ms; τ=5,3,2\tau=5,3,2 ms; collo di bottiglia: collegamento 1. RTTe2e=T1+T2+T3+2(τ1+τ2+τ3)=26,1\text{RTT}_{e2e}=T_1+T_2+T_3+2(\tau_1+\tau_2+\tau_3)=26{,}1 ms.

Metodo (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 →): continua se NT1≥RTTe2eNT_1\ge\text{RTT}_{e2e}; altrimenti NN pacchetti per RTTe2e\text{RTT}_{e2e}.

  • N=4N=4: 20<26,120<26{,}1, a finestre; 2222 complete ++ 22 pacchetti: 22⋅26,1+2T1+τ1+T2+τ2+T3+τ3=595,322\cdot26{,}1+2T_1+\tau_1+T_2+\tau_2+T_3+\tau_3=\mathbf{595{,}3} ms; ultimo ACK +10=605,3+10=\mathbf{605{,}3} ms.
  • N=6N=6: 30≥26,130\ge26{,}1, continuo: KT1+τ1+T2+τ2+T3+τ3=450+11,1=461,1KT_1+\tau_1+T_2+\tau_2+T_3+\tau_3=450+11{,}1=\mathbf{461{,}1} ms (471,1471{,}1 con l'ultimo ACK).

Errore tipico: dimenticare i tempi di trasmissione nell'RTTe2e\text{RTT}_{e2e}, o una finestra in più alla fine.

Lezioni in cui compare

Teoria collegata