IPv6: Overview Generale

Nel 1992 con l’avvio delle attività commerciali su Internet inizia l’assegnazione massiva degli indirizzi IPv4 diventa evidente che occorreva un nuova versione dell’Internet Protocol in grado di gestire un numero maggiore di indirizzi. Tali esigenze hanno spinto l’IETF (Internet Engineering Task Force) a mettere a punto le raccomandazioni per la creazione della generazione successiva di IP (IPng) contenute nella RFC 1752 – “The Recommendation for the IP Next Generation Protocol” pubblicata nel 1995. Successivamente, il 20 luglio 2004, l’ICANN (Internet Corporation for Assigned Names and Numbers) rende disponibile il protocollo IPv6 sui root nameserver e dal 4 febbraio 2008 inizia l’inserimento dei primi indirizzi IPv6 nel sistema di risoluzione dei nomi. Nel frattempo la scarsità di indirizzi IPv4 appare sempre più pressante dal momento che negli ultimi anni il numero di dispositivi connessi a Internet è aumentato (PC, Table, Smartphone) e con essi anche il numero di interfacce di rete che possono essere utilizzate (Ethernet, WiFi, Mobile Broadband). Il 3 febbraio 2011 la IANA (Internet Assigned Numbers Authority) assegna gli ultimi blocchi di indirizzo IPv4 ai 5 RIR (Regional Internet Registry).

Caratteristiche del protocollo IPv6

La caratteristica più rilevante dell’IPv6 rispetto all’IPv4 è quella della lunghezza dell’indirizzo di rete che passa da 32 Bit a 128 Bit come definito nelle RFC 2373 – IP Version 6 Addressing Architecture e RFC 2374 – An IPv6 Aggregatable Global Unicast Address Format. Questo significa che il numero di indirizzi dell’IPv6 è pari a 2^128 (~3,4 x 10^38) contro i 2^32 (~ 4,2 miliardi) dell’IPv4. Tenendo conto che come per l’IPv4, anche l’IPv6 prevede l’uso di prefissi per identificare la rete e che tali prefissi normalmente non sono più lunghi di 64 bit, per ogni rete è possibile assegnare 2^64 indirizzi (tenendo conto che nel 2011 la popolazione mondiale era di 7 miliardi l’IPv6 consente di avere circa 2.6 miliardi di indirizzi per persona per ciascuna rete).

Altre importati caratteristiche dell’IPv6 sono:

  • Maggiore flessibilità ed efficienza nell’assegnazione degli indirizzi che comporta un minore spreco di indirizzi grazie all’abbandono del concetto delle Classi. Per molte organizzazioni una rete di classe A era troppo grande ed una di classe C troppo piccola, quindi sono state costrette a richiedere un blocco di indirizzi in classe B, ma anche una rete di classe B è ancora troppo grande per diverse organizzazioni infatti più del 50% delle organizzazioni a cui è stato assegnato un indirizzo di classe B non hanno più di 50 host.
  • Maggiore efficienza nell’aggregazione che implica tabelle di routing più piccole grazie all’introduzione di una tipologia di indirizzi globali di tipo aggregabile (le decisioni sull’instradamento dei pacchetti IPv6 vengono effettuate mediante la regola del “longest matching prefix” introdotta da CIDR).
  • Introduzione un nuovo tipo di indirizzamento l’anycast.
  • Semplificazione dell’header del pacchetto IPv6 in cui sono stati eliminati o resi opzionali alcuni dei campi che erano presenti in IPv4 con lo scopo di eliminare la necessita da parte dei router di riprocessare la stessa parte e ridurre la dimensione del pacchetto.
  • Miglior supporto per le opzioni al fine di garantire una trasmissione più efficiente e limiti meno stringenti sulle dimensioni delle opzioni per consentire una maggior flessibilità per l’introduzione di nuove future opzioni.
  • Supporto al QoS (Quality of Service) che permette l’identificazione di gruppi di dati su cui applicare gestioni differenti del traffico (si pensi ad esempio all’impiego di Internet per applicazioni multimediali e/o “real-time”).
  • Standard IPsec implementato direttamente a livello IPv6.
  • Eliminazione teorica della necessità del NAT (Network Address Translation).
  • Autoconfigurazione dell’indirizzo IP.
  • Protocollo ICMPv6 più ricco di funzionalità.
  • Funzionalità di transizione IPv4 to IPv6
    • Dual Stack/Dual Stack-lite
    • Tunneling (Tunnel statici, 6to4, 6rd, TEREDO, ISATAP, 6PE)

