Salta al contenuto
Note per Studenti Esercizio - Stima di capacità e ritardo del collegamento R3-D con due ping

Esercizio - Stima di capacità e ritardo del collegamento R3-D con due ping

Esame
In questa pagina 5

Testo (tema d'esame, sessione di febbraio, esercizio 1, domanda 2). Nella rete della figura, con router R1, R2, R3 a commutazione di pacchetto a datagramma:

Collegamento Estremi Capacità Propagazione
C6C_6 B – R2 2424 Mbit/s 1,51{,}5 ms
C3C_3 R2 – R3 1212 Mbit/s 44 ms
C7C_7 R3 – D incognita incognita

Si vogliono stimare la capacità C7C_7 e il ritardo di propagazione τ7\tau_7 del collegamento R3–D. Da B a D si mandano due ping consecutivi (senza altro traffico): il primo da Lp,1=1500L_{p,1}=1500 B, il secondo da Lp,2=600L_{p,2}=600 B. L'RTT misurato (dall'invio del ping alla ricezione dell'ACK) è RTTp,1=21\text{RTT}_{p,1}=21 ms e RTTp,2=19,8\text{RTT}_{p,2}=19{,}8 ms. Ritardi di elaborazione e di coda trascurabili, intestazioni trascurabili, ACK di lunghezza trascurabile.

Le altre domande dello stesso esercizio sono svolte in Esercizio - Tre pacchetti del server S verso C con traffico concorrente (domanda 1) e in Esercizio - Go-Back-N su un collegamento e stop-and-wait sull'altro, messaggio da 300 KB (domande 3 e 4).

Teoria usata: 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 →, 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 →, Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP → (il ping è un messaggio echo di ICMP).

Idea

Il ping percorre B → R2 → R3 → D: tre collegamenti (C6C_6, C3C_3, C7C_7) in store-and-forward, quindi i tre tempi di trasmissione si sommano. Il ritorno è un ACK di lunghezza trascurabile: conta solo la propagazione. Quindi per un ping da LL bit:

RTT(L)=L(1C6+1C3+1C7)⏟trasmissioni+(τ6+τ3+τ7)⏟andata+(τ7+τ3+τ6)⏟ritorno.\text{RTT}(L)=\underbrace{L\Bigl(\frac1{C_6}+\frac1{C_3}+\frac1{C_7}\Bigr)}_{\text{trasmissioni}}+\underbrace{(\tau_6+\tau_3+\tau_7)}_{\text{andata}}+\underbrace{(\tau_7+\tau_3+\tau_6)}_{\text{ritorno}}.

Le incognite sono 1/C71/C_7 e τ7\tau_7; i due ping danno due equazioni lineari. Visto in funzione di LL, l'RTT è una retta: la pendenza è la somma 1C6+1C3+1C7\frac1{C_6}+\frac1{C_3}+\frac1{C_7} (secondi per bit) e l'intercetta, cioè l'RTT di un messaggio di lunghezza zero, è la sola propagazione di andata e ritorno 2(τ6+τ3+τ7)2(\tau_6+\tau_3+\tau_7). Due punti determinano una retta, ed è per questo che bastano due ping.

Grafico interattivo: RTT del ping in funzione della lunghezza L (in byte): retta di pendenza 1,333 µs per byte (somma degli inversi delle tre capacità) e intercetta 19 ms (= 2·(1,5 + 4 + 4) ms, solo propagazione); passa per (600 B, 19,8 ms) e (1500 B, 21 ms)

Controllo della pendenza: 124+112+124=1+2+124=16\frac1{24}+\frac1{12}+\frac1{24}=\frac{1+2+1}{24}=\frac16 µs per bit, cioè 8/6=1,3338/6=1{,}333 µs per byte; dalla retta (21−19,8)/(1500−600)=1,2/900=0,001333(21-19{,}8)/(1500-600)=1{,}2/900=0{,}001333 ms/B ✓.

Valori noti

  • Lp,1=1500L_{p,1}=1500 B =12 000=12\,000 bit: L/C6=12 000/24⋅106=0,5L/C_6=12\,000/24\cdot10^6=0{,}5 ms; L/C3=12 000/12⋅106=1L/C_3=12\,000/12\cdot10^6=1 ms.
  • Lp,2=600L_{p,2}=600 B =4800=4800 bit: L/C6=0,2L/C_6=0{,}2 ms; L/C3=0,4L/C_3=0{,}4 ms.
  • 2(τ6+τ3)=2(1,5+4)=112(\tau_6+\tau_3)=2(1{,}5+4)=11 ms.

Calcolo

Primo ping. 21=0,5+1+12 000C7+11+2τ7⇒12 000C7+2τ7=8,521=0{,}5+1+\dfrac{12\,000}{C_7}+11+2\tau_7\Rightarrow\dfrac{12\,000}{C_7}+2\tau_7=8{,}5 ms.

Secondo ping. 19,8=0,2+0,4+4800C7+11+2τ7⇒4800C7+2τ7=8,219{,}8=0{,}2+0{,}4+\dfrac{4800}{C_7}+11+2\tau_7\Rightarrow\dfrac{4800}{C_7}+2\tau_7=8{,}2 ms.

Differenza. Sottraendo membro a membro le due equazioni (stesso termine 2τ72\tau_7 in entrambe), 2τ72\tau_7 si cancella:

12 000−4800C7=8,5−8,2=0,3 ms ⇒ C7=7200 bit0,3⋅10−3 s=24⋅106 bit/s=24 Mbit/s.\frac{12\,000-4800}{C_7}=8{,}5-8{,}2=0{,}3\ \text{ms}\ \Rightarrow\ C_7=\frac{7200\ \text{bit}}{0{,}3\cdot10^{-3}\ \text{s}}=24\cdot10^6\ \text{bit/s}=\mathbf{24\ \text{Mbit/s}}.

Ritardo. Con C7=24C_7=24 Mbit/s: 12 000/C7=0,512\,000/C_7=0{,}5 ms, quindi 2τ7=8,5−0,5=82\tau_7=8{,}5-0{,}5=8 ms e

τ7=4 ms.\tau_7=\mathbf{4\ \text{ms}}.

Verifica sul secondo ping: 4800/24⋅106=0,24800/24\cdot10^6=0{,}2 ms; 0,2+0,4+0,2+11+8=19,80{,}2+0{,}4+0{,}2+11+8=19{,}8 ms ✓.

Confronto con la soluzione ufficiale

Ufficiale: C7=24C_7=24 Mbit/s, τ7=4\tau_7=4 ms. Coincide. Questi sono anche i valori usati nelle domande 3 e 4.

Errori comuni

  • Dimenticare che l'ACK torna sull'intero cammino (propagazioni τ7+τ3+τ6\tau_7+\tau_3+\tau_6): la parte fissa dell'RTT è 11+2τ711+2\tau_7, non τ6+τ3+τ7\tau_6+\tau_3+\tau_7.
  • Contare il tempo di trasmissione una volta sola invece che su ciascuno dei tre collegamenti.
  • Attribuire tutta la differenza degli RTT (21−19,8=1,221-19{,}8=1{,}2 ms) a C7C_7: i 72007200 bit in più si trasmettono su tutti e tre i collegamenti, e a C7C_7 spettano solo 0,30{,}3 ms (0,30{,}3 ms a C6C_6, 0,60{,}6 ms a C3C_3).
  • Confondere byte e bit (15001500 B =12 000=12\,000 bit).

(Verificato con Python: risolto il sistema lineare; C7=24C_7=24 Mbit/s e τ7=4\tau_7=4 ms riproducono 2121 e 19,819{,}8 ms.)

Versione ripasso

Idea. Ping B→D su C6,C3,C7C_6,C_3,C_7 in store-and-forward, ACK trascurabile: RTT(L)=L (1/C6+1/C3+1/C7)+2(τ6+τ3+τ7)\text{RTT}(L)=L\,(1/C_6+1/C_3+1/C_7)+2(\tau_6+\tau_3+\tau_7). (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 →)

  • L=12 000L=12\,000 bit: 21=0,5+1+12 000/C7+11+2τ7⇒12 000/C7+2τ7=8,521=0{,}5+1+12\,000/C_7+11+2\tau_7\Rightarrow12\,000/C_7+2\tau_7=8{,}5 ms.
  • L=4800L=4800 bit: 19,8=0,2+0,4+4800/C7+11+2τ7⇒4800/C7+2τ7=8,219{,}8=0{,}2+0{,}4+4800/C_7+11+2\tau_7\Rightarrow4800/C_7+2\tau_7=8{,}2 ms.
  • Differenza: 7200/C7=0,37200/C_7=0{,}3 ms ⇒C7=24\Rightarrow C_7=24 Mbit/s; 2τ7=8,5−0,5⇒τ7=42\tau_7=8{,}5-0{,}5\Rightarrow\tau_7=4 ms.
  • Errore tipico: propagazione del ritorno dimenticata; byte e bit.

Teoria collegata