Esercizio - Finestra scorrevole e buffer del ricevitore
In questa pagina 7
Testo. Collegamento punto-punto con bitrate al PHY Mbit/s e ritardo di propagazione ms. Il DLL usa ARQ a finestra scorrevole e controllo di flusso a finestra scorrevole. Un file di byte è trasferito tra i due nodi in pacchetti da byte, con intestazione trascurabile. Il ricevitore ha un buffer DLL di dimensione byte.
- Tempo totale di trasferimento (dalla trasmissione del primo bit alla ricezione dell'ultimo), senza errori.
- Massimo throughput effettivo ottenuto nel trasferimento del file.
- Che ritardo si avrebbe senza il DLL (cioè senza ARQ e controllo di flusso)?
- Come cambiano i risultati se la finestra fosse più grande del BDP?
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
- Pacchetto: bit; numero di pacchetti (file bit).
- Tempo di trasmissione: ms.
- Ciclo (ACK trascurabile): ms.
- Finestra imposta dal buffer: il ricevitore non può avere più di pacchetti non ancora consegnati: la finestra del mittente è pacchetti.
- BDP (con l'RTT come ritardo): bit pacchetti. La finestra minima per trasmettere in continuo è .
Poiché la finestra è troppo piccola: il mittente trasmette pacchetti e si ferma ad aspettare l'ACK. Unità: bit, e dividendo per i bit di un pacchetto si hanno i pacchetti della capacità del tubo.
Punto 1: tempo totale con
Sia l'istante di inizio della trasmissione del pacchetto . L'ACK di arriva a ms. Il pacchetto può partire solo quando è libera la finestra (arrivato l'ACK di ) e quando il pacchetto ha finito di essere trasmesso:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
|---|---|---|---|---|---|---|---|---|---|---|
| (ms) |
La trasmissione procede quindi a raffiche di due pacchetti ogni ms (due pacchetti ms di trasmissione, poi ms di attesa). L'ultimo pacchetto parte a ms, finisce di essere trasmesso a ms e arriva a ms:
Punto 2: throughput effettivo
Controllo: in ogni ciclo da ms si trasmettono bit, cioè kbit/s a regime; il valore finale è un po' maggiore perché l'ultimo ciclo non aspetta l'ACK.
Punto 3: senza DLL
Senza ARQ né controllo di flusso il mittente trasmette in continuo, con tutti i pacchetti uno dietro l'altro: (Il buffer del ricevitore farebbe perdere i pacchetti in eccesso, ma nell'esercizio si calcola solo il tempo.)
Punto 4: finestra maggiore del BDP
Con pacchetti (finestra BDP) il mittente non si ferma mai: la trasmissione è continua, come senza DLL. Il tempo è ms e il throughput effettivo kbit/s è inferiore a Mbit/s per via della propagazione non trascurabile ( ms su ): lo stesso valore si ottiene con , e una finestra più grande non migliora ancora, perché è già continuo.
| throughput effettivo | ||
|---|---|---|
| (buffer B) | ms | kbit/s |
| senza DLL | ms | kbit/s |
| (finestra BDP) | ms | kbit/s |
Valori intermedi: con la stessa regola il tempo cala con finché la finestra non copre il tubo, poi si ferma a ms.
Grafico interattivo: Tempo totale T(N) in ms in funzione della finestra N (file da 10 pacchetti, t_F = 10 ms, RTT = 60 ms, τ_p = 25 ms): N = 2 dà 285 ms, N ≥ 6 dà 125 ms
Grafico interattivo: Throughput effettivo S(N) = 100 000 bit / T(N) in kbit/s: 351 kbit/s con N = 2 (buffer da 2500 B), 800 kbit/s con N ≥ 6
Confronto con la soluzione ufficiale
Ufficiale: ms; kbit/s; ms; per finestra maggiore del BDP ms e kbit/s. Coincide ( kbit/s è arrotondato a dalla soluzione).
Errori comuni
- Confondere le unità del buffer: è in byte e il pacchetto pure, quindi la finestra è pacchetti (non bit divisi per byte).
- Ignorare il buffer e usare subito la finestra del BDP ( pacchetti): nel controllo di flusso a finestra è il buffer del ricevitore a fissare la finestra.
- Calcolare ms come cicli da ms più qualcosa: l'ultimo ciclo è più corto ().
- Dividere i bit per il tempo senza chiarire se si include la propagazione: qui il throughput effettivo è .
(Verificato con Python: ms, ms, BDP bit pacchetti; istanti di partenza ms; ms, kbit/s; senza DLL ms, kbit/s.)
Versione ripasso
- ms, ms, BDP kbit pacchetti; finestra .
- : partenze ms.
- Totale: ms; throughput kbit/s.
- Senza DLL: ms. Finestra BDP: trasmissione continua, ms e kbit/s.
- Ufficiale: ms, kbit/s, ms, kbit/s: coincide.
- Errore tipico: finestra sbagliata (buffer in byte); sommare cicli interi invece di fermarsi all'ultimo pacchetto.