Formato degli Indirizzi IPv6

Come visto precedentemente gli indirizzi IPv6 sono composti da 128 bit e normalmente rappresentati come 8 campi di 4 cifre esadecimali (16 Bit) con le lettere minuscole come indicato nella RFC 5952 – A Recommendation for IPv6 Address Text Representation. Di seguito un esempio:

2031:0000:130f:0000:0000:09d0:876a:120a

Una prima differenza con l’IPv4 è che la formattazione di un indirizzo IPv6 non fissa, ma può essere semplificata  in base alle seguenti tre regole definite nella RFC 5952  – A Recommendation for IPv6 Address Text Representation.

Regola 1: Gli “0” iniziali in ogni campo sono opzionali.

2031:0000:130f:0000:0000:09d0:876a:120a -> 2031:0000:130f:0000:0000:9d0:876a:120a

Regola 2:Se uno dei campi è composto da una sequenza di quattro zeri, può essere contratto ad un solo zero.

2031:0000:130f:0000:0000:09d0:876a:120a -> 2031:0:130F:0:0:09d0:876a:120a

Regola 3: Uno o più gruppi consecutivi di “0” possono essere omessi e sostituiti con “::”, ma la notazione “::” è permessa una sola volta nell’indirizzo in modo da ridurlo il più possibile (è possibile utilizzare una sola volta la notazione “::” in quanto rappresenta in modo univoco il numero di campi mancante che per riportare a 8 il totale)

2031:0000:130f:0000:0000:09d0:876a:120a -> 2031:0000:130f::09d0:876a:120a

Di seguito un esempio applicando le tre regole contemporaneamente:

2031:0000:130f:0000:0000:09d0:876a:120a -> 2031:0:130f::9d0:876a:120a

Nel caso in cui occorra specificare un indirizzo IPv6 all’interno di un URL occorre racchiuderlo tra parentesi quadre.

http://[ 2031:0:130f::9d0:876a:120a]:8888/index.htm

La rappresentazione di una rete IPv6 è analoga alla classica notazione IPv4, ovvero basata sull’utilizzo di un prefisso per le route e gli identificatori di subnet espressi nella stessa notazione CIDR (Classless Inter-Domain Routing) di IPv4. Un prefisso viene espresso nella notazione indirizzo/lunghezza-prefisso:

Rete IPv6 = prefisso / lunghezza-prefisso

Nel caso in cui la lunghezza del prefisso non sia un multiplo di 16 bit il prefisso va completato con degli zeri fino a completare il gruppo di 4 cifre

Rappresentazione valida: 2b01:db8:0:cd30::/60

Rappresentazione non valida: 2b01:db8::cd30/60

IPv6 non supporta le subnet mask, ma solamente la notazione lunghezza del prefisso.

Tipi di Indirizzi IPv6

Il protocollo IPv6 prevede tre tipi di indirizzi:

  • Unicast ovvero un indirizzo IP che identifica una singola interfaccia di rete. Un pacchetto con un indirizzo IP unicast è inviato solo all’interfaccia con quell’indirizzo. Per gestire i sistemi di bilanciamento del carico, l’RFC 3513 – Internet Protocol Version 6 (IPv6) Addressing Architecture consente a più interfacce di utilizzare lo stesso indirizzo se risultano come una singola interfaccia per l’implementazione IPv6 sull’host.
  • Multicast ovvero un indirizzo IP che identifica un insieme di interfacce di rete, tipicamente appartenenti a host diversi. Un pacchetto con un indirizzo IP multicast è inviato a tutte le interfacce identificate con quell’indirizzo. Gli indirizzi multicast vengono utilizzati per le comunicazioni uno-a-molti. con il recapito a più interfacce.
  • Anycast ovvero un indirizzo IP che identifica un insieme di interfacce di rete. Un pacchetto con un indirizzo IP anycast è inviato ad una sola delle interfacce di rete identificata dall’indirizzo, ovvero quella più vicina in termini di distanze di routing. Gli indirizzi anycast vengono utilizzati per le comunicazioni uno-a-uno-di-molti, con il recapito a una singola interfaccia.

Gli indirizzi IPv6 identificano sempre le interfacce di rete e non i nodi (router e/o host). I nodi vengono invece identificati da qualsiasi indirizzo unicast assegnato a una delle relative interfacce di rete.

Gli indirizzi broadcast non vengono più utilizzati, infatti l’RFC 3513 – Internet Protocol Version 6 (IPv6) Addressing Architecture non definisce un indirizzo broadcast (tutti i tipi di assegnazioni di indirizzi broadcast IPv4 vengono eseguiti in IPv6 utilizzando indirizzi multicast).

