Classless Inter Domain Routing CIDR
Indirizzamento senza classi Detto anche di super-rete (super-netting) Motivazioni: Pochi indirizzi di classe A e B disponibili Molti indirizzi di classe C disponibili, ma piccola frazione assegnata Obiettivo: assegnare soprattutto indirizzi di classe C Soluzione: CIDR (Classless Inter-Domain Routing)
Crescita di Internet Il numero delle reti raddoppia ogni nove mesi (crescita esponenziale) Spazio degli indirizi già assegnato [fonte: RFC 1917 feb ‘96]: classe A: 41% classe B: 62% classe C: 28% Complessivo: 41% più della metà delle reti in classe B ha meno di 50 host La scarsità degli indirizzi ha l’effetto di ingigantire le tabelle di instradamento. Infatti, poiché l’offerta di indirizzi della classe B diminuisce, la richiesta di indirizzi della classe C aumenta e le reti indipendenti si moltiplicano
Indirizzamento senza classi Problema: una rete di classe C corrisponde a 256 indirizzi IP Molte organizzazioni hanno bisogno di piu’ indirizzi Soluzione: assegnare ad una stessa organizzazione blocchi contigui di indirizzi in classe C Esempio: l’organizzazione X riceve i tre blocchi contigui 220.123.16.x, 220.123.17.x e 220.123.18.x 768 indirizzi disponibili Richiederebbe numerosi instradamenti diversi per raggiunger una rete
Indirizzamento senza classi Come rappresentare il blocco di indirizzi assegnati? Informazioni necessarie: indirizzo + basso del blocco e No. Blocchi In pratica: CIDR non prevede che gli indirizzi di rete debbano necessariamente essere di classe C CIDR usa le seguenti informazioni: Valore a 32 bit dell’indirizzo piu’ basso del blocco Maschera a 32 che funziona come una maschera di sottorete standard
Differenze rispetto a indizzamento con sottorete L’indirizzamento CIDR prevede che la maschera usi bit contigui CIDR richiede che ogni blocco di indirizzi sia una potenza di 2 Esempio: 11111111 11111111 00011000 01000000 e’ una maschera di sottorete valida ma non e’ una maschera CIDR consentita
Notazione CIDR Prefisso della rete + No. bit per il prefisso Esempio: per un blocco di indirizzi da 220.16.128.0 a 220.16.255.255: 220.16.128.0/17 11111111.11111111.10000000.00000000
Esempio Un ISP riceve il blocco di indirizzi 210.20.128.0/17 L’ISP crea (ad esempio) 128 reti da 256 indirizzi IP ciascuna: 210.20.128.0/24 210.20.129.0/24 ………… La maschera di rete che corrisponde al blocco principale e’ 255.255.128.0 Ciascuno dei sotto-blocchi ha maschera 255.255.255.0
Instradamento con CIDR Indirizzi con classi sono auto-identificanti Indirizzamento senza classi: occorre separare il prefisso di rete dall’indirizzo dell’host Esempio: arriva Dgram con IP destinazione 150.122.19.30 Qual e’ il prefisso di rete? Non e’ possibile stabilirlo a priori se si usa la convenzione CIDR Le reti sono allocate in modo da rendere più probabile l’aggregazione delle tabelle di instradamento
Instradamento con CIDR - cont. La tabella di routing ha la forma: (Mask, Dest. network, Next hop) Si tentano le entry in ordine decrescente di lunghezza delle maschere Quelle con la maschera piu’ lunga prima L’AND della destinazione e della Mask deve restituire l’indirizzo di base. Esempio: indirizzo 150.122.19.30 La tabella contiene 2 entry, corrispondenti alle destinazioni 150.122.19.0/24 e 150.122.128.0/17 L’entry giusta e’ la prima, corrispondente al prefisso comune piu’ lungo (longest prefix matching)
Esempio di aggregazione
Esempio di Instradamento
Riassunto vincoli di aggregazione
Allocazione accorta degli indirizzi ip
Allocazione accorta degli indirizzi ip Si allocano alla stessa organizzazione reti possibilmente contigue Se l’organizzazione afferisce ad internet tramite un solo collegamento, sarà possibile aggregare da quel punto in poi molte linee delle tabelle di instradamento esempio: se un’organizzazione ha necessità di 2000 indirizzi ip, le vengono allocati 2048 indirizzi (8 reti in classe C contigue) se un’organizzazione ha necessità di 8000 indirizzi ip, le vengono allocati 8192 indirizzi (32 reti in classe C contigue)
Esempio di allocazione CIDR
Esempio di allocazione CIDR (cont)
Implementazione Tradizionali Tabelle usano funzioni Hash che forniscono il prossimo hop corrispondente af ogni destinazione Soluzione elementare in CIDR: ricerca iterativa sulle maschere in ordine di lunghezza decrescente Per CIDR si usano invece strutture di ricerca ad albero binario Ogni percorso dalla radice ad una foglia corrisponde ad un possibile prefisso In pratica, la ricerca del prefisso comune piu’ lungo avviene in memoria principale
Esempio Tabella (solo destinazioni indicate): Indirizzo a 32 bit Pref. univoco 00110101000000000000000000000000 001 01000110000000000000000000000000 0100 01010110000000000000000000000000 0101 01100001000000000000000000000000 011 10101010111100000000000000000000 1010 10110000000000100000000000000000 10110 10111011000010100000000000000000 10111
Esempio - cont. Ricerca dell’indirizzo 01010010.x.y.z 1 Ricerca dell’indirizzo 01010010.x.y.z Ogni foglia corrisponde a una destinazione della tabella di routing
Implementazione Le foglie dell’albero contengono sia un indirizzo di destinazione che una maschera Una volta giunti ad una foglia dell’albero si verifica che l’AND tra indirizzo e Maschera sia esattamente la rete di destinazione Gli alberi binari di ricerca aiutano nel determinare quale entry sono possibili
Prefissi di Rete Il procedimento e’ corretto se nessun prefisso di rete ha un altro prefisso di rete come prefisso Tutti le entry sono foglie dell’albero In realtà le tabelle spesso contengono informazioni promiscue sull’instradamento sia verso le reti che verso le sottoreti. Occorre quindi determinare il prefisso piu’ lungo che corrisponde con l’indirizzo che si desidera risolvere. Si possono quindi avere entry della tabella anche ai nodi interni dell’albero
Esercizio Considerate un’allocazione di blocchi di classe C tale che l’indirizzo di base è un multiplo del numero di indirizzi da allocare e tutti gli indirizzi del blocco non sono allocati. Verificare che nessun indirizzo base e’ un prefisso di un altro indirizzo base.
Esercizio 1 su aggregazione CIDR Si consideri un router che ha la seguente tabella di instradamento: Indirizzo Netmask Linea 193.204.162.0 255.255.255.0 Interfaccia 1 193.204.163.0 255.255.255.0 Interfaccia 2 193.204.164.0 255.255.255.0 Interfaccia 2 193.204.165.0 255.255.255.0 Interfaccia 2 193.204.166.0 255.255.255.0 Interfaccia 2 193.204.167.0 255.255.255.0 Interfaccia 2 193.204.168.0 255.255.255.0 Interfaccia 2 si mostri come tale tabella potrebbe essere compressa se il router adottasse lo standard CIDR
Soluzione
Esercizio 2 su aggregazione CIDR Si consideri un router che ha la seguente tabella di instradamento già parzialmente aggregata: Indirizzo Netmask Linea 194.38.40.0 255.255.255.0 Interfaccia 1 194.38.41.0 255.255.255.0 Interfaccia 1 194.38.42.0 255.255.254.0 Interfaccia 1 194.38.44.0 255.255.252.0 Interfaccia 1 194.38.48.0 255.255.254.0 Interfaccia 1 194.38.50.0 255.255.255.0 Interfaccia 1 194.38.51.0 255.255.255.0 Interfaccia 1 si mostri come tale tabella potrebbe essere ulteriormente compressa in accordo con lo standard CIDR
Soluzione
Esercizio 3 su aggregazione CIDR Si comprima con CIDR la seguente tabella di instradamento: Indirizzo Netmask Linea 140.38.0.0 255.255.0.0 Interfaccia 1 140.39.0.0 255.255.0.0 Interfaccia 1 140.40.0.0 255.255.0.0 Interfaccia 1 140.41.0.0 255.255.0.0 Interfaccia 1 140.42.0.0 255.255.0.0 Interfaccia 1 140.43.0.0 255.255.0.0 Interfaccia 1 140.44.0.0 255.255.0.0 Interfaccia 1 140.45.0.0 255.255.0.0 Interfaccia 1 140.46.0.0 255.255.0.0 Interfaccia 2 140.47.0.0 255.255.0.0 Interfaccia 1 140.48.0.0 255.255.0.0 Interfaccia 1
Soluzione
Soluzione