Esercizio - Go-Back-N su ogni collegamento con finestre 15 e 6 e confronto con stop-and-wait
In questa pagina 7
Testo. Si trasmette un messaggio di KB, diviso in pacchetti di byte, dall'host A all'host B attraverso due router in serie: AR1 con Mbit/s e ms, R1R2 con Mbit/s e ms, R2B con Mbit/s e ms.
- Determinare il tempo totale di trasferimento (dalla trasmissione del primo byte alla ricezione dell'ultimo ACK) se su ogni collegamento si usa GBN con finestra pacchetti. Ritardi di elaborazione e di coda e intestazioni trascurati; anche la dimensione dell'ACK è trascurabile.
- Ripetere con .
- Ripetere con stop-and-wait su ogni collegamento.
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
- Pacchetti: , ciascuno di bit.
- Tempi di trasmissione:
- Round trip di ogni collegamento (ACK trascurabile): , cioè ms, ms, ms.
Convenzione per "l'ultimo ACK". Si conta fino a quando l'ACK dell'ultimo pacchetto, partito da B, ritorna ad A attraversando i tre collegamenti all'indietro, cioè si aggiunge ms dopo l'arrivo dell'ultimo pacchetto in B.
Idea generale. Ogni router fa store-and-forward: ritrasmette un pacchetto dopo averlo ricevuto per intero. Il collegamento più lento a regime è quello che detta il ritmo: R2 riceve i pacchetti più in fretta di quanto il collegamento 3 li smaltisca (), quindi dopo il primo pacchetto ha sempre la coda piena e li trasmette al ritmo del collegamento 3. Il primo pacchetto arriva a R2 dopo
Passo 1: la finestra permette la trasmissione continua?
Per ogni collegamento si controlla : se è vero, il mittente non si ferma mai ad aspettare l'ACK e il collegamento trasmette un pacchetto dopo l'altro.
| (ms) | : | : | |
|---|---|---|---|
| Collegamento 1 | sì | sì | |
| Collegamento 2 | sì | sì | |
| Collegamento 3 | sì | no |
(1) : trasmissione continua ovunque
Il collegamento 3 trasmette gli pacchetti uno dopo l'altro, senza pause, a partire da ms: ms. L'ultimo bit arriva a B dopo altri ms, e l'ultimo ACK torna ad A dopo ms:
(2) : finestra insufficiente sul collegamento 3
Sui collegamenti 1 e 2 la trasmissione resta continua, ma sul 3 no: ms. Dopo pacchetti (che occupano ms) il collegamento 3 deve aspettare il ritorno dell'ACK del primo pacchetto della finestra, che arriva dopo ms dalla sua partenza. Quindi il collegamento 3 lavora a finestre da pacchetti, una ogni :
- finestre complete, di durata ms;
- l'ultima finestra ha pacchetti: ms di trasmissione, poi ms di propagazione fino a B (non si aspetta altro per i dati);
- infine l'ultimo ACK: ms.
(3) Stop-and-wait su ogni collegamento
Con il collegamento 3 invia un pacchetto per ms (i collegamenti 1 e 2 hanno RTT molto più corto e quindi riforniscono R2 più velocemente). Dopo l'arrivo del primo pacchetto a R2 servono cicli completi, poi l'ultimo pacchetto viene trasmesso e propagato, e infine ritorna l'ACK:
| Finestra | Tempo totale |
|---|---|
| GBN, | ms |
| GBN, | ms |
| Stop-and-wait () | ms |
La finestra minima per non perdere tempo sul collegamento 3 è pacchetti (il prodotto banda-ritardo del collegamento, in pacchetti): è sopra, sotto.
Il grafico riporta per ogni finestra (stessa regola: finestre sul collegamento 3 e l'ultima più corta): per è lo stop-and-wait ( ms), per vale ms, e da in poi il tempo non scende più sotto ms.
Grafico interattivo: Tempo totale fino all'ultimo ACK T(N) in ms del GBN su ogni collegamento (K = 100 pacchetti, collo di bottiglia C3 con RTT3 = 11,25 ms): 200,17 ms con N = 6, 140,17 ms con N ≥ 9
Confronto con la soluzione ufficiale
Ufficiale: ms, ms, ms. Coincidono, anche con la formula del testo e con una simulazione a eventi dei tre ARQ per collegamento. La differenza di ms (l'ufficiale riporta , il valore esatto è ) è un troncamento invece di un arrotondamento: ms ripetuto.
Errori comuni
- Applicare la formula " pacchetti per " a tutti i collegamenti: va controllata la condizione di trasmissione continua link per link, e conta quello più lento.
- Trascurare i tempi di trasmissione sui collegamenti 1 e 2 prima che il primo pacchetto arrivi a R2 (i ms iniziali).
- Dimenticare il ritorno dell'ultimo ACK ( ms), che qui è richiesto, oppure aggiungere un intero invece del solo viaggio di ritorno .
- Contare finestre (anziché complete più una da ) o dimenticare che l'ultima non dura un RTT intero.
(Verificato con Python: simulazione per collegamento: , , ms.)
Versione ripasso
Dati. pacchetti da kbit; , , ms; ms. ms. Fino all'ultimo ACK (da B ad A: ms). Attesa iniziale ms.
- : , continuo: ms.
- : , a finestre: finestre da ultima da : ms.
- S&W: ms.
Errore tipico: non verificare la condizione di continuità sul collegamento più lento; dimenticare i ms dell'ultimo ACK.