Indirizzi IPv6 Unicast

Gli indirizzi possono essere dei seguenti tipi:

  • Indirizzi Global (o globali)
  • Indirizzi Link-local (o locali rispetto al collegamento)
  • Indirizzi Site-local (o locali rispetto al sito) [Deprecati]]
  • Indirizzi Unique Local (ULA) [Sostituiscono i Site-local]
  • Indirizzi Speciali (Unspecified, Loopback)
  • Indirizzi di compatibilità

Indirizzi Unicast Globali (Global)

Gli indirizzi IPv6 unicast globali equivalgono agli indirizzi IPv4 pubblici e sono quindi instradabili e raggiungibili a livello globale nella rete Internet su base IPv6. La rete Internet su base IPv6 è stata progettata interamente per supportare l’assegnazione di indirizzi e il routing efficiente e gerarchico. L’ambito (ovvero l’area della rete IPv6 all’interno della quale l’indirizzo è univoco) di un indirizzo unicast globale è l’intera rete Internet IPv6 (la rete Internet su base IPv4 invece è una combinazione di routing semplice e gerarchico).

La figura 1 mostra la struttura di un indirizzo unicast globale in base alla definizione della RFC 3587 – IPv6 Global Unicast Address Format.

2015_02_07_ipv6-01

Figura 1 – Struttura Unicast Global

Gli indirizzi unicast globali contengono quattro campi:

  • I tre bit di ordine superiore sono impostati su 001, quindi il prefisso dell’indirizzo per gli indirizzi globali assegnati è 2000::/3.
  • Il prefisso di routing globale individua un sito specifico di un’organizzazione. La combinazione di tre bit fissi e del prefisso di routing globale di 45 bit crea un prefisso di sito da 48 bit, che viene assegnato a un singolo sito di un’organizzazione. Tramite questo prefisso, i router sulla rete Internet IPv6 inoltrano il traffico IPv6 che corrisponde al prefisso da 48 bit ai router del sito dell’organizzazione.
  • L’ID di subnet viene utilizzato all’interno di un sito dell’organizzazione per identificare le subnet. Questo campo è formato da 16 bit e il sito dell’organizzazione può utilizzare tali bit all’interno del proprio sito per creare 65.536 subnet o più livelli di gerarchia per l’assegnazione di indirizzi e un’infrastruttura di routing efficiente.
  • L’ID di interfaccia indica l’interfaccia in una specifica subnet all’interno del sito. Questo campo è formato da 64 bit.

I campi all’interno dell’indirizzo unicast globale creano una struttura a tre livelli:

  • La topologia pubblica è l’insieme di provider di servizi Internet (ISP) che garantiscono l’accesso alla rete Internet su base IPv6.
  • La topologia del sito è l’insieme di subnet all’interno del sito di un’organizzazione.
  • L’identificatore di interfaccia individua un’interfaccia specifica in una subnet all’interno del sito di un’organizzazione.

Per ulteriori informazioni sugli indirizzi unicast globali, vedere l’RFC 3587 – IPv6 Global Unicast Address Format.

Indirizzi Unicast Locali Rispetto al Collegamento (Link-Local)
I nodi utilizzano gli indirizzi locali rispetto al collegamento quando comunicano con nodi adiacenti sullo stesso collegamento (per esempio nelle comunicazioni tra host in una rete IPv6 con collegamento singolo senza router).

Gli indirizzi locali rispetto al collegamento sono equivalenti agli indirizzi IPv4 APIPA (Automatic Private IP Addressing) configurati automaticamente nei computer che eseguono OS Windows. Gli indirizzi APIPA utilizzano il prefisso 169.254.0.0/16. L’ambito di un indirizzo locale rispetto al collegamento è il collegamento locale.

Un indirizzo locale rispetto al collegamento è necessario per i processi di individuazione dei router adiacenti e viene sempre configurato automaticamente, anche in assenza di tutti gli altri indirizzi unicast.

La figura 2 mostra la struttura dell’indirizzo locale rispetto al collegamento.

2015_02_07_ipv6-02

Figura 2 – Struttura Unicast Link-Local

Gli indirizzi locali rispetto al collegamento iniziano sempre con fe80. Quindi considerando l’identificatore di interfaccia da 64 bit, il prefisso per gli indirizzi locali rispetto al collegamento è sempre fe80::/64. Un router IPv6 non inoltra mai il traffico locale rispetto al collegamento oltre il collegamento stesso.

