Salta al contenuto
Note per Studenti Esercizio - Quattro pacchetti da A verso E e D in una rete store-and-forward

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 t=0t=0 la coda di uscita del server A contiene quattro pacchetti, nell'ordine di trasmissione, diretti a E, E, D, D. Lunghezze: LD=250L_D=250 byte, LE=1250L_E=1250 byte. Le trasmissioni partono a t=0t=0 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
C1C_1 A – R1 2020 Mbit/s 66 ms
C2C_2 R1 – R2 1010 Mbit/s 44 ms
C5C_5 R2 – R3 12,512{,}5 Mbit/s 22 ms
C7C_7 R3 – E 55 Mbit/s 0,20{,}2 ms
C6C_6 R3 – D 2020 Mbit/s 0,80{,}8 ms

(C3C_3 verso B e C4C_4 verso C partono da R2 ma nessun pacchetto li usa.) Il cammino verso E è C1→C2→C5→C7C_1\to C_2\to C_5\to C_7, quello verso D è C1→C2→C5→C6C_1\to C_2\to C_5\to C_6.

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 ii che attraversa un collegamento con capacità CC e propagazione τ\tau si comporta così:

  1. è 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);
  2. se il collegamento è occupato aspetta in coda (FIFO, in ordine di arrivo al nodo): la trasmissione inizia a tinizio=max⁡(tpronto, tlibero)t_{inizio}=\max(t_{pronto},\,t_{libero});
  3. dura T=L/CT=L/C: finisce a tfine=tinizio+Tt_{fine}=t_{inizio}+T e il collegamento torna libero;
  4. il pacchetto è pronto al nodo successivo a tfine+τt_{fine}+\tau.

Il tempo di trasmissione T=L/CT=L/C va calcolato con LL in bit: LE=1250⋅8=10000L_E=1250\cdot8=10000 bit, LD=250⋅8=2000L_D=250\cdot8=2000 bit. Per esempio il pacchetto E su C5C_5: 10 000/(12,5⋅106)=0,8⋅10−310\,000/(12{,}5\cdot10^{6})=0{,}8\cdot10^{-3} s =0,8=0{,}8 ms; il pacchetto D su C6C_6: 2000/(20⋅106)=0,12000/(20\cdot10^{6})=0{,}1 ms.

C1C_1 (20 Mbit/s) C2C_2 (10 Mbit/s) C5C_5 (12,5 Mbit/s) C7C_7 (5 Mbit/s) C6C_6 (20 Mbit/s)
pacchetto E (1000010000 bit) 0,50{,}5 ms 11 ms 0,80{,}8 ms 22 ms –
pacchetto D (20002000 bit) 0,10{,}1 ms 0,20{,}2 ms 0,160{,}16 ms – 0,10{,}1 ms

Passo 1: il collegamento C1C_1 (A → R1)

A trasmette i quattro pacchetti uno dopo l'altro, senza pause:

Pacchetto inizio fine pronto in R1 (+6+6 ms)
E1 00 0,50{,}5 6,56{,}5
E2 0,50{,}5 1,01{,}0 7,07{,}0
D1 1,01{,}0 1,11{,}1 7,17{,}1
D2 1,11{,}1 1,21{,}2 7,27{,}2

(tempi in ms). I pacchetti arrivano a R1 distanziati di 0,50{,}5 ms, 0,10{,}1 ms, 0,10{,}1 ms.

Passo 2: il collegamento C2C_2 (R1 → R2), più lento di C1C_1

C2C_2 ha capacità metà di C1C_1, quindi i pacchetti si accodano in R1:

Pacchetto pronto inizio =max⁡(pronto,libero)=\max(\text{pronto},\text{libero}) fine pronto in R2 (+4+4 ms)
E1 6,56{,}5 6,56{,}5 7,57{,}5 11,511{,}5
E2 7,07{,}0 7,57{,}5 (aspetta 0,50{,}5) 8,58{,}5 12,512{,}5
D1 7,17{,}1 8,58{,}5 (aspetta 1,41{,}4) 8,78{,}7 12,712{,}7
D2 7,27{,}2 8,78{,}7 (aspetta 1,51{,}5) 8,98{,}9 12,912{,}9

Passo 3: il collegamento C5C_5 (R2 → R3)

C5C_5 (12,512{,}5 Mbit/s) è più veloce di C2C_2 (1010 Mbit/s), ma i pacchetti arrivano a R2 già in fila, e dopo E1 serve ancora 0,80{,}8 ms:

Pacchetto pronto inizio fine pronto in R3 (+2+2 ms)
E1 11,511{,}5 11,511{,}5 12,312{,}3 14,314{,}3
E2 12,512{,}5 12,512{,}5 (libero da 12,312{,}3) 13,313{,}3 15,315{,}3
D1 12,712{,}7 13,313{,}3 13,4613{,}46 15,4615{,}46
D2 12,912{,}9 13,4613{,}46 13,6213{,}62 15,6215{,}62

Qui D1 aspetta E2 (0,60{,}6 ms) e D2 aspetta D1 (0,560{,}56 ms).

Passo 4: l'ultimo salto, due uscite diverse in R3

R3 ha due code di uscita indipendenti: C7C_7 verso E e C6C_6 verso D. I pacchetti per D non aspettano quelli per E.

  • Verso E (C7C_7, 22 ms per pacchetto): E1 inizia a 14,314{,}3 e finisce a 16,316{,}3; arriva a E a 16,3+0,2=16,516{,}3+0{,}2=\mathbf{16{,}5} ms. E2 era pronto a 15,315{,}3 ma C7C_7 è occupato fino a 16,316{,}3: inizia a 16,316{,}3, finisce a 18,318{,}3 e arriva a 18,3+0,2=18,518{,}3+0{,}2=\mathbf{18{,}5} ms.
  • Verso D (C6C_6, 0,10{,}1 ms): D1 inizia a 15,4615{,}46, finisce a 15,5615{,}56, arriva a 15,56+0,8=16,3615{,}56+0{,}8=\mathbf{16{,}36} ms; D2 inizia a 15,6215{,}62, finisce a 15,7215{,}72, arriva a 16,52\mathbf{16{,}52} ms.
Pacchetto E1 E2 D1 D2
arrivo a destinazione (ms) 16,516{,}5 18,518{,}5 16,3616{,}36 16,5216{,}52

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é C7C_7 (55 Mbit/s) è il collo di bottiglia.

Confronto con la soluzione ufficiale

La soluzione ufficiale dà E1 =16,5=16{,}5 ms, E2 =18,5=18{,}5 ms, D1 =16,36=16{,}36 ms e per l'ultimo pacchetto 16,5216{,}52 ms. Coincide. Nell'ultima riga la soluzione scrive "second packet towards E", ma 16,5216{,}52 ms è il secondo pacchetto verso D (E2 arriva a 18,518{,}5 ms): è un refuso del testo ufficiale.

Errori comuni

  • Usare i byte al posto dei bit in L/CL/C: 12501250 byte a 1010 Mbit/s sono 11 ms, non 0,1250{,}125 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 è max⁡(tpronto,tlibero)\max(t_{pronto},t_{libero}), non semplicemente tprontot_{pronto}.
  • 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 16,516{,}5, E2 18,518{,}5, D1 16,3616{,}36, D2 16,5216{,}52 ms.)

Versione ripasso

Dati. A: E, E, D, D con LE=10000L_E=10000 bit, LD=2000L_D=2000 bit; cammino C1(20 Mbit/s,6 ms)→C2(10,4)→C5(12,5,2)→C7(5,0,2)C_1(20\text{ Mbit/s},6\text{ ms})\to C_2(10,4)\to C_5(12{,}5,2)\to C_7(5,0{,}2) verso E oppure →C6(20,0,8)\to C_6(20,0{,}8) verso D. (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 →)

Regola. tinizio=max⁡(tpronto,tlibero)t_{inizio}=\max(t_{pronto},t_{libero}), tfine=tinizio+L/Ct_{fine}=t_{inizio}+L/C, pronto al nodo dopo: tfine+τt_{fine}+\tau. Code FIFO per interfaccia di uscita.

  • C1C_1: pronti in R1 a 6,5; 7,0; 7,1; 7,26{,}5;\ 7{,}0;\ 7{,}1;\ 7{,}2 ms.
  • C2C_2 (più lento): fine 7,5; 8,5; 8,7; 8,97{,}5;\ 8{,}5;\ 8{,}7;\ 8{,}9, pronti in R2 a 11,5; 12,5; 12,7; 12,911{,}5;\ 12{,}5;\ 12{,}7;\ 12{,}9.
  • C5C_5: pronti in R3 a 14,3; 15,3; 15,46; 15,6214{,}3;\ 15{,}3;\ 15{,}46;\ 15{,}62.
  • R3, due code: E1 14,3→16,314{,}3\to16{,}3, E2 attende e va 16,3→18,316{,}3\to18{,}3 (C7C_7 collo di bottiglia); D1, D2 su C6C_6 senza attesa.
  • Arrivi: E1 16,516{,}5; E2 18,518{,}5; D1 16,3616{,}36; D2 16,5216{,}52 ms (ufficiale: uguale; "second packet towards E" è un refuso per D).
  • Errore tipico: byte al posto dei bit; code non separate per uscita.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata