Il problema principale dato oggi da IPv4 è il progressivo esaurimento degli indirizzi a disposizione e la grandezza delle tabelle di instradamento. Lo spazio di indirizzi IPv4 fornisce circa 4,3 miliardi di indirizzi, ma di questi sono indirizzabili "solo" 3,7 miliardi: gli altri indirizzi sono riservati per scopi speciali, come multicast, spazi di indirizzamento privato, test di loopback, ricerca. Già oggi alcuni provider stanno iniziando ad assegnare indirizzi IPv6.
IPv4 |
IPv6 |
|
Lunghezza |
32 bits o 4 bytes |
128 bits o 16 bytes |
Indirizzi possibili |
4.200.000.000 |
3,4 x 1038 = 340.282.366.920.938.463.374.607.432.768.211.456 ossia 665.570.793.348.866.943.898.599 di indirizzi per ogni metro quadro della superficie terrestre |
Novità e miglioramenti
IPv6 offre miglioramenti consistenti rispetto a IPv4, riguardanti:
- Mobilità e sicurezza
- Formattazione dell’indirizzo
- Semplificazione della testata (header), di lunghezza fissa (40 bytes)
- pacchetti non frammentabili dai router (se necessario, gli host possono frammentare)
- eliminazione del campo checksum, già presente negli altri strati dello stack TCP/IP
Queste novità alleggeriscono molto il lavoro dei router, migliorando l'instradamento e il throughput (pacchetti instradati al secondo). Insieme all'IPv6 inoltre viene definito anche l'ICMPv6, molto simile all'ICMPv4 ma che ingloba il vecchio protocollo IGMP e comprende al suo interno la gestione dei Gruppi Multicast ed i cosiddetti meccanismi di Neighbor Discovery: tra questi sono particolarmente importanti i meccanismi di auotoconfigurazione dei terminali e quelli di risoluzione indirizzi.
La mobilità è un'importante caratteristica introdotta da IPv6: permette alle persone, con dispositivi di rete mobile, di muoversi senza interruzioni nelle connessioni di rete stabilite. IPv4 non supporta questo tipo di mobilità. Per quanto concerne gli aspetti sulla sicurezza, IPSec è più strettamente integrato in IPv6 e può essere attivato su tutti i nodi IPv6. Ricordiamo a tal proposito che IPSec è lo standard IETF per la sicurezza delle reti IP.
Semplificazione Header
L'intestazione usata per IPv6 aumenta l'efficienza del routing riducendo il numero di voci nelle tabelle di routing. Dal confronto delle intestazioni della versione 4 e della versione 6 si può verificare che alcuni campi, presenti nell'header IPv4, sono stati rimossi o resi opzionali in IPv6, per ridurre il peso dell'elaborazione del datagramma e per contenere il più possibile l'occupazione di banda dovuta all'intestazione, nonostante la maggiore dimensione degli indirizzi.
Formattazione dell’indirizzo
Gli indirizzi IPv6 sono composti da 128 bit, solitamente rappresentati come 8 campi di 4 cifre esadecimali (ovvero 8 parole di 16bit ciascuna). Di seguito un esempio:
2031:0000:130F:0000:0000:09C0:876A:130B
Diversamente da IPv4, la formattazione delle stringhe di indirizzi IPv6 non è fissa, ma gode di una certa elasticità, dettata comunque da alcune linee guida elencate di seguito:
- Gli “0” iniziali in ogni campo sono opzionali. Si intende infatti che se i gruppi sono di 4 cifre, la cifra mancante corrisponde allo 0 iniziale. Esempio:
09C0 corrisponde a 9C0
- Se uno dei campi è composto da una sequenza di quattro zeri, può essere contratto ad un solo zero. Esempio:
2031:0000:130F:0000:0000:09C0:876A:130B corrisponde a 2031:0:130F:0:0:09C0:876A:130B
- Uno o più gruppi consecutivi di “0” possono essere omessi e sostituiti con "::". Tuttavia la notazione "::" è permessa una sola volta nell’indirizzo: questo perché se i campi sono 8, la notazione "::" rappresenta il numero di campi mancante che riporterebbe a 8 il totale. Esempio:
2031:0000:130F:0000:0000:09C0:876A:130B corrisponde a 2031:0:130F::9C0:876A:130B
Struttura dell’indirizzo
Gli indirizzi IPv6 usano, all’interno della loro struttura, una gerarchia a 2 o più livelli. Possiamo sempre distinguere 3 parti fondamentali:
- Site prefix, ossia la parte che rappresenta la rete, di 48 bit, di cui una parte assegnata al Registry ed una per indicare la rete gestita dall’ISP
- Subnet prefix, ossia la parte indicante la sottorete, di 16 bit
- Interface ID, che occupa i rimanenti 64 bit. Gli ultimi 64 bit di un indirizzo IPv6 rappresentano sempre l'identificatore di interfaccia, univoco rispetto al prefisso di 64 bit. Gli identificatori di interfaccia tradizionali delle schede di rete utilizzano un indirizzo a 48 bit, noto anche come indirizzo fisico, o MAC-Address. Questo tipo di indirizzo include l'ID azienda di 24 bit e l'ID estensione di 24 bit (ID produttore e ID scheda). La combinazione dà origine ad un indirizzo di 48 bit universalmente univoco. L'indirizzo IEEE EUI-64 è semplicemente un nuovo standard per l'indirizzamento delle interfacce di rete; è lungo 64 bit, costituiti da un ID azienda di 24 bit e un ID estensione di 40 bit, che consentono uno spazio di indirizzi di dimensioni maggiori per il produttore di schede di rete.
Tipologia di indirizzamento
Con IPv6 sparisce il traffico di broadcast, che in IPv4 creava un elevato livello di traffico all'interno della rete. Questo tipo di traffico, in presenza di configurazioni di rete non ottimali, può degenerare in tempeste di broadcast, con il risultato che l'intera rete viene compromessa. IPv6 sostituisce il broadcast con le trasmissioni multicast e anycast. Il problema delle tabelle di instradamento è stato affrontato adottando un'architettura di indirizzamento strettamente gerarchica, che definisce tre tipi di indirizzi:
- Unicast: identificatore per una singola interfaccia. Un pacchetto con un indirizzo unicast è inviato all'interfaccia identificata da tale indirizzo. Per migliorare l’efficienza, un pacchetto spedito ad un indirizzo unicast viene consegnato all’interfaccia più vicina.
- Multicast: identificatore per un insieme di interfacce, tipicamente appartenenti a nodi diversi. Un pacchetto con un indirizzo multicast è inviato a tutte le interfacce con quell'indirizzo.
- Anycast: identificatore per un insieme di interfacce. In sostanza un indirizzo è anycast quando viene assegnato a più di un’interfaccia. Ogni interfaccia a cui tale indirizzo viene assegnato deve essere configurata per metterla a conoscenza del fatto che le è stato assegnato un indirizzo anycast. Un pacchetto con un indirizzo anycast viene inviato all'interfaccia più vicina fra quelle identificate da tale indirizzo. Gli indirizzi anycast sono utili nella gestione di più sistemi in mirror, garantendo al fruitore del servizio di connettersi a quello a lui più “vicino”.
A loro volta, gli indirizzi Unicast si distinguono in:
- Globali, detti anche Aggregatable Global Addresses: corrispondono agli indirizzi IPv4 pubblici. Questo tipo di indirizzi è instradabile e raggiungibile sulla rete Internet IPv6. Come suggerisce il nome stesso, gli indirizzi unicast globali aggregabili sono stati progettati per essere aggregati o riepilogati allo scopo di creare un'infrastruttura di routing efficiente. Iniziano con il prefisso "2000::/3".
- Riservati, rappresentati dagli indirizzi privati, indirizzi di loopback e indirizzi non specificabili. Nel dettaglio:
- Link-local: indirizzi privati configurati automaticamente sfruttando l’indirizzo MAC dell’interfaccia di rete. Vengono utilizzati dai nodi per la comunicazione all’interno di uno stesso segmento di rete senza router. Corrispondono agli indirizzi IPv4 APIPA (Automatic Private IP Addressing) che utilizzano il prefisso 169.254.0.0/16. Iniziano con il prefisso "fe80::/10".
- Site-local: indirizzi privati equivalenti agli indirizzi privati in IPv4 (10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16). A differenza degli indirizzi link-local, non vengono configurati automaticamente, ma devono essere assegnati tramite processi di configurazione degli indirizzi. I primi 48 bit sono sempre fissi e iniziano con il valore esadecimale “FEC0::/10”. Segue un identificatore di subnet a 16 bit con cui è possibile creare subnet all'interno della propria organizzazione. Il campo ID subnet è seguito dal campo ID interfaccia a 64 bit che identifica un'interfaccia specifica in una subnet.
- Loopback: indirizzo locali di un host, si scrive “::1” ed equivale a 127.0.0.1 in IPv4.
- Unspecified: indica l’assenza di indirizzo, quindi non è assegnabile ad un host. Si scrive “::/0” e corrisponde allo “0.0.0.0” di Ipv4. E’ utilizzato per indicare la rotta di default e nel protocollo DHCP, quando viene inviato un pacchetto di inizializzazione.
Nella tabella qui sotto riepiloghiamo la struttura iniziale dei più comuni tipi di indirizzi IPv6
Tipo |
Inizia con... |
Unspecified | ::/0 |
Loopback address | ::1 |
Link-local address | FE80::/10 |
Site-local address | FEC0::/10 |
Global address | 2000::/3 |
Multicast address | FF00::/8 |
Assegnazione di un indirizzo IPv6
Gli indirizzi IPv6 possono essere assegnati in due modalità principali:
- indicando tutti i 128 bit con il CIDR (in genere /64). Esempio per un router Cisco: ipv6 address 2001:DB8:2222:7272::72/64
- indicando solo il prefisso iniziale di 64 bit, facendo in modo che i 64 bit finali vengano ricavati automaticamente dall'EUI-64 (vedi sopra "Struttura dell'indirizzo"). Se l'interfaccia di rete utilizzata non è stata concepita con il nuovo standard di indirizzamento fisico EUI-64, ma è in possesso del classico MAC-Address a 48 bit, quest'ultimo viene espanso sino ai 64 bit con l'inserimento nel mezzo di 16 bit con valore esadecimale FFFE. Esempio di configurazione EUI-64 per un router Cisco: ipv6 address 2001:DB8:c18:1::/64 eui-64
Migrazione da IPv4 a IPv6
Ci 3 diverse modalità per integrare un’infrastruttura IPv6 in una rete IPv4 preesistente:
- Dual stack
- Tunneling
- NAT-PT: proxying and translation
Nella modalità Dual Stack, sui dispositivi di rete vengono implementate entrambe le configurazioni IPv4 e IPv6, con i due protocolli che coesisteranno su uno stesso dispositivo.
Il Tunneling, in generale, è una tecnica che prevede di impacchettare (encapsulation) un protocollo all’interno di un’altro. Nel caso di IPv6, il tunneling si può usare per impacchettare un pacchetto IPv6 all’interno di un IPv4. In ogni caso il tunneling di IPv6 su IPv4 richiede router configurati in "Dual Stack".
Il NAT-PT è un sistema che sfrutta il concetto del NAT, effettuando una conversione dell'indirizzo IPv6 in indirizzo IPv4 e viceversa, permettendo a due reti con protocolli IP diversi di poter comunicare tra di loro. Il nodo NAT-PT viene dotato di un pool di indirizzi IPv4, associando dinamicamente questi indirizzi ai nodi della rete IPv6. Ogni indirizzo IPv4 viene quindi mappato in un indirizzo IPv6. Si tratta comunque di una tecnica complessa e poco utilizzata.