Gli indirizzi locali rispetto al collegamento vengono generati automaticamente su ogni interfaccia calcolando l’ID di interfaccia a partire dal MAC Address mediante l’algoritmo IEEE’s 64-bit Extended Unique Identifier (EUI-64).

fe80:0:0:0:<ID di interfaccia>

Indirizzi Unicast Locali Rispetto al Sito (Site-Local)
Gli indirizzi locali rispetto al sito sono equivalenti allo spazio di indirizzi privato IPv4 (10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16).

Le Intranet private prive di una connessione diretta con routing alla rete Internet IPv6, ad esempio, possono utilizzare gli indirizzi locali rispetto al sito senza creare conflitti con gli indirizzi globali.

Gli indirizzi locali rispetto al sito non sono raggiungibili da altri siti e i router non possono inoltrare il traffico locale rispetto al sito all’esterno di tale sito.

Gli indirizzi locali rispetto al sito possono essere utilizzati in aggiunta agli indirizzi globali. L’ambito di un indirizzo locale rispetto al sito è il sito stesso.

Diversamente dagli indirizzi locali rispetto al collegamento, gli indirizzi locali rispetto al sito non vengono configurati automaticamente.

La figura 3 mostra la struttura dell’indirizzo locale rispetto al sito.

2015_02_07_ipv6-03

Figura 3 – Struttura Unicast Site-Local

I primi 10 bit di un indirizzo locale rispetto al sito inizia con fec0::/10. Dopo i primi 10 bit fissi segue un identificatore di subnet da 54 bit (campo dell’ID di subnet) che indica i 54 bit che possono essere utilizzati per creare un’infrastruttura di routing gerarchica e riepilogabile all’interno del sito. Dopo il campo dell’ID di subnet è presente un campo dell’ID di interfaccia da 64 bit che identifica una specifica interfaccia in una subnet.

L’ RFC 3879 – Deprecating Site Local Addresses ha dichiarato formalmente obsoleto l’uso degli indirizzi locali rispetto al sito per le future implementazioni IPv6.

Indirizzi Unicast Unique Local

Gli indirizzi Unique Local sostituiscono gli indirizzi Site Local che potevano creare ambiguità a causa del fatto che lo stesso prefisso poteva essere utilizzato per individuare site diversi in un’organizzazione ovvero il prefisso di un indirizzo Site Local poteva essere duplicato. Questa possibile duplicazione del prefisso ovviamente generava complessità per le applicazioni e la configurazione della rete sui router.

Gli indirizzi Unique Local sono instradabili e raggiungibili a livello di Site in una rete Intranet su base IPv6.

Gli indirizzi Unique Local sono unici su tutti i Sites di un’organizzazione e sono definiti nella RFC 4193 – Unique Local IPv6 Unicast Addresses; la figura 4 mostra la struttura dell’indirizzo Unique Local.

2015_02_07_ipv6-04

Figura 4 – Struttura Unicast Unique Local

I primi 7 bit di un indirizzo Unique Local inizia con fc00::/7. Dopo i primi 7 bit fissi segue il flag L che se impostato a 1 indica un indirizzo locale, mentre il valore 0 non è al momento definito, quindi gli indirizzi Unique Local con flag L=1 hanno prefisso fd00::/8.

Il Global ID di 40 bits identifica il Site in un’organizzazione ed è impostato in modo random assicurando così un prefisso unico di 48 bits per il Site.

Si noti che in questo modo gli indirizzi Unicast Global e gli indirizzi Unicast Unique Local presentano la stessa struttura con prefisso di 48 bits seguito poi da una Subnet ID di 16 Bit e l’ID di interfaccia di 64 Bit. In questo modo sarà possibile assegnare all’interfaccia un indirizzo Global e uno Unique Local che differiscono solo per il prefisso di 48 bits, ma con la stessa Subnet ID lo stesso Interface ID. La Subnet ID in un indirizzo Unique Local identifica una subnet all’interno di un Site.

Gli indirizzi Unique Local non sono instradabili e raggiungibili a livello globale nella rete Internet, il loro utilizzo è analogo alle classi private della versione IPv4.

Indirizzi IPv6 Speciali

Indirizzo non Specificato
L’indirizzo non specificato (0:0:0:0:0:0:0:0 oppure ::) indica l’assenza di un indirizzo (espresso in notazione IPv6 diventa ::/128). Tale indirizzo IPv6 è equivalente all’indirizzo non specificato IPv4 0.0.0.0

L’indirizzo non specificato viene in genere utilizzato come indirizzo di origine per i pacchetti che tentano di verificare l’univocità di un indirizzo provvisorio ad esempio nella richiesta iniziale verso DHCP per ottenere un indirizzo o nella Duplicate Address Detection (DAD).

Un indirizzo non specificato non viene mai assegnato a un’interfaccia o utilizzato come indirizzo di destinazione.

Indirizzo di Loopback
L’indirizzo di loopback (0:0:0:0:0:0:0:1 oppure ::1) viene utilizzato per identificare un’interfaccia di loopback allo scopo di consentire a un nodo di inviare i pacchetti a se stesso (espresso in notazione IPv6 diventa ::1/128). Tale indirizzo IPv6 è equivalente all’indirizzo di loopback IPv4 127.0.0.1.

I pacchetti destinati all’indirizzo di loopback non possono mai essere inviati tramite un collegamento o inoltrati da un router.

Indirizzi di Compatibilità
Tali indirizzi sono stati definiti per agevolare la migrazione da IPv4 a IPv6 e la coesistenza di entrambi i tipi di host:

  • Indirizzo compatibile con IPv4 (IPv4-Compatible): Gli indirizzi compatibili con IPv4, 0:0:0:0:0:0:w.x.y.z o ::w.x.y.z (dove w.x.y.z è la rappresentazione decimale puntata di un indirizzo IPv4 pubblico), vengono utilizzati dai nodi IPv6/IPv4 che comunicano mediante IPv6. I nodi IPv6/IPv4 supportano sia il protocollo IPv4 che IPv6. Se si utilizza un indirizzo compatibile con IPv4 come destinazione IPv6, il traffico IPv6 viene automaticamente incapsulato con un’intestazione IPv4 e inviato alla destinazione mediante l’infrastruttura IPv4. Gli indirizzi compatibili con IPv4 sono stati resi deprecati con l’RFC 4291 – IP Version 6 Addressing Architecture a favore deli indirizzi mappati a IPv4.
  • Indirizzo mappato a IPv4 (IPv4-Mapped): L’indirizzo mappato a IPv4, 0:0:0:0:0:ffff:w.x.y.z o ::ffff:w.x.y.z, viene utilizzato per rappresentare un nodo solo IPv4 in un nodo IPv6, esclusivamente per la rappresentazione interna. L’indirizzo mappato a IPv4 non viene mai utilizzato come indirizzo di origine o di destinazione di un pacchetto IPv6. Tali indirizzi sono utilizzati nei dispositivi dual stack ovvero in grado di intrepretare entrambe le versioni del protocollo IP (IPv4 e IPv6).
  • Indirizzo 6to4: L’indirizzo 6to4 viene utilizzato per la comunicazione tra due nodi che eseguono IPv4 e IPv6 su un’infrastruttura di routing IPv4. L’indirizzo 6to4 è formato dalla combinazione del prefisso 2002::/16 con i 32 bit di un indirizzo IPv4 pubblico del nodo, che determina un prefisso da 48 bit. 6to4 è una tecnica di tunneling descritta nella RFC 3056 – Connection of IPv6 Domains via IPv4 Clouds.
  • Indirizzo ISATAP: Gli indirizzi ISATAP sono utilizzati tra due nodi che eseguono sia IPv4 che IPv6 su un’infrastruttura di routing IPv4 e sono definiti nella RFC 5214 – Intra-Site Automatic Tunnel Addressing Protocol (ISATAP). Gli indirizzi ISATAP utilizzano l’ID di interfaccia amministrato localmente ::0:5efe:w.x.y.z, dove w.x.y.z è un indirizzo IPv4 unicast che include indirizzi pubblici e privati.
    L’ID di interfaccia ISATAP può essere combinato con qualsiasi prefisso da 64 bit che sia valido per gli indirizzi unicast IPv6, ad esempio il prefisso di indirizzo locale rispetto al collegamento (fe80::/64), prefissi locali rispetto al sito e prefissi globali.
  • Indirizzo Teredo: Gli indirizzi Teredo utilizzano il prefisso 3ffe:831f::/32. Dopo i primi 32 bit, gli indirizzi Teredo vengono utilizzati per codificare l’indirizzo IPv4 di un server Teredo, i contrassegni e la versione codificata dell’indirizzo esterno e della porta di un client Teredo. Un esempio di indirizzo Teredo è 3ffe:831f:ce49:7601:8000:efff:62c3:fffe. Gli indirizzi Teredo consentono di rappresentare un host quando si utilizza il meccanismo di tunneling automatico definito nella RFC 4380 – Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs).

Indirizzi IPv6 Multicast

Il traffico multicast IPv6 viene gestito in modo analogo a IPv4. I nodi IPv6 posizionati in modo arbitrario possono essere in ascolto del traffico multicast su indirizzi multicast IPv6 arbitrari. I nodi IPv6 possono essere in ascolto su più indirizzi contemporaneamente e possono aggiungersi o lasciare un gruppo multicast in qualsiasi momento.

Negli indirizzi multicast IPv6 i primi 8 bit sono impostati su 1111 1111, quindi un indirizzo IPv6 multicast inizia sempre con “ff”. Gli indirizzi multicast non possono essere utilizzati come indirizzi di origine o come destinazioni intermedie in un’intestazione routing.

Dopo i primi 8 bit, gli indirizzi multicast includono strutture aggiuntive per identificare i relativi contrassegni, l’ambito e il gruppo multicast.

La figura 5 mostra la struttura dell’indirizzo multicast IPv6.

2015_02_07_ipv6-05

Figura 5 – Struttura Multicast

I campi dell’indirizzo multicast sono i seguenti:

  • Contrassegni: Indica i contrassegni impostati per l’indirizzo multicast. La dimensione di questo campo è 4 bit. In base all’RFC 3513 – Internet Protocol Version 6 (IPv6) Addressing Architecture, l’unico contrassegno definito è Transient (T). Il contrassegno T utilizza il bit di ordine inferiore del campo Contrassegni. Se è impostato su 0, il contrassegno T indica che l’indirizzo multicast è un indirizzo noto assegnato in modo permanente da IANA (Internet Assigned Numbers Authority). Se è impostato su 1, il contrassegno T indica che l’indirizzo multicast è transitorio e non è stato assegnato in modo permanente da IANA.
  • Ambito: Indica l’ambito della rete IPv6 a cui è destinato il traffico multicast. La dimensione di questo campo è 4 bit. Oltre alle informazioni offerte dai protocolli di routing multicast, i router utilizzano l’ambito multicast per determinare se possono inoltrare il traffico multicast. I valori principali per il campo Ambito sono 1 (ambito locale rispetto all’interfaccia), 2 (ambito locale rispetto al collegamento) e 5 (ambito locale rispetto al sito).
    Il traffico con indirizzo multicast ff02::2, ad esempio, ha un ambito locale rispetto al collegamento. Un router IPv6 non inoltra mai questo traffico oltre il collegamento locale.
  • ID di gruppo: Identifica un gruppo multicast ed è univoco all’interno dell’ambito. La dimensione di questo campo è di 112 bit. Gli ID di gruppo assegnati in modo permanente sono indipendenti dall’ambito, mentre gli ID di gruppo transitori hanno valore solo per un ambito specifico. Gli indirizzi multicast da ff01:: a ff0f:: sono indirizzi noti e riservati.

Per identificare tutti i nodi per l’ambito locale rispetto all’interfaccia e locale rispetto al collegamento, vengono definiti gli indirizzi seguenti:

  • ff01::1 (indirizzo multicast di tutti i nodi con ambito locale rispetto all’interfaccia)
  • ff02::1 (indirizzo multicast di tutti i nodi con ambito locale rispetto al collegamento)

Per identificare tutti i router per gli ambiti locale rispetto all’interfaccia, locale rispetto al collegamento e locale rispetto al sito, vengono definiti gli indirizzi seguenti:

  • ff01::2 (indirizzo multicast di tutti i router con ambito locale rispetto all’interfaccia)
  • ff02::2 (indirizzo multicast di tutti i router con ambito locale rispetto al collegamento)
  • ff05::2 (indirizzo multicast di tutti i router con ambito locale rispetto al sito)

Con 112 bit per l’ID di gruppo, è possibile avere 2^112 ID di gruppo, ma a causa del modo in cui gli indirizzi IPv6 multicast vengono mappati agli indirizzi MAC Ethernet (Media Access Control) multicast, l’RFC 3513 – Internet Protocol Version 6 (IPv6) Addressing Architecture consiglia di assegnare l’ID di gruppo dai 32 bit di ordine inferiore dell’indirizzo IPv6 multicast e di impostare i restanti bit dell’ID di gruppo originale su 0. Utilizzando solo i 32 bit di ordine inferiore, ogni ID di gruppo viene mappato a un indirizzo MAC Ethernet multicast univoco.

La figura 6 mostra l’indirizzo IPv6 multicast consigliato con un ID di gruppo a 32 bit.

