IPv6: tutto sul protocollo internet versione 6
Con l’introduzione dell’IPv6 si modificano i processi di base della comunicazione in rete. L’espansione dello spazio di indirizzamento da 32 a 128 bit non mira solo a risolvere il problema della crescente penuria di indirizzi IP, ma il nuovo standard consente anche di indirizzarsi in modo univoco a tutti i dispositivi presenti in una rete. Diversamente dall’IPv4, la versione 6 applica conseguentemente il concetto alla base dell’IP, cioè il principio end-to-end. Vi spieghiamo in che modo.
Prova il nostro VPS. I primi 30 giorni sono in omaggio e se allo scadere del periodo di prova non sarai convinto, ti rimborseremo tutte le spese sostenute.
Che cos’è l’IPv6?
IPv6 sta per “Internet Protocol Version 6” e costituisce uno dei procedimenti standard della Internet Engineering Task Force (IETF) per la trasmissione di pacchetti nelle reti di computer. Insieme a circa altri 500 protocolli di rete della famiglia TCP/IP, l’IPv6 si configura come il diretto successore dell’IPv4, la base della comunicazione in rete. Le funzioni principali dell’IPv6 sono l’indirizzamento di elementi di rete attraverso indirizzi IPv6 e l’inoltro dei pacchetti tra i componenti della rete, chiamato anche routing. Il protocollo IPv6 si colloca nel livello di rete (livello 3) del modello ISO/OSI.
L’assegnazione degli indirizzi IP avviene tramite RIRs (Regional Internet Registries), che ricevono un proprio range di indirizzi IP dalla IANA (Internet Assigned Numbers Authority). Il RIR responsabile per l’Europa, l’Est e l’Asia continentale è il RIPE NCC (Réseaux IP Européens Network Coordination Centre).
IPv6 vs. IPv4
Già di primo acchito si scorge che il nuovo formato di indirizzo dell’IP nella versione 6 si distingue nettamente dal suo predecessore IPv4.
- Indirizzo IPv4: 203.0.120.195
- Indirizzo IPv6: 2001:0620:0000:0000:0211:24FF:FE80:C12C
Mentre nell’IP di versione 4 venivano utilizzati gli indirizzi a 32 bit, solitamente presentati sotto forma di decimali, il successore IPv6 si basa su indirizzi a 128 bit, che si presentano sotto forma di esadecimali per motivi di leggibilità. Il confronto diretto semplifica la spiegazione di questa questione importante, a cui è seguita l’introduzione di un nuovo standard IP: con 128 bit si possono generare molti più indirizzi IP unici rispetto che utilizzando 32 bit.
- Spazio di indirizzamento dell‘IPv4: 32 bit = 232 di indirizzi ≈ 4,3 miliardi di indirizzi
- Spazio di indirizzamento dell‘IPv6: 128 bit = 2128 di indirizzi ≈ 340 sestilioni di indirizzi
Questa differenza di quantità diventa più chiara tramite un confronto: mentre lo spazio di indirizzamento dell’IPv4 con i suoi 4,3 miliardi di IP non basta per dotare tutte le persone sul pianeta di un unico indirizzo, con un sistema a 128 bit teoricamente si potrebbe dotare ogni granello di sabbia sul pianeta di un indirizzo IP. L’introduzione dell’IPv6 può anche essere considerata come un investimento per il futuro. Infatti i trend come Internet of Things (IoT) supportano il fatto che il numero di dispositivi collegati ad Internet ed identificabili univocamente aumenteranno drasticamente nei prossimi anni.
Struttura di un indirizzo IPv6
I 128 bit di un indirizzo IPv6 sono suddivisi in 8 blocchi di 16 bit. Tramite una scrittura esadecimale si può annotare un blocco di 16 bit con 4 cifre e lettere. I due punti sono utilizzati come elemento di separazione:
- 2001:0620:0000:0000:0211:24FF:FE80:C12C
Per strutturare l’indirizzo IPv6 in un modo più agevole, si è affermata una forma di scrittura più breve, in cui possono essere tralasciati gli 0 introduttivi all’interno dei blocchi esadecimali. Se un blocco esadecimale è composto esclusivamente da zeri, l’ultimo è quello che deve rimanere:
- 2001:0620:0000:0000:0211:24FF:FE80:C12C
- 2001:620:0:0:211:24FF:FE80:C12C
Inoltre, per ogni indirizzo IPv6 è possibile cancellare una volta i blocchi di zeri consecutivi in qualsiasi punto si trovino:
- 2001:620:0:0:211:24FF:FE80:C12C
- 2001:620::211:24FF:FE80:C12C
Questa omissione si indica con due punti consecutivi (nell’esempio sopra presenti dopo il secondo blocco).
Praticamente gli utenti hanno a disposizione meno indirizzi di quanto il formato a 128 bit lasci supporre. Uno dei motivi è il criterio utilizzato per la struttura dell’IPv6: diversamente dai suoi predecessori, il nuovo standard dovrebbe consentire una vera connessione end-to-end e rendere superflua la conversione di indirizzi IP privati in pubblici, ricorrendo alla NAT (Network Address Translation). Teoricamente si può realizzare una connessione end-to-end anche con un indirizzo IPv4, ma poiché lo spazio di indirizzamento dell’IPv4 è troppo piccolo per assegnare ad ogni dispositivo un indirizzo unico, è stato sviluppato un sistema con spazi di indirizzamento separati e componenti NAT comunicanti. Con il nuovo standard ogni dispositivo, collegato ad una LAN, può essere indirizzato logicamente tramite un proprio IP. Gli indirizzi IPv6 comprendono perciò, oltre alla parte relativa all’indirizzamento di rete (chiamata anche indirizzo di rete o prefisso di routing), un Interface Identifier univoco, che risulta dall’indirizzo MAC della scheda di rete del dispositivo o viene generato manualmente. Sia il prefisso di routing che l’Interface Identifier comprendono ciascuno 64 bit di un indirizzo IPv6.
Struttura del prefisso di routing
Il prefisso di routing di un indirizzo IPv6 è generalmente suddiviso in un prefisso di rete e in un prefisso di sottorete. Viene rappresentato graficamente con una notazione CIDR (Classless Inter-Domain Routing). In questo caso la lunghezza del prefisso, cioè la lunghezza del prefisso in bit, è collegata all’indirizzo di rete con uno slash (/).
La notazione 2001:0820:9511::/48 descrive ad esempio una sottorete che comprende gli indirizzi da 2001:0820:9511:0000:0000:0000:0000:0000 fino a 2001:0820:9511:FFFF:FFFF:FFFF:FFFF:FFFF.
Generalmente il RIR assegna ai provider (ISP) /32 reti, che sono suddivise di nuovo in sottoreti. Per i clienti vengono infine messe a disposizione /48 reti o /56 reti. La seguente tabella mostra la struttura tipica di un indirizzo di global unicast basato su un IPv6, composto da prefisso di rete, prefisso di sottorete e Interface Identifier:
Struttura dell’Interface Identifier
L’Interface Identifier serve per l’assegnazione univoca di uno specifico dispositivo collegato ad una rete e viene stabilito manualmente o generato sulla base di un indirizzo MAC della scheda di rete del dispositivo, come avviene di solito e si basa sulla conversione del formato standard di indirizzo MAC nel formato modificato EUI-64. Questo processo avviene in tre passaggi:
- Nel primo passaggio l’indirizzo MAC di 48 bit viene scomposto in due lunghe parti da 24 bit ciascuna, che costituiscono l’inizio e la fine di un Interface Identifier di 64 bit.
- Indirizzo MAC: 00-11-24-80-C1-2C
- Indirizzo MAC scomposto: 0011:24__:__80:C12C
- Nel secondo passaggio i 16 bit restanti nella parte centrale sono occupati di solito dalla sequenza di bit 1111 1111 1111 1110, che corrisponde al codice esadecimale FFFE:
- Indirizzo MAC aggiunto: 0011:24FF:FE80:C12C
- L’indirizzo MAC è ora nel formato modificato EUI-64.
- Nel terzo passaggio viene invertito il settimo bit, chiamato anche Universal/Local bit, che indica se un indirizzo è univoco a livello globale o se si usa solo in ambito locale.
- Sequenza di bit prima dell’inversione: 0000 0000
- Sequenza di bit dopo l’inversione: 0000 0010
- Interface Identifier prima dell’inversione: 0011:24FF:FE80:C12C
- Interface Identifier dopo l’inversione: 0211:24FF:FE80:C12C
Privacy Extensions
Un indirizzo IPv6, che si basa su un formato modificato EUI-64, riesce a risalire all’indirizzo MAC di base, cosa che getta qualche ombra in merito alla protezione dei dati e per questo è stata sviluppata la Privacy Extensions, un procedimento che consente di anonimizzare l’Interface Identifier anche con l’IPv6, così da concludere il collegamento di un indirizzo MAC e di un Interface Identifier. Invece Privacy Extensions genera più o meno casualmente Interface Identifier temporanei per connessioni in uscita, cosicché risulta più difficile risalire all’host e al percorso intrapreso basandosi sull’IP.
Tipi di indirizzi IPv6
Come per gli indirizzi IPv4, anche per gli IPv6 si trovano diversi spazi di indirizzamento con funzioni specifiche e proprietà, specificati in RFC 4291 e RFC 5156, che si possono già identificare con i primi bit di un indirizzo IPv6, cioè il prefisso di formato. Tra i tipi di indirizzi principali rientrano gli indirizzi Unicast, Multicast e Anycast.
Indirizzi Unicast
Gli indirizzi Unicast servono per la comunicazione di un elemento di rete con un altro e si possono suddividere in due categorie: gli indirizzi link local e quelli global unicast.
- Indirizzi link local: gli indirizzi di questa categoria sono validi solo all’interno delle reti locali e cominciano con il prefisso di formato FE80::/10. Gli indirizzi link local sono utilizzati per l’indirizzamento degli elementi all’interno di una rete locale e servono ad esempio per l’autoconfigurazione. Generalmente l’ambito di validità di un indirizzo link local si estende fino al router successivo, cosicché ognuno di questi dispositivi collegati alla rete sia in grado di comunicare con questo, in modo da generare un indirizzo IPv6 globale. Questo processo viene chiamato Neighbor Discovery.
- Indirizzi global unicast: gli indirizzi global unicast sono indirizzi usati una sola volta a livello mondiale che necessitano di un dispositivo di rete per stabilire una connessione Internet. Come prefisso di formato viene utilizzato in genere 2000::/3, che comprende tutti gli indirizzi che cominciano con 2000 fino a quelli con 3FFF. L’indirizzo global unicast è instradabile dal router e si può utilizzare per indirizzarsi direttamente ad un host nella rete locale via Internet. Gli indirizzi global unicast, che vengono ridistribuiti dai provider ai clienti, cominciano con il blocco esadecimale 2001.
Gli indirizzi Multicast
Mentre gli indirizzi Unicast servono per la comunicazione one-to-one, tramite indirizzi Multicast si può realizzare una comunicazione one-to-many. Si parla perciò di indirizzi di distribuzione. I pacchetti che vengono inviati ad un indirizzo Multicast raggiungono tutti i dispositivi di rete, che fanno parte di un gruppo Multicast. Così un dispositivo può appartenere parallelamente a più gruppi Multicast. Se viene creato un indirizzo Unicast IPv6 per un dispositivo di rete, questo diventa automaticamente un membro di gruppi Multicast specifici, che servono per il riconoscimento, la raggiungibilità e l’identificazione dei prefissi. I classici gruppi di Multicast sono ad esempio “tutti i router” o “tutti gli host”; in genere FF00::/8 è utilizzato come prefisso di formato per indirizzi Multicast.
Indirizzi Anycast
Anche con gli indirizzi Anycast si possono indirizzare gruppi di dispositivi destinatari. Diversamente dagli indirizzi Multicast, i pacchetti non vengono inviati a tutti i membri del gruppo Anycast, ma solo al dispositivo più vicino al mittente. Gli indirizzi Anycast si usano pertanto nell’ambito del bilanciamento del carico e della stabilità.
Il formato di pacchetto dell’indirizzo IPv6
Rispetto all’IPv4, l’indirizzo IPv6 si contraddistingue per un formato di pacchetto semplificato. Per semplificare l’elaborazione dei blocchi IPv6, viene stabilita una lunghezza standard per l’header di 40 byte (320 bit). Le informazioni opzionali, necessarie solo in casi particolari, sono immagazzinate negli Extension Header (EH) (estensioni della sezione intestazione), che sono integrati tra lo spazio riservato ai dati dell’intestazione e l’effettivo carico utile (payload). Così si possono aggiungere opzioni senza che debba essere modificato l’header.
L’header del pacchetto dell’IPv6 comprende così solo 8 campi, al contrario dell’IPv4 dove ne vengono utilizzati tredici. La struttura di un header dell’IPv6 si può rappresentare schematicamente come di seguito:
Ogni campo nell’header dell’IPv6 comprende specifiche informazioni, che vengono utilizzate per la trasmissione dei pacchetti tramite IP di rete:
Campo | Spiegazione |
---|---|
Version | Comprende la versione del protocollo IP in base al quale è stato creato il pacchetto IP (4 bit) |
Traffic Class | Serve per l’assegnazione delle priorità (8 bit) |
Flow Label | I pacchetti contrassegnati con lo stesso Flow Label vengono elaborati alla stessa maniera (20 bit) |
Payload Length | La lunghezza del contenuto inclusivo di estensione, ma senza dati di intestazione (16 bit) |
Next Header | Indica il protocollo del livello superiore, quello di trasporto (8 bit) |
Hop Limit | Indica il numero massimo di stazioni intermedie (router) che può attraversare un pacchetto prima che non sia più valido (8 bit) |
Source IP Address | Comprende l’indirizzo del mittente (128 bit) |
Destination IP Address | Comprende l’indirizzo del destinatario (128 bit) |
Tramite l’introduzione di Extension Header si possono implementare le informazioni opzionali nei pacchetti IPv6 in modo più effettivo rispetto a quanto accadeva con l’IPv4. In genere un pacchetto viene letto solo una volta arrivato a destinazione, visto che il router durante il percorso di consegna di un pacchetto dell’Extension Header dell’IPv6 non lo verifica né lo elabora. Così con l’IPv6 risulta un sostanziale miglioramento della performance del router rispetto allo standard IPv4, che richiede di verificare le informazioni opzionali di tutti i router durante il percorso di consegna. Tra le informazioni che possono comprendere le estensioni dell’header dell’IPv6 rientrano le opzioni sui nodi, le opzioni di destinazione, quelle del routing e quelle in merito alla frammentazione, all’autenticazione e alla crittografia (IPsec).
Funzionalità dell’Internet Protocol Version 6
La maggior parte degli utenti associa con l’IPv6 soprattutto l’estensione dello spazio di indirizzamento. Il nuovo standard però offre moltissime altre funzioni con le quali si riescono a superare le limitazioni principali dell’IPv4, come ad esempio la conseguente realizzazione del principio end-to-end, che rende superflua la conversione tramite NAT e semplifica così notevolmente l’implementazione dei protocolli di sicurezza grazie ad IPsec.
L’IPv6 permette inoltre una configurazione di indirizzamento automatica via Neighbor Discovery e l’assegnazione di più indirizzi IPv6 univoci per ogni host con diversi ambiti di validità per riprodurre le diverse tipologie di rete. Oltre ad un’assegnazione di indirizzamento ottimale, la semplificazione dell’header del pacchetto e l’immagazzinamento di informazioni opzionali per la trasmissione dei pacchetti negli Header Extension sono responsabili per un routing più veloce.
Con QoS (Quality of Service) l’IPv6 dispone di un meccanismo di sicurezza integrato dei servizi, che si occupa di priorizzare i pacchetti più urgenti e di strutturare la gestione dei pacchetti in modo più efficiente. Inoltre i campi “Traffic Class” e “Flow Label” vengono adattati direttamente al metodo QoS.
Da considerare più criticamente è invece l’assegnazione degli indirizzi IP ai dispositivi di rete locali e la pratica di generare un Interface Identifier univoco basandosi sugli indirizzi MAC. Con Privacy Extentions è stata creata quindi un’alternativa al formato di indirizzo modificato EUI-64; visto che per creare il percorso di un utente, basta essenzialmente anche il prefisso di un indirizzo IPv6, sarebbe consigliabile, in aggiunta a Privacy Extentions, un prefisso assegnato dinamicamente dall’ISP per la tutela dell’anonimità.