Esercizio - Quattro pacchetti da A verso E e D in una rete store-and-forward
In questa pagina 7
Testo. Nella rete della figura i router fanno commutazione di pacchetto a datagramma con store-and-forward; ogni router ha code indipendenti su ogni interfaccia di uscita. Al tempo la coda di uscita del server A contiene quattro pacchetti, nell'ordine di trasmissione, diretti a E, E, D, D. Lunghezze: byte, byte. Le trasmissioni partono a in tutti i nodi. Calcolare l'istante in cui i quattro pacchetti arrivano a destinazione.
Topologia (A si collega a R1; i terminali B e C non hanno traffico in questo esercizio):
| Collegamento | Estremi | Capacità | Propagazione |
|---|---|---|---|
| A – R1 | Mbit/s | ms | |
| R1 – R2 | Mbit/s | ms | |
| R2 – R3 | Mbit/s | ms | |
| R3 – E | Mbit/s | ms | |
| R3 – D | Mbit/s | ms |
( verso B e verso C partono da R2 ma nessun pacchetto li usa.) Il cammino verso E è , quello verso D è .
Teoria usata: 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 →.
Modello e regola di calcolo
Un pacchetto che attraversa un collegamento con capacità e propagazione si comporta così:
- è pronto nel nodo di partenza quando è stato ricevuto per intero (store-and-forward: il router non inizia a inoltrare finché non ha tutti i bit);
- se il collegamento è occupato aspetta in coda (FIFO, in ordine di arrivo al nodo): la trasmissione inizia a ;
- dura : finisce a e il collegamento torna libero;
- il pacchetto è pronto al nodo successivo a .
Il tempo di trasmissione va calcolato con in bit: bit, bit. Per esempio il pacchetto E su : s ms; il pacchetto D su : ms.
| (20 Mbit/s) | (10 Mbit/s) | (12,5 Mbit/s) | (5 Mbit/s) | (20 Mbit/s) | |
|---|---|---|---|---|---|
| pacchetto E ( bit) | ms | ms | ms | ms | – |
| pacchetto D ( bit) | ms | ms | ms | – | ms |
Passo 1: il collegamento (A → R1)
A trasmette i quattro pacchetti uno dopo l'altro, senza pause:
| Pacchetto | inizio | fine | pronto in R1 ( ms) |
|---|---|---|---|
| E1 | |||
| E2 | |||
| D1 | |||
| D2 |
(tempi in ms). I pacchetti arrivano a R1 distanziati di ms, ms, ms.
Passo 2: il collegamento (R1 → R2), più lento di
ha capacità metà di , quindi i pacchetti si accodano in R1:
| Pacchetto | pronto | inizio | fine | pronto in R2 ( ms) |
|---|---|---|---|---|
| E1 | ||||
| E2 | (aspetta ) | |||
| D1 | (aspetta ) | |||
| D2 | (aspetta ) |
Passo 3: il collegamento (R2 → R3)
( Mbit/s) è più veloce di ( Mbit/s), ma i pacchetti arrivano a R2 già in fila, e dopo E1 serve ancora ms:
| Pacchetto | pronto | inizio | fine | pronto in R3 ( ms) |
|---|---|---|---|---|
| E1 | ||||
| E2 | (libero da ) | |||
| D1 | ||||
| D2 |
Qui D1 aspetta E2 ( ms) e D2 aspetta D1 ( ms).
Passo 4: l'ultimo salto, due uscite diverse in R3
R3 ha due code di uscita indipendenti: verso E e verso D. I pacchetti per D non aspettano quelli per E.
- Verso E (, ms per pacchetto): E1 inizia a e finisce a ; arriva a E a ms. E2 era pronto a ma è occupato fino a : inizia a , finisce a e arriva a ms.
- Verso D (, ms): D1 inizia a , finisce a , arriva a ms; D2 inizia a , finisce a , arriva a ms.
| Pacchetto | E1 | E2 | D1 | D2 |
|---|---|---|---|---|
| arrivo a destinazione (ms) |
Grafico interattivo: Occupazione dei collegamenti (ms): i pacchetti E1, E2 (colore 1) e D1, D2 (colore 2); in R1 si accodano su C2 perché è più lento di C1, in R3 hanno due code separate: E1 ed E2 occupano C7 (5 Mbit/s) uno dopo l'altro, D1 e D2 passano su C6 senza attendere
Si nota che D1 e D2, partiti per ultimi, arrivano prima di E1: sono corti e il loro ultimo collegamento è veloce. E2 invece ricomincia a ritardare perché ( Mbit/s) è il collo di bottiglia.
Confronto con la soluzione ufficiale
La soluzione ufficiale dà E1 ms, E2 ms, D1 ms e per l'ultimo pacchetto ms. Coincide. Nell'ultima riga la soluzione scrive "second packet towards E", ma ms è il secondo pacchetto verso D (E2 arriva a ms): è un refuso del testo ufficiale.
Errori comuni
- Usare i byte al posto dei bit in : byte a Mbit/s sono ms, non ms.
- Far partire il pacchetto successivo prima che il precedente sia stato ricevuto per intero dal router (si dimentica lo store-and-forward).
- Dimenticare la coda: il tempo di inizio è , non semplicemente .
- Mettere in coda insieme i pacchetti per E e per D in R3: le code sono per interfaccia di uscita.
(Verificato con Python: simulatore a eventi FIFO per interfaccia; E1 , E2 , D1 , D2 ms.)
Versione ripasso
Regola. , , pronto al nodo dopo: . Code FIFO per interfaccia di uscita.
- : pronti in R1 a ms.
- (più lento): fine , pronti in R2 a .
- : pronti in R3 a .
- R3, due code: E1 , E2 attende e va ( collo di bottiglia); D1, D2 su senza attesa.
- Arrivi: E1 ; E2 ; D1 ; D2 ms (ufficiale: uguale; "second packet towards E" è un refuso per D).
- Errore tipico: byte al posto dei bit; code non separate per uscita.