CIDR e supernetting

// obiettivi di apprendimento
Comprendere il problema della crescita delle routing table e come CIDR lo affronta eliminando le classi storiche
Applicare route aggregation (supernetting) per aggregare blocchi contigui in una singola route con prefisso accorciato
Applicare il principio del longest prefix match e spiegare come i router scelgono la route più specifica
Distinguere route summary, default route e CIDR block e applicarli in un piano di indirizzamento gerarchico
🎬
Video
CIDR, supernetting
Guarda →
📄
Slides
Schema CIDR, tabella route summary, esercizi risolti
⚗️
Lab
PKT CIDR
PKT →
🔗
Risorse
Esercizi CIDR
GitHub →

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.

// definizione formale
CIDR (Classless Inter-Domain Routing) è un sistema di allocazione e routing degli indirizzi IP che elimina le classi A/B/C in favore di prefissi di lunghezza arbitraria. Un indirizzo è sempre espresso come coppia indirizzo/prefisso (es. 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:

  1. I blocchi devono essere contigui nello spazio di indirizzamento
  2. 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:

  1. Converti tutti i network address in binario
  2. Trova i bit comuni dalla sinistra
  3. Il prefisso aggregato è il numero di bit comuni
  4. L’indirizzo aggregato è quello con i bit comuni + tutti gli altri a 0
// esempio: aggregare 192.168.0.0/24, 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24
192.168.0.0: 11000000.10101000.00000000.00000000
192.168.1.0: 11000000.10101000.00000001.00000000
192.168.2.0: 11000000.10101000.00000010.00000000
192.168.3.0: 11000000.10101000.00000011.00000000
Bit comuni: 11000000.10101000.000000xx.xxxxxxxx → 22 bit
Aggregato: 192.168.0.0/22 — copre 192.168.0.0 → 192.168.3.255 (1024 indirizzi)

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.

// aggregazione parziale — attento ai buchi

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).

// definizione formale
Longest Prefix Match (LPM): dato un indirizzo di destinazione, il router seleziona la rotta con il prefisso che corrisponde all’indirizzo E che ha il maggior numero di bit nel prefisso. Un /28 prevale su un /24 che prevale su un /16, anche se tutti e tre coprono l’indirizzo destinazione.
// esempio routing table con LPM

Routing table del router R1. Destinazione del pacchetto: 10.1.1.25

PrefissoNext-hopMatch?Scelta
0.0.0.0/0203.0.113.1✓ (default)No — prefisso /0
10.0.0.0/810.254.0.1No — prefisso /8
10.1.0.0/1610.254.1.1No — prefisso /16
10.1.1.0/2410.254.2.1No — prefisso /24
10.1.1.16/2810.1.1.1✅ VINCE — /28 è il più lungo
10.1.1.25 ∈ [10.1.1.16 – 10.1.1.31] → match con /28. Tutti gli altri prefissi più corti matchano anche, ma /28 vince.

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.

Router aziendali / edge

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.

Router del backbone Internet

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 è:

// gerarchia allocazione indirizzi
IANA
Gestisce l’intero spazio IPv4 (0.0.0.0/0). Assegna grandi blocchi agli RIR.
RIR
Regional Internet Registries (RIPE NCC per Europa, ARIN per USA, APNIC per Asia-Pacifico). Assegnano blocchi agli ISP.
ISP
Riceve blocchi (es. /19 o /20) e li subnetta per distribuire blocchi più piccoli ai clienti aziendali.
Azienda
Riceve un blocco dall’ISP (es. /24 o /28) e lo subnetta internamente con VLSM.

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.

// caso non aggregabile

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.

SoluzioneCosa faLimite
CIDR (1993)Allocazione efficiente, aggregazione rotteNon aggiunge indirizzi, rallenta l’esaurimento
NAT (1994)Molti host privati condividono un IP pubblicoRompe il modello end-to-end, complica applicazioni P2P
IPv6 (1998)128 bit = 3,4 × 10³⁸ indirizziAdozione lenta: coesistenza con IPv4 ancora necessaria
// CIDR si applica anche a IPv6

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

CaratteristicaClassful (pre-CIDR)Classless / CIDR
Prefisso reteFisso (8, 16, 24 bit)Arbitrario (1–32 bit)
Routing tableCrescita illimitataAggregazione riduce enormemente
Efficienza indirizziBassa (blocchi troppo grandi)Alta (alloca esattamente ciò che serve)
Protocolli routingRIPv1, IGRP (non trasmettono mask)RIPv2, OSPF, EIGRP, BGP-4 (trasmettono prefix)
Subnetting variabileNon supportatoVLSM nativo
AggregazioneImpossibile oltre i confini di classeSupernetting su qualsiasi confine allineato
📌 Riepilogo — Punti chiave
  • 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). /28 batte /24 batte /16.
  • La default route 0.0.0.0/0 copre 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).

Lascia un commento