2015_02_07_ipv6-06

Figura 6 – Struttura IPv6 Multicast Consigliata

Indirizzo Nodi Richiesti

L’indirizzo dei nodi richiesti semplifica l’esecuzione efficiente di query per i nodi della rete durante la risoluzione dell’indirizzo.

In IPv4, il frame di richiesta ARP viene inviato alla rete broadcast a livello MAC, disturbando tutti i nodi nel segmento di rete, inclusi quelli che non eseguono IPv4.

IPv6 utilizza il messaggio di richiesta router adiacente per eseguire la risoluzione dell’indirizzo, ma anziché utilizzare l’indirizzo multicast di tutti i nodi con ambito locale rispetto al collegamento come destinazione del messaggio di richiesta router adiacente, che disturberebbe tutti i nodi IPv6 sul collegamento locale, viene utilizzato l’indirizzo multicast dei nodi richiesti.

La figura 7 mostra lo schema di come l’indirizzo multicast dei nodi richiesti include il prefisso ff02::1:ff00:0/104 e gli ultimi 24 bit dell’indirizzo IPv6 che viene risolto, ovvero il mapping degli indirizzi IPv6 unicast a indirizzi IPv6 dei nodi richiesti.

2015_02_07_ipv6-07

Figura 7 – Mapping IPv6

Ad esempio, per il nodo con l’indirizzo IPv6 locale rispetto al collegamento fe80::2aa:ff:fe28:9c5a, l’indirizzo dei nodi richiesti corrispondente è ff02::1:ff28:9c5a. Questo nodo è in ascolto del traffico multicast sull’indirizzo dei nodi richiesti ff02::1:ff28:9c5a e, per le interfacce che corrispondono a una scheda di rete fisica, registra l’indirizzo multicast corrispondente con la scheda di rete. Per risolvere l’indirizzo fe80::2aa:ff:fe28:9c5a nell’indirizzo a livello di collegamento, un nodo adiacente invia una richiesta di router adiacente all’indirizzo dei nodi richiesti FF02::1:FF28:9C5A.

Poiché viene utilizzato l’indirizzo multicast dei nodi richiesti, le risoluzioni degli indirizzi, che si verificano spesso su un collegamento, non devono utilizzare un meccanismo che disturba tutti i nodi della rete, ma solo alcuni nodi.

In pratica, a causa della relazione tra l’indirizzo MAC Ethernet, l’ID di interfaccia IPv6 e l’indirizzo multicast dei nodi richiesti, quest’ultimo funge da indirizzo pseudo unicast per garantire una risoluzione efficiente degli indirizzi.

Indirizzi IPv6 Anycast

Un indirizzo anycast viene assegnato a più interfacce. L’infrastruttura di routing inoltra i pacchetti che sono diretti a un indirizzo anycast all’interfaccia più vicina a cui è assegnato l’indirizzo anycast.

Per semplificare il recapito, l’infrastruttura di routing deve tenere traccia delle interfacce a cui sono stati assegnati indirizzi anycast e la relativa distanza in termini di metrica di routing. Gli indirizzi anycast vengono attualmente utilizzati solo come indirizzi di destinazione e vengono assegnati solo ai router.

Gli indirizzi anycast possono essere assegnati all’esterno dell’ambito dell’indirizzo unicast e l’ambito di un indirizzo anycast corrisponde all’ambito del tipo di indirizzo unicast da cui viene assegnato.

L’indirizzo Subnet-Router anycast è predefinito e necessario. Viene creato dal prefisso di subnet di un’interfaccia specifica.

Per creare un indirizzo Subnet-Router anycast, i bit nel prefisso di subnet sono fissati sui relativi valori appropriati e i bit restanti sono impostati su 0. A tutte le interfacce del router collegate a una subnet viene assegnato l’indirizzo Subnet-Router anycast per tale subnet. L’indirizzo Subnet-Router anycast viene utilizzato per comunicare con uno dei vari router collegati a una subnet remota.

Indirizzi IPv6 per un Host

Un host IPv4 con una singola scheda di rete in genere dispone di un solo indirizzo IPv4 assegnato a tale scheda.

Un host IPv6 in genere dispone di più indirizzi IPv6, anche con una sola interfaccia. Un host IPv6 viene assegnato agli indirizzi unicast seguenti:

  • Un indirizzo locale rispetto al collegamento per ogni interfaccia (Unicast Link-local).
  • Indirizzi unicast per ogni interfaccia, ad esempio un indirizzo locale rispetto al sito (Unicast Site-local) e uno o più indirizzi unicast globali (Unicast Global).
  • L’indirizzo di loopback (::1) per l’interfaccia di loopback.

