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 |
|---|---|---|---|
| A – R1 | Mbit/s | ms | |
| E – R1 | Mbit/s | ms | |
| R1 – R3 | Mbit/s | ms | |
| R3 – D | Mbit/s | ms | |
| R1 – R2 | Mbit/s | ms | |
| R2 – C | Mbit/s | ms | |
| R2 – B | Mbit/s | ms |
- A 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 B: calcolare gli istanti di arrivo e il throughput medio.
Da qui in avanti si trascura ogni altro traffico, si trasmette un messaggio di KB in pacchetti da 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:
- si usa UDP (solo ricezione dell'ultimo pacchetto, niente ACK);
- GBN su ogni collegamento con finestra ;
- GBN end-to-end con ;
- GBN end-to-end con ;
- stop-and-wait su ogni collegamento;
- stop-and-wait end-to-end;
- GBN () sul primo collegamento, GBN () 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
bit. Tempi di trasmissione (ms):
| Collegamento | |||||||
|---|---|---|---|---|---|---|---|
Percorsi: C: ; D: ; B (da E): . Si incrociano solo su .
- A: esce a , a , a ; in R1 (con ms) ; ; .
- E: il pacchetto per B esce a e arriva in R1 a .
Coda su (): ordine di arrivo (), (), ().
| Pacchetto | inizio | fine | in R2 () | ultimo tratto | arrivo |
|---|---|---|---|---|---|
| : | |||||
| : | |||||
| : |
Il pacchetto D non incontra traffico: da R1 va su ( ms, parte a , finisce a ), ms in R3, poi : : arriva a ms.
Arrivi in ordine di tempo: , , , ms (ufficiale: ; ; ; , con troncato a ms).
Throughput medio. Quattro pacchetti da kbit in ms: Mbit/s (bit consegnati diviso tempo fino all'ultimo arrivo).
Grandezze per le domande 2-8
Cammino A→C: (, ), (, ), (, ). Numero di pacchetti: . Il collo di bottiglia è ( ms). Ritardo di ritorno di un ACK sull'intero cammino: ms.
Tempo di un RTT per collegamento, :
- ms;
- ms;
- ms.
Primo pacchetto: ms. Il tempo "fino all'ultimo ACK" è contato come fa la soluzione ufficiale: ricezione dell'ultimo pacchetto in C più il ritorno di ms.
RTT end-to-end (pacchetto singolo, ACK trascurabile): 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
Domanda 3: GBN su ogni collegamento,
Ogni collegamento esegue il proprio GBN: può avere pacchetti non riscontrati. Un collegamento è continuo se :
- : : sì;
- : : no, ogni finestra da pacchetti dura ms invece di ms;
- : : sì.
Il collo di bottiglia vero è quindi con pacchetti ogni ms. : finestre complete e una da pacchetti:
Il primo pacchetto arriva in R1 a ; trasmette finestre complete da ms; l'ultima finestra ha pacchetti (), poi propagazione e ultimo collegamento; infine il ritorno dell'ACK.
Domanda 4: GBN end-to-end,
Ora la finestra copre l'intero cammino e l'ACK torna dalla destinazione. Con ms il flusso non è continuo: pacchetti ogni .
(ufficiale : differenza di arrotondamento con ms).
Domanda 5: GBN end-to-end,
: flusso continuo. Il collo di bottiglia lavora senza pause:
Il grafico mostra come cambia per il GBN end-to-end al variare della finestra (stessa regola: finestre, l'ultima più corta): è lo stop-and-wait end-to-end ( ms, domanda 7), dà ms (domanda 4), da in poi vale ms come per (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 (), poi il successivo. Il più lento è con ms a pacchetto ( e sono più veloci: e ms):
Domanda 7: stop-and-wait end-to-end
Un solo pacchetto in volo sull'intero cammino: round trip da ms:
Domanda 8: GBN, GBN e stop-and-wait
- primo collegamento GBN (): continuo ();
- secondo collegamento GBN (): pacchetti ogni ms, cioè ms a pacchetto;
- terzo collegamento stop-and-wait: ms a pacchetto, più lento del secondo ( ms): è il collo di bottiglia.
I pacchetti si accodano in R2 e ne serve uno ogni ms. Il primo arriva a R2 a ms:
Confronto con la soluzione ufficiale
| Domanda | Mio | Ufficiale |
|---|---|---|
| 1 | ms | ms |
| 2 | ms | ms |
| 3 | ms | ms |
| 4 | ms | ms |
| 5 | ms | ms |
| 6 | ms | ms |
| 7 | ms | ms |
| 8 | ms | stessa formula |
Le differenze di un centesimo sono arrotondamenti ( nei miei calcoli, nei suoi). Nella soluzione ufficiale la cifra del risultato finale della domanda 8 è poco leggibile; la formula () è identica.
Errori comuni
- Applicare la finestra del GBN a ogni collegamento ma calcolare (o viceversa): "su ogni collegamento" usa 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 su ciascun collegamento.
- Dimenticare il ritorno finale dell'ACK ( ms) quando si chiede "fino all'ultimo ACK".
- Contare finestre: , l'ultima è da 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
- Arrivi (domanda 1). (C), (B), (C), (D) ms; throughput Mbit/s.
- Continuo se RTT: non basta su () né end-to-end (); end-to-end basta ().
- UDP: ms.
- GBN per collegamento (): ms.
- GBN e2e: : ms; : ms.
- S&W: per collegamento ms (); end-to-end ms.
- GBN, GBN, S&W: collo di bottiglia il terzo ( ms per pacchetto): ms.
- Errore tipico: confondere RTT di collegamento ed end-to-end.