Esercizio - Pacchetti di C verso E e G con traffico concorrente
In questa pagina 7
Testo. Rete a commutazione di pacchetto a datagramma (store-and-forward), code indipendenti per ogni interfaccia di uscita. A : la coda di uscita dell'host A ha due pacchetti diretti a D, D; quella dell'host B un pacchetto diretto a F; quella dell'host C due pacchetti diretti rispettivamente a E e G. Tutti i pacchetti sono lunghi byte e le trasmissioni partono a in tutti gli host. Calcolare l'istante di arrivo dei soli due pacchetti di C.
Topologia: A, B e C sono collegati al router R1; R1 – R2 – R3 sono in catena; D ed E sono collegati a R2; F e G sono collegati a R3.
| Collegamento | Estremi | Capacità | Propagazione |
|---|---|---|---|
| A – R1 | Mbit/s | ms | |
| B – R1 | Mbit/s | ms | |
| C – R1 | Mbit/s | ms | |
| R1 – R2 | Mbit/s | ms | |
| R2 – D | Mbit/s | ms | |
| R2 – E | Mbit/s | ms | |
| R2 – R3 | Mbit/s | ms | |
| R3 – F | Mbit/s | ms | |
| R3 – G | Mbit/s | ms |
Cammini: A→D: ; B→F: ; C→E: ; C→G: . Il traffico di A e B serve solo a occupare .
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 →.
Regola di calcolo
Per ogni collegamento: , , il pacchetto è pronto al nodo successivo a . Le code sono FIFO, nell'ordine in cui i pacchetti sono arrivati per intero al router. Con bit (e , per esempio s ms su ):
| Collegamento | |||||||
|---|---|---|---|---|---|---|---|
| (ms) |
Passo 1: dagli host a R1
Gli host trasmettono i pacchetti uno dietro l'altro; il tempo di arrivo in R1 è :
| Pacchetto | fine trasmissione | arrivo in R1 |
|---|---|---|
| C→E (primo di C) | ||
| A1 | ||
| B→F | ||
| A2 | ||
| C→G (secondo di C) |
(ms; tabella già ordinata per arrivo.) Nessun pacchetto aspetta in questo tratto: ogni host usa un collegamento suo.
Passo 2: la coda su (R1 → R2), il collo di bottiglia
Tutti e cinque i pacchetti devono passare da ( Mbit/s, ms ciascuno). R1 li serve nell'ordine di arrivo:
| Ordine | Pacchetto | pronto | inizio | fine | pronto in R2 () |
|---|---|---|---|---|---|
| 1 | C→E | ||||
| 2 | A1 | ||||
| 3 | B→F | ||||
| 4 | A2 | ||||
| 5 | C→G |
Il pacchetto C→G aspetta ms in coda: è l'ultimo ad arrivare e deve cedere il passo agli altri quattro. Il diagramma riassume l'occupazione di e dei collegamenti successivi usati dai pacchetti di C (il colore 2 sono i pacchetti di A, il colore 3 quello di B):
Grafico interattivo: Occupazione dei collegamenti (ms): su C2 (6 Mbit/s) i cinque pacchetti passano uno dopo l'altro in ordine di arrivo in R1; il pacchetto di C verso G (colore 1) è l'ultimo e aspetta fino a 9,3 ms; C→E (colore 1) esce subito su C8 e arriva a 11,8 ms
Passo 3: il pacchetto verso E
In R2 il pacchetto parte su ( Mbit/s, ms). L'interfaccia è libera (nessun altro la usa): inizio , fine , arrivo a E a ms.
Passo 4: il pacchetto verso G
Pronto in R2 a ms, esce su ( Mbit/s). Controllo della coda su : l'unico altro pacchetto che la usa è B→F, arrivato in R2 a e già uscito a ; quindi è libera a e non c'è attesa. : , pronto in R3 a . : (tempo ms), arrivo a G a ms.
| Pacchetto di C | arrivo a destinazione |
|---|---|
| verso E | ms |
| verso G | ms |
(Per completezza: A1 arriva a D a ms, A2 a ms, B→F a ms.)
Confronto con la soluzione ufficiale
Ufficiale: ms (verso E) e ms (verso G). Coincide. Il testo ufficiale parla di "first packet towards E" e "first packet towards G": sono i due pacchetti di C, uno per destinazione.
Errori comuni
- Servire nell'ordine di partenza dagli host invece che di arrivo in R1: C→E e C→G non arrivano insieme (distano ms).
- Dimenticare che il secondo pacchetto di C parte solo quando il primo è uscito dall'host (a ms, non a ).
- Contare in coda su anche i pacchetti di A (vanno su , non su ).
- Dimenticare di sommare la propagazione di ogni salto, anche dell'ultimo.
(Verificato con Python: simulatore a eventi FIFO; C→E ms, C→G ms, A1 , A2 , B→F .)
Versione ripasso
Regola. , , poi ; code FIFO per ordine di arrivo.
- Arrivi in R1: C→E ; A1 ; B ; A2 ; C→G ms.
- ( ms) in ordine: C→E , A1 , B , A2 , C→G ; in R2 a .
- E: , ms.
- G: libera, , in R3 a ; , ms.
- Ufficiale: uguale.
- Errore tipico: ordine di servizio sbagliato in R1; secondo pacchetto di C contato come partito a .