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 . 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 ( host) e LAN 2 ( host), unite da uno switch (stesso dominio di broadcast).
- Dietro R3: LAN 3 ( host) e LAN 4 ( host).
- Dietro R4: LAN 5 ( host) e LAN 6 ( host).
- Dietro R5: LAN 7 ( host) e LAN 8 ( host) unite da uno switch, e LAN 9 ( host).
- Dividere il blocco in sottoreti come in figura: per ciascuna, indirizzo di rete, maschera e broadcast diretto (escluso il collegamento R1–R0).
- Un router ha la tabella e le interfacce seguenti.
| Rete | Maschera | Prossimo salto |
|---|---|---|
| Interfaccia | Indirizzo | Maschera | MTU |
|---|---|---|---|
| eth0 | |||
| eth1 | |||
| eth2 |
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) da eth0, B, DF; (B) da eth2, B, DF; (C) da eth0, B, DF; (D) da eth1, B, DF; (E) da eth0, B, DF.
- L'amministratore della rete con maschera vuole due sottoreti da 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 host richiede il più piccolo con (rete e broadcast sono riservati). LAN 1 e LAN 2 stanno sullo stesso switch, quindi formano una sola sottorete da host; lo stesso LAN 7 e LAN 8.
| Sottorete | Host | Bit di host | Maschera | Indirizzi | Host max |
|---|---|---|---|---|---|
| LAN 1 + LAN 2 | () | ||||
| LAN 7 + LAN 8 | |||||
| LAN 5 | () | ||||
| LAN 6 | |||||
| LAN 3 | () | ||||
| LAN 4 | |||||
| LAN 9 |
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 va da a .
| Sottorete | Rete | Broadcast |
|---|---|---|
| LAN 1 + LAN 2 | ||
| LAN 7 + LAN 8 | ||
| LAN 5 | ||
| LAN 6 | ||
| LAN 3 | ||
| LAN 4 | ||
| LAN 9 |
Totale usato: degli indirizzi del blocco (restano : il quarto byte da a ). Allineamento: il terzo byte avanza di per un (), di per un e di mezzo per un ; per questo e (multipli di ) vanno bene per i , e per i , e i due occupano le due metà del terzo byte ( e ) e la prima metà di .
Collegamenti punto-punto. Servono indirizzi più rete e broadcast: bit di host, maschera ( indirizzi, host). La soluzione ufficiale usa indirizzi privati perché i collegamenti non devono essere raggiungibili da fuori: R1–R2 (broadcast ), R1–R3 (), R1–R4 (), R1–R5 (), R1–R0 (). In alternativa i quattro collegamenti interni stanno anche dentro il blocco, nei indirizzi liberi: , , , .
Domanda 2: inoltro dei cinque pacchetti
Passo 1: reti delle interfacce (indirizzo AND maschera, ultimo byte con maschera ):
- eth0: (indirizzi –);
- eth1: (–);
- eth2: (–).
Passo 2: cosa copre ogni riga della tabella. : da a ; : da a ; : da a ; : da a ; default: tutto il resto. Il prossimo salto di ogni riga determina l'interfaccia di uscita (quella la cui rete lo contiene): e in eth0; in eth1; e 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 : l'ultimo byte tiene solo il bit più alto, quindi il quarto byte di un indirizzo diventa se è e se è . Per eth0: , rete ; eth1: , rete ; eth2: , rete . Per le righe con maschera (, ) l'ultimo bit del terzo byte è di host, quindi si azzera: per D il terzo byte e il quarto si azzera: , uguale alla prima riga; la riga non vale perché dà . Per E: nel (): .
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 è scartato, con DF è frammentato.
| Destinazione, ingresso | Rete trovata | Uscita | Esito | |
|---|---|---|---|---|
| A | , eth0 | non è in ; nessuna riga, vale la default | eth2 (prossimo salto ) | inoltro indiretto via eth2; , passa |
| B | , eth2 | è in (eth2) | eth2 | era un inoltro diretto verso eth2, ma il pacchetto arriva da eth2: nessun inoltro |
| C | , eth0 | come B | eth2 | inoltro diretto via eth2; |
| D | , eth1 | è in ; non in () | eth0 (prossimo salto ) | inoltro indiretto via eth0; , DF: frammenti |
| E | , eth0 | non è in né in : default | eth2 (prossimo salto ) | indiretto via eth2 ma e DF: scartato (ICMP "frammentazione necessaria") |
Frammenti del pacchetto D. Intestazione B, payload B. MTU : payload per frammento (multiplo di ). frammenti: sei da B (payload ) e uno da B di payload, cioè B.
Domanda 3: due sottoreti da host
ha bit di host: indirizzi, host in tutto. Per host servono (; , 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 bit di host e maschera , un blocco più grande dell'intera rete assegnata (). Due sottoreti da host richiederebbero indirizzi, otto volte : 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 host (): e .
Confronto con la soluzione ufficiale
| Domanda | Mio | Ufficiale |
|---|---|---|
| 1 | (, ), (, ), (, , ), privati | uguale |
| 2 | A indiretto eth2; B nessun inoltro; C diretto eth2; D indiretto eth0, frammenti; E indiretto eth2, MTU con DF | uguale |
| 3 | non fattibile ( bit) | uguale |
Errori comuni
- Trattare LAN 1 e LAN 2 (stesso switch) come due sottoreti da host: ne basta una sola da .
- 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 invece di : qui danno lo stesso , ma in generale l'intestazione si ripete in ogni frammento.
- Scambiare la rete di eth0 () con : 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 ( indirizzi); LAN 1+2 e LAN 7+8 (uno switch ciascuna): host; LAN 5, 6: ; LAN 3, 4, 9: . (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 →)
- Piano. : , ; : , ; : , , ; collegamenti privati , , , , .
- Reti delle interfacce. eth0 , eth1 , eth2 . (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 →)
- A (, eth0): default, indiretto eth2. B (, eth2): diretto eth2 ma ingresso = uscita, nessun inoltro. C: diretto eth2. D (, eth1, B): riga , indiretto eth0, frammenti. E (, B, DF): default, eth2, MTU : scartato.
- host. Servono bit, il ne ha : impossibile.
- Errore tipico: LAN dello stesso switch contate separatamente; pacchetto rispedito sull'interfaccia d'ingresso.