Salta al contenuto
Note per Studenti Esercizio - Piano di indirizzamento di nove LAN, inoltro di cinque pacchetti e due sottoreti da 1950 host

Esercizio - Piano di indirizzamento di nove LAN, inoltro di cinque pacchetti e due sottoreti da 1950 host

In questa pagina 5

Testo (simulazione d'esame 3, esercizio 2). Alla rete in figura è assegnato il blocco 2.38.16.0/212.38.16.0/21. R0 è il router verso Internet.

  • R1 è collegato a R0 e, con collegamenti punto-punto, a R2, R3, R4, R5; non ha LAN dirette: le LAN stanno dietro agli altri router.
  • Dietro R2: LAN 1 (200200 host) e LAN 2 (200200 host), unite da uno switch (stesso dominio di broadcast).
  • Dietro R3: LAN 3 (100100 host) e LAN 4 (100100 host).
  • Dietro R4: LAN 5 (200200 host) e LAN 6 (200200 host).
  • Dietro R5: LAN 7 (200200 host) e LAN 8 (200200 host) unite da uno switch, e LAN 9 (100100 host).
  1. Dividere il blocco in sottoreti come in figura: per ciascuna, indirizzo di rete, maschera e broadcast diretto (escluso il collegamento R1–R0).
  2. Un router ha la tabella e le interfacce seguenti.
Rete Maschera Prossimo salto
131.175.70.0131.175.70.0 255.255.254.0255.255.254.0 131.175.21.133131.175.21.133
131.175.71.128131.175.71.128 255.255.255.128255.255.255.128 131.175.21.145131.175.21.145
131.175.72.0131.175.72.0 255.255.254.0255.255.254.0 131.175.20.5131.175.20.5
131.175.75.192131.175.75.192 255.255.255.192255.255.255.192 131.175.20.250131.175.20.250
0.0.0.00.0.0.0 0.0.0.00.0.0.0 131.175.20.221131.175.20.221
Interfaccia Indirizzo Maschera MTU
eth0 131.175.21.254131.175.21.254 255.255.255.128255.255.255.128 15001500
eth1 131.175.20.126131.175.20.126 255.255.255.128255.255.255.128 10001000
eth2 131.175.20.132131.175.20.132 255.255.255.128255.255.255.128 12001200

Indicare come sono trattati i pacchetti seguenti (inoltro diretto o indiretto con prossimo salto e interfaccia di uscita, scarto e motivo, numero di frammenti): (A) 131.175.21.27131.175.21.27 da eth0, 10001000 B, DF=1=1; (B) 131.175.20.133131.175.20.133 da eth2, 10001000 B, DF=1=1; (C) 131.175.20.133131.175.20.133 da eth0, 10001000 B, DF=0=0; (D) 131.175.71.122131.175.71.122 da eth1, 10 00010\,000 B, DF=0=0; (E) 131.175.75.15131.175.75.15 da eth0, 15001500 B, DF=1=1.

  1. L'amministratore della rete 131.175.72.0131.175.72.0 con maschera 255.255.254.0255.255.254.0 vuole due sottoreti da 19501950 host ciascuna: è fattibile? Se sì, indirizzi, maschere, broadcast, massimo numero di host.

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

Passo 1: quanti indirizzi per ogni dominio di broadcast. Una LAN con hh host richiede il più piccolo 2b2^b con 2b≥h+22^b\ge h+2 (rete e broadcast sono riservati). LAN 1 e LAN 2 stanno sullo stesso switch, quindi formano una sola sottorete da 400400 host; lo stesso LAN 7 e LAN 8.

Sottorete Host Bit di host bb Maschera Indirizzi Host max
LAN 1 + LAN 2 400400 99 (400+2≤512400+2\le512) /23/23 512512 510510
LAN 7 + LAN 8 400400 99 /23/23 512512 510510
LAN 5 200200 88 (200+2≤256200+2\le256) /24/24 256256 254254
LAN 6 200200 88 /24/24 256256 254254
LAN 3 100100 77 (100+2≤128100+2\le128) /25/25 128128 126126
LAN 4 100100 77 /25/25 128128 126126
LAN 9 100100 77 /25/25 128128 126126

Passo 2: allocazione dal più grande al più piccolo, ogni sottorete all'inizio di un multiplo della propria dimensione (così nessuna si sovrappone): il blocco 2.38.16.0/212.38.16.0/21 va da 2.38.16.02.38.16.0 a 2.38.23.2552.38.23.255.

Sottorete Rete Broadcast
LAN 1 + LAN 2 2.38.16.0/232.38.16.0/23 2.38.17.2552.38.17.255
LAN 7 + LAN 8 2.38.18.0/232.38.18.0/23 2.38.19.2552.38.19.255
LAN 5 2.38.20.0/242.38.20.0/24 2.38.20.2552.38.20.255
LAN 6 2.38.21.0/242.38.21.0/24 2.38.21.2552.38.21.255
LAN 3 2.38.22.0/252.38.22.0/25 2.38.22.1272.38.22.127
LAN 4 2.38.22.128/252.38.22.128/25 2.38.22.2552.38.22.255
LAN 9 2.38.23.0/252.38.23.0/25 2.38.23.1272.38.23.127

Totale usato: 512+512+256+256+128⋅3=1920512+512+256+256+128\cdot3=1920 degli 20482048 indirizzi del blocco (restano 128128: il quarto byte da 2.38.23.1282.38.23.128 a 2.38.23.2552.38.23.255). Allineamento: il terzo byte avanza di 22 per un /23/23 (512/256512/256), di 11 per un /24/24 e di mezzo per un /25/25; per questo 1616 e 1818 (multipli di 22) vanno bene per i /23/23, 2020 e 2121 per i /24/24, e i due /25/25 occupano le due metà del terzo byte 2222 (.0.0 e .128.128) e la prima metà di 2323.

Collegamenti punto-punto. Servono 22 indirizzi più rete e broadcast: 22 bit di host, maschera /30/30 (44 indirizzi, 22 host). La soluzione ufficiale usa indirizzi privati perché i collegamenti non devono essere raggiungibili da fuori: R1–R2 10.0.0.0/3010.0.0.0/30 (broadcast 10.0.0.310.0.0.3), R1–R3 10.0.0.4/3010.0.0.4/30 (10.0.0.710.0.0.7), R1–R4 10.0.0.8/3010.0.0.8/30 (10.0.0.1110.0.0.11), R1–R5 10.0.0.12/3010.0.0.12/30 (10.0.0.1510.0.0.15), R1–R0 10.0.0.16/3010.0.0.16/30 (10.0.0.1910.0.0.19). In alternativa i quattro collegamenti interni stanno anche dentro il blocco, nei 128128 indirizzi liberi: 2.38.23.128/302.38.23.128/30, 2.38.23.132/302.38.23.132/30, 2.38.23.136/302.38.23.136/30, 2.38.23.140/302.38.23.140/30.

Domanda 2: inoltro dei cinque pacchetti

Passo 1: reti delle interfacce (indirizzo AND maschera, ultimo byte con maschera 128128):

  • eth0: 131.175.21.254/25⇒131.175.21.128/25131.175.21.254/25\Rightarrow131.175.21.128/25 (indirizzi .21.128.21.128–.21.255.21.255);
  • eth1: 131.175.20.126/25⇒131.175.20.0/25131.175.20.126/25\Rightarrow131.175.20.0/25 (.20.0.20.0–.20.127.20.127);
  • eth2: 131.175.20.132/25⇒131.175.20.128/25131.175.20.132/25\Rightarrow131.175.20.128/25 (.20.128.20.128–.20.255.20.255).

Passo 2: cosa copre ogni riga della tabella. 131.175.70.0/23131.175.70.0/23: da 70.070.0 a 71.25571.255; 131.175.71.128/25131.175.71.128/25: da 71.12871.128 a 71.25571.255; 131.175.72.0/23131.175.72.0/23: da 72.072.0 a 73.25573.255; 131.175.75.192/26131.175.75.192/26: da 75.19275.192 a 75.25575.255; default: tutto il resto. Il prossimo salto di ogni riga determina l'interfaccia di uscita (quella la cui rete lo contiene): 21.13321.133 e 21.14521.145 in eth0; 20.520.5 in eth1; 20.25020.250 e 20.22120.221 in eth2.

Come si fanno gli AND (AND bit a bitAND vale 1 solo se entrambi i bit valgono 1Algebra di Boole e porte logiche →). Maschera 255.255.255.128255.255.255.128: l'ultimo byte 128=10000000128=10000000 tiene solo il bit più alto, quindi il quarto byte di un indirizzo diventa 00 se è <128<128 e 128128 se è ≥128\ge128. Per eth0: 254≥128→128254\ge128\to128, rete 21.12821.128; eth1: 126<128→0126<128\to0, rete 20.020.0; eth2: 132≥128→128132\ge128\to128, rete 20.12820.128. Per le righe con maschera 255.255.254.0255.255.254.0 (/23/23, 254=11111110254=11111110) l'ultimo bit del terzo byte è di host, quindi si azzera: per D il terzo byte 71=01000111→01000110=7071=01000111\to01000110=70 e il quarto si azzera: 131.175.70.0131.175.70.0, uguale alla prima riga; la riga 131.175.71.128/25131.175.71.128/25 non vale perché 122<128→0122<128\to0 dà 131.175.71.0≠131.175.71.128131.175.71.0\ne131.175.71.128. Per E: 15<192→015<192\to0 nel /26/26 (192=11000000192=11000000): 131.175.75.0≠131.175.75.192131.175.75.0\ne131.175.75.192.

Procedura per ogni pacchetto: (1) è un indirizzo di questo router? (2) appartiene a una rete delle interfacce (inoltro diretto)? (3) altrimenti si sceglie la riga con la maschera più lunga che contiene l'indirizzo (inoltro indiretto); (4) se l'interfaccia di uscita coincide con quella d'ingresso non si inoltra; (5) se il pacchetto supera l'MTU: con DF=1=1 è scartato, con DF=0=0 è frammentato.

Destinazione, ingresso Rete trovata Uscita Esito
A 131.175.21.27131.175.21.27, eth0 21.2721.27 non è in 21.128/2521.128/25; nessuna riga, vale la default eth2 (prossimo salto 131.175.20.221131.175.20.221) inoltro indiretto via eth2; 1000≤12001000\le1200, passa
B 131.175.20.133131.175.20.133, eth2 20.13320.133 è in 20.128/2520.128/25 (eth2) eth2 era un inoltro diretto verso eth2, ma il pacchetto arriva da eth2: nessun inoltro
C 131.175.20.133131.175.20.133, eth0 come B eth2 inoltro diretto via eth2; 1000≤12001000\le1200
D 131.175.71.122131.175.71.122, eth1 71.12271.122 è in 70.0/2370.0/23; non in 71.128/2571.128/25 (122<128122<128) eth0 (prossimo salto 131.175.21.133131.175.21.133) inoltro indiretto via eth0; 10 000>150010\,000>1500, DF=0=0: 77 frammenti
E 131.175.75.15131.175.75.15, eth0 75.1575.15 non è in 75.192/2675.192/26 né in 72.0/2372.0/23: default eth2 (prossimo salto 131.175.20.221131.175.20.221) indiretto via eth2 ma 1500>12001500>1200 e DF=1=1: scartato (ICMP "frammentazione necessaria")

Frammenti del pacchetto D. Intestazione 2020 B, payload 10 000−20=998010\,000-20=9980 B. MTU 15001500: payload per frammento 1500−20=14801500-20=1480 (multiplo di 88). 9980/1480=6,74⇒79980/1480=6{,}74\Rightarrow7 frammenti: sei da 15001500 B (payload 14801480) e uno da 9980−6⋅1480=11009980-6\cdot1480=1100 B di payload, cioè 11201120 B.

Domanda 3: due sottoreti da 19501950 host

131.175.72.0/23131.175.72.0/23 ha 32−23=932-23=9 bit di host: 512512 indirizzi, 510510 host in tutto. Per 19501950 host servono 1950+2=1952≤2048=2111950+2=1952\le2048=2^{11} (210=1024<19522^{10}=1024<1952; ⌈log⁡21952⌉=11\lceil\log_2 1952\rceil=11, 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 →), quindi 1111 bit di host e maschera /21/21, un blocco più grande dell'intera rete assegnata (/23/23). Due sottoreti da 19501950 host richiederebbero 2⋅2048=40962\cdot2048=4096 indirizzi, otto volte 512512: non è fattibile (non si può ricavare da una rete una sottorete più grande di lei). Con il blocco dato si possono ricavare al massimo due sottoreti da 254254 host (/24/24): 131.175.72.0/24131.175.72.0/24 e 131.175.73.0/24131.175.73.0/24.

Confronto con la soluzione ufficiale

Domanda Mio Ufficiale
1 /23/23 (2.38.16.02.38.16.0, 2.38.18.02.38.18.0), /24/24 (.20.0.20.0, .21.0.21.0), /25/25 (.22.0.22.0, .22.128.22.128, .23.0.23.0), /30/30 privati 10.0.0.x10.0.0.x uguale
2 A indiretto eth2; B nessun inoltro; C diretto eth2; D indiretto eth0, 77 frammenti; E indiretto eth2, MTU 1200<15001200<1500 con DF=1=1 uguale
3 non fattibile (9<119<11 bit) uguale

Errori comuni

  • Trattare LAN 1 e LAN 2 (stesso switch) come due sottoreti da 200200 host: ne basta una sola da 400400.
  • Allocare le sottoreti dal piccolo al grande: l'allineamento di una sottorete grande lascerebbe buchi o la farebbe cadere fuori dal blocco.
  • Dimenticare che B arriva da eth2: pur essendo una destinazione di rete diretta, non si rispedisce un pacchetto sull'interfaccia da cui è entrato.
  • Per D, dividere 10 000/1500=6,710\,000/1500=6{,}7 invece di 9980/1480=6,749980/1480=6{,}74: qui danno lo stesso 77, ma in generale l'intestazione si ripete in ogni frammento.
  • Scambiare la rete di eth0 (21.128/2521.128/25) con 21.0/2521.0/25: 131.175.21.27131.175.21.27 non è sulla rete di eth0.

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

Versione ripasso

Dati. Blocco 2.38.16.0/212.38.16.0/21 (20482048 indirizzi); LAN 1+2 e LAN 7+8 (uno switch ciascuna): 400400 host; LAN 5, 6: 200200; LAN 3, 4, 9: 100100. (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 →)

Lezioni in cui compare

Teoria collegata