Salta al contenuto
Note per Studenti Esercizio - Commutazione di pacchetto e numero ottimo di pacchetti

Esercizio - Commutazione di pacchetto e numero ottimo di pacchetti

In questa pagina 6

Testo. Calcolare il tempo di consegna di un messaggio dall'host A all'host B con in mezzo uno switch che implementa la commutazione di pacchetto con approccio a datagramma (store-and-forward). Il messaggio è diviso in KK pacchetti. Si trascurano accodamento ed elaborazione. Tutti i collegamenti sono uguali (stessa lunghezza, stesso bitrate). Calcolare il valore ottimo di KK che minimizza il tempo di consegna del messaggio.

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 →; per la derivata e il minimo Regole di derivazioneDerivate delle funzioni elementari e delle loro inverse (arcsin, arctan, settcosh...) e regole di calcolo: linearità, prodotto (Leibniz), quoziente, funzione composta (regola della catena), funzione inversa, f(x)^g(x).Regole di derivazione → e Massimi e minimi relativi e teorema di Fermatx0 è punto di minimo (massimo) relativo se f(x0) ≤ f(x) (≥) per gli x del dominio vicini a x0. I candidati sono gli estremi del dominio, i punti dove f non è derivabile e i punti interni con f'(x0) = 0 (punti critici o stazionari). Teorema di Fermat: in un punto interno di minimo o massimo relativo dove f è derivabile, f'(x0) = 0. È solo una condizione necessaria: x³ in 0.Massimi e minimi relativi e teorema di Fermat →.

Simboli

  • NN: numero di collegamenti da A a B (hop); N−1N-1 switch intermedi. Nell'esercizio N=2N=2, ma si ricava la formula generale.
  • tpt_p: propagazione di un collegamento; RR: bitrate di ogni collegamento.
  • MM: lunghezza del messaggio in bit; KK: numero di pacchetti.
  • HH: lunghezza dell'intestazione di ciascun pacchetto in bit (indirizzi di sorgente e destinazione, necessari nel datagramma: ogni pacchetto è instradato da solo).
  • Lunghezza di un pacchetto: L=MK+HL=\dfrac MK+H; tempo di trasmissione di un pacchetto su un collegamento: ttx=M/K+HRt_{tx}=\dfrac{M/K+H}{R}.

Ricavo del tempo di consegna

Sul primo collegamento A trasmette i KK pacchetti uno dopo l'altro: la trasmissione dell'ultimo termina a K ttxK\,t_{tx}. Poi quest'ultimo pacchetto deve ancora attraversare i collegamenti restanti: su ciascuno viene ricevuto per intero (store), poi ritrasmesso (forward, ttxt_{tx}) e poi si propaga (tpt_p). Il primo collegamento aggiunge anche la sua propagazione, quindi: T=K ttx+N tp+(N−1) ttx=N tp+(N+K−1) ttx.T=K\,t_{tx}+N\,t_p+(N-1)\,t_{tx}=N\,t_p+(N+K-1)\,t_{tx}. Uno sguardo al diagramma temporale aiuta a vedere perché non serve ritrasmettere per intero ogni pacchetto: appena lo switch finisce di ricevere il pacchetto 1 comincia a trasmetterlo verso B mentre A sta già trasmettendo il pacchetto 2 (pipeline). I collegamenti lavorano in parallelo su pacchetti diversi: il tempo non è K⋅N⋅ttxK\cdot N\cdot t_{tx} ma (N+K−1) ttx(N+K-1)\,t_{tx}, perché il pacchetto che chiude la sequenza paga NN trasmissioni (una per hop) e gli altri K−1K-1 si "nascondono" dietro di lui. In forma completa: T(K)=N tp+(N+K−1) M/K+HR\boxed{T(K)=N\,t_p+(N+K-1)\,\frac{M/K+H}{R}}

Perché esiste un KK ottimo

Sviluppando il prodotto: (N+K−1)(MK+H)=(N−1)MK+M+(N−1)H+KH.(N+K-1)\left(\frac MK+H\right)=\frac{(N-1)M}{K}+M+(N-1)H+KH. Quindi T(K)=N tp+1R[(N−1)MK⏟decresce con K+K H⏟cresce con K+M+(N−1)H].T(K)=N\,t_p+\frac1R\left[\underbrace{\frac{(N-1)M}{K}}_{\text{decresce con }K}+\underbrace{K\,H}_{\text{cresce con }K}+M+(N-1)H\right]. Dividere in più pacchetti accorcia il tempo perché gli hop lavorano in parallelo (primo termine); ma ogni pacchetto in più porta un'intestazione in più (secondo termine). Il minimo si trova derivando rispetto a KK e ponendo la derivata uguale a zero: dTdK=1R[−(N−1)MK2+H]=0 ⟹ Kopt=MH (N−1).\frac{dT}{dK}=\frac1R\left[-\frac{(N-1)M}{K^2}+H\right]=0\ \Longrightarrow\ \boxed{K_{opt}=\sqrt{\frac MH\,(N-1)}}. Passo per passo: i termini N tpN\,t_p, MM e (N−1)H(N-1)H non contengono KK e la loro derivata è 00; ddK(N−1)MK=−(N−1)MK2\frac{d}{dK}\frac{(N-1)M}{K}=-\frac{(N-1)M}{K^2} (potenza K−1K^{-1}) e ddK(KH)=H\frac{d}{dK}(KH)=H. Porre la derivata a zero significa H=(N−1)MK2H=\frac{(N-1)M}{K^2}, cioè K2=(N−1)MHK^2=\frac{(N-1)M}{H}, e si prende la radice positiva. La derivata seconda 2(N−1)MRK3\frac{2(N-1)M}{RK^3} è positiva per K>0K>0, quindi è un minimo. Se il numero risultante non è intero si confrontano i due interi vicini.

