Salta al contenuto
Note per Studenti Esercizio - Pacchetti di C verso E e G con traffico concorrente

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 t=0t=0: 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 L=1500L=1500 byte e le trasmissioni partono a t=0t=0 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
C1C_1 A – R1 2424 Mbit/s 11 ms
C5C_5 B – R1 2020 Mbit/s 11 ms
C6C_6 C – R1 1515 Mbit/s 0,50{,}5 ms
C2C_2 R1 – R2 66 Mbit/s 44 ms
C7C_7 R2 – D 2424 Mbit/s 44 ms
C8C_8 R2 – E 44 Mbit/s 1,51{,}5 ms
C3C_3 R2 – R3 1212 Mbit/s 44 ms
C4C_4 R3 – F 2424 Mbit/s 22 ms
C9C_9 R3 – G 2424 Mbit/s 66 ms

Cammini: A→D: C1,C2,C7C_1,C_2,C_7; B→F: C5,C2,C3,C4C_5,C_2,C_3,C_4; C→E: C6,C2,C8C_6,C_2,C_8; C→G: C6,C2,C3,C9C_6,C_2,C_3,C_9. Il traffico di A e B serve solo a occupare C2C_2.

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: tinizio=max⁡(tpronto,tlibero)t_{inizio}=\max(t_{pronto},t_{libero}), tfine=tinizio+L/Ct_{fine}=t_{inizio}+L/C, il pacchetto è pronto al nodo successivo a tfine+τt_{fine}+\tau. Le code sono FIFO, nell'ordine in cui i pacchetti sono arrivati per intero al router. Con L=1500⋅8=12000L=1500\cdot8=12000 bit (e T=L/CT=L/C, per esempio 12 000/(6⋅106)=2⋅10−312\,000/(6\cdot10^{6})=2\cdot10^{-3} s =2=2 ms su C2C_2):

Collegamento C1C_1 C5C_5 C6C_6 C2C_2 C8C_8 C3C_3 C9C_9
T=L/CT=L/C (ms) 0,50{,}5 0,60{,}6 0,80{,}8 22 33 11 0,50{,}5

Passo 1: dagli host a R1

Gli host trasmettono i pacchetti uno dietro l'altro; il tempo di arrivo in R1 è tfine+τt_{fine}+\tau:

Pacchetto fine trasmissione arrivo in R1
C→E (primo di C) 0,80{,}8 1,31{,}3
A1 0,50{,}5 1,51{,}5
B→F 0,60{,}6 1,61{,}6
A2 1,01{,}0 2,02{,}0
C→G (secondo di C) 1,61{,}6 2,12{,}1

(ms; tabella già ordinata per arrivo.) Nessun pacchetto aspetta in questo tratto: ogni host usa un collegamento suo.

Passo 2: la coda su C2C_2 (R1 → R2), il collo di bottiglia

Tutti e cinque i pacchetti devono passare da C2C_2 (66 Mbit/s, 22 ms ciascuno). R1 li serve nell'ordine di arrivo:

Ordine Pacchetto pronto inizio fine pronto in R2 (+4+4)
1 C→E 1,31{,}3 1,31{,}3 3,33{,}3 7,37{,}3
2 A1 1,51{,}5 3,33{,}3 5,35{,}3 9,39{,}3
3 B→F 1,61{,}6 5,35{,}3 7,37{,}3 11,311{,}3
4 A2 2,02{,}0 7,37{,}3 9,39{,}3 13,313{,}3
5 C→G 2,12{,}1 9,39{,}3 11,311{,}3 15,315{,}3

Il pacchetto C→G aspetta 9,3−2,1=7,29{,}3-2{,}1=7{,}2 ms in coda: è l'ultimo ad arrivare e deve cedere il passo agli altri quattro. Il diagramma riassume l'occupazione di C2C_2 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 C8C_8 (44 Mbit/s, 33 ms). L'interfaccia C8C_8 è libera (nessun altro la usa): inizio 7,37{,}3, fine 10,310{,}3, arrivo a E a 10,3+1,5=11,810{,}3+1{,}5=\mathbf{11{,}8} ms.

Passo 4: il pacchetto verso G

Pronto in R2 a 15,315{,}3 ms, esce su C3C_3 (1212 Mbit/s). Controllo della coda su C3C_3: l'unico altro pacchetto che la usa è B→F, arrivato in R2 a 11,311{,}3 e già uscito a 12,312{,}3; quindi C3C_3 è libera a 15,315{,}3 e non c'è attesa. C3C_3: 15,3→16,315{,}3\to16{,}3, pronto in R3 a 16,3+4=20,316{,}3+4=20{,}3. C9C_9: 20,3→20,820{,}3\to20{,}8 (tempo 0,50{,}5 ms), arrivo a G a 20,8+6=26,820{,}8+6=\mathbf{26{,}8} ms.

Pacchetto di C arrivo a destinazione
verso E 11,811{,}8 ms
verso G 26,826{,}8 ms

(Per completezza: A1 arriva a D a 13,813{,}8 ms, A2 a 17,817{,}8 ms, B→F a 18,818{,}8 ms.)

Confronto con la soluzione ufficiale

Ufficiale: 11,811{,}8 ms (verso E) e 26,826{,}8 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 C2C_2 nell'ordine di partenza dagli host invece che di arrivo in R1: C→E e C→G non arrivano insieme (distano 0,80{,}8 ms).
  • Dimenticare che il secondo pacchetto di C parte solo quando il primo è uscito dall'host (a 0,80{,}8 ms, non a 00).
  • Contare in coda su C3C_3 anche i pacchetti di A (vanno su C7C_7, non su C3C_3).
  • Dimenticare di sommare la propagazione di ogni salto, anche dell'ultimo.

(Verificato con Python: simulatore a eventi FIFO; C→E 11,811{,}8 ms, C→G 26,826{,}8 ms, A1 13,813{,}8, A2 17,817{,}8, B→F 18,818{,}8.)

Versione ripasso

Dati. Rete store-and-forward a datagramma, con code indipendenti per interfaccia di uscita. Pacchetti da L=1500L=1500 B =12 000=12\,000 bit, tutti partiti a t=0t=0. A ha due pacchetti per D; B ne ha uno per F; C ne ha due, uno per E e uno per G. Il traffico di A e B serve solo a occupare C2C_2 (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 →).

Cammini di C. C→E: C6C_6 (1515 Mbit/s, 0,50{,}5 ms), C2C_2 (66 Mbit/s, 44 ms), C8C_8 (44 Mbit/s, 1,51{,}5 ms). C→G: C6C_6, C2C_2, C3C_3 (1212 Mbit/s, 44 ms), C9C_9 (2424 Mbit/s, 66 ms).

Regola. Per ogni collegamento tinizio=max⁡(tpronto,tlibero)t_{inizio}=\max(t_{pronto},t_{libero}), tfine=tinizio+L/Ct_{fine}=t_{inizio}+L/C, e il pacchetto è pronto al nodo successivo a tfine+τt_{fine}+\tau. Le code sono FIFO, nell'ordine di arrivo per intero al router.

Passo 1, arrivi in R1. C→E a 1,31{,}3 ms; A1 a 1,51{,}5; B a 1,61{,}6; A2 a 2,02{,}0; C→G a 2,12{,}1 ms. Ogni host usa un collegamento proprio, quindi nessun pacchetto attende qui.

Passo 2, coda su C2C_2 (collo di bottiglia, T=2T=2 ms). I cinque pacchetti escono da R1 nell'ordine di arrivo: C→E da 1,31{,}3 a 3,33{,}3; A1 da 3,33{,}3 a 5,35{,}3; B da 5,35{,}3 a 7,37{,}3; A2 da 7,37{,}3 a 9,39{,}3; C→G da 9,39{,}3 a 11,311{,}3. Il pacchetto C→G aspetta 7,27{,}2 ms: è l'ultimo ad arrivare. In R2 i pacchetti sono pronti a 7,37{,}3, 9,39{,}3, 11,311{,}3, 13,313{,}3, 15,315{,}3 ms.

Passo 3, verso E. Su C8C_8 (33 ms) nessun altro pacchetto: da 7,37{,}3 a 10,310{,}3, più 1,51{,}5 ms: arrivo a E a 11,8\mathbf{11{,}8} ms.

Passo 4, verso G. Su C3C_3 il pacchetto B è già uscito (da 11,311{,}3 a 12,312{,}3 ms), quindi C3C_3 è libera a 15,315{,}3: trasmissione da 15,315{,}3 a 16,316{,}3, pronto in R3 a 20,320{,}3. Su C9C_9 (0,50{,}5 ms): da 20,320{,}3 a 20,820{,}8, più 66 ms: arrivo a G a 26,8\mathbf{26{,}8} ms.

Risultati ufficiali. 11,811{,}8 ms (verso E) e 26,826{,}8 ms (verso G): coincidono.

Errori tipici.

  • Servire C2C_2 nell'ordine di partenza dagli host invece che di arrivo in R1: C→E e C→G distano 0,80{,}8 ms.
  • Far partire il secondo pacchetto di C a t=0t=0: parte solo quando il primo è uscito dall'host, a 0,80{,}8 ms.
  • Mettere in coda su C3C_3 i pacchetti di A: vanno su C7C_7, non su C3C_3.
  • Dimenticare la propagazione dell'ultimo salto.

Esercizi su questo argomento

Teoria collegata