Salta al contenuto
Note per Studenti Esercizio - Blocco 131.175.208.0-21 con quattro LAN e inoltro di quattro pacchetti

Esercizio - Blocco 131.175.208.0-21 con quattro LAN e inoltro di quattro pacchetti

Esame
In questa pagina 4

Testo (tema d'esame, sessione di febbraio, esercizio 2). Alla rete in figura è assegnato il blocco 131.175.208.0/21131.175.208.0/21. R0 collega la rete a Internet; R1 è collegato a R0, a R2 e a R3. Dietro R2, uno switch collega LAN 1 (200200 host) e LAN 2 (250250 host); dietro R3 ci sono LAN 3 (400400 host) e LAN 4 (101101 host).

  1. Dividere il blocco in sottoreti come in figura; per ciascuna, indirizzo di rete, maschera, broadcast diretto, massimo numero di host (escluso il collegamento R1–R0). Vanno configurati anche i collegamenti punto-punto.
  2. Un router ha la tabella e le interfacce seguenti.
Rete Maschera Prossimo salto
180.12.144.64180.12.144.64 255.255.255.192255.255.255.192 180.12.144.253180.12.144.253
180.12.144.0180.12.144.0 255.255.254.0255.255.254.0 180.12.144.40180.12.144.40
180.12.145.0180.12.145.0 255.255.255.192255.255.255.192 180.12.144.130180.12.144.130
180.12.145.64180.12.145.64 255.255.255.192255.255.255.192 180.12.144.200180.12.144.200
0.0.0.00.0.0.0 0.0.0.00.0.0.0 180.12.144.150180.12.144.150
Interfaccia Indirizzo Maschera MTU
eth0 180.12.144.254180.12.144.254 255.255.255.192255.255.255.192 10001000
eth1 180.12.144.25180.12.144.25 255.255.255.192255.255.255.192 500500
eth2 180.12.144.180180.12.144.180 255.255.255.192255.255.255.192 12001200

Come sono trattati: (a) 180.12.144.95180.12.144.95 da eth1, 300300 B, DF=1=1; (b) 180.12.144.222180.12.144.222 da eth0, 300300 B, DF=1=1; (c) 180.12.144.25180.12.144.25 da eth0, 400400 B, DF=1=1; (d) 180.12.145.203180.12.145.203 da eth0, 15 00015\,000 B, DF=0=0 (frammenti).

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 →, Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP →, 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: piano di indirizzamento

Quali sono i domini di broadcast. LAN 1 e LAN 2 sono sullo stesso switch: una sola sottorete con 200+250=450200+250=450 host. LAN 3 ha 400400 host, LAN 4 ne ha 101101. In più due collegamenti punto-punto (R1–R2 e R1–R3).

Dimensione di ogni blocco: il più piccolo 2b≥host+22^b\ge\text{host}+2 (b=⌈log⁡2(host+2)⌉b=\lceil\log_2(\text{host}+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 →; si aggiungono 22 perché rete e broadcast non sono assegnabili). Il prefisso è 32−b32-b.

Sottorete Host bb Maschera Host max
LAN 1 + LAN 2 450450 99 (452≤512452\le512) /23/23 510510
LAN 3 400400 99 (402≤512402\le512) /23/23 510510
LAN 4 101101 77 (103≤128103\le128) /25/25 126126
collegamento R1–R2 22 22 /30/30 22
collegamento R1–R3 22 22 /30/30 22

Allocazione (dal più grande), nel blocco 131.175.208.0/21131.175.208.0/21 (da 208.0208.0 a 215.255215.255):

Sottorete Rete Broadcast Host max
LAN 1 + LAN 2 131.175.208.0/23131.175.208.0/23 131.175.209.255131.175.209.255 510510
LAN 3 131.175.210.0/23131.175.210.0/23 131.175.211.255131.175.211.255 510510
LAN 4 131.175.212.0/25131.175.212.0/25 131.175.212.127131.175.212.127 126126
R1–R2 131.175.214.0/30131.175.214.0/30 131.175.214.3131.175.214.3 22
R1–R3 131.175.214.4/30131.175.214.4/30 131.175.214.7131.175.214.7 22

La soluzione ufficiale lascia un vuoto fra LAN 4 e i collegamenti (che mette in 214.0214.0 e 214.4214.4): è altrettanto valido. Un piano compatto metterebbe i collegamenti subito dopo LAN 4, in 131.175.212.128/30131.175.212.128/30 e 131.175.212.132/30131.175.212.132/30 (si controlla che i blocchi non si sovrappongano e stiano nel /21/21).

Domanda 2: inoltro dei quattro pacchetti

Reti delle interfacce (ultimo byte AND 192192):

  • eth0: 180.12.144.254/26⇒180.12.144.192/26180.12.144.254/26\Rightarrow180.12.144.192/26 (.192.192–.255.255);
  • eth1: 180.12.144.25/26⇒180.12.144.0/26180.12.144.25/26\Rightarrow180.12.144.0/26 (.0.0–.63.63);
  • eth2: 180.12.144.180/26⇒180.12.144.128/26180.12.144.180/26\Rightarrow180.12.144.128/26 (.128.128–.191.191).

Righe della tabella: 180.12.144.64/26180.12.144.64/26 copre .144.64.144.64–.144.127.144.127; 180.12.144.0/23180.12.144.0/23 copre 180.12.144.0180.12.144.0–180.12.145.255180.12.145.255; 180.12.145.0/26180.12.145.0/26 copre 145.0145.0–145.63145.63; 180.12.145.64/26180.12.145.64/26 copre 145.64145.64–145.127145.127. L'interfaccia di uscita è quella la cui rete contiene il prossimo salto: 144.253→144.253\to eth0, 144.40→144.40\to eth1, 144.130→144.130\to eth2, 144.200→144.200\to eth0, 144.150→144.150\to eth2.

Passaggi dell'AND (AND bit a bitAND vale 1 solo se entrambi i bit valgono 1Algebra di Boole e porte logiche →) sull'ultimo byte con maschera 192=11000000192=11000000: eth0 254=11111110→11000000=192254=11111110\to11000000=192; eth1 25=00011001→025=00011001\to0; eth2 180=10110100→10000000=128180=10110100\to10000000=128. Per i pacchetti: (a) 95=01011111→01000000=6495=01011111\to01000000=64, quindi con la maschera /26/26 la rete di 180.12.144.95180.12.144.95 è 180.12.144.64180.12.144.64 e non è né 00 (eth1), né 128128 (eth2), né 192192 (eth0), ma coincide con la riga 180.12.144.64/26180.12.144.64/26; (b) 222=11011110→192222=11011110\to192: è la rete di eth0; (d) 203=11001011→192203=11001011\to192: la rete è 180.12.145.192180.12.145.192, diversa da 145.0145.0 e da 145.64145.64 (le righe /26/26), ma con la maschera 255.255.254.0255.255.254.0 il terzo byte 145=10010001→10010000=144145=10010001\to10010000=144 e il quarto si azzera: 180.12.144.0180.12.144.0, uguale alla riga /23/23.

Pacchetto Analisi Esito
(a) 180.12.144.95180.12.144.95 da eth1, 300300 B, DF=1=1 non è in nessuna rete delle interfacce; righe che lo contengono: .144.64/26.144.64/26 (/26/26) e .144.0/23.144.0/23 (/23/23); vince la più specifica, /26/26, prossimo salto 180.12.144.253180.12.144.253 (in eth0) inoltro indiretto via eth0; 300≤1000300\le1000
(b) 180.12.144.222180.12.144.222 da eth0, 300300 B 222222 è nella rete di eth0 (192192–255255): inoltro diretto verso eth0, ma il pacchetto arriva da eth0 nessun inoltro
(c) 180.12.144.25180.12.144.25 da eth0, 400400 B è l'indirizzo dell'interfaccia eth1 del router stesso consegnato ai livelli superiori
(d) 180.12.145.203180.12.145.203 da eth0, 15 00015\,000 B, DF=0=0 145.203145.203 non è in 145.0/26145.0/26 (00–6363) né in 145.64/26145.64/26 (6464–127127); resta la riga /23/23, prossimo salto 180.12.144.40180.12.144.40 (in eth1) inoltro indiretto via eth1; 15 000>50015\,000>500 con DF=0=0: frammentazione in 3232 frammenti

Frammenti di (d). Intestazione 2020 B, payload 14 98014\,980 B. MTU 500500: payload massimo per frammento 480480 (multiplo di 88). 14 980/480=31,2⇒3214\,980/480=31{,}2\Rightarrow32 frammenti: 3131 da 500500 B (payload 480480) e uno con payload 14 980−31⋅480=10014\,980-31\cdot480=100 B, cioè 120120 B.

Confronto con la soluzione ufficiale

Domanda Mio Ufficiale
1 131.175.208.0/23131.175.208.0/23, 210.0/23210.0/23, 212.0/25212.0/25, 214.0/30214.0/30, 214.4/30214.4/30 uguale (broadcast e host max uguali)
2 (a) indiretto via eth0 indiretto via eth0
2 (b) nessun inoltro nessun inoltro
2 (c) livelli superiori livelli superiori
2 (d) indiretto via eth1, 3232 frammenti indiretto via eth1, 3232 frammenti

Coincide.

Errori comuni

  • Trattare LAN 1 e LAN 2 come due sottoreti separate (/24/24 e /24/24): lo stesso switch le rende un unico dominio di broadcast.
  • Non scegliere la rotta più specifica: per (a) l'indirizzo 144.95144.95 è coperto anche dalla riga /23/23, ma vale la /26/26.
  • In (b), inoltrare con inoltro diretto un pacchetto che rientrerebbe dalla stessa interfaccia da cui è arrivato.
  • Dimenticare che (c) è un indirizzo del router stesso: non si inoltra, si consegna.
  • Dimenticare che il payload di ogni frammento (tranne l'ultimo) deve essere multiplo di 88: qui 500−20=480500-20=480 lo è; con un MTU di 10001000 si userebbe 976976 e non 980980.

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

Versione ripasso

Dati. Blocco 131.175.208.0/21131.175.208.0/21, cioè 20482048 indirizzi. LAN 1 (200200 host) e LAN 2 (250250 host) sono sullo stesso switch, quindi formano una sottorete da 450450 host. LAN 3 ha 400400 host, LAN 4 ne ha 101101, e ci sono due collegamenti punto-punto R1–R2 e R1–R3 (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 →).

Dimensionamento. Si prende la più piccola potenza di 22 non inferiore a host+2+2 (rete e broadcast non sono assegnabili): 452→512452\to512 (/23/23), 402→512402\to512 (/23/23), 103→128103\to128 (/25/25), 44 per i punto-punto (/30/30, due host).

Assegnazione dal blocco più grande, con ogni blocco allineato alla propria dimensione:

  • LAN 1+2: 131.175.208.0/23131.175.208.0/23, broadcast 209.255209.255;
  • LAN 3: 131.175.210.0/23131.175.210.0/23, broadcast 211.255211.255;
  • LAN 4: 131.175.212.0/25131.175.212.0/25, broadcast 212.127212.127;
  • R1–R2: 131.175.214.0/30131.175.214.0/30 oppure 212.128/30212.128/30 dopo LAN 4; la soluzione ufficiale usa 214.0/30214.0/30 e 214.4/30214.4/30, entrambi validi.

Reti delle interfacce (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 →): eth0 144.192/26144.192/26, eth1 144.0/26144.0/26, eth2 144.128/26144.128/26 (AND con maschera 192192 sull'ultimo byte).

Pacchetti.

  • (a) 144.95144.95 da eth1, 300300 B: non è in una rete diretta; vince la riga più specifica 144.64/26144.64/26, next hop 144.253144.253 su eth0. Inoltro indiretto, 300≤1000300\le1000.
  • (b) 144.222144.222 da eth0: è nella rete di eth0, ma il pacchetto arriva da lì. Nessun inoltro.
  • (c) 144.25144.25 da eth0: è l'indirizzo di eth1 del router. Consegna ai livelli superiori.
  • (d) 145.203145.203 da eth0, 15 00015\,000 B, DF=0=0: resta la riga /23/23, next hop 144.40144.40 su eth1. Con MTU 500500 e intestazione 2020 B, il payload per frammento è 480480; ⌈14 980/480⌉=32\lceil14\,980/480\rceil=32 frammenti (31 da 500500 B e uno da 120120 B).

Errori tipici.

  • Trattare LAN 1 e LAN 2 come due sottoreti: lo switch le rende un unico dominio di broadcast.
  • Non scegliere la rotta più specifica: per (a) vale la /26/26, non la /23/23.
  • In (b) inoltrare un pacchetto verso l'interfaccia da cui è arrivato.
  • Dimenticare che (c) è un indirizzo del router: non si inoltra, si consegna.
  • Usare un payload di frammento non multiplo di 88 (qui 480480 lo è).

Teoria collegata