Esercizio - Trasferimento di 1,5 MB con handshake, stop-and-wait e limite di pacchetti per RTT
In questa pagina 6
Testo. Collegamento punto-punto tra l'host A e l'host B con bitrate Mbps e ms. Calcolare il tempo totale per trasferire MB di dati nei casi seguenti:
- i dati sono divisi in pacchetti da KB e i pacchetti si inviano in modo continuo, dopo un "handshake" iniziale di ;
- come al punto 1 ma, dopo ogni pacchetto, il trasmettitore attende un RTT prima di inviare il successivo; calcolare anche l'efficienza del collegamento;
- il collegamento permette una trasmissione infinitamente veloce ma limita il throughput in modo che si possano inviare solo pacchetti per RTT; calcolare l'efficienza.
Teoria usata: 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 →, 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 →, 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
- Mbit/s; KB byte bit; MB byte, quindi pacchetti.
- Tempo di trasmissione di un pacchetto: ms.
- , quindi ms.
- RTT "vero" per un pacchetto da KB (ACK trascurabile): ms.
(1) Invio continuo
Si paga prima l'handshake, ms. Poi i pacchetti partono uno dietro l'altro: il trasmettitore è occupato per s. L'ultimo bit dell'ultimo pacchetto viene messo sul filo alla fine di questi s e arriva a B dopo altri ms.
Non serve calcolare la propagazione di ogni pacchetto: i pacchetti arrivano a B a distanza di l'uno dall'altro (trasmissione e propagazione avvengono "in parallelo" su pacchetti diversi), quindi basta aggiungere la propagazione una volta sola:
(2) Un pacchetto per RTT (stop-and-wait)
Dopo l'handshake si invia il pacchetto 1, si attende l'ACK (un RTT dall'inizio della trasmissione), poi si invia il pacchetto 2, e così via. I primi pacchetti occupano ciascuno un intero ciclo di durata ms. L'ultimo pacchetto non deve attendere l'ACK: bastano la sua trasmissione e la propagazione fino a B. Efficienza. Il BDP calcolato sull'RTT è kbit: in un ciclo il collegamento potrebbe trasportare kbit ma ne trasporta kbit ( KB): Il throughput sperimentato è kbps, cioè circa kbps su un collegamento da Mbps.
(3) Gruppi di 20 pacchetti per RTT
Ora si inviano finestre di pacchetti e poi si aspetta. Inviare pacchetti richiede ms, cioè molto meno dell'RTT ( ms): il collegamento resta fermo per il tempo restante, per cui il ciclo dura ancora un RTT. Le finestre sono ; le prime occupano un ciclo di ciascuna, l'ultima solo il tempo di trasmettere i suoi pacchetti più la propagazione: Efficienza: in un ciclo si inviano KB sui kbit possibili, con throughput Mbps Mbps. È proporzionale alla dimensione della finestra: volte meglio di stop-and-wait. In generale, con pacchetti per RTT, finché ; il collegamento è sempre occupato quando pacchetti, che è il prodotto banda-ritardo in pacchetti.
Grafico interattivo: Efficienza η = min(1, W·t_tx/RTT) in funzione dei pacchetti inviati per RTT (t_tx = 0,8 ms, RTT = 80,8 ms): η = 1% per W = 1, 20% per W = 20, 1 per W ≥ 101
| Caso | Tempo totale | Throughput | |
|---|---|---|---|
| 1 invio continuo | s | pieno | Mbps (con handshake) |
| 2 un pacchetto per RTT | s | kbps | |
| 3 venti pacchetti per RTT | s | Mbps |
Confronto con la soluzione ufficiale
Ufficiale: s; s con e throughput kbps; s con e throughput Mbps. Tutto coincide. Una nota sul punto 3: il testo dice "trasmissione infinitamente veloce", ma la soluzione usa comunque ms per pacchetto (finestra da ms) e un ciclo di ms. Se si prendesse alla lettera si avrebbe ms e s, che non è il numero ufficiale. Il s si riproduce solo con la lettura della soluzione.
Errori comuni
- Sommare la propagazione a ogni pacchetto nel caso (1): con invio continuo si paga una sola volta.
- Nel caso (2) contare RTT invece di più la parte finale dell'ultimo pacchetto.
- Usare KB byte: qui KB byte, altrimenti non si ottengono pacchetti e ms.
- Dimenticare di convertire ms in ms per il ritardo di sola andata.
(Verificato con Python: ms; ms; s; s; kbit; ; s; ; con : s.)
Versione ripasso
- Continuo: s.
- Un pacchetto per RTT: s; kbit, , throughput kbps.
- Finestre da ( finestre): s; , Mbps.
- Tutti i valori coincidono con l'ufficiale.
- Errori: propagazione per ogni pacchetto; invece di cicli; KB B.