Salta al contenuto
Note per Studenti Esercizio - piano di indirizzamento e inoltro con MTU (tema d'esame)

Esercizio - piano di indirizzamento e inoltro con MTU (tema d'esame)

Esame
In questa pagina 5

Testo (simulazione d'esame 2, esercizio 2). Un router ha la seguente configurazione.

interfaccia indirizzo IP maschera MTU [B]
eth0 131.175.192.1131.175.192.1 255.255.192.0255.255.192.0 15001500
eth1 131.175.128.1131.175.128.1 255.255.192.0255.255.192.0 15001500
WiFi0 128.10.10.1128.10.10.1 255.255.255.0255.255.255.0 500500
rete maschera prossimo salto
131.175.32.0131.175.32.0 255.255.224.0255.255.224.0 128.10.10.123128.10.10.123
131.175.64.0131.175.64.0 255.255.192.0255.255.192.0 131.175.220.14131.175.220.14
131.175.144.0131.175.144.0 255.255.240.0255.255.240.0 128.10.10.123128.10.10.123
131.0.0.0131.0.0.0 255.0.0.0255.0.0.0 128.10.10.123128.10.10.123
0.0.0.00.0.0.0 0.0.0.00.0.0.0 131.175.145.13131.175.145.13

(Nel testo l'ultima maschera della terza riga è scritta 255.255.240255.255.240, refuso per 255.255.240.0255.255.240.0.)

  1. Indicare come vengono trattati i pacchetti con le seguenti destinazioni: se si usa inoltro diretto o indiretto (nel caso indiretto, prossimo salto e interfaccia di uscita), se e perché il pacchetto viene scartato, e in caso di frammentazione quanti frammenti vanno inviati.
    • 175.123.12.123175.123.12.123 da WiFi0; dimensione 500500 B, bit Don't Fragment =1=1, TTL =11=11.
    • 131.175.64.12131.175.64.12 da eth1; 18 00018\,000 B, DF =0=0, TTL =2=2.
    • 131.175.65.120131.175.65.120 da eth0; 180180 B, DF =0=0, TTL =1=1.
    • 131.175.192.1131.175.192.1 da eth1; 200200 B, DF =0=0, TTL =10=10.
    • 131.175.191.255131.175.191.255 da eth0; 400400 B, DF =0=0, TTL =8=8.
    • 131.175.33.12131.175.33.12 da eth0; 12001200 B, DF =1=1, TTL =3=3.
  2. L'amministratore della rete 131.175.32.0/19131.175.32.0/19 vuole partizionarla per: 11 sottorete da 10001000 host; 22 da 500500; 33 da 230230; 33 da 100100; 11 collegamento punto-punto. Definire un piano di indirizzamento con indirizzi, maschere, broadcast diretto e massimo numero di host.

Teoria usata: Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro → (inoltro diretto e indiretto, prefisso più lungo), Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione → (MTU, bit DF, TTL), 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 →, Subnetting e supernettingIl subnetting divide un blocco di indirizzi in sottoblocchi più piccoli allungando la maschera ($n_{\text{sub}}=n_{\text{rete}}+s$, con $2^s$ sottoreti); il supernetting (aggregazione CIDR) fa l'opposto, accorciando il prefisso per unire blocchi contigui in uno più grande. Regole di progetto: ogni sottorete ha un numero di indirizzi potenza di 2 ($M=2^k\ge$ host richiesti $+2$), prefisso $n=32-k$, indirizzo iniziale multiplo di $M$; si assegnano prima le sottoreti più grandi. Per aggregare $2^j$ blocchi di prefisso $n$ servono blocchi contigui il cui primo indirizzo sia multiplo della dimensione dell'aggregato, e il nuovo prefisso è $n-j$.Subnetting e supernetting →.

Punto 1: preparazione

Reti delle interfacce (indirizzo AND maschera, sul byte di confine):

interfaccia calcolo rete
eth0 131.175.192.1/18131.175.192.1/18: terzo byte 192=11000000192=11000000 resta 192192 131.175.192.0/18131.175.192.0/18 (192.0192.0–255.255255.255)
eth1 131.175.128.1/18131.175.128.1/18: terzo byte 128128 131.175.128.0/18131.175.128.0/18 (128.0128.0–191.255191.255)
WiFi0 128.10.10.1/24128.10.10.1/24 128.10.10.0/24128.10.10.0/24

La tabella di instradamento contiene già indirizzi di rete. I prossimi salti sono su interfacce note: 128.10.10.123∈128.10.10.0/24→128.10.10.123\in128.10.10.0/24\to WiFi0; 131.175.220.14131.175.220.14 ha terzo byte 220=11011100→192220=11011100\to192: eth0; 131.175.145.13131.175.145.13 ha terzo byte 145145, tra 128128 e 191191: eth1.

Come si leggono le maschere (AND bit a bitAND vale 1 solo se entrambi i bit valgono 1Algebra di Boole e porte logiche → sul byte di confine, cioè il terzo): 255.255.192.0255.255.192.0 è un /18/18 (192=11000000192=11000000, due bit di rete nel terzo byte, quindi blocchi di 6464 valori: 00–6363, 6464–127127, 128128–191191, 192192–255255); 255.255.224.0255.255.224.0 è un /19/19 (224=11100000224=11100000, blocchi di 3232 valori); 255.255.240.0255.255.240.0 è un /20/20 (240=11110000240=11110000, blocchi di 1616 valori); 255.0.0.0255.0.0.0 è un /8/8. Esempio con il terzo byte 64=0100000064=01000000 del pacchetto 2: con la maschera /20/20 (1111000011110000) il risultato è 01000000=6401000000=64, e la rete della riga /20/20 è 144=10010000144=10010000: diverso, no; con la /19/19 (1110000011100000) il risultato è ancora 01000000=6401000000=64 contro 32=0010000032=00100000 della riga: diverso, no; con la /18/18 (1100000011000000) il risultato è 01000000=6401000000=64, uguale al 6464 della riga: combacia. Per questo il pacchetto 2 va sulla riga /18/18.

Procedura per ogni pacchetto. (1) Si controlla l'inoltro diretto: la destinazione appartiene alla rete di una delle interfacce? (2) Altrimenti si scorre la tabella dalla maschera più lunga (/20/20, poi /19/19, /18/18, /8/8, /0/0): vale il primo match. (3) Si trova l'interfaccia che contiene il prossimo salto. (4) Si verifica TTL (decrementato di 11; se arriva a 00 si scarta) e MTU (se il pacchetto è più grande: con DF =1=1 si scarta, con DF =0=0 si frammenta).

I sei pacchetti

1. 175.123.12.123175.123.12.123 da WiFi0 (500 B, DF=1=1, TTL=11=11). Nessuna interfaccia ha rete con primo byte 175175: inoltro indiretto. Nella tabella solo la rotta di default (0.0.0.0/00.0.0.0/0) contiene l'indirizzo. Prossimo salto 131.175.145.13131.175.145.13, interfaccia eth1. MTU di eth1 1500≥5001500\ge500: nessuna frammentazione; TTL diventa 1010. Il pacchetto viene inoltrato.

2. 131.175.64.12131.175.64.12 da eth1 (18 000 B, DF=0=0, TTL=2=2). Diretto: 131.175.64.12/18=131.175.64.0131.175.64.12/18=131.175.64.0, diverso da 131.175.192.0131.175.192.0, 131.175.128.0131.175.128.0 e 128.10.10.0128.10.10.0: no. Indiretto, tabella: la riga /20/20 (131.175.144.0131.175.144.0) dà 131.175.64.0≠144.0131.175.64.0\ne144.0 no; la riga /19/19 (131.175.32.0131.175.32.0) dà 131.175.64.0≠32.0131.175.64.0\ne32.0 no; la riga /18/18 (131.175.64.0131.175.64.0) dà 131.175.64.0131.175.64.0: match. Prossimo salto 131.175.220.14→131.175.220.14\to eth0. TTL 2→12\to1: ancora valido. MTU di eth0 1500<180001500<18000 e DF=0=0: si frammenta. Payload 18 000−20=17 98018\,000-20=17\,980 byte; ogni frammento porta al massimo 1500−20=14801500-20=1480 byte (multiplo di 88: 1480=8⋅1851480=8\cdot185 ✓). Numero di frammenti ⌈17 980/1480⌉=⌈12,15⌉=13\lceil17\,980/1480\rceil=\lceil12{,}15\rceil=\mathbf{13}: 1212 frammenti da 14801480 byte (12⋅1480=17 76012\cdot1480=17\,760) più uno da 17 980−17 760=22017\,980-17\,760=220 byte (lunghezza totale 240240 B, offset 22202220; MF=0=0). Gli offset dei primi sono 0,185,370,…,20350,185,370,\dots,2035 (multipli di 185185), MF=1=1.

3. 131.175.65.120131.175.65.120 da eth0 (180 B, DF=0=0, TTL=1=1). Diretto no (le tre reti non lo contengono: ad eth0 corrisponde 131.175.192.0/18131.175.192.0/18). Tabella: riga /20/20 no (131.175.64.0131.175.64.0), riga /19/19 no, riga /18/18 sì (131.175.65.120/18=131.175.64.0131.175.65.120/18=131.175.64.0). Prossimo salto 131.175.220.14131.175.220.14 su eth0. Non viene inoltrato, per due motivi indipendenti: (a) con TTL=1=1 il router lo decrementa a 00 e lo scarta, rispondendo alla sorgente con un messaggio ICMP Time Exceeded (tipo 1111, codice 00, 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 →); (b) l'interfaccia di uscita (eth0) coincide con quella di arrivo: il pacchetto tornerebbe nella rete da cui è venuto. La soluzione ufficiale scrive solo "no forwarding".

4. 131.175.192.1131.175.192.1 da eth1 (200 B, DF=0=0, TTL=10=10). È esattamente l'indirizzo dell'interfaccia eth0 del router: consegnato ai livelli superiori del router stesso, nessun inoltro.

5. 131.175.191.255131.175.191.255 da eth0 (400 B, DF=0=0, TTL=8=8). Diretto: con eth0 (131.175.192.0/18131.175.192.0/18): 131.175.191.255/18=131.175.128.0131.175.191.255/18=131.175.128.0, no; con eth1 (131.175.128.0/18131.175.128.0/18): 131.175.128.0131.175.128.0, match. L'indirizzo è l'ultimo della rete 131.175.128.0/18131.175.128.0/18 (128+64−1=191128+64-1=191): è il broadcast diretto di quella rete. Soluzione ufficiale: inoltro diretto attraverso eth1 (MTU 1500≥4001500\ge400, nessuna frammentazione, TTL →7\to7); un router moderno di norma blocca i broadcast diretti.

6. 131.175.33.12131.175.33.12 da eth0 (1200 B, DF=1=1, TTL=3=3). Diretto no. Tabella: riga /20/20 (131.175.144.0131.175.144.0) dà 131.175.32.0≠144.0131.175.32.0\ne144.0 no; riga /19/19 (131.175.32.0131.175.32.0): 131.175.33.12/19=131.175.32.0131.175.33.12/19=131.175.32.0 match. Prossimo salto 128.10.10.123→128.10.10.123\to WiFi0, MTU 500<1200500<1200. Con DF=1=1 non si può frammentare: il pacchetto viene scartato e alla sorgente torna un ICMP Destination Unreachable codice 44 ("fragmentation needed and DF set") con l'MTU del salto successivo (500500): 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 →.

# destinazione arrivo tipo di inoltro uscita esito
1 175.123.12.123175.123.12.123 WiFi0 indiretto (default), NH 131.175.145.13131.175.145.13 eth1 inoltrato, TTL=10=10
2 131.175.64.12131.175.64.12 eth1 indiretto (/18/18), NH 131.175.220.14131.175.220.14 eth0 frammentato in 1313
3 131.175.65.120131.175.65.120 eth0 indiretto (/18/18), NH 131.175.220.14131.175.220.14 eth0 scartato (TTL=1=1)
4 131.175.192.1131.175.192.1 eth1 indirizzo del router — consegnato localmente
5 131.175.191.255131.175.191.255 eth0 diretto (broadcast di eth1) eth1 inoltrato
6 131.175.33.12131.175.33.12 eth0 indiretto (/19/19), NH 128.10.10.123128.10.10.123 WiFi0 scartato (DF=1=1, MTU 500500)

Punto 2: piano di indirizzamento di 131.175.32.0/19131.175.32.0/19

Il blocco /19/19 ha 32−19=1332-19=13 bit di host, quindi 213=81922^{13}=8192 indirizzi, da 131.175.32.0131.175.32.0 a 131.175.63.255131.175.63.255 (il terzo byte va da 3232 a 32+8192/256−1=6332+8192/256-1=63). Regola 3: dal blocco più grande al più piccolo. Per ogni gruppo M≥H+2M\ge H+2, con M=2⌈log⁡2(H+2)⌉M=2^{\lceil\log_2(H+2)\rceil} (Esponenziale e logaritmoLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →): log⁡21002≈9,97→10\log_21002\approx9{,}97\to10 (10241024), log⁡2502≈8,97→9\log_2502\approx8{,}97\to9 (512512), log⁡2232≈7,86→8\log_2232\approx7{,}86\to8 (256256), log⁡2102≈6,67→7\log_2102\approx6{,}67\to7 (128128).

richiesta H+2H+2 MM prefisso rete broadcast host
1×10001\times1000 10021002 10241024 /22/22 131.175.32.0131.175.32.0 131.175.35.255131.175.35.255 10221022
2×5002\times500 (1ª) 502502 512512 /23/23 131.175.36.0131.175.36.0 131.175.37.255131.175.37.255 510510
(2ª) 502502 512512 /23/23 131.175.38.0131.175.38.0 131.175.39.255131.175.39.255 510510
3×2303\times230 (1ª) 232232 256256 /24/24 131.175.40.0131.175.40.0 131.175.40.255131.175.40.255 254254
(2ª) 232232 256256 /24/24 131.175.41.0131.175.41.0 131.175.41.255131.175.41.255 254254
(3ª) 232232 256256 /24/24 131.175.42.0131.175.42.0 131.175.42.255131.175.42.255 254254
3×1003\times100 (1ª) 102102 128128 /25/25 131.175.43.0131.175.43.0 131.175.43.127131.175.43.127 126126
(2ª) 102102 128128 /25/25 131.175.43.128131.175.43.128 131.175.43.255131.175.43.255 126126
(3ª) 102102 128128 /25/25 131.175.44.0131.175.44.0 131.175.44.127131.175.44.127 126126
punto-punto 2+22+2 44 /30/30 131.175.44.128131.175.44.128 131.175.44.131131.175.44.131 22

Le maschere sono 255.255.252.0255.255.252.0 (/22/22), 255.255.254.0255.255.254.0 (/23/23), 255.255.255.0255.255.255.0 (/24/24), 255.255.255.128255.255.255.128 (/25/25), 255.255.255.252255.255.255.252 (/30/30). Totale usato 1024+2⋅512+3⋅256+3⋅128+4=32041024+2\cdot512+3\cdot256+3\cdot128+4=3204 indirizzi su 81928192; l'ultimo indirizzo assegnato è 131.175.44.131131.175.44.131 e restano liberi 131.175.44.132131.175.44.132–131.175.63.255131.175.63.255 (49884988 indirizzi).

Il grafico mostra come il terzo byte (3232–6363) viene riempito; le larghezze sono proporzionali agli indirizzi occupati (il /30/30 è appena visibile).

Grafico interattivo: Blocco 131.175.32.0/19: terzo byte da 32 a 63 e sottoreti assegnate

Controllo allineamento: 3232 è multiplo di 44 (terzo byte, per un /22/22); 36,3836,38 multipli di 22 (/23/23); 43⋅256+12843\cdot256+128 e 44⋅256+12844\cdot256+128 multipli di 128128 e 44. Un solo /30/30 perché per un collegamento punto-punto servono 22 host: con 11 bit di host si avrebbero 2−2=02-2=0 host.

Confronto con la soluzione ufficiale

  • Punto 1: tutti gli esiti coincidono (inoltri su eth1, eth0, eth0 senza forwarding, consegna locale, diretto su eth1, scarto per DF). Sul pacchetto 22 la soluzione calcola 18000/(1500−20)=1318000/(1500-20)=13 frammenti dividendo la lunghezza totale per 14801480; il conto esatto è ⌈17 980/1480⌉=13\lceil17\,980/1480\rceil=13: stesso risultato.
  • Punto 2: coincide in tutti i blocchi (131.175.32.0/22131.175.32.0/22, .36.0/23.36.0/23, .38.0/23.38.0/23, .40.0/24.40.0/24, .41.0/24.41.0/24, .42.0/24.42.0/24, .43.0/25.43.0/25, .43.128/25.43.128/25, .44.0/25.44.0/25, .44.128/30.44.128/30). Il simulatore Python (modulo ipaddress) ha riprodotto i sei percorsi di inoltro.

Errori comuni

  • Dimenticare di sottrarre i 2020 byte di intestazione prima di dividere per 14801480 (o di sottrarli due volte).
  • Frammentare con DF=1=1 (va scartato).
  • Fermarsi alla prima riga della tabella che corrisponde invece di cercare la maschera più lunga.
  • Considerare solo TTL o solo interfaccia nel pacchetto 33.
  • Assegnare gli indirizzi senza ordinare per dimensione (violazione dell'allineamento).

Versione ripasso

Dati. Router: eth0 131.175.192.1/18131.175.192.1/18 (131.175.192.0131.175.192.0, MTU 15001500), eth1 131.175.128.1/18131.175.128.1/18 (131.175.128.0131.175.128.0, 15001500), WiFi0 128.10.10.1/24128.10.10.1/24 (MTU 500500). Tabella: 131.175.32.0/19131.175.32.0/19 e 131.175.144.0/20131.175.144.0/20 e 131.0.0.0/8→128.10.10.123131.0.0.0/8\to128.10.10.123 (WiFi0); 131.175.64.0/18→131.175.220.14131.175.64.0/18\to131.175.220.14 (eth0, terzo byte 220220); default →131.175.145.13\to131.175.145.13 (eth1, terzo byte 145145).

Procedura (Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →, Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →): diretto? →\to tabella dalla maschera più lunga →\to interfaccia del prossimo salto →\to TTL−1-1 (00: scarto) e MTU (DF=1=1 scarto, DF=0=0 frammenta).

Punto 1.

# pacchetto ragionamento esito
1 175.123.12.123175.123.12.123, WiFi0, 500500 B, DF=1=1 solo default, NH 131.175.145.13131.175.145.13, eth1, 500≤1500500\le1500 inoltrato, TTL=10=10
2 131.175.64.12131.175.64.12, eth1, 18 00018\,000 B, DF=0=0, TTL=2=2 riga /18/18, NH 131.175.220.14131.175.220.14, eth0; 18 000>150018\,000>1500 1313 frammenti
3 131.175.65.120131.175.65.120, eth0, TTL=1=1 riga /18/18, uscita eth0 scartato
4 131.175.192.1131.175.192.1, eth1 indirizzo di eth0 consegna locale
5 131.175.191.255131.175.191.255, eth0, TTL=8=8 broadcast diretto di 131.175.128.0/18131.175.128.0/18, eth1 inoltrato, TTL=7=7
6 131.175.33.12131.175.33.12, eth0, 12001200 B, DF=1=1 riga /19/19, NH 128.10.10.123128.10.10.123, WiFi0, MTU 500500 scartato

Pacchetto 2: payload 18 000−20=17 98018\,000-20=17\,980 B, frammento massimo 1500−20=14801500-20=1480 B (8⋅1858\cdot185), ⌈17 980/1480⌉=13\lceil17\,980/1480\rceil=13: 12×1480=17 76012\times1480=17\,760 più uno da 220220 B (offset 22202220, MF=0=0). Pacchetto 3: TTL=1→0=1\to0 (ICMP tipo 1111) e uscita uguale all'ingresso. Pacchetto 6: ICMP codice 44 con MTU 500500 (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 →).

Punto 2: 131.175.32.0/19131.175.32.0/19 (Subnetting e supernettingIl subnetting divide un blocco di indirizzi in sottoblocchi più piccoli allungando la maschera ($n_{\text{sub}}=n_{\text{rete}}+s$, con $2^s$ sottoreti); il supernetting (aggregazione CIDR) fa l'opposto, accorciando il prefisso per unire blocchi contigui in uno più grande. Regole di progetto: ogni sottorete ha un numero di indirizzi potenza di 2 ($M=2^k\ge$ host richiesti $+2$), prefisso $n=32-k$, indirizzo iniziale multiplo di $M$; si assegnano prima le sottoreti più grandi. Per aggregare $2^j$ blocchi di prefisso $n$ servono blocchi contigui il cui primo indirizzo sia multiplo della dimensione dell'aggregato, e il nuovo prefisso è $n-j$.Subnetting e supernetting →), dal blocco più grande.

richiesta MM reti host
1×10001\times1000 10241024, /22/22 131.175.32.0131.175.32.0 10221022
2×5002\times500 512512, /23/23 .36.0.36.0, .38.0.38.0 510510
3×2303\times230 256256, /24/24 .40.0.40.0, .41.0.41.0, .42.0.42.0 254254
3×1003\times100 128128, /25/25 .43.0.43.0, .43.128.43.128, .44.0.44.0 126126
punto-punto 44, /30/30 .44.128.44.128 (bcast .44.131.44.131) 22

Usati 32043204 indirizzi su 81928192.

Errori: dividere 18 00018\,000 per 14801480 senza togliere l'header; frammentare con DF=1=1; prima riga che combacia invece del prefisso più lungo; nel pacchetto 3 considerare solo TTL o solo interfaccia.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata