Classless Inter-Domain Routing
Classless Inter-Domain Routing (CIDR) è un metodo per suddividere gli indirizzi IP allo scopo di allocarli con il minimo spreco, che ricopre un ruolo importante anche nel routing IP. La internet engineering task force ha introdotto CIDR nel 1993 per sostituire il precedente metodo di suddivisione classful usato fino a quel periodo. Il suo obiettivo era quello di rallentare l'esaurimento rapido degli indirizzi IPv4, e delineare, allo stesso tempo, un metodo per contenere le dimensioni delle tabelle di instradamento dei router a servizio di Internet, dimensioni crescenti come effetto collaterale di detta suddivisione.[1][2]
Gli indirizzi IP sono costituiti da due gruppi di bit nell'indirizzo: i bit più significativi costituiscono il prefisso di rete, che identifica un'intera rete classful (spesso indicata con il termine network in questo contesto) o una subnet, mentre l'insieme dei bit meno significativi costituisce l'identificativo dell'host, che può essere assegnato a una particolare interfaccia di un host su quella rete. Questa divisione viene usata come base per il routing del traffico tra reti IP e per le policy di allocazione degli indirizzi.
Laddove il metodo classful mantiene il prefisso di rete a una dimensione fissa di uno o più gruppi consecutivi da 8 bit (più significativi) per ottenere un numero finito di blocchi di indirizzi appartenenti alle tre classi A, B o C, con CIDR i bit del prefissi di rete che vengono allocati agli internet service provider e ai clienti finali possono essere di lunghezza variabile, al fine di ottimizzare lo spazio di indirizzamento.
Il CIDR è basato sul subnet masking a lunghezza variabile (VLSM), con il quale i prefissi di rete hanno lunghezze variabili, in contrasto alle lunghezze fisse del precedente metodo classful. Il vantaggio principale di questo sistema è che viene garantito un controllo più fine sulle dimensioni delle subnet allocate alle organizzazioni, rallentando pertanto l'esaurimento precoce degli indirizzi IPv4 causato dall'allocazione di blocchi di indirizzi più grandi del necessario. CIDR ha dato origine a un nuovo sistema di scrivere gli indirizzi IP conosciuto come notazione CIDR, nella quale un indirizzo IP è seguito da un suffisso che indica il numero di bit del prefisso. Alcuni esempi di notazione CIDR sono gli indirizzi 192.0.2.0/24 e 2001:db8::/32 per IPv6. I blocchi di indirizzi che hanno prefissi contigui possono essere aggregati dai router come supernetwork, riducendo il numero globale di voci nella tabella di routing.
Retroscena
Ciascun indirizzo IP consiste in un prefisso di rete seguito da un identificatore di host. Il dilemma è stabilire quanti dei 32 bit dell'indirizzo costituiscono il prefisso di rete e quanti l'identificatore dell'host. Nella precedente suddivisione classful di IPv4 i primi 3 bit dell'indirizzo IP definivano il totale dei bit che appartenevano al prefisso di rete:[3]
Primi 3 bit | Bit del prefisso di rete | Bit identificatore host | Classe | Indirizzi ip di esempio |
---|---|---|---|---|
000 through 011 | 8 | 24 | Classe A | 44.0.0.1 |
100 through 101 | 16 | 16 | Classe B | 128.32.0.1 |
110 | 24 | 8 | Classe C | 192.12.33.3 |
Il vantaggio di questo sistema era che i prefissi di rete potevano essere determinati automaticamente per ciascun indirizzo di rete senza bisogno di ulteriori informazioni. Lo svantaggio era che essendo disponibili solo tre taglie di grandezza prestabilite, le reti erano solitamente troppo grandi o troppo piccole per la maggior parte delle organizzazioni. Il blocco più piccolo allocabile conteneva 28 = 256 indirizzi, molti di più del necessario per una rete personale o di un dipartimento, ma troppo piccola per un'intera grande azienda. Il blocco intermedio conteneva 216 = 65536 indirizzi, troppo grande per essere usato in maniera efficiente anche da una grande organizzazione. Ma per quelle che avevano bisogno di più di 65536 indirizzi, il blocco più grande disponibile ne forniva 224 = 16777216, che erano davvero troppi. Questo portava sia a inefficienze nell'uso dell'indirizzi che nell'instradamento, perchè i router dovevano scambiarsi gli annunci delle informazioni di routing relative a un gran numero di reti di classe C disperse geograficamente che per questo motivo non si potevano aggregare in una supernetwork.
Nell'arco del decennio successivo allo sviluppo del Domain Name System, divenne apparente che il vecchio schema delle reti basate su classi non era scalabile.[4] Questo portò allo sviluppo del subnetting e del CIDR. Le precedenti distinzioni di classe basate sui 3 bit furono rimosse, e il nuovo sistema venne descritto come classless, in opposizione al vecchio sistema che divenne noto come classful. I protocolli di routing vennero modificati per trasportare non solo gli indirizzi IP, ma anche le corrispondenti subnet mask. Implementare CIDR comportò l'aggiornamento di ogni host e router in tanti piccoli modi, e non era una piccola impresa in un periodo in cui Internet stava entrando in una fase di crescita rapida. Nel 1993 la Internet Engineering Task Force pubblicò un nuovo set di standard, RFC 1518 ed RFC 1519 per definire questo nuovo metodo per allocare blocchi di indirizzi IP ed instradare pacchetti IPv4. Nel 2006 ne venne pubblicata una versione aggiornata, RFC 4632.[5] Dopo un periodo di sperimentazione con varie alternative, il Classless Inter-Domain Routing venne basato sul variable-length subnet masking (VLSM), che permette a ciascuna rete di essere suddivisa in varie subnet di grandezza delle potenze di 2, in modo da poter dimensionare ogni rete in base alle esigenze locali. Le subnet mask a lunghezza variabile vennero menzionate come alternativa per la prima volta nella RFC 950.[6]Le tecniche per raggruppare gli indirizzi per operazioni comuni erano basate sul concetto di cluster addressing, proposto per prima da Herbert Rokitansky.[7][8]
Notazione CIDR
La notazione CIDR è la rappresentazione compatta di un indirizzo IP e della sua subnet mask associata. La notazione è stata inventata da Phil Karn negli anni '80.[9][10]Essa specifica specifica un indirizzo IP, uno slash, ('/') e un numero decimale. Questo numero è il conteggio dei bit consecutivi impostati ad 1 da sinistra a destra nel prefisso di rete, e può essere anche considerato come unità di misura della lunghezza del prefisso di rete. L'indirizzo ip in notazione CIDR è sempre rappresentato secondo gli standard per IPv4 o IPv6.
La notazione può delineare lo specifico indirizzo di un interfaccia, come 10.0.0.1/8, o l'indirizzo iniziale di un'intera rete, usando un identificatore di host corrispondente al numero 0 in binario (ad esempio 10.0.0.0/8). La notazione CIDR può anche essere usata senza indirizzo IP, per esempio quando ci si riferisce a una /24 come descrizione generica di una rete che ha un prefisso lungo 24 bit e gli identificatori degli host lunghi 8 bit.
Per esempio:
- 198.51.100.14/24 rappresenta l'indirizzo IPv4 198.51.100.14 e il suo prefisso di rete associato 198.51.100.0, o allo stesso modo, la subnet mask 255.255.255.0, che ha 24 bit impostati a 1.
- il blocco IPv4 198.51.100.0/22 rappresenta i 1024 indirizzi IPv4 da 198.51.100.0 a 198.51.103.255.
- il blocco IPv6 2001:db8::/48 rappresenta l'insieme di indirizzi IPv6 da 2001:db8:0:0:0:0:0:0 a 2001:db8:0:ffff:ffff:ffff:ffff:ffff.
- ::1/128 rappresenta l'indirizzo di loopback IPv6. la lunghezza del suo prefisso è 128 che è anche il numero di bit dell'indirizzo
In IPv4, ciò che viene adesso chiamata notazione CIDR divenne di largo impiego solo dopo l'implementazione di CIDR. Non appare negli standard di CIDR originali, che utilizzano invece una subnet mask in notazione decimale separata da punti dopo lo slash (per esempio, 192.24.12.0/255.255.252.0).[2] Descrivere la lunghezza del prefisso di rete con un singolo numero rendeva più semplice per gli amministratori di rete concettualizzare e calcolare mentalmente, così iniziò ad essere incorporata nei documenti degli standard successivi[11][12] e nelle interfacce per la configurazione degli apparati.
Il numero di indirizzi dentro una network o una subnet può essere calcolato con la formula 2lunghezza indirizzo− lunghezza del prefisso, dove lunghezza indirizzo è 128 per IPv6 e 32 per IPv4. Ad esempio, in IPv4, la lunghezza del prefisso /29 fornisce: 232−29 = 23 = 8 indirizzi.
Subnet Mask
Una subnet mask è una maschera di bit che codifica la lunghezza del prefisso associatata a un indirizzo IPv4 lunga 32 bit, dei quali un certo numero sono impostati a 1 e rappresentano la lunghezza del prefisso, e i restanti bit impostati a 0, che viene tipicamente espressa in formato decimale quadruplo separata da punti (es. 255.255.255.0). Essa rappresenta lo stesso tipo di informazione di una lunghezza di prefisso ma precede l'avvento di CIDR. Nella notazione CIDR, i bit del prefisso sono sempre contigui. La RFC 950[6] permetteva un tempo alle subnet mask di rappresentare anche bit non contigui, fino alla RFC 4632,[5] dove venne stabilito che i bit dovevano essere lasciati contigui. Come conseguenza di questa restrizione sia la subnet mask che la notazione CIDR svolgono la medesima funzione.
Blocchi CIDR
Formato degli indirizzi | Differenza
dall'ultimo indirizzo |
Maschera | Indirizzi | Relativo
alla classe A, B, C |
Restrizioni
su a, b, c e d (0..255 dove non specificato) |
Uso tipico | |
---|---|---|---|---|---|---|---|
Decimale | 2n | ||||||
a.b.c.d/32 | +0.0.0.0 | 255.255.255.255 | 1 | 20 | 1⁄256 C | Host route | |
a.b.c.d/31 | +0.0.0.1 | 255.255.255.254 | 2 | 21 | 1⁄128 C | d = 0 ... (2n) ... 254 | Collegamenti punto-punto (RFC 3021) |
a.b.c.d/30 | +0.0.0.3 | 255.255.255.252 | 4 | 22 | 1⁄64 C | d = 0 ... (4n) ... 252 | Collegamenti punto-punto (glue network) |
a.b.c.d/29 | +0.0.0.7 | 255.255.255.248 | 8 | 23 | 1⁄32 C | d = 0 ... (8n) ... 248 | La più piccola rete multi-host |
a.b.c.d/28 | +0.0.0.15 | 255.255.255.240 | 16 | 24 | 1⁄16 C | d = 0 ... (16n) ... 240 | Piccola LAN |
a.b.c.d/27 | +0.0.0.31 | 255.255.255.224 | 32 | 25 | 1⁄8 C | d = 0 ... (32n) ... 224 | |
a.b.c.d/26 | +0.0.0.63 | 255.255.255.192 | 64 | 26 | 1⁄4 C | d = 0, 64, 128, 192 | |
a.b.c.d/25 | +0.0.0.127 | 255.255.255.128 | 128 | 27 | 1⁄2 C | d = 0, 128 | Grande LAN |
a.b.c.0/24 | +0.0.0.255 | 255.255.255.0 | 256 | 28 | 1 C | ||
a.b.c.0/23 | +0.0.1.255 | 255.255.254.0 | 512 | 29 | 2 C | c = 0 ... (2n) ... 254 | |
a.b.c.0/22 | +0.0.3.255 | 255.255.252.0 | 1,024 | 210 | 4 C | c = 0 ... (4n) ... 252 | Piccola azienda |
a.b.c.0/21 | +0.0.7.255 | 255.255.248.0 | 2,048 | 211 | 8 C | c = 0 ... (8n) ... 248 | Piccolo ISP/ grande azienda |
a.b.c.0/20 | +0.0.15.255 | 255.255.240.0 | 4,096 | 212 | 16 C | c = 0 ... (16n) ... 240 | |
a.b.c.0/19 | +0.0.31.255 | 255.255.224.0 | 8,192 | 213 | 32 C | c = 0 ... (32n) ... 224 | ISP/ grande azienda |
a.b.c.0/18 | +0.0.63.255 | 255.255.192.0 | 16,384 | 214 | 64 C | c = 0, 64, 128, 192 | |
a.b.c.0/17 | +0.0.127.255 | 255.255.128.0 | 32,768 | 215 | 128 C | c = 0, 128 | |
a.b.0.0/16 | +0.0.255.255 | 255.255.0.0 | 65,536 | 216 | 256 C = B | ||
a.b.0.0/15 | +0.1.255.255 | 255.254.0.0 | 131,072 | 217 | 2 B | b = 0 ... (2n) ... 254 | |
a.b.0.0/14 | +0.3.255.255 | 255.252.0.0 | 262,144 | 218 | 4 B | b = 0 ... (4n) ... 252 | |
a.b.0.0/13 | +0.7.255.255 | 255.248.0.0 | 524,288 | 219 | 8 B | b = 0 ... (8n) ... 248 | |
a.b.0.0/12 | +0.15.255.255 | 255.240.0.0 | 1,048,576 | 220 | 16 B | b = 0 ... (16n) ... 240 | |
a.b.0.0/11 | +0.31.255.255 | 255.224.0.0 | 2,097,152 | 221 | 32 B | b = 0 ... (32n) ... 224 | |
a.b.0.0/10 | +0.63.255.255 | 255.192.0.0 | 4,194,304 | 222 | 64 B | b = 0, 64, 128, 192 | |
a.b.0.0/9 | +0.127.255.255 | 255.128.0.0 | 8,388,608 | 223 | 128 B | b = 0, 128 | |
a.0.0.0/8 | +0.255.255.255 | 255.0.0.0 | 16,777,216 | 224 | 256 B = A | Il più grande blocco allocabile dalla IANA | |
a.0.0.0/7 | +1.255.255.255 | 254.0.0.0 | 33,554,432 | 225 | 2 A | a = 0 ... (2n) ... 254 | |
a.0.0.0/6 | +3.255.255.255 | 252.0.0.0 | 67,108,864 | 226 | 4 A | a = 0 ... (4n) ... 252 | |
a.0.0.0/5 | +7.255.255.255 | 248.0.0.0 | 134,217,728 | 227 | 8 A | a = 0 ... (8n) ... 248 | |
a.0.0.0/4 | +15.255.255.255 | 240.0.0.0 | 268,435,456 | 228 | 16 A | a = 0 ... (16n) ... 240 | |
a.0.0.0/3 | +31.255.255.255 | 224.0.0.0 | 536,870,912 | 229 | 32 A | a = 0 ... (32n) ... 224 | |
a.0.0.0/2 | +63.255.255.255 | 192.0.0.0 | 1,073,741,824 | 230 | 64 A | a = 0, 64, 128, 192 | |
a.0.0.0/1 | +127.255.255.255 | 128.0.0.0 | 2,147,483,648 | 231 | 128 A | a = 0, 128 | |
0.0.0.0/0 | +255.255.255.255 | 0.0.0.0 | 4,294,967,296 | 232 | 256 A | L'intera Internet IPv4, rotta di default. |
Aggregazione dei prefissi
Il CIDR permette un'aggregazione a grana fine dei prefissi di rete. Per esempio, se i primi 20 bit dell'indirizzo corrispondono, sedici reti /24 contigue possono essere aggregate e annunciate come una rete più grande dal prefisso /20, con una singola voce nella tabella di routing. Questo riduce il numero di rotte che necessitano di essere annunciate.
Voci Correlate
Note
- ^ (EN) Yakov Rekhter, Tony Li, RFC ft-rekhter-ipaddress-guide: An Architecture for IP Address Allocation with CIDR, su IETF Datatracker, 1º settembre 1993. URL consultato il 23 dicembre 2022.
- ^ a b (EN) Vince Fuller, Tony Li, Kannan Varadhan, Jessica Yu, RFC ft-fuller-cidr-strategy: Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy, su IETF Datatracker, 1º settembre 1993. URL consultato il 23 dicembre 2022.
- ^ (EN) RFC 943: Assigned numbers, su IETF Datatracker, 1º aprile 1985. URL consultato il 23 dicembre 2022.
- ^ (EN) Bob Hinden, RFC ft-ietf-iesg-cidr: Applicability Statement for the Implementation of Classless Inter-Domain Routing (CIDR), su IETF Datatracker, 1º settembre 1993. URL consultato il 23 dicembre 2022.
- ^ a b (EN) Vince Fuller, Tony Li, RFC ft-ietf-grow-rfc1519bis: Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan, su IETF Datatracker, 31 agosto 2006. URL consultato il 23 dicembre 2022.
- ^ a b J. Mogul; J. Postel, eds. (August 1985). Internet Standard Subnetting Procedure. sec. 2.1. doi:10.17487/RFC0950. RFC 950., su datatracker.ietf.org.
- ^ Carl-Herbert Rokitansky, "Internet Cluster Addressing Scheme and its Application to Public Data Networks", Proc. 9th International Conference on Computer Communication (ICCC' 88), pp. 482-491, Tel Aviv, Israel, October/November 1988.
- ^ Re: Cluster Addressing and CIDR, su mailarchive.ietf.org. URL consultato il 23 dicembre 2022.
- ^ (EN) nanog: Re: Stupid Question maybe?, su seclists.org. URL consultato il 23 dicembre 2022.
- ^ (EN) nanog: Re: Stupid Question maybe?, su seclists.org. URL consultato il 23 dicembre 2022.
- ^ (EN) Bill Manning, Troy Pummill, RFC ft-rfced-info-pummill: Variable Length Subnet Table For IPv4, su IETF Datatracker, 1º dicembre 1995. URL consultato il 23 dicembre 2022.
- ^ (EN) Mark Kosters, Jasdip Singh, Scott Williamson, Koert Zeilstra, RFC ft-rfced-info-williamson: Referral Whois (RWhois) Protocol V1.5, su IETF Datatracker, 1º giugno 1997. URL consultato il 23 dicembre 2022.