Il problema che CIDR doveva risolvere
Siamo a inizio anni ’90. Internet cresce a velocità esplosiva. I router del backbone mondiale mantengono una routing table — una tabella con tutte le reti raggiungibili. In un sistema classful, ogni azienda che riceve una rete di classe C ottiene una entry separata nella routing table globale. Con migliaia di aziende che si connettono ogni mese, la tabella cresce in modo insostenibile:
- 1990: ~5.000 rotte nel backbone Internet
- 1994: ~70.000 rotte — i router di fascia bassa non riescono più a starci
- Oggi (con CIDR): ~900.000 rotte nel BGP global table — ma senza aggregazione sarebbero centinaia di milioni
Parallelamente, il sistema classful spreca enormi quantità di indirizzi. A un’azienda con 300 host viene assegnata una classe B (65.534 host), sprecando 65.000 indirizzi. Lo spazio IPv4 si sta esaurendo.
La soluzione arriva nel 1993 con la RFC 1519: CIDR — Classless Inter-Domain Routing.
192.168.0.0/22). CIDR abilita sia il subnetting (prefisso più lungo = reti più piccole) sia il supernetting (prefisso più corto = aggregazione di reti).Supernetting — aggregare reti in una sola route
Il supernetting (chiamato anche route aggregation o route summarization) è l’operazione inversa del subnetting: si accorcia il prefisso per coprire più reti con una singola entry nella routing table.
Per poter aggregare più blocchi in uno, devono valere due condizioni:
- I blocchi devono essere contigui nello spazio di indirizzamento
- Il loro insieme deve formare un blocco valido: devono condividere i bit del prefisso aggregato
Procedura di aggregazione passo-passo
Per trovare la route aggregata di un insieme di reti:
- Converti tutti i network address in binario
- Trova i bit comuni dalla sinistra
- Il prefisso aggregato è il numero di bit comuni
- L’indirizzo aggregato è quello con i bit comuni + tutti gli altri a 0
Con un’unica entry 192.168.0.0/22 nella routing table rappresentiamo 4 reti /24 che prima occupavano 4 entry separate. La scalabilità del routing su Internet dipende da questa tecnica.
Se aggrego 192.168.0.0/24 e 192.168.1.0/24 in 192.168.0.0/23, ma 192.168.0.0/23 copre anche 192.168.1.x che appartiene a un altro AS — i pacchetti vengono instradati in modo errato. Prima di aggregare, verifica che tutto il blocco aggregato sia sotto il tuo controllo o che i blocchi “inclusi” siano raggiungibili tramite te.
Longest Prefix Match — la regola fondamentale del routing
Una routing table può avere più rotte che coprono lo stesso indirizzo destinazione. Come sceglie il router? Con il principio del longest prefix match (LPM): vince la rotta con il prefisso più lungo (più specifico).
/28 prevale su un /24 che prevale su un /16, anche se tutti e tre coprono l’indirizzo destinazione.Routing table del router R1. Destinazione del pacchetto: 10.1.1.25
| Prefisso | Next-hop | Match? | Scelta |
|---|---|---|---|
0.0.0.0/0 | 203.0.113.1 | ✓ (default) | No — prefisso /0 |
10.0.0.0/8 | 10.254.0.1 | ✓ | No — prefisso /8 |
10.1.0.0/16 | 10.254.1.1 | ✓ | No — prefisso /16 |
10.1.1.0/24 | 10.254.2.1 | ✓ | No — prefisso /24 |
10.1.1.16/28 | 10.1.1.1 | ✓ | ✅ VINCE — /28 è il più lungo |
Il LPM è implementato hardware nei router moderni tramite strutture dati ottimizzate come Patricia Trie o TCAM (Ternary Content-Addressable Memory) che permettono lookup in tempo costante anche su routing table con milioni di entry.
La default route — il fallback del routing
La default route è la rotta con prefisso 0.0.0.0/0: corrisponde a qualsiasi indirizzo (0 bit di prefisso = nessun vincolo). È la rotta con il prefisso più corto possibile, quindi per il LPM ha sempre la priorità più bassa. Viene usata solo quando nessun’altra rotta più specifica corrisponde.
Conoscono le rotte interne (uffici, server, subnet locali) e hanno una default route verso il router del provider ISP. Tutto il traffico non locale va all’ISP.
Idealmente non hanno default route: devono avere una rotta esplicita per ogni blocco raggiungibile. Un router BGP full table conosce ~900.000 prefissi.
Allocazione CIDR: come funziona in pratica
CIDR ha cambiato il modo in cui gli indirizzi vengono distribuiti globalmente. La gerarchia di allocazione è:
L’idea chiave di CIDR è che l’ISP può annunciare un solo prefisso aggregato per tutti i suoi clienti. Se un ISP controlla il blocco 203.0.113.0/24 e ha 4 clienti a cui ha assegnato subnet /26, annuncia solo 203.0.113.0/24 al backbone. Il backbone non sa e non deve sapere dei /26 interni — 1 rotta invece di 4.
Route summarization — applicazione pratica
La route summarization è la tecnica con cui un router “comprime” più rotte specifiche in una sola rotta aggregata quando le annuncia ai vicini. È possibile solo se tutte le rotte specifiche sono contenute nel blocco aggregato.
Quando la summarization non è possibile
Non tutti i blocchi contigui formano una rotta aggregabile. Per aggregare N reti, N deve essere una potenza di 2 e i network address devono formare un blocco allineato.
Hai 192.168.1.0/24 e 192.168.3.0/24 — non sono contigue (manca la .2). Non puoi aggregarle in un blocco pulito. Se aggreghi a /22 (192.168.0.0/22) includi anche 192.168.0.0 e 192.168.2.0 che non ti appartengono — i pacchetti verrebbero instradati verso di te per errore.
Regola: puoi aggregare solo se sei l’unico owner di tutto il blocco aggregato, o se i blocchi “buchi” sono comunque raggiungibili tramite te.
CIDR e IPv4: un rimedio temporaneo
CIDR ha esteso la vita di IPv4 di decenni rallentando il consumo degli indirizzi tramite allocazioni efficienti e NAT. Ma non ha risolto il problema fondamentale: 32 bit = 4,3 miliardi di indirizzi non bastano per il mondo connesso moderno.
| Soluzione | Cosa fa | Limite |
|---|---|---|
| CIDR (1993) | Allocazione efficiente, aggregazione rotte | Non aggiunge indirizzi, rallenta l’esaurimento |
| NAT (1994) | Molti host privati condividono un IP pubblico | Rompe il modello end-to-end, complica applicazioni P2P |
| IPv6 (1998) | 128 bit = 3,4 × 10³⁸ indirizzi | Adozione lenta: coesistenza con IPv4 ancora necessaria |
IPv6 usa CIDR nativamente. Non esistono “classi” IPv6. Un indirizzo IPv6 è sempre espresso con prefisso: 2001:db8::/32. Le stesse tecniche di route aggregation e longest prefix match si applicano identicamente. Capire CIDR su IPv4 significa capirlo già per IPv6.
Riepilogo: classful vs classless
| Caratteristica | Classful (pre-CIDR) | Classless / CIDR |
|---|---|---|
| Prefisso rete | Fisso (8, 16, 24 bit) | Arbitrario (1–32 bit) |
| Routing table | Crescita illimitata | Aggregazione riduce enormemente |
| Efficienza indirizzi | Bassa (blocchi troppo grandi) | Alta (alloca esattamente ciò che serve) |
| Protocolli routing | RIPv1, IGRP (non trasmettono mask) | RIPv2, OSPF, EIGRP, BGP-4 (trasmettono prefix) |
| Subnetting variabile | Non supportato | VLSM nativo |
| Aggregazione | Impossibile oltre i confini di classe | Supernetting su qualsiasi confine allineato |
- CIDR elimina le classi A/B/C: ogni indirizzo è espresso con prefisso arbitrario
/n. Introdotto nel 1993 per salvare IPv4 dalla crisi degli indirizzi e delle routing table. - Il supernetting aggrega blocchi contigui in una rotta con prefisso accorciato. Condizione: i blocchi devono formare un blocco allineato e tutto il blocco aggregato deve essere sotto il controllo del router che annuncia.
- Longest Prefix Match: tra tutte le rotte che coprono una destinazione, il router sceglie quella con il prefisso più lungo (più specifico).
/28batte/24batte/16. - La default route
0.0.0.0/0copre tutto ma ha prefisso lunghezza 0 → ha sempre la priorità più bassa per LPM. È il “catch-all” di last resort. - La gerarchia IANA → RIR → ISP → Azienda permette la route summarization a ogni livello: l’ISP annuncia un solo blocco per tutti i suoi clienti.
- CIDR ha esteso la vita di IPv4, ma la soluzione definitiva è IPv6 con i suoi 128 bit di spazio (prossima lezione).