Salta al contenuto
Note per Studenti Esercizio - Quattro pacchetti, UDP e ARQ GBN o stop-and-wait su ogni collegamento o end-to-end

Esercizio - Quattro pacchetti, UDP e ARQ GBN o stop-and-wait su ogni collegamento o end-to-end

In questa pagina 11

Testo (simulazione d'esame 3, esercizio 1). Rete a commutazione di pacchetto a datagramma (store-and-forward), code indipendenti per ogni interfaccia di uscita.

Collegamento Estremi Capacità Propagazione
C1C_1 A – R1 1515 Mbit/s 11 ms
C7C_7 E – R1 1010 Mbit/s 11 ms
C5C_5 R1 – R3 2020 Mbit/s 77 ms
C6C_6 R3 – D 100100 Mbit/s 55 ms
C2C_2 R1 – R2 88 Mbit/s 55 ms
C4C_4 R2 – C 2020 Mbit/s 11 ms
C3C_3 R2 – B 100100 Mbit/s 22 ms
  1. A t=0t=0 la coda di A contiene tre pacchetti diretti a C, C, D (D per ultimo); la coda di E ha un pacchetto diretto a B. Pacchetti da L=1250L=1250 B: calcolare gli istanti di arrivo e il throughput medio.

Da qui in avanti si trascura ogni altro traffico, si trasmette un messaggio di M=125M=125 KB in pacchetti da L=1250L=1250 B da A a C, senza intestazioni e con ACK di lunghezza trascurabile; si calcola il tempo totale (dal primo byte all'ultimo ACK) quando:

  1. si usa UDP (solo ricezione dell'ultimo pacchetto, niente ACK);
  2. GBN su ogni collegamento con finestra N=8N=8;
  3. GBN end-to-end con N=8N=8;
  4. GBN end-to-end con N=16N=16;
  5. stop-and-wait su ogni collegamento;
  6. stop-and-wait end-to-end;
  7. GBN (N=8N=8) sul primo collegamento, GBN (N=8N=8) sul secondo, stop-and-wait sul terzo.

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 →. Un esercizio molto simile, con altri valori: Esercizio - Go-Back-N su ogni collegamento con finestre 15 e 6 e confronto con stop-and-wait.

Domanda 1: arrivi e throughput

L=10 000L=10\,000 bit. Tempi di trasmissione T=L/CT=L/C (ms):

Collegamento C1C_1 C7C_7 C5C_5 C6C_6 C2C_2 C4C_4 C3C_3
TT 0,6670{,}667 11 0,50{,}5 0,10{,}1 1,251{,}25 0,50{,}5 0,10{,}1

Percorsi: C: C1,C2,C4C_1,C_2,C_4; D: C1,C5,C6C_1,C_5,C_6; B (da E): C7,C2,C3C_7,C_2,C_3. Si incrociano solo su C2C_2.

  • A: C(1)C_{(1)} esce a 0,6670{,}667, C(2)C_{(2)} a 1,3331{,}333, DD a 2,02{,}0; in R1 (con +1+1 ms) 1,6671{,}667; 2,3332{,}333; 3,03{,}0.
  • E: il pacchetto per B esce a 1,01{,}0 e arriva in R1 a 2,02{,}0.

Coda su C2C_2 (T=1,25T=1{,}25): ordine di arrivo C(1)C_{(1)} (1,6671{,}667), BB (2,02{,}0), C(2)C_{(2)} (2,3332{,}333).

Pacchetto inizio fine in R2 (+5+5) ultimo tratto arrivo
C(1)C_{(1)} 1,6671{,}667 2,9172{,}917 7,9177{,}917 C4C_4: +0,5+1+0{,}5+1 9,417\mathbf{9{,}417}
BB 2,9172{,}917 4,1674{,}167 9,1679{,}167 C3C_3: +0,1+2+0{,}1+2 11,267\mathbf{11{,}267}
C(2)C_{(2)} 4,1674{,}167 5,4175{,}417 10,41710{,}417 C4C_4: +0,5+1+0{,}5+1 11,917\mathbf{11{,}917}

Il pacchetto D non incontra traffico: da R1 va su C5C_5 (0,50{,}5 ms, parte a 3,03{,}0, finisce a 3,53{,}5), +7+7 ms →10,5\to10{,}5 in R3, poi C6C_6: +0,1+5+0{,}1+5: arriva a 15,6\mathbf{15{,}6} ms.

Arrivi in ordine di tempo: 9,429{,}42, 11,2711{,}27, 11,9211{,}92, 15,615{,}6 ms (ufficiale: 9,419{,}41; 11,2611{,}26; 11,9111{,}91; 15,615{,}6, con T1T_1 troncato a 0,660{,}66 ms).

Throughput medio. Quattro pacchetti da 1010 kbit in 15,615{,}6 ms: 40 000/15,6⋅10−3≈2,5640\,000/15{,}6\cdot10^{-3}\approx2{,}56 Mbit/s (bit consegnati diviso tempo fino all'ultimo arrivo).

Grandezze per le domande 2-8

Cammino A→C: C1C_1 (T=0,667T=0{,}667, τ=1\tau=1), C2C_2 (T=1,25T=1{,}25, τ=5\tau=5), C4C_4 (T=0,5T=0{,}5, τ=1\tau=1). Numero di pacchetti: K=125 000/1250=100K=125\,000/1250=100. Il collo di bottiglia è C2C_2 (Tb=1,25T_b=1{,}25 ms). Ritardo di ritorno di un ACK sull'intero cammino: τ4+τ2+τ1=7\tau_4+\tau_2+\tau_1=7 ms.

Tempo di un RTT per collegamento, T+2τT+2\tau:

  • RTT1=0,667+2=2,667\text{RTT}_1=0{,}667+2=2{,}667 ms;
  • RTT2=1,25+10=11,25\text{RTT}_2=1{,}25+10=11{,}25 ms;
  • RTT4=0,5+2=2,5\text{RTT}_4=0{,}5+2=2{,}5 ms.

Primo pacchetto: T1+τ1+T2+τ2+T4+τ4=0,667+1+1,25+5+0,5+1=9,417T_1+\tau_1+T_2+\tau_2+T_4+\tau_4=0{,}667+1+1{,}25+5+0{,}5+1=9{,}417 ms. Il tempo "fino all'ultimo ACK" è contato come fa la soluzione ufficiale: ricezione dell'ultimo pacchetto in C più il ritorno di 77 ms.

RTT end-to-end (pacchetto singolo, ACK trascurabile): RTTe2e=9,417+7=16,417\text{RTT}_{e2e}=9{,}417+7=16{,}417 ms.

Domanda 2: UDP

Non ci sono ACK né attese: i pacchetti escono alla velocità del collo di bottiglia. L'ultimo (il centesimo) arriva a

TUDP=9,417+(100−1)⋅1,25=133,17 ms.T_{\text{UDP}}=9{,}417+(100-1)\cdot1{,}25=\mathbf{133{,}17\ \text{ms}}.

Domanda 3: GBN su ogni collegamento, N=8N=8

Ogni collegamento esegue il proprio GBN: può avere 88 pacchetti non riscontrati. Un collegamento è continuo se N T≥RTTcollegamentoN\,T\ge\text{RTT}_{\text{collegamento}}:

  • C1C_1: 8⋅0,667=5,33≥2,6678\cdot0{,}667=5{,}33\ge2{,}667: sì;
  • C2C_2: 8⋅1,25=10<11,258\cdot1{,}25=10<11{,}25: no, ogni finestra da 88 pacchetti dura RTT2=11,25\text{RTT}_2=11{,}25 ms invece di 1010 ms;
  • C4C_4: 8⋅0,5=4≥2,58\cdot0{,}5=4\ge2{,}5: sì.

Il collo di bottiglia vero è quindi C2C_2 con 88 pacchetti ogni 11,2511{,}25 ms. 100=12⋅8+4100=12\cdot8+4: 1212 finestre complete e una da 44 pacchetti:

T=T1+τ1+12 RTT2+4 T2+τ2+T4+τ4+(τ4+τ2+τ1)⏟7=1,667+135+5+5+1,5+7=155,17 ms.T=T_1+\tau_1+12\,\text{RTT}_2+4\,T_2+\tau_2+T_4+\tau_4+\underbrace{(\tau_4+\tau_2+\tau_1)}_{7}=1{,}667+135+5+5+1{,}5+7=\mathbf{155{,}17\ \text{ms}}.

Il primo pacchetto arriva in R1 a T1+τ1=1,667T_1+\tau_1=1{,}667; C2C_2 trasmette 1212 finestre complete da 11,2511{,}25 ms; l'ultima finestra ha 44 pacchetti (4 T24\,T_2), poi propagazione e ultimo collegamento; infine il ritorno dell'ACK.

Domanda 4: GBN end-to-end, N=8N=8

Ora la finestra copre l'intero cammino e l'ACK torna dalla destinazione. Con N Tb=8⋅1,25=10<RTTe2e=16,417N\,T_b=8\cdot1{,}25=10<\text{RTT}_{e2e}=16{,}417 ms il flusso non è continuo: 88 pacchetti ogni RTTe2e\text{RTT}_{e2e}.

T=12 RTTe2e+T1+τ1+4 T2+τ2+T4+τ4+7=197,00+1,667+5+5+1,5+7=217,17 msT=12\,\text{RTT}_{e2e}+T_1+\tau_1+4\,T_2+\tau_2+T_4+\tau_4+7=197{,}00+1{,}667+5+5+1{,}5+7=\mathbf{217{,}17\ \text{ms}}

(ufficiale 217,08217{,}08: differenza di arrotondamento con T1=0,66T_1=0{,}66 ms).

Domanda 5: GBN end-to-end, N=16N=16

16⋅1,25=20≥16,41716\cdot1{,}25=20\ge16{,}417: flusso continuo. Il collo di bottiglia lavora senza pause:

T=T1+τ1+100 T2+τ2+T4+τ4+7=1,667+125+5+1,5+7=140,17 ms.T=T_1+\tau_1+100\,T_2+\tau_2+T_4+\tau_4+7=1{,}667+125+5+1{,}5+7=\mathbf{140{,}17\ \text{ms}}.

Il grafico mostra come cambia T(N)T(N) per il GBN end-to-end al variare della finestra (stessa regola: ⌈100/N⌉\lceil100/N\rceil finestre, l'ultima più corta): N=1N=1 è lo stop-and-wait end-to-end (1641,671641{,}67 ms, domanda 7), N=8N=8 dà 217,17217{,}17 ms (domanda 4), da N=⌈16,417/1,25⌉=14N=\lceil16{,}417/1{,}25\rceil=14 in poi vale 140,17140{,}17 ms come per N=16N=16 (domanda 5).

Grafico interattivo: Tempo totale fino all'ultimo ACK T(N) in ms del GBN end-to-end (K = 100 pacchetti, collo di bottiglia C2 con T = 1,25 ms, RTT_e2e = 16,417 ms): 217,17 ms con N = 8, 140,17 ms con N ≥ 14

Domanda 6: stop-and-wait su ogni collegamento

Ogni collegamento manda un pacchetto, aspetta l'ACK (T+2τT+2\tau), poi il successivo. Il più lento è C2C_2 con RTT2=11,25\text{RTT}_2=11{,}25 ms a pacchetto (C1C_1 e C4C_4 sono più veloci: 2,6672{,}667 e 2,52{,}5 ms):

T=T1+τ1+(100−1) RTT2+T2+τ2+T4+τ4+7=1,667+1113,75+6,25+1,5+7=1130,17 ms.T=T_1+\tau_1+(100-1)\,\text{RTT}_2+T_2+\tau_2+T_4+\tau_4+7=1{,}667+1113{,}75+6{,}25+1{,}5+7=\mathbf{1130{,}17\ \text{ms}}.

Domanda 7: stop-and-wait end-to-end

Un solo pacchetto in volo sull'intero cammino: 100100 round trip da RTTe2e=16,417\text{RTT}_{e2e}=16{,}417 ms:

T=100⋅16,417=1641,67 ms.T=100\cdot16{,}417=\mathbf{1641{,}67\ \text{ms}}.

Domanda 8: GBN, GBN e stop-and-wait

  • primo collegamento GBN (88): continuo (5,33≥2,6675{,}33\ge2{,}667);
  • secondo collegamento GBN (88): 88 pacchetti ogni 11,2511{,}25 ms, cioè 1,411{,}41 ms a pacchetto;
  • terzo collegamento stop-and-wait: RTT4=T4+2τ4=2,5\text{RTT}_4=T_4+2\tau_4=2{,}5 ms a pacchetto, più lento del secondo (1,411{,}41 ms): è il collo di bottiglia.

I pacchetti si accodano in R2 e C4C_4 ne serve uno ogni 2,52{,}5 ms. Il primo arriva a R2 a T1+τ1+T2+τ2=7,917T_1+\tau_1+T_2+\tau_2=7{,}917 ms:

T=T1+τ1+T2+τ2+(100−1) RTT4+T4+τ4+7=7,917+247,5+1,5+7=263,92 ms.T=T_1+\tau_1+T_2+\tau_2+(100-1)\,\text{RTT}_4+T_4+\tau_4+7=7{,}917+247{,}5+1{,}5+7=\mathbf{263{,}92\ \text{ms}}.

Confronto con la soluzione ufficiale

Domanda Mio Ufficiale
1 9,42; 11,27; 11,92; 15,69{,}42;\,11{,}27;\,11{,}92;\,15{,}6 ms 9,41; 11,26; 11,91; 15,69{,}41;\,11{,}26;\,11{,}91;\,15{,}6 ms
2 133,17133{,}17 ms 133,16133{,}16 ms
3 155,17155{,}17 ms 155,16155{,}16 ms
4 217,17217{,}17 ms 217,08217{,}08 ms
5 140,17140{,}17 ms 140,16140{,}16 ms
6 1130,171130{,}17 ms 1130,…1130{,}\ldots ms
7 1641,671641{,}67 ms 16411641 ms
8 263,92263{,}92 ms stessa formula

Le differenze di un centesimo sono arrotondamenti (T1=0,667T_1=0{,}667 nei miei calcoli, 0,660{,}66 nei suoi). Nella soluzione ufficiale la cifra del risultato finale della domanda 8 è poco leggibile; la formula (T1+τ1+T2+τ2+(K−1)RTT4+T4+τ4+7T_1+\tau_1+T_2+\tau_2+(K-1)\text{RTT}_4+T_4+\tau_4+7) è identica.

Errori comuni

  • Applicare la finestra del GBN a ogni collegamento ma calcolare RTTe2e\text{RTT}_{e2e} (o viceversa): "su ogni collegamento" usa T+2τT+2\tau del singolo collegamento, "end-to-end" il tempo di tutto il cammino.
  • Verificare il flusso continuo solo sul collo di bottiglia: con GBN per collegamento va controllata la condizione N T≥T+2τN\,T\ge T+2\tau su ciascun collegamento.
  • Dimenticare il ritorno finale dell'ACK (77 ms) quando si chiede "fino all'ultimo ACK".
  • Contare 12,512{,}5 finestre: 100=12⋅8+4100=12\cdot8+4, l'ultima è da 44 pacchetti e non dura un RTT intero.

(Verificato con Python: simulatore a eventi per la domanda 1 e simulatore ARQ per collegamento ed end-to-end per le domande 2-8.)

Versione ripasso

Dati. Cammino A→C: C1 (T=0,667,τ=1)C_1\,(T=0{,}667,\tau=1), C2 (1,25, 5)C_2\,(1{,}25,\,5), C4 (0,5, 1)C_4\,(0{,}5,\,1); K=100K=100 pacchetti; RTTcoll=T+2τ=2,667; 11,25; 2,5\text{RTT}_{\text{coll}}=T+2\tau=2{,}667;\ 11{,}25;\ 2{,}5; RTTe2e=16,417\text{RTT}_{e2e}=16{,}417; ritorno ACK 77 ms. (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 →)

  • Arrivi (domanda 1). 9,429{,}42 (C), 11,2711{,}27 (B), 11,9211{,}92 (C), 15,615{,}6 (D) ms; throughput ≈2,56\approx2{,}56 Mbit/s.
  • Continuo se N T≥N\,T\ge RTT: N=8N=8 non basta su C2C_2 (10<11,2510<11{,}25) né end-to-end (10<16,410<16{,}4); N=16N=16 end-to-end basta (20≥16,420\ge16{,}4).
  • UDP: 9,417+99⋅1,25=133,179{,}417+99\cdot1{,}25=133{,}17 ms.
  • GBN per collegamento (N=8N=8): T1+τ1+12 RTT2+4T2+τ2+T4+τ4+7=155,17T_1+\tau_1+12\,\text{RTT}_2+4T_2+\tau_2+T_4+\tau_4+7=155{,}17 ms.
  • GBN e2e: N=8N=8: 12 RTTe2e+⋯=217,1712\,\text{RTT}_{e2e}+\dots=217{,}17 ms; N=16N=16: T1+τ1+100T2+⋯=140,17T_1+\tau_1+100T_2+\dots=140{,}17 ms.
  • S&W: per collegamento 1130,171130{,}17 ms (99 RTT2+…99\,\text{RTT}_2+\dots); end-to-end 100⋅16,417=1641,67100\cdot16{,}417=1641{,}67 ms.
  • GBN, GBN, S&W: collo di bottiglia il terzo (2,52{,}5 ms per pacchetto): 7,917+99⋅2,5+1,5+7=263,927{,}917+99\cdot2{,}5+1{,}5+7=263{,}92 ms.
  • Errore tipico: confondere RTT di collegamento ed end-to-end.

Lezioni in cui compare

Teoria collegata