Il problema: una rete piatta non scala
Immagina un’azienda a cui viene assegnata la rete 192.168.0.0/24: 254 host disponibili, tutti nella stessa subnet. All’inizio funziona. Ma poi arrivano i problemi:
- Un broadcast inviato da un host raggiunge tutti i 254 nodi — overhead crescente
- Separare reparti diversi (amministrazione, produzione, server) è impossibile senza firewall fisico
- Il traffico di un reparto disturba gli altri
- Impossibile applicare policy di sicurezza differenziate per gruppo
La soluzione è il subnetting: dividere lo spazio di indirizzamento originale in sottoreti più piccole, logicamente isolate. Ogni subnet ha il proprio dominio di broadcast, il proprio range di indirizzi, e può essere protetta separatamente.
/n e lo si divide in 2k blocchi di prefisso /(n+k), dove k è il numero di bit “rubati” alla host portion.Meccanismo del subnetting — come funziona
Il subnetting opera a livello binario: si prendono bit dalla host portion e li si “promuovono” a network portion. Ogni bit aggiunto al prefisso raddoppia il numero di subnet e dimezza il numero di host per subnet.
Ogni subnet /26 ha 64 indirizzi: 1 network address, 62 host utilizzabili, 1 broadcast. Il blocco si “muove” a passi di 64 (= 2^6, dove 6 sono i bit host rimasti).
La formula del “salto” (block size)
L’indirizzo di rete della subnet successiva si calcola sommando al network address precedente il valore 2^(32−prefisso), chiamato block size o subnet size.
Procedura di calcolo passo-passo
Dato un indirizzo con prefisso, il calcolo segue sempre questa sequenza:
- Identifica il network address: esegui AND bitwise tra IP e subnet mask. Tutti i bit host diventano 0.
- Identifica il broadcast: parti dal network address, metti tutti i bit host a 1.
- Range host: da network+1 a broadcast−1.
- Subnet successiva: network address + block size.
Partiamo da 172.16.0.0/24. Vogliamo 8 subnet: 2³ → aggiungiamo 3 bit → /27. Block size = 32.
| Subnet | Network Address | Primo host | Ultimo host | Broadcast |
|---|---|---|---|---|
| 1 | 172.16.0.0/27 | 172.16.0.1 | 172.16.0.30 | 172.16.0.31 |
| 2 | 172.16.0.32/27 | 172.16.0.33 | 172.16.0.62 | 172.16.0.63 |
| 3 | 172.16.0.64/27 | 172.16.0.65 | 172.16.0.94 | 172.16.0.95 |
| 4 | 172.16.0.96/27 | 172.16.0.97 | 172.16.0.126 | 172.16.0.127 |
| 5 | 172.16.0.128/27 | 172.16.0.129 | 172.16.0.158 | 172.16.0.159 |
| 6 | 172.16.0.160/27 | 172.16.0.161 | 172.16.0.190 | 172.16.0.191 |
| 7 | 172.16.0.192/27 | 172.16.0.193 | 172.16.0.222 | 172.16.0.223 |
| 8 | 172.16.0.224/27 | 172.16.0.225 | 172.16.0.254 | 172.16.0.255 |
Il limite del subnetting a lunghezza fissa
Il subnetting classico divide un blocco in subnet tutte della stessa dimensione. Funziona bene quando le reti hanno esigenze simili. Ma nella realtà un’azienda può avere:
- Reparto produzione: 100 host
- Uffici: 50 host
- Server farm: 20 host
- Gestione: 10 host
- Link punto-punto router: 2 host
Se assegni subnet /25 (126 host) a tutte, sprechi centinaia di indirizzi. È qui che entra in gioco il VLSM.
Con subnetting a lunghezza fissa su 192.168.1.0/24 in 4 subnet /26 (62 host ciascuna), se un reparto ha solo 5 host stai sprecando 57 indirizzi per subnet. Con VLSM tagli la subnet esattamente sulla dimensione necessaria, recuperando quello spazio per altre subnet.
VLSM — Variable Length Subnet Masking
Il VLSM permette di applicare maschere di lunghezza diversa a subnet diverse all’interno dello stesso blocco di indirizzi. È una tecnica classless: il router deve supportare CIDR e i protocolli di routing devono trasportare la subnet mask nelle proprie advertisement (OSPF, EIGRP, RIPv2 sì — RIPv1 no).
Metodo VLSM: ordina e alloca dalla più grande alla più piccola
La regola fondamentale del VLSM è: ordina le subnet per dimensione decrescente e allocale nell’ordine. Questo garantisce che i blocchi più grandi trovino sempre spazio senza sovrapposizioni con i successivi.
- Elenca tutti i segmenti di rete con il numero di host richiesti
- Ordina da più grande a più piccola
- Per ogni segmento trova il prefisso minimo che soddisfa:
2^(32−n) − 2 ≥ host_richiesti - Assegna il blocco partendo dal primo indirizzo disponibile
- La subnet successiva parte dal primo indirizzo dopo il broadcast dell’ultima assegnata
Caso studio VLSM completo
Scenario: ti viene assegnato il blocco 10.0.0.0/24. Devi progettare un piano di indirizzamento per:
| Segmento | Host richiesti | Prefisso minimo | Host disponibili |
|---|---|---|---|
| Reparto A | 60 | /26 | 62 |
| Reparto B | 28 | /27 | 30 |
| Reparto C | 12 | /28 | 14 |
| Reparto D | 5 | /29 | 6 |
| Link WAN 1 | 2 | /30 | 2 |
| Link WAN 2 | 2 | /30 | 2 |
Allocazione (dalla più grande alla più piccola):
| Segmento | Network | Range host | Broadcast | Prossimo blocco |
|---|---|---|---|---|
| Reparto A /26 | 10.0.0.0/26 | 10.0.0.1 – 10.0.0.62 | 10.0.0.63 | → 10.0.0.64 |
| Reparto B /27 | 10.0.0.64/27 | 10.0.0.65 – 10.0.0.94 | 10.0.0.95 | → 10.0.0.96 |
| Reparto C /28 | 10.0.0.96/28 | 10.0.0.97 – 10.0.0.110 | 10.0.0.111 | → 10.0.0.112 |
| Reparto D /29 | 10.0.0.112/29 | 10.0.0.113 – 10.0.0.118 | 10.0.0.119 | → 10.0.0.120 |
| Link WAN 1 /30 | 10.0.0.120/30 | 10.0.0.121 – 10.0.0.122 | 10.0.0.123 | → 10.0.0.124 |
| Link WAN 2 /30 | 10.0.0.124/30 | 10.0.0.125 – 10.0.0.126 | 10.0.0.127 | → 10.0.0.128 |
Ogni subnet deve essere allineata al proprio block size: il network address deve essere un multiplo del block size. 10.0.0.0/26 è corretto (0 è multiplo di 64). 10.0.0.10/26 sarebbe sbagliato (10 non è multiplo di 64). Se non allinei correttamente i blocchi, host di subnet diverse potrebbero sovrapporsi.
VLSM: visualizzazione ad albero
Il VLSM produce una struttura gerarchica a albero binario: il blocco padre viene diviso in blocchi figli, e alcuni figli vengono a loro volta divisi. Nessun blocco può sovrapporsi a un altro. Lo spazio non allocato (come 10.0.0.128/25 nell’esempio) è disponibile per allocazioni future.
Piano di indirizzamento professionale — considerazioni
Un buon piano di indirizzamento non si limita a “far stare i numeri”. Deve rispettare alcuni principi:
- Lascia spazio di crescita: aggiungi almeno il 20–30% extra per espansioni future. Non allocare tutto subito.
- Gerarchizza per funzione: raggruppare subnet per reparto, edificio o funzione rende più facile il summarization e il troubleshooting.
- Link punto-punto con /30: i link tra router hanno esattamente 2 host — usa sempre /30 (o /31 per RFC 3021). Usare /24 per un link p2p è uno spreco enorme.
- Documenta tutto: registra ogni allocazione in una tabella IPAM (IP Address Management). Strumenti come phpIPAM, NetBox o anche un semplice foglio di calcolo sono essenziali.
- Pianifica la summarization: scegli blocchi contigui per gruppo/sito in modo da poterli aggregare in una singola route nel routing table (argomento del CIDR nella prossima lezione).
Un link seriale o Ethernet tra due router ha esattamente 2 interfacce. Un /30 fornisce 2 host utilizzabili (network address + broadcast occupano gli altri 2). In alternativa, RFC 3021 consente /31: elimina il broadcast e usa tutti e 2 i bit per host, riduce ulteriormente lo spreco su link punto-punto. Molti router Cisco, Juniper e Linux lo supportano.
- Il subnetting divide un blocco in 2k subnet aggiungendo k bit al prefisso. Block size = 2^(32−prefisso).
- Ogni subnet ha: network address (tutti bit host a 0), broadcast (tutti bit host a 1), e range host tra i due.
- Il subnetting a lunghezza fissa spreca indirizzi quando le reti hanno dimensioni diverse.
- VLSM applica maschere diverse per subnet diverse. Si alloca sempre dalla subnet più grande alla più piccola.
- I blocchi devono essere allineati: il network address deve essere multiplo del block size.
- Link punto-punto tra router: usa
/30(2 host). Un/24su un link p2p spreca 252 indirizzi.