18.2. IPv6, la generazione futura di Internet

A seguito dell'introduzione del WWW (World Wide Web), negli ultimi 15 anni si è verificata una crescita eccezionale della diffusione di Internet ed è aumentato conseguentemente il numero di computer che comunicano tramite TCP/IP. Da quando Tim Berners-Lee presso il CERN (http://public.web.cern.ch, in lingua inglese) inventò il WWW nel 1990, il numero degli host su Internet è passato da alcune migliaia a circa cento milioni di unità.

Come accennato in precedenza, un indirizzo IPv4 è composto solo da 32 bit. Inoltre, vengono persi numerosi indirizzi IP che non possono essere usati a causa della modalità con cui sono organizzate le reti. Il numero di indirizzi disponibili in una sottorete corrisponde a 2 elevato alla potenza del numero di bit, meno 2. In una sottorete sono disponibili, ad esempio, 2, 6 o 14 indirizzi. Per eseguire la connessione di 128 host a Internet, ad esempio, è necessaria una sottorete con 256 indirizzi IP, di cui solo 254 sono utilizzabili poiché due indirizzi IP sono necessari per la struttura della stessa sottorete, ovvero l'indirizzo di diffusione e l'indirizzo di rete di base.

Con l'attuale protocollo IPv4 viene normalmente utilizzato DHCP o NAT (Network Address Translation) come meccanismo per sopperire alla potenziale carenza di indirizzi. Insieme alla convenzione di mantenere separati gli spazi di indirizzamento pubblico e privato, questi metodi sono sicuramente in grado di attenuare tale carenza. Esiste tuttavia un problema legato alla configurazione che risulta estremamente impegnativa sia in fase d'impostazione che di manutenzione. Per configurare un host in una rete IPv4, è necessario disporre di numerosi elementi dell'indirizzo, ad esempio l'indirizzo IP dello stesso host, la maschera di sottorete, l'indirizzo del gateway e, probabilmente, l'indirizzo del server dei nomi. Tutti questi elementi devono essere noti e non possono essere dedotti da altre fonti.

Con il protocollo IPv6, invece, sia la carenza di indirizzi che la complessità della configurazione dovrebbero essere completamente superate. Nelle sezioni seguenti vengono fornite ulteriori informazioni sui miglioramenti e sui vantaggi introdotti dalla tecnologia IPv6, oltre che sulla transizione dal protocollo precedente a quello nuovo.

18.2.1. Vantaggi

Il miglioramento più importante e tangibile introdotto dal nuovo protocollo è l'enorme espansione dello spazio di indirizzamento disponibile. Un indirizzo IPv6 è composto da valori di 128 bit anzichè dei tradizionali 32 bit e ciò consente una disponibilità di milioni di miliardi di indirizzi IP.

Gli indirizzi IPv6 sono tuttavia diversi da quelli della versione precedente del protocollo non solo per quanto riguarda la lunghezza, ma anche per la struttura interna che può includere informazioni più specifiche sui sistemi e sulle reti a cui appartengono. Per ulteriori informazioni sull'argomento, fare riferimento alla Sezione 18.2.2, "Tipi di indirizzi e struttura".

Di seguito è riportato un elenco di alcuni dei vantaggi offerti dal nuovo protocollo:

Configurazione automatica

Con IPv6 la rete diventa compatibile "Plug and Play" e ciò significa che i nuovi sistemi si integrano nella rete (locale) senza richiedere alcun intervento di configurazione manuale. Il nuovo host utilizza il proprio meccanismo di configurazione automatica per rilevare l'indirizzo dalle informazioni rese disponibili dai router vicini sulla base di un protocollo di rilevazione del router vicino (ND). Questo metodo non richiede l'intervento dell'amministratore, né la gestione di un server centrale per l'allocazione degli indirizzi e ciò rappresenta un ulteriore vantaggio rispetto al protocollo IPv4 per il quale l'allocazione automatica degli indirizzi richiede un server DHCP.