Caso del testo (N=2N=2): Kopt=M/HK_{opt}=\sqrt{M/H}.

Esempio numerico

M=106M=10^6 bit, H=100H=100 bit, N=3N=3 hop, R=10R=10 Mbps, tp=1t_p=1 ms. Allora Kopt=106⋅2/100=141,4K_{opt}=\sqrt{10^6\cdot2/100}=141{,}4 e

KK T(K)T(K)
11 303,03303{,}03 ms
1010 123,12123{,}12 ms
100100 106,02106{,}02 ms
141141 105,85105{,}85 ms (minimo)
200200 106,02106{,}02 ms
10001000 113,22113{,}22 ms

Controllo di K=141K=141 passo per passo: dimensione del pacchetto M/K+H=106/141+100=7092+100=7192M/K+H=10^6/141+100=7092+100=7192 bit; tempo di trasmissione 7192/(107)=0,71927192/(10^{7})=0{,}7192 ms; numero di tempi N+K−1=3+141−1=143N+K-1=3+141-1=143; T=N tp+143⋅0,7192=3+102,85=105,85T=N\,t_p+143\cdot0{,}7192=3+102{,}85=105{,}85 ms.

Grafico interattivo: Tempo di consegna T(K) in millisecondi per M = 10^6 bit, H = 100 bit, N = 3, R = 10 Mbit/s, tp = 1 ms: 303 ms con K = 1, minimo 105,85 ms in K ≈ 141, poi risale lentamente per l'effetto delle intestazioni (113 ms con K = 1000)

Il minimo cade tra 141141 e 142142 (i due valori differiscono per meno di un microsecondo, 105,848105{,}848 ms), ed è molto piatto: scegliere KK da 100100 a 200200 perde meno del 0,2%0{,}2\%. Con K=1K=1 (nessuna segmentazione) il messaggio dovrebbe essere ritrasmesso per intero a ogni hop: 303303 ms.

Confronto con la soluzione ufficiale

Ufficiale: Ttx=N tp+(N+K−1)H+M/KRT_{tx}=N\,t_p+(N+K-1)\dfrac{H+M/K}{R} e Kopt=MH(N−1)K_{opt}=\sqrt{\dfrac MH(N-1)}: coincidono esattamente. La soluzione ufficiale cita anche il tempo di commutazione tst_s tra i simboli ma poi lo omette nella formula: qui si trascura, come da testo (elaborazione trascurabile). Nel testo c'è un solo switch (N=2N=2 collegamenti), dove Kopt=M/HK_{opt}=\sqrt{M/H}.

Errori comuni

  • Moltiplicare K⋅N⋅ttxK\cdot N\cdot t_{tx}: ignora la pipeline tra gli hop.
  • Dimenticare l'intestazione HH in ogni pacchetto: senza HH, TT decresce sempre con KK e non c'è un ottimo.
  • Confondere NN (collegamenti) con il numero di switch (N−1N-1): il fattore nella formula di KoptK_{opt} è N−1N-1.
  • Arrotondare KoptK_{opt} senza confrontare i due interi vicini quando KoptK_{opt} è piccolo.

(Verificato con Python: con M=106M=10^6, H=100H=100, N=3N=3, R=10R=10 Mbps, tp=1t_p=1 ms: Kopt=141,42K_{opt}=141{,}42, T(141)=105,848T(141)=105{,}848 ms, T(142)=105,848T(142)=105{,}848 ms, minimo intero K=141K=141.)

Versione ripasso

Dati. NN collegamenti uguali (N=2N=2 nel testo), tpt_p, RR, messaggio MM bit in KK pacchetti con intestazione HH (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 →).

  • ttx=(M/K+H)/Rt_{tx}=(M/K+H)/R. Pipeline: l'ultimo pacchetto paga NN trasmissioni, gli altri K−1K-1 si sovrappongono.
  • T(K)=Ntp+(N+K−1)M/K+HRT(K)=N t_p+(N+K-1)\dfrac{M/K+H}{R}.
  • T=Ntp+1R[(N−1)MK+KH+M+(N−1)H]T=N t_p+\frac1R\left[\frac{(N-1)M}{K}+KH+M+(N-1)H\right]: segmentare accorcia, le intestazioni allungano.
  • dT/dK=0⇒Kopt=MH(N−1)dT/dK=0\Rightarrow K_{opt}=\sqrt{\frac MH(N-1)} (N=2N=2: M/H\sqrt{M/H}).
  • Esempio M=106M=10^6, H=100H=100, N=3N=3: Kopt=141K_{opt}=141, T=105,85T=105{,}85 ms (con K=1K=1: 303303 ms).
  • Coincide con l'ufficiale.
  • Errori: K N ttxK\,N\,t_{tx} (niente pipeline); omettere HH; NN al posto di N−1N-1.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata