Salta al contenuto
Note per Studenti Esercizio - Due collegamenti da 10 e 2 Gbps, 1000 pacchetti con S&W e GBN

Esercizio - Due collegamenti da 10 e 2 Gbps, 1000 pacchetti con S&W e GBN

In questa pagina 6

Testo. Due host comunicano tramite uno switch, su una catena di due collegamenti con R1=10R_1=10 Gbit/s, R2=2R_2=2 Gbit/s e propagazioni τ1=100 μ\tau_1=100\ \mus, τ2=10 μ\tau_2=10\ \mus. Lo switch fa commutazione di pacchetto a datagramma (store-and-forward), senza ritardo di elaborazione. Un file è diviso in 10001000 pacchetti da 1010 kbit (10001000 bit di intestazione e 90009000 di payload). Calcolare il tempo totale di trasferimento (dalla trasmissione del primo bit alla ricezione dell'ultimo) quando:

  1. S&W su ciascun collegamento (nessun errore);
  2. S&W end-to-end (nessun errore);
  3. GBN su ciascun collegamento, con la finestra minima che garantisce trasmissione continua, e i pacchetti 11, 22 e 10001000 sono corrotti sul tratto da A allo switch.

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 →, Commutazione di circuito e di pacchettoUn nodo di commutazione (switch) può collegare ingresso e uscita in tre modi. Commutazione di circuito: si stabilisce prima un collegamento fisico dedicato (rete telefonica), tempo di consegna $T=3Nt_p+Nt_s+M/R$. Commutazione di pacchetto a datagramma: il messaggio è diviso in $K$ pacchetti con intestazione, ognuno è instradato indipendentemente con store-and-forward, $T=Nt_p+(N+K-1)\frac{M/K+H}{R}$, con $K_{ott}=\sqrt{(N-1)M/H}$. A circuito virtuale: tre fasi (setup, dati, chiusura), connessione logica dedicata ma senza risorse dedicate, identificatore locale che cambia a ogni salto.Commutazione di circuito e di pacchetto →, 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

  • F=10 000F=10\,000 bit per pacchetto (l'intestazione fa parte del pacchetto che viaggia), K=1000K=1000.
  • T1=FR1=1041010=1 μT_1=\dfrac{F}{R_1}=\dfrac{10^4}{10^{10}}=1\ \mus; T2=FR2=1042⋅109=5 μT_2=\dfrac{F}{R_2}=\dfrac{10^4}{2\cdot10^9}=5\ \mus.
  • τ1=100 μ\tau_1=100\ \mus, τ2=10 μ\tau_2=10\ \mus.
  • ACK di dimensione trascurabile (conta solo la propagazione di ritorno).
  • Tempi di ciclo: RTT1=T1+2τ1=201 μRTT_1=T_1+2\tau_1=201\ \mus; RTT2=T2+2τ2=25 μRTT_2=T_2+2\tau_2=25\ \mus.

Caso 1: S&W su ciascun collegamento

Su ogni collegamento si manda un pacchetto e si aspetta il suo ACK. A è vincolato dal ciclo più lungo, RTT1=201 μRTT_1=201\ \mus >RTT2=25 μ>RTT_2=25\ \mus: lo switch smaltisce un pacchetto ogni 25 μ25\ \mus, ben prima che A ne mandi uno nuovo (ogni 201 μ201\ \mus). Il ritmo è 11 pacchetto ogni RTT1RTT_1; l'ultimo pacchetto parte a (K−1) RTT1(K-1)\,RTT_1 e poi fa i due salti: Ttot=(K−1) RTT1+T1+τ1+T2+τ2=999⋅201+1+100+5+10=200 915 μs=200,915 ms.T_{tot}=(K-1)\,RTT_1+T_1+\tau_1+T_2+\tau_2=999\cdot201+1+100+5+10=200\,915\ \mu\text{s}=200{,}915\ \text{ms}. Controllo: l'utilizzazione dello stop-and-wait sul collegamento 1 è ρ=T1/RTT1=1/201\rho=T_1/RTT_1=1/201, quindi K T1/ρ=1000⋅201 μs=201K\,T_1/\rho=1000\cdot201\ \mu\text{s}=201 ms, circa il risultato (la differenza è l'ultimo ciclo che non aspetta l'ACK). Il collegamento 1 trasmette per 1/2011/201 del tempo: ha 1010 Gbit/s di bitrate, ma un solo pacchetto da 1010 kbit ogni 201 μ201\ \mus, cioè 49,7549{,}75 Mbit/s.

Caso 2: S&W end-to-end

Un solo pacchetto in rete: il ciclo comprende l'andata su entrambi i collegamenti e il ritorno dell'ACK da B ad A: RTTe2e=T1+τ1+T2+τ2+τ2+τ1=1+100+5+10+10+100=226 μs.RTT_{e2e}=T_1+\tau_1+T_2+\tau_2+\tau_2+\tau_1=1+100+5+10+10+100=226\ \mu\text{s}. Ttot=(K−1) RTTe2e+T1+τ1+T2+τ2=999⋅226+116=225 890 μs=225,890 ms.T_{tot}=(K-1)\,RTT_{e2e}+T_1+\tau_1+T_2+\tau_2=999\cdot226+116=225\,890\ \mu\text{s}=225{,}890\ \text{ms}.

Caso 3: GBN su ogni collegamento, con tre pacchetti corrotti

Finestra minima per trasmissione continua. Serve N≥tG/tFN\ge t_G/t_F, cioè N≥RTT/TN\ge RTT/T (ACK trascurabile):

  • collegamento 1: N1=⌈2011⌉=201N_1=\left\lceil\dfrac{201}{1}\right\rceil=201 pacchetti;
  • collegamento 2: N2=255=5N_2=\dfrac{25}{5}=5 pacchetti.

Il collegamento 2 è il più lento (T2=5>T1=1T_2=5>T_1=1): è il collo di bottiglia, anche senza errori, perché lo switch non può emettere più di un pacchetto ogni 5 μ5\ \mus. Senza errori il tempo sarebbe T1+τ1+K T2+τ2=1+100+5000+10=5111 μT_1+\tau_1+K\,T_2+\tau_2=1+100+5000+10=5111\ \mus.

Con gli errori. Gli errori sono solo sul collegamento 1 (A → switch). Ipotesi coerenti con la teoria GBN: ricevitore con finestra M=1M=1 (scarta tutto ciò che non è il pacchetto atteso); il timeout è il minimo possibile, cioè RTT1=201 μRTT_1=201\ \mus, contato dall'inizio della trasmissione del pacchetto.

  1. A trasmette i pacchetti 1,2,…,2011,2,\dots,201 a ritmo continuo (1 μ1\ \mus ciascuno) e la finestra si riempie. I pacchetti 11 e 22 sono corrotti; lo switch li scarta, e scarta anche 3,…,2013,\dots,201 perché non sono quelli attesi. Nessun ACK arriva.
  2. Il timer del pacchetto 11 scade a 201 μ201\ \mus, proprio quando A ha finito di trasmettere la finestra: A ricomincia dal pacchetto 11 e trasmette in modo continuo 1,2,…,10001,2,\dots,1000 (ora corretti, salvo il 10001000). Il pacchetto jj finisce di essere ricevuto dallo switch a 201+(j−1)+1+100=301+j μ201+(j-1)+1+100=301+j\ \mus. In particolare il pacchetto 11 è completamente ricevuto a 302 μ302\ \mus.
  3. Il pacchetto 10001000 è corrotto alla sua prima trasmissione (parte a 1200 μ1200\ \mus): il timer scade a 1200+201=1401 μ1200+201=1401\ \mus, lo si ritrasmette e arriva allo switch a 1401+1+100=1502 μ1401+1+100=1502\ \mus.
  4. Lo switch inoltra sul collegamento 2 un pacchetto ogni 5 μ5\ \mus, a partire da 302 μ302\ \mus: il pacchetto jj finisce di uscire a 302+5j μ302+5j\ \mus. Il pacchetto 10001000 ha bisogno di uscire a 5302−5=5297 μ5302-5=5297\ \mus, ma è già nello switch dal 1502 μ1502\ \mus: la sua ritrasmissione non ritarda nulla, perché la coda dello switch non si è ancora svuotata.

Quindi l'unico costo degli errori è il ritardo con cui parte la sequenza corretta: Ttot=RTT1+T1+τ1+K T2+τ2=201+1+100+5000+10=5312 μs=5,312 ms.T_{tot}=RTT_1+T_1+\tau_1+K\,T_2+\tau_2=201+1+100+5000+10=5312\ \mu\text{s}=5{,}312\ \text{ms}. (Cioè 5111+2015111+201: gli errori sui pacchetti 11 e 22 costano un RTT1RTT_1, quelli sul pacchetto 10001000 nulla.)

Caso TtotT_{tot}
S&W su ogni collegamento 200,915200{,}915 ms
S&W end-to-end 225,890225{,}890 ms
GBN, errori sui pacchetti 1,2,10001,2,1000 5,3125{,}312 ms

Confronto con la soluzione ufficiale

Ufficiale: 200,915200{,}915 ms, 225,890225{,}890 ms, 5,3125{,}312 ms. Coincide in tutti e tre i casi. Per il terzo caso la soluzione ufficiale dà solo il risultato: il modello ricostruito qui (timeout =RTT1=RTT_1 contato dall'inizio della trasmissione, collo di bottiglia sul collegamento 2) lo riproduce esattamente; il valore 5,3125{,}312 è 5,1115{,}111 ms (senza errori) più un RTT1RTT_1.

Errori comuni

  • Usare i 90009000 bit di payload al posto dei 10 00010\,000 bit del pacchetto nei tempi di trasmissione: sul collegamento viaggia tutta la PDU.
  • Nel GBN scegliere la finestra con il solo RTT2RTT_2 (finestra 55) anche sul collegamento 1, dove serve 201201: con N=5N=5 A trasmetterebbe a ritmo molto più basso.
  • Ritrasmettere solo il pacchetto 11 (stile Selective Repeat) invece di tutta la finestra: in GBN si torna indietro e si riparte da lì.
  • Aggiungere al totale anche il ritardo del pacchetto 10001000: la sua ritrasmissione cade mentre lo switch sta ancora smaltendo la coda.

(Verificato con Python: T1=1 μT_1=1\ \mus, T2=5 μT_2=5\ \mus, RTT1=201 μRTT_1=201\ \mus; 200,915200{,}915 ms, 225,890225{,}890 ms; simulatore GBN con timeout 201 μ201\ \mus: pacchetto 11 ricevuto a 302 μ302\ \mus, ultimo pacchetto fuori dallo switch a 5,3125{,}312 ms.)

Versione ripasso

Dati. R1=10R_1=10, R2=2R_2=2 Gbit/s; τ1=100 μ\tau_1=100\ \mus, τ2=10 μ\tau_2=10\ \mus; K=1000K=1000 pacchetti da F=10F=10 kbit: T1=1 μT_1=1\ \mus, T2=5 μT_2=5\ \mus; RTT1=201 μRTT_1=201\ \mus, RTT2=25 μRTT_2=25\ \mus; ACK trascurabile. (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 →)

  • S&W per collegamento: ritmo RTT1RTT_1: (K−1)RTT1+T1+τ1+T2+τ2=999⋅201+116=200,915(K-1)RTT_1+T_1+\tau_1+T_2+\tau_2=999\cdot201+116=200{,}915 ms.
  • S&W end-to-end: RTTe2e=226 μRTT_{e2e}=226\ \mus: 999⋅226+116=225,890999\cdot226+116=225{,}890 ms.
  • GBN: finestre minime N1=201N_1=201, N2=25/5=5N_2=25/5=5. Collo di bottiglia il collegamento 2: senza errori T1+τ1+KT2+τ2=5,111T_1+\tau_1+KT_2+\tau_2=5{,}111 ms. Timeout =RTT1=RTT_1: i pacchetti 1,21,2 persi fanno ripartire la sequenza a 201 μ201\ \mus; la ritrasmissione del 10001000 è assorbita dalla coda dello switch.
  • Ttot=RTT1+T1+τ1+KT2+τ2=5,312T_{tot}=RTT_1+T_1+\tau_1+KT_2+\tau_2=5{,}312 ms (ufficiale: uguale).
  • Errore tipico: payload al posto della PDU intera; finestra GBN calcolata con il collegamento sbagliato.

Lezioni in cui compare

Teoria collegata