In genere gli host IPv6 sono multihomed dal punto di vista logico in quanto dispongono almeno di due indirizzi mediante i quali possono ricevere pacchetti: un indirizzo locale rispetto al collegamento per il traffico del collegamento locale (Unicast Link-local) e un indirizzo instradabile globale o locale rispetto al sito (Unicast Site-local).

Ogni host, inoltre, è in ascolto del traffico sugli indirizzi multicast seguenti:

  • L’indirizzo multicast di tutti i nodi con ambito locale rispetto all’interfaccia (ff01::1).
  • L’indirizzo multicast di tutti i nodi con ambito locale rispetto al collegamento (ff02::1).
  • L’indirizzo dei nodi richiesti per ogni indirizzo unicast in ogni interfaccia.
  • Gli indirizzi multicast dei gruppi aggiunti in ogni interfaccia.

Indirizzi IPv6 per un Router

Un router IPv6 viene assegnato agli indirizzi unicast seguenti:

  • Un indirizzo locale rispetto al collegamento per ogni interfaccia (Unicast Link-local).
  • Indirizzi unicast per ogni interfaccia, ad esempio un indirizzo locale rispetto al sito (Unicast Site-local) e uno o più indirizzi unicast globali (Unicast Global).
  • Un indirizzo Subnet-Router anycast.
  • Ulteriori indirizzi anycast (facoltativo).
  • L’indirizzo di loopback (::1) per l’interfaccia di loopback.

Ogni router, inoltre, è in ascolto del traffico sugli indirizzi multicast seguenti:

  • L’indirizzo multicast di tutti i nodi con ambito locale rispetto all’interfaccia (ff01::1).
  • L’indirizzo multicast di tutti i router con ambito locale rispetto all’interfaccia (ff01::2).
  • L’indirizzo multicast di tutti i nodi con ambito locale rispetto al collegamento (ff02::1).
  • L’indirizzo multicast di tutti i router con ambito locale rispetto al collegamento (ff02::2).
  • L’indirizzo multicast di tutti i router con ambito locale rispetto al sito (ff05::2).
  • L’indirizzo dei nodi richiesti per ogni indirizzo unicast in ogni interfaccia.
  • Gli indirizzi multicast dei gruppi aggiunti in ogni interfaccia.

Riepilogo Struttura Indirizzi IPv6

Tipo indirizzo

Parte inziale dell’indirizzo

Unicast Global (o globale)

2000::/3

Unicast Link-local (o locale rispetto al collegamento)

fe80::/10

Unicast Site-local (o locale rispetto al sito)

fec0::/10

Unicast Unique Local

fc00::/7 o fd00::/8 con flag L=1 che identifica gli indirizzi locali

Speciale Unspecified

::/128

Speciale Loopback

::1/128

Multicast

ff00::/8

Multicast nodi richiesti

ff02::1:ff00:0/104

Anycast

IPv4-Compatible IPv6 ( o compatibile con IPv4)

::/96

IPv4-Mapped IPv6 (o compatibile mappato a IPv4)

::ffff:0:0/96

Compatibile 6to4

2002::/16

Compatibile ISATAP

Compatibile Teredo

3ffe:831f::/32

Conclusioni

IPv6 non è compatibile con la versione precedente IPv4. Un nodo solo IPv6 non può comunicare con un nodo solo IPv4. Di conseguenza, è necessaria un’attenta transizione da una rete solo IPv4 a una rete in grado di supportare sia IPv4 sia IPv6 nativo.

Con l’aumento nella rete del numero di nodi e applicazioni abilitati per IPv6, la maggior parte del traffico in rete passa nel tempo da prevalentemente IPv4 a prevalentemente IPv6. Questo è l’obiettivo corrente di una strategia di transizione a IPv6.

A causa dell’attuale prevalenza di nodi, dispositivi, applicazioni e sistemi di gestione di rete che supportano solo IPv4, con poche eccezioni, l’obiettivo della strategia di transizione a IPv6 sarà eseguire la migrazione da una rete solo IPv4 a una rete in grado di supportare traffico sia IPv4 che IPv6, non la migrazione a una rete solo IPv6.

Per consentire l’adeguamento il protocollo IPv4 verrà ancora utilizzato circa fino al 2025, ma appare evidente che nei prossimi anni sarà bene valutare come adottare l’IPv6 all’interno della propria infrastruttura soprattutto se questa espone servizi in Internet.

Riferimenti