In questo articolo, Il livello Rete – indirizzamento IPv4 subnetting, VLSM, CIDR, analizziamo alcune delle tecniche che ci consentono di progettare un adeguato piano di indirizzamento
Indice dei contenuti
Introduzione
Dopo aver studiato la struttura degli indirizzi IP, la suddivisione in classi ecc. ci proponiamo di analizzare il funzionamento di una rete IP.
Per definizione una rete IP è costituita da un gruppo di indirizzi IP che condividono lo stesso dominio di broadcast e non hanno bisogno di un router per comunicare. All’interno di una rete IP, ogni dispositivo può risolvere gli indirizzi MAC di ciascun indirizzo IP tramite il protocollo ARP (che studieremo in seguito) e comunicare direttamente a livello Ethernet perché tutti gli IP condividono lo stesso dominio di broadcast e possono ricevere una copia dei pacchetti di trasmissione dell’altro.
Cosa accade nelle reti LAN con diversi host se questi inviassero diversi pacchetti broadcast? Il traffico di rete aumenterebbe notevolmente con possibilità di congestionare la rete.
L’idea dunque che sta alla base è quella di segmentare la rete IP dal punto di vista logico partendo da una rete generale e ottenendo un certo numero di sottoreti ciascuna delle quali costituisce un unico dominio di broadcast.
Il processo che sta alla base della segmentazione logica di una rete è definito SUBNETTING ed è un processo che offre diversi vantaggi:
- ridurre il traffico e la congestione di rete: con la divisione di una rete IP in più sottoreti, ogni pacchetto di broadcast raggiunge solo gli end device della sottorete, con un impegno inferiore degli switch, un minor traffico complessivo e una minore congestione risultante;
- migliorare la velocità e in generale le performance: riducendo il traffico complessivo si aumenta la banda effettiva a parità di collegamento, migliorando le prestazioni generali;
- semplificare la gestione della rete: la divisione rende più semplice l’individuazione dei problemi perché l’analisi deve essere limitata a un insieme più piccolo di dispositivi;
- aumentare la sicurezza: a reti diverse possono essere assegnate differenti politiche di accesso per proteggere quelle che contengono informazioni sensibili.
All’esterno delle LAN la suddivisione in sottoreti non è visibile
Subnetting
L’operazione di segmentazione di una rete in diverse sottoreti è stata specificata da IEFT nel 1985 con la RFC 950 “Internet Standard Subnetting Procedure” e consiste nel “sacrificare” alcuni dei bit che le classi A,B e C dedicano agli host per definire un indirizzo di sottorete, il SubnetID, come mostrato nella figura seguente:

Per segmentare una rete occorre, in fase di progettazione, stabilire quante subnet servono e, di conseguenza, quanti bit occorrono per indirizzarle univocamente. Nel calcolo è necessario anche valutare il numero massimo di host previsto per ogni subnet e in base a ciò calibrare il quantitativo di bit da suddividere rispettivamente tra subnet e host.
Il risultato di questa attività è il “piano di indirizzamento della rete“.
Inoltre, l’amministratore di rete deve disporre di un indirizzo IP appartenente a una
classe opportuna rispetto al numero di subnet da realizzare e al numero di host che
devono essere inseriti in ciascuna subnet.
Vediamo con un esempio come individuare il numero di bit necessari per creare le
subnet e a quale classe deve appartenere l’indirizzo IP di rete
ESEMPIO 1: Supponiamo di dover realizzare 50 subnet. Scegliere in modo appropriato la classe di indirizzi e definiri il numero utile di indirizzi IP con i quali indirizzare gli host di ciascuna rete.
SVOLGIMENTO: è immediato determinare il numero di bit necessario per il campo SubnetID e questo numero è pari a 6 infatti 26 = 64 (>50) -> utilizzando 6 bit per la SubnetID riuscirei a realizzare al massimo 64 sottoreti. Non posso dedicare al campo subnetID 5 bit (o meno) poichè con 5 bit otterrei al massimo 32 sottoreti.
Prima di procedere ricordiamo le strutture degli indirizzi IP per ogni classe:
INDIRIZZI IPv4 in classe A
| N Network 1 byte (8 bit) | H Host 1 byte (8 bit) | H Host 1 byte (8 bit) | H Host 1 byte (8 bit) |
INDIRIZZI IPv4 in classe B
| N Network 1 byte (8 bit) | N Network 1 byte (8 bit) | H Host 1 byte (8 bit) | H Host 1 byte (8 bit) |
INDIRIZZI IPv4 in classe C
| N Network 1 byte (8 bit) | N Network 1 byte (8 bit) | N Network 1 byte (8 bit) | H Host 1 byte (8 bit) |
Adesso, se usassi un indirizzo di rete (cioè quello di partenza dal quale poi derivo le 50 subnet) di classe C avrei questa struttura:
| N Network 1 byte (8 bit) | N Network 1 byte (8 bit) | N Network 1 byte (8 bit) | S Subnet 6 bit | H Host 2 bit |
il che significa che avrei solo due indirizzi IPv4 per ogni subnet ma:
- Ogni rete IP (e quindi anche ogni sottorete) necessita di un indirizzo di rete (o di sottorete) che non può essere assegnato agli host di quella rete (o sottorete)
- Ogni rete IP (e quindi anche ogni sottorete) necessita di un indirizzo di broadcast che non può essere assegnato agli host di quella rete (o sottorete)
- Ogni rete IP che deve essere messa in comunicazione con il mondo esterno (un’altra rete, Internet, ecc) deve essere collegata ad un router la cui interfaccia lato LAN va indirizzata con un indirizzo IP appartenente alla rete (indirizzo di gateway)
Se ne deduce che non mi restano indirizzi IP utili da assegnare alle interfacce degli host per le mie sottoreti –> devo utilizzare un indirizzo di classe B. In tal caso avrei:
| N Network 1 byte (8 bit) | N Network 1 byte (8 bit) | S Subnet 6 bit | H Host 2 bit | H Host 1 byte (8 bit) |
Quindi avrei a disposizione 2+8 = 10 bit da dedicare agli host –> teoricamente 210 indirizzi IP. In pratica per ciascuna sottorete dovrò considerare il primo indirizzo (indirizzo di sottorete) e l’ultimo indirizzo (indirizzo di broadcast) che non potranno essere assegnati alle interfacce degli host –> avrò a disposizione 210 -2 = 1022 indirizzi utili per ciascuna sottorete.
Ruolo della subnet mask nel subnetting
Nella lezione precedenta abbiamo introdotto il concetto di subnet mask che ha lo scopo di determinare quanti bit sono dedicati alla rete (tutti i bit a 1) e quanti bit agli host (tutti i bit a 0).
Con l’introduzione del subnetting non è così semplice. Consideriamo il seguente
ESEMPIO: Dato l’indirizzo IP 130.10.67.160 determinare qual è l’indirizzo di rete sapendo che la rete è stata suddivisa in 4 subnet e determinare la subnet mask
SOLUZIONE:
- devo determinare a quale classe appartiene l’indirizzo IP: converto il 1° byte e ottengo 10000010. poichè i primi due bit sono 10 –> l’indirizzo è di classe B quindi la sua struttura è N.N.H.H
- So che ci sono 4 sottoreti –> per suddividere la rete in 4 sottoreti devo sacrificare 2 dei 16 bit del campo HOST (H – 3° e 4° byte) poichè 22 = 4 perciò la struttura del mio indirizzo diventa:
| N Network 1 byte (8 bit) | N Network 1 byte (8 bit) | S Subnet 2 bit | H Host 6 bit | H Host 1 byte (8 bit) |
| 1° byte Network | 2°byte Network | 3°byte 2 bit subnet + 6 bit host | H Host 1 byte (8 bit) |
| 130 | 10 | 67 | 160 |
| 10000010 | 00001010 | 01000011 | 10100000 |
- per definizione gli indirizzi di rete hanno tutti i bit della sezione HOST posti a 0 quindi l’indirizzo di rete è:
| 1° byte Network | 2°byte Network | 3°byte 2 bit subnet + 6 bit host | H Host 1 byte (8 bit) |
| 10000010 | 00001010 | 01000000 | 00000000 |
| 130 | 10 | 64 | 0 |
- Affinchè la subnet mask continui ad avere la propria funzione cioè quella di definire la rete (o la sottorete) di appartenenza di un indirizzo IP è necessario che i suoi bit a 1 siano in corrispondenza dei bit relativi al campo Network e dei bit relativi al campo Subnet –> la subnet mask sarà:
| 11111111 | 11111111 | 11000000 | 00000000 |
| 255 | 255 | 192 | 0 |
Piano di indirizzamento
A questo punto abbiamo tutte le nozioni per progettare il piano di indirizzamento con tecnica del subnetting.
Definire il piano di indirizzamento significa definire un piano di indirizzamento generale in cui definisco, a partire dalla rete iniziale:
- indirizzo di rete di ciascuna sottorete
- indirizzo di broadcast di ciascuna sottorete
- subnet mask kdi ciascuna sottorete (con questa tecnica, una volta individuata la subnet mask della prima sottorete le altre sono identiche infatti è come se dividessimo ciascuna sottorete in parti uguali, cioè con lo stesso numero di indirizzi IP)
- Host minimo (IP più basso disponibile per gli host)
- Host massimo (IP più alto disponibile per gli host)
- Numero di host indirizzabili
Dopo aver definito il piano di indirizzamento generale posso scrivere il piano di indirizzamento specifico cioè specificare per ciascuna interfaccia di ciascun host il proprio IP , la subnet mask ied eventuali altri parametri
Vediamo tutto con un esempio. L’esempio che segue è relativo ad un indirizzo di rete di partenza di classe C ma la tecnica è analoga se avessimo altre classi di indirizzo
ESEMPIO: Un museo ha riservato all’interno della sua organizzazione la rete IP 192.168.33.0/24 al caffè-ristorante del museo; sono presenti 6 PC desktop in un ufficio per lo staff che si occupa della gestione e della contabilità, 20 dispositivi mobili usati dai camerieri per la raccolta delle ordinazioni, più 2 PC all-in-one per la loro visualizzazione in cucina, inoltre viene fornito il servizio di Wi-Fi gratuito per i clienti.
SOLUZIONE: L’amministratore della rete decide quindi di effettuare un subnetting per soddisfare le esigenze suddette: sarà necessario creare 3 sottoreti:
- staff (6 pc)
- ordinazioni (20 mobile + 2 PC)
- clienti (max da determinare)
Ricordando che:
- L’indirizzo di rete ha tutti i bit a 0 in corrispondenza degli host
- L’indirizzo di broadcast ha tutti i bit a 1 in corrispondenza degli host
- l’host minimo è il primo indirizzo successivo all’indirizzo di rete
- l’host massimo è l’indirizzo subito precedente a quello di broadcast
- il numero di host si ottiene dalla formula 2N -2 con N=numero di bit dedicati agli host
posso determinare le informazioni relative alla rete di partenza

