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 , cioè indirizzi. R1 è collegato a R0 (verso Internet) e a R2, R3, R4, R5 con collegamenti punto-punto; le LAN stanno dietro gli altri router. LAN 1 e LAN 2 ( host ciascuna) sono sullo stesso switch, come LAN 7 e LAN 8. Host: LAN 3, 4, 9 hanno ciascuna; LAN 5, 6 hanno (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 →).
Piano (domanda 1). Una LAN con host richiede indirizzi. Gli switch uniscono le coppie: LAN 1+2 e LAN 7+8 sono sottoreti da host, cioè indirizzi (). Le altre: LAN 5, 6 ; LAN 3, 4, 9 . Allocazione dal blocco più grande, ogni sottorete allineata alla propria dimensione:
- LAN 1+2: , broadcast ;
- LAN 7+8: , broadcast ;
- LAN 5: ; LAN 6: ;
- LAN 3: ; LAN 4: ; LAN 9: .
Si usano dei indirizzi. I collegamenti punto-punto (, due host) sono privati nella soluzione ufficiale (, , …); in alternativa stanno nei indirizzi liberi di .
Reti delle interfacce. Con maschera l'ultimo byte conta solo il bit più alto: 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 →).
Pacchetti (domanda 2). Procedura: (1) è un indirizzo del router? (2) è in una rete collegata (inoltro diretto)? (3) altrimenti la riga con la maschera più lunga (inoltro indiretto); (4) se l'uscita coincide con l'ingresso, non si inoltra; (5) se il pacchetto supera l'MTU, con DF è scartato, con DF è frammentato.
- (A) da eth0, B: non è in , vale la default, next hop su eth2. : indiretto via eth2.
- (B) da eth2: è nella rete di eth2, ma il pacchetto arriva da eth2. Nessun inoltro.
- (C) da eth0, B, DF: inoltro diretto via eth2; , passa.
- (D) da eth1, B, DF: la riga lo contiene (il terzo byte con maschera diventa ); next hop su eth0. Con MTU e intestazione B, il payload per frammento è ; frammenti.
- (E) da eth0, B, DF: default, next hop su eth2, MTU con DF: scartato, con ICMP "frammentazione necessaria".
Domanda 3 (due sottoreti da host). , quindi servono bit di host, cioè un . La rete assegnata è un , con bit: non si può ricavare una sottorete più grande della rete madre. Non è fattibile. Al massimo si ricavano due sottoreti da host (): e .
Risultati ufficiali. Piano, esiti (A)–(E) e la non fattibilità della domanda 3: coincidono.
Errori tipici.
- Trattare LAN 1 e LAN 2, unite dallo switch, come due sottoreti da host: ne basta una da .
- Allocare le sottoreti dalla più piccola alla più grande: gli allineamenti non tornano.
- Rispedire un pacchetto sull'interfaccia da cui è arrivato (caso B).
- Scambiare la rete di eth0 () con : non sta sulla rete di eth0.