Mobilità

Con IPv6 è possibile assegnare contemporaneamente più indirizzi alla stessa interfaccia di rete. In questo modo gli utenti possono accedere facilmente a diverse reti, in modo analogo ai servizi di roaming internazionali offerti dalle società di telefonia cellulare. Quando si utilizza un cellulare in un altro paese, viene stabilita automaticamente la connessione a un servizio locale non appena si entra nella relativa area di copertura, consentendo quindi di ricevere ovunque chiamate allo stesso numero e di effettuare chiamate come nel proprio paese.

Comunicazione sicura

Con IPv4 la sicurezza della rete viene implementata mediante una funzione aggiuntiva, mentre tra le funzionalità di base offerte da IPv6 è disponibile IPSec che consente la comunicazione tra i sistemi attraverso un tunnel sicuro ed evita l'intercettazione dei dati su Internet.

Compatibilità con versioni precedenti

È realisticamente impossibile che sull'intera rete Internet venga effettuata una transizione in massa da IPv4 a IPv6, pertanto è fondamentale che entrambi i protocolli siano in grado di coesistere non solo su Internet, ma anche in uno stesso sistema. Questo aspetto è assicurato da indirizzi compatibili, infatti gli indirizzi IPv4 possono essere facilmente convertiti in indirizzi IPv6, e dall'uso di numerosi tunnel. Vedere la Sezione 18.2.3, "Coesistenza di IPv4 e IPv6". Per supportare entrambi i protocolli contemporaneamente, nei sistemi è inoltre possibile utilizzare una tecnica IP a doppio stack, ovvero due stack di rete mantenuti completamente separati per evitare qualsiasi interferenza tra le due versioni del protocollo.

Servizi personalizzati mediante il multicast

Con IPv4 è necessario che alcuni servizi, ad esempio SMB, diffondano i pacchetti a tutti gli host della rete locale. IPv6 consente invece un approccio molto più granulare in quanto i server possono indirizzare i pacchetti agli host mediante il multicast, ovvero a più host nell'ambito di un gruppo. Questa tecnica è diversa rispetto all'indirizzamento a tutti gli host mediante la diffusione o a ogni singolo host mediante il multicast. A quali host vengano indirizzati i pacchetti nell'ambito di un gruppo dipende dall'applicazione in uso. Sono disponibili alcuni gruppi di indirizzamento predefiniti, ad esempio il gruppo di multicast a tutti i server dei nomi o il gruppo di multicast a tutti i router.

18.2.2. Tipi di indirizzi e struttura

Come accennato in precedenza, nell'attuale protocollo IP esistono due importanti aspetti negativi. La carenza di indirizzi IP aumenta costantemente, mentre la configurazione della rete e la gestione delle tabelle degli instradamenti stanno diventando task sempre più complessi e gravosi. IPv6 consente di risolvere il primo problema mediante l'espansione dello spazio di indirizzamento a 128 bit e di contrastare il secondo con l'introduzione di una struttura di indirizzamento gerarchica unita a tecniche sofisticate di allocazione degli indirizzi di rete nonché MultiHome, ovvero la capacità di assegnare più indirizzi a un unico dispositivo per l'accesso a più reti.

In relazione a IPv6 è inoltre utile conoscere i tre diversi tipi di indirizzi supportati:

Unicast

Gli indirizzi di questo tipo vengono associati a un'unica interfaccia di rete. I pacchetti con tale indirizzo vengono consegnati a una sola destinazione. Gli indirizzi unicast vengono di conseguenza utilizzati per il trasferimento di pacchetti a singoli host sulla rete locale o su Internet.

Multicast

Gli indirizzi di questo tipo sono correlati a un gruppo di interfacce di rete. I pacchetti con tale indirizzo vengono consegnati a tutte le destinazioni appartenenti al gruppo. Gli indirizzi multicast vengono utilizzati soprattutto da alcuni servizi di rete per comunicare con determinati gruppi di host in una maniera ben precisa.

Anycast

Gli indirizzi di questo tipo sono correlati a un gruppo di interfacce. I pacchetti con tale indirizzo vengono consegnati al membro del gruppo che si trova più vicino al mittente, in base ai principi del protocollo di instradamento sottostante. Gli indirizzi anycast vengono utilizzati per consentire agli host di individuare più facilmente i server che offrono determinati servizi in una data area della rete. Tutti i server dello stesso tipo dispongono dello stesso indirizzo anycast. Ogni volta che un host richiede un servizio, riceve una risposta dal server più vicino, secondo quanto determinato dal protocollo di instradamento. In caso di un errore qualsiasi di questo server, viene selezionato automaticamente il secondo server più vicino, quindi il terzo e così via.

Un indirizzo IPv6 è composto da otto campi di quattro cifre, ognuno dei quali rappresenta 16 bit, espressi in notazione esadecimale. I campi sono inoltre separati da due punti (:). Eventuali byte zero iniziali in un determinato campo possono essere scartati, mentre gli zeri all'interno o alla fine del campo devono essere mantenuti. Secondo un'ulteriore convenzione, più di quattro byte zero consecutivi possono essere rappresentati da un doppio carattere due punti. È tuttavia consentito utilizzare un solo :: per indirizzo. Questo tipo di notazione stenografica è illustrato nell'Esempio 18.3, "Indirizzo IPv6 di esempio", dove le tre righe rappresentano lo stesso indirizzo.

Esempio 18.3. Indirizzo IPv6 di esempio

fe80 : 0000 : 0000 : 0000 : 0000 : 10 : 1000 : 1a4
fe80 :    0 :    0 :    0 :    0 : 10 : 1000 : 1a4
fe80 :                           : 10 : 1000 : 1a4

A ogni parte di un indirizzo IPv6 è associata una funzione specifica. I primi byte formano il prefisso e specificano il tipo di indirizzo. La parte centrale rappresenta la porzione relativa alla rete, ma potrebbe essere inutilizzata. La parte finale dell'indirizzo è relativa all'host. Con IPv6 la maschera di rete viene definita mediante l'indicazione della lunghezza del prefisso dopo una barra alla fine dell'indirizzo. Nell'indirizzo, come illustrato nell'Esempio 18.4, "Indirizzo IPv6 che specifica la lunghezza del prefisso", è inclusa l'informazione che i primi 64 bit formano la parte relativa alla rete e gli ultimi 64 bit la parte relativa all'host. In altre parole, 64 indica che la maschera di rete viene completata con 64 valori di 1 bit a partire da sinistra. Come avviene per la versione IPv4, l'indirizzo IP viene combinato mediante AND con i valori della maschera di rete per determinare se l'host si trova nella stessa sottorete o in un'altra rete.

Esempio 18.4. Indirizzo IPv6 che specifica la lunghezza del prefisso

fe80::10:1000:1a4/64

IPv6 riconosce numerosi tipi predefiniti di prefissi, alcuni dei quali sono illustrati nella Tabella 18.4, "Vari prefissi IPv6".

Tabella 18.4. Vari prefissi IPv6

Prefisso (esadecimale)

Definizione

00

Indirizzi IPv4 e indirizzi di compatibilità IPv4 su IPv6. Vengono utilizzati per mantenere la compatibilità con IPv4 e richiedono comunque un router in grado di convertire i pacchetti IPv6 in pacchetti IPv4. Anche molti altri indirizzi speciali, ad esempio quello per il dispositivo di loopback, hanno questo prefisso.

2 o 3 come prima cifra

Indirizzi unicast globali aggregabili. Come avviene per IPv4, è possibile assegnare un'interfaccia per formare una parte di una determinata sottorete. Attualmente sono disponibili gli spazi di indirizzamento seguenti: 2001::/16 (spazio di indirizzamento di qualità produzione) e 2002::/16 (spazio di indirizzamento 6to4).

fe80::/10

Indirizzi di collegamento locali. Non essendo necessario instradare gli indirizzi con questo prefisso, dovranno essere raggiungibili solo dall'interno della stessa sottorete.

fec0::/10

Indirizzi del sito locali. Possono essere instradati, ma solo all'interno della rete dell'organizzazione alla quale appartengono. Sono in effetti l'equivalente di IPv6 dell'attuale spazio di indirizzamento di rete privata, ad esempio 10.x.x.x.

ff

È il prefisso per gli indirizzi multicast.

Un indirizzo unicast consiste di tre componenti di base:

Topologia pubblica

La prima parte, che contiene inoltre uno dei prefissi sopra indicati, viene utilizzata per l'instradamento dei pacchetti su Internet e include informazioni sulla società o sull'istituzione che fornisce l'accesso a Internet.

Topologia del sito

La seconda parte contiene informazioni di instradamento relative alla sottorete alla quale deve essere consegnato il pacchetto.

ID interfaccia

La terza parte identifica l'interfaccia alla quale deve essere consegnato il pacchetto. Fornisce inoltre l'indirizzo MAC (Media Access Control) per formare parte dell'indirizzo. Poiché MAC è un identificatore univoco globale fisso codificato all'interno del dispositivo da parte del produttore dell'hardware, la procedura di installazione viene sostanzialmente semplificata. I primi 64 bit dell'indirizzo vengono infatti consolidati per formare il token EUI-64. Gli ultimi 48 bit corrispondono all'indirizzo MAC e i rimanenti 24 bit contengono informazioni speciali sul tipo di token. In questo modo è possibile assegnare un token EUI-64 anche alle interfacce che non dispongono di un MAC, come quelle basate su PPP o ISDN.

Oltre a questa struttura di base, IPv6 è in grado di riconoscere cinque diversi tipi di indirizzi unicast:

:: (non specificato)

Questo indirizzo viene utilizzato dall'host come indirizzo di origine alla prima inizializzazione dell'interfaccia, ovvero quando l'indirizzo non può ancora essere determinato con altri mezzi.

::1 (loopback)

Indirizzo del dispositivo di loopback.

Indirizzi compatibili IPv4

L'indirizzo IPv6 è formato dall'indirizzo IPv4 e da un prefisso composto da 96 bit zero. Questo tipo di indirizzo di compatibilità viene utilizzato per il tunneling (vedere la Sezione 18.2.3, "Coesistenza di IPv4 e IPv6"), in modo da consentire agli host IPv4 e IPv6 di comunicare con altri sistemi operativi in un ambiente solo IPv4.

Indirizzi IPv4 mappati a IPv6

Questo tipo di indirizzo specifica un puro indirizzo IPv4 in notazione IPv6.

Indirizzi locali

Sono disponibili due tipi di indirizzi per l'uso locale:

collegamento locale

Questo tipo di indirizzo può essere utilizzato solo nella sottorete locale. I pacchetti con un indirizzo di origine o di destinazione di questo tipo non dovranno essere instradati a Internet o ad altre sottoreti. Questi indirizzi contengono un prefisso speciale (fe80::/10) e l'ID interfaccia della scheda di rete, con la parte centrale formata da byte zero. Gli indirizzi di questo tipo vengono utilizzati durante la configurazione automatica per comunicare con altri host appartenenti alla stessa sottorete.

sito locale

I pacchetti con questo tipo di indirizzo possono essere instradati ad altre sottoreti, ma non a Internet, e devono rimanere all'interno della rete dell'organizzazione. Tali indirizzi vengono utilizzati per le intranet e rappresentano un equivalente dello spazio di indirizzamento privato definito da IPv4. Contengono un prefisso speciale (fec0::/10), l'ID interfaccia e un campo a 16 bit che specifica l'ID della sottorete. Anche in questo caso, il resto dell'indirizzo viene completato con byte zero.

In base a una funzionalità completamente nuova introdotta con IPv6, a ogni interfaccia di rete vengono normalmente assegnati più indirizzi IP con il vantaggio di poter accedere a più reti attraverso la stessa interfaccia. Una di queste reti può essere configurata in modo completamente automatico utilizzando l'indirizzo MAC e un prefisso conosciuto, in modo da consentire l'accesso a tutti gli host della rete locale dopo aver abilitato IPv6, utilizzando l'indirizzo di collegamento locale. L'uso di MAC consente di rendere univoco sulla rete mondiale qualsiasi indirizzo IP. Le sole parti variabili dell'indirizzo sono quelle che specificano la topologia del sito e la topologia pubblica, a seconda della rete effettiva in cui l'host è attualmente funzionante.

Per consentire all'host di passare da una rete all'altra, sono necessari almeno due indirizzi. Uno di essi, l'indirizzo home, contiene l'ID interfaccia, oltre a un identificatore della rete interna alla quale appartiene normalmente, nonché il prefisso corrispondente. L'indirizzo home è un indirizzo statico e, come tale, di solito non viene modificato. Ciononostante tutti i pacchetti destinati all'host mobile possono continuare a essere consegnati, indipendentemente dal punto della rete, interna o esterna, in cui viene utilizzato. Ciò è reso possibile dalle funzionalità completamente nuove introdotte con IPv6, quali la configurazione automatica stateless e la rilevazione del router vicino. Oltre all'indirizzo home, un host mobile ottiene uno o più indirizzi aggiuntivi che appartengono alle reti esterne in cui viene utilizzato, e che sono definiti indirizzi C/O. Nella rete interna è disponibile una funzionalità per l'inoltro dei pacchetti destinati all'host quando questo viene spostato su reti esterne. In un ambiente IPv6 questo task viene eseguito dall'agente home, che riceve tutti i pacchetti destinati all'indirizzo home e li inoltra attraverso un tunnel. I pacchetti destinati all'indirizzo C/O, invece, vengono trasferiti direttamente all'host mobile senza alcuna particolare deviazione.

18.2.3. Coesistenza di IPv4 e IPv6

Il processo di migrazione di tutti gli host connessi a Internet da IPv4 a IPv6 avverrà gradualmente e per un certo periodo i due protocolli dovranno coesistere. La coesistenza su uno stesso sistema è garantita, a condizione che sia implementato un doppio stack di entrambi i protocolli. Rimane tuttavia da chiarire come avverrà la comunicazione tra un host che supporta IPv6 e un host IPv4 e come verrà effettuato il trasporto dei pacchetti IPv6 sulle reti attuali, che sono prevalentemente basate su IPv4. Le soluzioni migliori prevedono il tunneling e indirizzi di compatibilità (vedere la Sezione 18.2.2, "Tipi di indirizzi e struttura").

Gli host IPv6 più o meno isolati sulla rete IPv4 mondiale possono comunicare mediante tunnel. I pacchetti IPv6 vengono incapsulati come pacchetti IPv4 per poter essere spostati su una rete IPv4. Questa connessione tra due host IPv4 è detta tunnel. Per ottenere questo risultato, nei pacchetti deve essere incluso l'indirizzo di destinazione IPv6, o il prefisso corrispondente, oltre all'indirizzo IPv4 dell'host remoto all'estremità ricevente del tunnel. Previo accordo tra gli amministratori degli host, è possibile configurare manualmente un tunnel di base che viene definito anche tunneling statico.

L'uso della configurazione e della manutenzione di tunnel statici, tuttavia, è troppo impegnativo per le esigenze di comunicazione quotidiane. In IPv6 sono quindi disponibili tre diversi metodi di tunneling dinamico:

6over4

I pacchetti IPv6 vengono incapsulati automaticamente come pacchetti IPv4 e inviati su una rete IPv4 che supporta il multicast. L'intera rete (Internet) viene vista da IPv6 come un'enorme rete locale (LAN) e ciò rende possibile la determinazione automatica dell'estremità ricevente del tunnel IPv4. La scalabilità di questo metodo non è tuttavia ottimale ed è inoltre ostacolata dal fatto che il multicast IP è tutt'altro che esteso su Internet. Rappresenta pertanto una soluzione solo per le società più piccole o per le reti istituzionali in cui è possibile abilitare il multicast. Le specifiche per questo metodo sono descritte nel documento RFC 2529.

6to4

Con questo metodo vengono generati automaticamente indirizzi IPv4 da indirizzi IPv6 in modo da consentire agli host IPv6 isolati di comunicare su una rete IPv4. Sono stati tuttavia segnalati numerosi problemi riguardanti la comunicazione tra questi host IPv6 isolati e Internet. Il metodo è descritto nel documento RFC 3056.

IPv6 Tunnel Broker

Questo metodo si basa su speciali server che forniscono tunnel dedicati per host IPv6 ed è descritto nel documento RFC 3053.

[Important]iniziativa 6bone

Nel cuore della "tradizionale" Internet esiste già una rete distribuita globalmente di sottoreti IPv6 connesse mediante tunnel. Si tratta della rete 6bone (http://www.6bone.net, in lingua inglese), un ambiente di test IPv6 che può essere utilizzato dai programmatori e dai provider Internet che desiderano sviluppare e offrire servizi basati su IPv6, in modo che possano maturare l'esperienza necessaria per l'implementazione del nuovo protocollo. Ulteriori informazioni sono disponibili sul sito Internet del progetto.

18.2.4. Configurazione di IPv6

Per configurare IPv6 non è normalmente necessario apportare modifiche alle singole workstation, nelle quali deve tuttavia essere caricato il supporto IPv6. Per eseguire questa operazione, immettere modprobe ipv6 come root.

In base al concetto di configurazione automatica di IPv6, alla scheda di rete viene assegnato un indirizzo nella rete di collegamento locale. Di solito non vengono eseguite operazioni di gestione della tabella degli instradamenti sulle workstation. Le workstation possono inviare query ai router di rete mediante il protocollo di dichiarazione dei router per sapere quale prefisso e quali gateway dovranno essere implementati. Per la configurazione di un router IPv6 è possibile utilizzare il programma radvd che comunica alle workstation quale prefisso per gli indirizzi IPv6 e quali router utilizzare. In alternativa, per la configurazione automatica di indirizzi e instradamento utilizzare zebra.

Per informazioni sulla configurazione di vari tipi di tunnel mediante i file /etc/sysconfig/network, consultare la documentazione ifup(8).

18.2.5. Ulteriori informazioni

La panoramica precedente sull'argomento IPv6 non è esaustiva, quindi per informazioni più dettagliate sul nuovo protocollo si consiglia di fare riferimento alla documentazione in linea e ai manuali seguenti:

http://www.ngnet.it/e/cosa-ipv6.php

Una serie di articoli con una chiara introduzione alle nozioni di base di IPv6 che costituiscono un buon manuale sull'argomento (in lingua inglese).

http://www.bieringer.de/linux/IPv6/

La documentazione HOWTO di Linux su IPv6 e molti collegamenti correlati all'argomento (in lingua inglese).

http://www.6bone.net/

Da questo sito è possibile accedere a una rete IPv6 con tunnel (in lingua inglese).

http://www.ipv6.org/

Il punto di partenza per qualsiasi iniziativa riguardante IPv6 (in lingua inglese).

RFC 2640

I documenti RFC fondamentali su IPv6.

IPv6 Essentials

IPv6 Essentials di Silvia Hagen (ISBN 0-596-00125-8) è un manuale che descrive tutti gli aspetti più importanti di questo argomento.