Ora procedo con il subnetting:
- Determino la classe di indirizzo: dopo aver convertito il 1° byte ed aver visto che i primi 3 bit sono fissi a 110 so che si tartta di un indirizzo in classe C per cui avrò una struttura del tipo N.N.N.H con N=network e H=host. posso operare il subnetting sul campo H quindi ho a disposizione 1 byte (8 bit) su cui operare
- Determino il numero di bit da dedicare al subnetting (che sottraggo ai bit host) con la formula n.bit = max (log2 3) = 2 quindi dedicherò 2 bit alle subnet e 6 agli host. questo significa che avrò 4 subnet (una non verrà utilizzata) e per ciascuna di queste subnet avrò x = 2n_bit_host – 2 = 26 -2 = 62 indirizzi IP utili. Il -2 è dovuto al fatto che ciascuna sottorete avrà un indirizzo di sottorete e uno di broadcast non utili all’indirizzamento dei dispositivi. La struttura dei nostri IP sarà N.N.N.sshhhhhh dove le lettere maiuscole indicano i byte e le minuscole i bit, N=network s=subnet e h =host
- Determino la subnet mask che sarà la stessa per le 4 subnet (questa tecnica di subnetting è infatti definita “a lunghezza fissa”. Dalla definizione dovrò avere i bit a 1 in corrispondenza dei campi network e subnet e 0 in corrispondenza dei bit host –> 11111111.11111111.11111111.11000000 che convertito dà 255.255.255.192 quindi le nostre sottoreti saranno /26
- Determino l’indirizzo della prima sottorete. Esso coincide con l’indirizzo di rete di partenza 192.168.33.0. Nota: gli indirizzi di rete sono sempre pari
- Determino l’indirizzo di broadcast di questa sottorete. Apartire dall’indirizzo direte lascio inalterati i bit relativi ai campi networ e subnet e metto ad 1 quelli relativi agli host: 11000000.10101000.00100001.00111111 che convertito da 192.168.33.63. Nota: gli indirizzi di broadcast sono sempre dispari. Questa prima sottorete è identificata come sottorete 0 (00 in binario, come i bit evidenziati)
- Determino l’host minimo: il primo successivo all’indirizzo di rete: 192.168.33.1
- Determino l’host massimo: il primo subito precedente quello di broadcast: 192.168.33.62
- Determino il numero massimo di host indirizzabili (anche questo sarà identico aovviamente alle altre sottoreti): 2n_bit_host -2 = 62
A questo punto devo ripetere i passaggi dal 4 all’8 per la seconda sottorete.
4. L’indirizzo della sottorete successiva in generale è quello successivo all’indirizzo di broadcast della precedente –>192.168.33.64 che convertito da: 11000000.10101000.00100001.01000000 –> sottorete 1 (01 in binario)
5. L’indirizzo di broadcast di questa seconda sottorete si ottiene a partire dall’indirizzo di questa sottorete , lasciando inalterati i bit relativi al network e alle subnet (in questo esercizio sempre i primi 26 bit) e ponendo a 1 i bit relativi agli host –> 11000000.10101000.00100001.01111111 che convertito da 192.168.33.127. A questo risultato saremmo potuti arrivare non solo in modo analitico come abbiamo fatto ma intuitivo infatti poichè dividiamo la rete in 4 parti uguali e lavoriamo sull’ultimo byte per il subnetting segue che ogni sottorete avrà 256/4 =64 indirizzi. il primo e lultimo inutilizzabili per l’indirizzamento (indirizzo di sottorete e di broadcast) per cui bastava aggiungere 64 all’indirizzo di broadcast della sottorete precedente
6. l’host minimo di questa sottorete è 192.168.33.65
7. l’host massimo di questa rete è 192.168.33.126
In modo analogo procediamo con la terza sottorete e definiamo il piano di indirizzamento generale:


Esercitati utilizzando il simulatore di subnetting FLSM online:
VLSM (Variable Lenght Subnet mask)
La soluzione proposta nell’esempio precedente, in cui le sottoreti hanno uguale dimensione, ha dalla sua la semplicità di configurazione, avendo tutte le sottoreti la stessa subnet mask, ma introduce alcuni problemi: si generano un numero di sottoreti inutilizzate con disponibilità di indirizzi limitate in alcune sottoreti (come la rete Wi-Fi) e inutilmente abbondanti in altre (come la rete staff).
Una tecnica che permette di sfruttare al meglio il numero di indirizzi disponibili usa sottoreti di dimensione diversa, con conseguenti subnet mask diverse, ed è definita VLSM (Variable Length Subnet Mask); con questa tecnica si utilizzano reti che hanno il minimo numero di host disponibili necessario (deve comunque essere una potenza di due) sufficiente per soddisfare le esigenze in termini di numero di host necessari.
La tecnica per definire il piano di indirizzamento rimane identica a quella precedente con eccezione del fatto che il calcolo di bit da dedicare alle subnet varia in base alle esigenze e deve essere ricalcolato per ciascuna sottorete.
Di seguito vediamo nella tabella le esigenze dell’esempio proposto in precedenza:

Da notare che se per la rete WiFi sono effettivamente richiesti 100 host non avremmo potuto eseguire il subnetting con subnet mask a lunghezza fissa infatti in quel caso ogni sottorete ha a disposizione solo 62 host indirizzabili.
La procedura da seguire per determinare il piano di indirizzamento non può prescindere dal considerare non già quante sottoreti mi servono ma la sottorete con numero maggiore di host. In questo caso la rete WiFi.
- Determino i bit da dedicare agli host: x = max(log2 100) = 7 quindi rimane un bit del quarto byte che definirà la sottorete
- seguo tutti gli step visti con la tecnica del subnetting a maschera fissa per determinare indirizzo di rete, di broadcast, subnet mask, host minimo, host massimo e n.host disponibili e ottengo:

- proseguo con la rete con più host: Ordinazioni (22) calcolando i bit da dedicare agli host (5) e quindi quelli da dedicare alle sottoreti (3)
- Faccio attenzione ad evitare intervalli di rete sovrapposti indicando come indirizzo di rete qello subito successivo all’indirizzo di broadcast di quello precedente. In questo caso 192.168.33.128
- Per il calcolo del broadcast vale sempre la regola di lasciare inalterati i bit del prefisso (rete + subnet) e porre a 1 quelli dedicati agli host (in questo caso gli ultimi 5 –> 11000000.10101000.00100001.10011111 –> 192.168.33.159
- procedo a determinare gli altri dati e ottengo:

- procedo con la terza sottorete allo stesso modo ottenendo:

Nota: Come sappiamo dalla teoria ogni sottorete rappresenta un dominio di broadcast per cui se i dispositivi di ciascuna sottorete hanno necessità di attraversare un router per poter comunicare con altre reti è necessario considerare un indirizzo IP in più (per il default gateway) da tener conto nel calcolo dei bit da dedicare agli host
ESEMPIO: Ipotizziamo di realizzare una rete con 4 segmenti: A (62host) – B (14 host) – C (6 host) – D ( 2 host)
Considerando la rete con più host (rete A) e applicando la formula per il calcolo dei numero di bit necessari agli host avrei x = max(log2 62) ottenendo 6 ma in questo caso dedicando 6 bit agli host avrei a disposizione 64 indirizzi dei quali 62 per le interfacce degli host, 1 indirizzo di sottorete e 1 indirizzo di broadcast. E il default gateway? Allora per il calcolo del numero di bit userò la formula x = max(log2 host +3). In questo caso: x = max(log2 65) = 7. Ora dedicando 7 bit agli host avrò a disposizione 128 indirizzi, sufficienti per i miei 62+3. Il prefisso di questa sottorete è /25
Applicando la stessa norma alla rete B otterrei 5 bit da dedicare agli host –> 32 indirizzi a disposizione, sufficienti per i miei 14 +3. Questa sottorete avrà prefisso /27
La rete C necessita di 4 bit per gli host e avrà prefisso /28
La rete D necessita di 3 bit per gli host e avrà prefisso /29
Esercitati utilizzando il simulatore di subnetting VLSM online:
CIDR (Classless Inter Domain Routing) e supernetting
La tecnica VLSM non risolve tutti i problemi del subnetting con sottoreti di uguale dimensione: ci sono ancora potenziali reti non utilizzate e indirizzi inutilizzati (con riferimento all’esempio precedente gli indirizzi da 192.168.33.177 a 192.168.33.254). Basti pensare che il subnetting di una rete IP con prefisso /24 che richieda anche semplicemente due sottoreti, una di 150 host e una di 20, non può essere effettuato perché per avere 150 host sono necessari tutti gli 8 bit.
D’altro canto utilizzare un indirizzo di classe B comporterebbe un eccessivo spreco di indirizzi. Per porre rimedio e carenze e sprechi nel 1993 è stato introdotto un nuovo schema di indirizzamento: CIDR (si legge saider) Classless Inter Domain Routing noto anche come supernetting che crea una super rete a partire da più reti ed elimina il concetto di classi di indirizzo.
Quali sono i vantaggi del CIDR?
Con il routing interdominio senza classi (CIDR), si ha maggiore flessibilità nell’assegnazione degli indirizzi IP e nel routing dei dati tra i dispositivi.
Riduzione dello spreco di indirizzi IP
È possibile utilizzare il CIDR per fornire il numero richiesto di indirizzi IP per una determinata rete e ridurre così gli sprechi. Inoltre, riduce le voci della tabella di routing e semplifica l’instradamento dei pacchetti di dati. Infatti i router sebbene dispongano di percorsi diversi per diverse reti IP, se si crea una supernet è come avere un unico indirizzo di rete (route aggregation e summarization) con prefisso minore e riduzione dei percorsi nelle tabelle di routing (concetto che vedremo più avanti)
Trasmissione rapida dei dati
Il CIDR consente ai router di organizzare gli indirizzi IP in più sottoreti in modo più efficiente. In base a quanto detto al punto precedente con il CIDR vengono migliorate le performance di routing
Creazione di supernet in modo flessibile
Una supernet è un gruppo di sottoreti con prefissi di rete simili. Il CIDR offre flessibilità nella creazione di supernet, cosa impossibile nell’architettura di masking convenzionale. Ad esempio, l’amministratore di rete può combinare gli indirizzi IP in un unico blocco di rete utilizzando una notazione come questa:
- 192.168.1 /23
- 192.168.0 /23
Questa notazione applica una subnet mask di 255.255.254.0 all’indirizzo IP, che restituisce i primi 23 bit come indirizzo di rete. Il router necessita di una sola voce della tabella di routing per gestire i pacchetti di dati tra i dispositivi nelle sottoreti.
Tecnica del supernetting nella definizione del piano di indirizzamento
Supponiamo di dover indirizzare 1500 host perciò impossibile farlo con un indirizzo di classe C (solo 254 host indirizzabili -> carenza di indirizzi) ma utilizzando un indirizzo di rete in classe B avrei a disposizione 65533 host indirizzabili –> spreco di indirizzi) allora posso pensare di avere a disposizione 1500 / 254 = 5,9 -> 6 indirizzi di classe C consecutivi:
- 1° 200.45. 8.0 = 11001000.00101101.00001000.00000000
- 2° 200.45. 9.0 = 11001000.00101101.00001001.00000000
- 3° 200.45.10.0 = 11001000.00101101.00001010.00000000
- 4° 200.45.11.0 = 11001000.00101101.00001011.00000000
- 5° 200.45.12.0 = 11001000.00101101.00001100.00000000
- 6° 200.45.13.0 = 11001000.00101101.00001101.00000000
Come si vede ciascuno di questi indirizzi offre 254 IP –> 1524 (sufficienti e non eccessivi allo scopo) e, inoltre, i primi 21 bit sono comuni a tutti per cui scegliendo una maschera di rete con 21 bit a 1 –> 255.255.248.0 ed effettuando la messa in AND bitwise con ciascuno di questi 1524 IP otteniamo sempre come risultato:
200.45.8.0
cioè tutti gli IP appartengono a quest’unica super rete che prende il nome di summary route
La subnet mask risultante , 255.255.248.0 prende il nome di netmask

Lascia un commento