Salta al contenuto
Note per Studenti Esercizio - Inoltro di quattro pacchetti, rete da 1014 host e sottoreti da 34 nodi

Esercizio - Inoltro di quattro pacchetti, rete da 1014 host e sottoreti da 34 nodi

Esame
In questa pagina 5

Testo (tema d'esame, sessione di settembre, esercizio 2). Un router ha la tabella e le interfacce seguenti.

Rete Maschera Prossimo salto
142.124.123.0142.124.123.0 255.255.255.128255.255.255.128 142.124.124.192142.124.124.192
142.124.124.0142.124.124.0 255.255.255.128255.255.255.128 142.124.123.201142.124.123.201
142.124.16.0142.124.16.0 255.255.255.0255.255.255.0 142.124.124.192142.124.124.192
142.124.19.0142.124.19.0 255.255.255.128255.255.255.128 142.124.123.202142.124.123.202
142.124.28.0142.124.28.0 255.255.255.0255.255.255.0 142.124.124.192142.124.124.192
142.124.31.0142.124.31.0 255.255.255.0255.255.255.0 192.168.0.254192.168.0.254
142.124.8.0142.124.8.0 255.255.248.0255.255.248.0 192.168.0.254192.168.0.254
0.0.0.00.0.0.0 0.0.0.00.0.0.0 192.168.0.254192.168.0.254
Interfaccia Indirizzo Maschera MTU
eth0 142.124.123.254142.124.123.254 255.255.255.128255.255.255.128 10001000
eth1 142.124.124.254142.124.124.254 255.255.255.128255.255.255.128 500500
eth2 192.168.0.1192.168.0.1 255.255.255.0255.255.255.0 10001000
  1. Come sono trattati: (a) 142.124.123.200142.124.123.200 da eth1, 300300 B, DF=1=1; (b) 142.124.123.120142.124.123.120 da eth0, 300300 B, DF=1=1; (c) 142.124.19.232142.124.19.232 da eth0, 400400 B, DF=1=1; (d) 142.124.27.230142.124.27.230 da eth1, 20 00020\,000 B, DF=0=0 (se serve frammentazione, quanti frammenti).
  2. L'amministratore della rete 142.124.0.0142.124.0.0 con maschera 255.255.192.0255.255.192.0 vuole una sottorete per una rete precedente di 10141014 host: indirizzo e maschera, broadcast diretto, massimo numero di host.
  3. (Facoltativo) Quante sottoreti da 3434 nodi stanno nella sottorete del punto precedente, e con quale maschera?

Teoria usata: 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 →, 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 →.

Domanda 1: inoltro dei quattro pacchetti

Reti delle interfacce (ultimo byte AND 128128):

  • eth0: 142.124.123.254/25⇒142.124.123.128/25142.124.123.254/25\Rightarrow142.124.123.128/25 (.123.128.123.128–.123.255.123.255);
  • eth1: 142.124.124.254/25⇒142.124.124.128/25142.124.124.254/25\Rightarrow142.124.124.128/25 (.124.128.124.128–.124.255.124.255);
  • eth2: 192.168.0.1/24⇒192.168.0.0/24192.168.0.1/24\Rightarrow192.168.0.0/24.

Interfaccia di ogni prossimo salto: 142.124.124.192→142.124.124.192\to eth1 (192≥128192\ge128); 142.124.123.201142.124.123.201 e .123.202→.123.202\to eth0; 192.168.0.254→192.168.0.254\to eth2.

Cosa copre ogni riga: 142.124.123.0/25142.124.123.0/25: 123.0123.0–123.127123.127; 142.124.124.0/25142.124.124.0/25: 124.0124.0–124.127124.127; 142.124.16.0/24142.124.16.0/24: 16.x16.x; 142.124.19.0/25142.124.19.0/25: 19.019.0–19.12719.127; 142.124.28.0/24142.124.28.0/24: 28.x28.x; 142.124.31.0/24142.124.31.0/24: 31.x31.x; 142.124.8.0/21142.124.8.0/21 (maschera 255.255.248.0255.255.248.0): da 8.08.0 a 15.25515.255.

Pacchetto Analisi Esito
(a) 142.124.123.200142.124.123.200 da eth1, 300300 B, DF=1=1 123.200123.200 è nella rete di eth0 (123.128123.128–255255) inoltro diretto via eth0; 300≤1000300\le1000
(b) 142.124.123.120142.124.123.120 da eth0, 300300 B, DF=1=1 non è nella rete di eth0 (120<128120<128); la riga 142.124.123.0/25142.124.123.0/25 (00–127127) lo contiene, prossimo salto 142.124.124.192→142.124.124.192\to eth1 inoltro indiretto via eth1; 300≤500300\le500
(c) 142.124.19.232142.124.19.232 da eth0, 400400 B, DF=1=1 19.23219.232 è fuori da 19.0/2519.0/25 (00–127127); nessun'altra riga; vale la default, prossimo salto 192.168.0.254→192.168.0.254\to eth2 inoltro indiretto via eth2; 400≤1000400\le1000
(d) 142.124.27.230142.124.27.230 da eth1, 20 00020\,000 B, DF=0=0 27.x27.x non è in 28.0/2428.0/24 né in 8.0/218.0/21 (88–1515): default, eth2; 20 000>100020\,000>1000, DF=0=0 inoltro indiretto via eth2, 2121 frammenti

Verifica riga per riga (algoritmo di 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 →: prima le interfacce, poi la tabella dalla maschera più lunga; l'AND si fa bit a bitAND vale 1 solo se entrambi i bit valgono 1Algebra di Boole e porte logiche → solo sul byte di confine, gli altri byte con maschera 255255 restano e con 00 si azzerano).

  • (c) 142.124.19.232142.124.19.232. Interfacce: eth0 ha rete 142.124.123.128142.124.123.128 (il terzo byte 19≠12319\ne123), eth1 142.124.124.128142.124.124.128 (19≠12419\ne124), eth2 192.168.0.0192.168.0.0: nessun inoltro diretto. Tabella, righe /25/25 (maschera 255.255.255.128255.255.255.128, byte di confine l'ultimo, 232=11101000→10000000=128232=11101000\to10000000=128): 142.124.19.232 AND 255.255.255.128=142.124.19.128142.124.19.232\ \text{AND}\ 255.255.255.128=142.124.19.128, che non è né 142.124.123.0142.124.123.0, né 142.124.124.0142.124.124.0, né 142.124.19.0142.124.19.0 (l'unica con il terzo byte giusto, ma 128≠0128\ne0). Righe /24/24 (terzo byte da confrontare): 19≠1619\ne16, 19≠2819\ne28, 19≠3119\ne31. Riga /21/21 (maschera 255.255.248.0255.255.248.0, 248=11111000248=11111000): 19=00010011→00010000=16≠819=00010011\to00010000=16\ne8. Nessuna riga specifica corrisponde, quindi vale la default.
  • (d) 142.124.27.230142.124.27.230. Stesso schema: nessuna interfaccia; righe /25/25: i terzi byte 123,124,19123,124,19 non sono 2727; righe /24/24: 27≠16,28,3127\ne16,28,31; riga /21/21: 27=00011011→00011000=24≠827=00011011\to00011000=24\ne8 (il blocco /21/21 copre i terzi byte da 88 a 1515). Default →192.168.0.254→\to192.168.0.254\to eth2.
  • (b) 142.124.123.120142.124.123.120. Interfacce: l'AND con 255.255.255.128255.255.255.128 dà 142.124.123.0142.124.123.0 (perché 120=01111000→0120=01111000\to0), diverso dalla rete di eth0 (142.124.123.128142.124.123.128): nessun inoltro diretto. La prima riga con maschera più lunga che corrisponde è 142.124.123.0/25142.124.123.0/25 (142.124.123.120 AND 255.255.255.128=142.124.123.0142.124.123.120\ \text{AND}\ 255.255.255.128=142.124.123.0 ✓): prossimo salto 142.124.124.192142.124.124.192.

Frammenti di (d). Intestazione 2020 B, payload 19 98019\,980 B. La MTU di eth2 è 10001000 B (l'MTU che conta è quella dell'interfaccia di uscita, eth2), quindi il payload massimo per frammento è 1000−20=9801000-20=980 B, ma deve essere multiplo di 88 (l'offset conta blocchi da 8 byte: 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 →): 980/8=122,5980/8=122{,}5, per difetto 122122 blocchi, cioè 8⋅122=9768\cdot122=976. 19 980/976=20,47⇒2119\,980/976=20{,}47\Rightarrow21 frammenti (per eccesso: anche un frammento parziale conta): venti da 996996 B (payload 976976) e uno con payload 19 980−20⋅976=46019\,980-20\cdot976=460 B, cioè 480480 B. (Con 980980 non multiplo di 88 il conto darebbe 19 980/980=20,3919\,980/980=20{,}39, comunque 2121.)

Domanda 2: rete da 10141014 host

Servono 10141014 indirizzi più rete e broadcast: 1016≤1024=2101016\le1024=2^{10} (29=512<10162^9=512<1016), quindi 1010 bit di host (log⁡21024=10\log_2 1024=10: 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 →) e maschera 32−10=2232-10=22, cioè 255.255.252.0255.255.252.0 (due byte pieni, 8+8=168+8=16, più 66 uni nel terzo byte: 111111002=25211111100_2=252). La rete 142.124.0.0142.124.0.0 con maschera /18/18 ha 1414 bit di host: ne bastano 1010.

  • Indirizzo di rete: 142.124.0.0/22142.124.0.0/22 (il primo blocco da 10241024 indirizzi);
  • Broadcast diretto: 142.124.3.255142.124.3.255 (il passo è 1024/256=41024/256=4 nel terzo byte: 0,1,2,30,1,2,3);
  • Massimo numero di host: 1024−2=10221024-2=1022.

Domanda 3: sottoreti da 3434 nodi

34+2=36≤64=2634+2=36\le64=2^6 (25=32<362^5=32<36): 66 bit di host, maschera /26/26 (255.255.255.192255.255.255.192), 6262 host ciascuna. Nel /22/22 (host a 1010 bit) restano 10−6=410-6=4 bit di sottorete, che numerano 24=162^4=\mathbf{16} sottoreti (controllo sugli indirizzi: 1024/64=161024/64=16), cioè 142.124.0.0/26142.124.0.0/26, 142.124.0.64/26142.124.0.64/26, …\dots, 142.124.3.192/26142.124.3.192/26.

Confronto con la soluzione ufficiale

Domanda Mio Ufficiale
(a) diretto via eth0 diretto via eth0
(b) indiretto via eth1 indiretto via eth1
(c) indiretto via eth2 indiretto via eth2
(d) indiretto via eth2, 2121 frammenti indiretto via eth2, 2121 frammenti
2 142.124.0.0/22142.124.0.0/22, bc 142.124.3.255142.124.3.255, 10221022 host uguale
3 1616 sottoreti 1616 sottoreti

Tutto coincide.

Errori comuni

  • In (a) cercare nella tabella prima di controllare le reti delle interfacce: l'ordine corretto è prima l'inoltro diretto, poi la tabella.
  • In (b), rispondere "diretto": 142.124.123.120142.124.123.120 sembra vicino a eth0 ma è nella metà bassa (00–127127), mentre eth0 copre la metà alta.
  • Scegliere per (d) la riga 142.124.8.0/21142.124.8.0/21 confondendo 2727 con 88–1515: la maschera 255.255.248.0255.255.248.0 copre solo da 88 a 1515 nel terzo byte.
  • Per 10141014 host usare /21/21 (20462046 host): troppi indirizzi; il più piccolo blocco che basta è /22/22.
  • Dividere i frammenti con 980980 senza controllare il multiplo di 88.

(Verificato con Python: modulo ipaddress per reti, appartenenza e broadcast; funzione di inoltro con rotta più specifica, MTU e DF.)

Versione ripasso

Dati. Reti delle interfacce: eth0 142.124.123.128/25142.124.123.128/25 (MTU 10001000), eth1 142.124.124.128/25142.124.124.128/25 (500500), eth2 192.168.0.0/24192.168.0.0/24 (10001000). (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 →)

Lezioni in cui compare

Teoria collegata