Come conseguenza del boom del World Wide Web , l'Internet, e con esso il numero dei sistemi che “parlano” il linguaggio TCP/IP, è cresciuto in modo esponenziale; e da quando, nel 1990, Tim Berners-Lee del CERN http://public.web.cern.ch/ ha inventato il www, il numero degli host presenti su Internet è passato da poche migliaia a ca. 100 milioni.
Come saprete, un indirizzo IP è formato “solo” da 32 bit. Alcuni indirizzi IP rimangono inutilizzati per motivi che illustreremo di seguito. Inoltre, l'Internet è suddiviso in sottoreti, cioè in reti parziali che si compongono di un valore alla potenza di due meno due indirizzi IP. Per esempio, una sottorete consiste di 2, 6, 14, 30, etc. indirizzi IP. Se, per esempio, volete collegare 128 computer ad Internet, avete bisogno di una sottorete della “classe C” con 256 indirizzi IP, dei quali potete utilizzare effettivamente solo 254. Come avete visto sopra, in una sottorete vengono a mancare 2 degli indirizzi IP, e cioè l'indirizzo broadcast e l'indirizzo di base della rete.
Per evitare l'esaurirsi degli indirizzi disponibili sotto IPv4 si ricorre a meccanismi del tipo DHCP o NAT Network Address Translation che, assieme alla suddivisione degli spazi di indirizzi in pubblici e privati, contribuiscono a migliorare la situazione su questo fronte. Lo svantaggio di questi meccanismi è che non sono facili da configurare e amministrare. Per la configurazione corretta di un host in una rete IPv4 sono necessarie una serie di dati come il proprio indirizzo IP, la maschera della sottorete, l'indirizzo gateway ed eventualmente un server dei nomi. Tutte queste informazioni le dovete “conoscere” visto che non vi è alcun modo di dedurrle.
Con IPv6 numero insufficente di indirizzi e configurazione complicata appartengono al passato. Nelle seguenti sezioni illustreremo le novità ed i vantaggi di IPv6 rispetto alla versione di protocollo precedente.
Il vantaggio più lampante del nuovo protocollo è l' enorme estensione dello spazio di indirizzamento. Un indirizzo IPv6 ha 128 bit rispetto ai 32 bit di IPv4. In tal modo il numero degli indirizzi IP disponibili raggiunge svariati migliaia di miliardi!
Gli indirizzi IPv6 non si distinguono dai loro predecessori solo per la loro lunghezza, ma anche per la loro struttura interna che consente di codificare delle informazioni inerenti al sistema e alla rete. Per maggiori informazioni, leggete la sezione Section 22.2.2, “Il sistema degli indirizzi IPv6”.
Ulteriori vantaggi del nuovo protocollo in rassegna:
IPv6 applica il principio del “plug-and-play” nell' ambito della rete. Un sistema appena installato si lascia integrare nella rete (locale) senza dover intervenire sulla configurazione. Durante la configurazione automatica il terminale deduce il proprio indirizzo dalle informazioni che gli giungono dal “Neighbor Discovery Protocol” (ND) dai router adiacenti. Questo processo non richiede alcun intervento da parte dell'amministratore, e rispetto al DHCP, utilizzato per allocare gli indirizzi sotto IPv4, vi è inoltre il vantaggio di non dovere più amministrare un server centrale con gli indirizzi disponibili.
IPv6 consente di allocare contemporaneamente più indirizzi ad una interfaccia di rete. In tal modo, realizzate con il minimo sforzo l'accesso a diverse reti. Questa funzionalità si lascia paragonare a quella del “roaming” che conoscete dal mondo dei telefonini: se vi trovate all'estero con il vostro telefonino, esso entra automaticamente nella rete estera. Indipendentemente dalla vostra locazione, siete raggiungibili sotto il vostro numero di cellulare consueto, e potrete continuare a telefonare normalmente anche all'estero come se vi trovaste nella rete del vostro fornitore di servizio.
Mentre sotto IPv4 per realizzare una comunicazione sicura bisognava ricorrere ad una funzionalità aggiuntiva, IPv6 contiene già IPSec che garantisce una comunicazione sicura tra due sistemi collegati via Internet tramite un tunnel.
É impensabile che su Internet si passi di colpo da IPv4 a IPv6. Ecco spiegato il perché della necessità di una coesistenza delle due versioni sia su Internet che anche su di un sistema. Su Internet la coesistenza dei due protocolli viene resa possibile attraverso l'utilizzo di indirizzi compatibili (indirizzi IPv4 si lasciano facilmente convertire in indirizzi IPv6) e l'utilizzo di diversi tunnel (si veda la sezione Section 22.2.3, “IPv4 versus IPv6”). Grazie al “dual-stack-IP” entrambi i protocolli vengono supportati anche da singoli sistemi. Ognuno dei due protocolli utilizza un proprio stack di rete, per evitare delle interferrenze tra le due versioni del protocollo.
Mentre sotto IPv4 alcuni servizi di sistema (p.es. SMB) devono inviare i propri pacchetti dati via broadcast agli host della rete locale, sotto IPv6 potete procedere in modo più differenziato. Tramite un multicast potete indirizzare contemporaneamente un gruppo di host, dunque non dovete necessariamente indirizzare tutti come è il caso per il (“broadcast”), oppure solo uno come nel caso del (“unicast”). L'applicazione determina quale gruppo sarà quello ad essere indirizzato. Vi sono anche dei gruppi multicast ben definiti, come ad esempio “tutti i server dei nomi”(ingl. all nameservers multicast group), oppure “tutti i router” (ingl.all routers multicast group).
Come già accennato, il protocollo IP finora utilizzato comporta due vistosi svantaggi: da una parte si esauriscono man mano gli indirizzi IP disponibili e dall'altra l'amministrazione della rete e delle tabelle di routing diventa sempre più laboriosa. Il primo problema viene risolto con IPv6 attraverso un ampliamento dello spazio di indirizzamento a 128 bit; il secondo attraverso una struttura gerarchica degli indirizzi, raffinati meccanismi preposti all'allocazione dell'indirizzo di rete e la possibilità del “multi-homing” (diversi indirizzi per ogni interfaccia di rete con accesso a reti diverse).
Per quel che riguarda IPv6 si distinguono i seguenti tre tipi di indirizzi:
Gli indirizzi di questo tipo vengono assegnati ad una determinata interfaccia di rete. I pacchetti con un indirizzo di tipo unicast vengono consegnati ad un solo destinatario. Attraverso indirizzi unicast si indirizzano singoli host all'interno della rete locale o su Internet.
Gli indirizzi di questo tipo identificano un gruppo di interfacce. I pacchetti con un indirizzo di questo tipo vengono inviati a tutti i destinatari appartenenti ad un determinato gruppo. Gli indirizzi multicast vengono utilizzati in prima linea da determinati servizi di rete per indirizzare in modo mirato un determinato gruppo di host.
Anche gli indirizzi di questo tipo fanno riferimento ad un gruppo di interfacce. I pacchetti con un indirizzo di questo tipo vengono consegnati al componente del gruppo che in base al protocollo di routing si trova il più vicino al mittente. Gli indirizzi anycast vengono utilizzati per consentire al terminale di rilevare il server richiesto all'interno della propria rete. Tutti i server di un determinato tipo hanno assegnato lo stesso indirizzo anycast. Quando un terminale richiede un servizio, risponderà il server che secondo il protocollo di routing è quello meno distante dall'host. Se questo server per un motivo qualsiasi non è in esecuzione, si ricorrerà automaticamente al prossimo server in termini di vicinanza ….
L'indirizzo IPv6 è composto da otto blocchi di 16 bit ciascuno, separati dal carattere : (due punti) disposti nel modo esadecimale. Gli zero byte all'inizio di un gruppo possono essere ommessi, ma non quelli in mezzo od alla fine di un gruppo. Si possono saltare più di quattro zero byte susseguenti in modo diretto tramite un carattere di ommissione ::. Comunque, un indirizzo può contenere solamente un carattere di ommissione. In inglese si usa il termine “collapsing” per descrivere questo procedimento. L'output Example 22.3, “Esempio di un indirizzo IPv6” vi mostra questo procedimento con tre modi di rappresentare lo stesso indirizzo.
Example 22.3. Esempio di un indirizzo IPv6
fe80 : 0000 : 0000 : 0000 : 0000 : 10 : 1000 : 1a4 fe80 : 0 : 0 : 0 : 0 : 10 : 1000 : 1a4 fe80 : : 10 : 1000 : 1a4
Ogni sezione dell'indirizzo IPv6 ha un significato ben preciso. I primi byte compongono il prefisso, ed indicano il tipo di indirizzo. La parte centrale indirizza una rete o non è rilevante, e la parte finale dell'indirizzo è la sezione host. In IPv6 le maschere di rete vengono definite tramite la lunghezza del prefisso, e vengono aggiunte all'indirizzo tramite un /. Nell' indirizzo dell'output Example 22.4, “Indirizzo IPv6 con prefisso” gli ultimi 64 bit indicano la sezione dell'host, ed i primi 64 bit la sezione della rete dell' indirizzo. Detto diversamente 64 indica che la maschera di rete viene riempita a partire da sinistra con una serie di 1 bit. Dunque nella maschera di rete abbiamo 64 1 bit. Come anche per IPv4, attraverso un collegamento AND della maschera di rete ed indirizzo IP viene stabilito se un host si trova all'interno o all' infuori di una determinata sottorete.
IPv6 ha diversi prefissi che hanno un significato ben preciso (si veda la tabella Table 22.4, “diversi prefissi IPv6”).
Table 22.4. diversi prefissi IPv6
Prefisso (esadec.) | Uso |
|---|---|
00 | Indirizzo IPv4 ed IPv4 tramite indirizzi di compatibilità IPv6: si tratta di un indirizzo compatibile con IPv4. Un router adatto trasforma il pacchetto IPv6 in IPv4. Anche altri indirizzi speciali (p.es. dispositivi loopback) sono muniti di questo prefisso. |
Prima cifra2 o 3 | (ingl.Aggregatable Global Unicast Adress ). Anche sotto IPv6 vi possono essere delle sottoreti. Al momento vi sono a riguardo i seguenti spazi di indirizzo: 2001::/16 (production quality address space ) e 2002::/16 (6to4 address space). |
fe80::/10 | Indirizzi link-local con questo prefisso non vengono instradati (routed), e perciò possono essere indirizzati solo all'interno della stessa sottorete. |
fec0::/10 | (ingl. site-local) Questi indirizzi possono venire instradati (routed), ma solo all' interno di un sito. Così, questi indirizzi sono paragonabili alle reti “private” (p.es. 10.x.x.x). |
ff | Indirizzi IPv6 multicast che iniziano con ff sono indirizzi multicast. |
Gli indirizzi unicast sono composti da tre parti:
La prima parte, che include tra l'altro uno dei prefissi menzionati sopra, serve per il routing ovvero l'instradamento del pacchetto su Internet. Qui sono codificate delle informazioni sul provider o istituzione tramite cui si realizza l'accesso alla rete.
La seconda parte contiene delle informazioni di routing riguardanti la sottorete meta del pacchetto.
La terza parte identifica l'interfaccia a cui viene inviato il pacchetto. Questo consente di utilizzare l'indirizzo MAC come componente dell'indirizzo. Visto che nel mondo non vi sono due indirizzi MAC identici, in quanto questo indirizzo viene stabilito dal fornitore dell' hardware, la configurazione dell' host viene notevolmente semplificata. I primi 64 bit compongono il cosiddetto EUI-64 token, gli ultimi 48 bit vengono presi dall'indirizzo MAC ed i rimanenti 24 bit contengono particolari informazioni riguardanti il tipo di token (contrassegno). Questo consente di assegnare un EUI 64 token anche a dispositivi senza indirizzo MAC (connessioni PPP ed ISDN!).
Da questa struttura di base derivano cinque tipi diversi di indirizzi unicast:
Questo indirizzo viene utilizzato da un sistema come indirizzo sorgente quando la propria interfaccia di rete viene inizializzata per la prima volta e quindi non dispone ancora di alcuna informazione sul proprio indirizzo.
Indirizzo del dispositivo di loopback.
L'indirizzo IPv4 e un prefisso di 96 zero bit all'inizio dell'indirizzo compongono l'indirizzo IPv6. Questo tipo di indirizzo di compatibilità viene utilizzato nel tunneling (si veda la sezione Section 22.2.3, “IPv4 versus IPv6”). Gli host IPv4/IPv6 possono in tal modo comunicare con gli host che si trovano in una rete prettamente IPv4.
Questo tipo di indirizzo indica un indirizzo IPv6 di un host IPv4.
Vi sono due tipi di indirizzi per l'uso prettamente locale:
Questo tipo di indirizzo può essere utilizzato solamente nella sottorete locale. I router non inoltrano dei pacchetti con un indirizzo di destinazione o indirizzo sorgente di questo tipo né su Internet né su altre sottoreti. Questi indirizzi si distinguono per un prefisso particolare (fe80::/10) e l'ID di interfaccia della scheda di rete. La parte centrale dell' indirizzo è composto da zero byte che non indicano nulla di particolare. Questo tipo di indirizzo viene utilizzato durante il processo di configurazione automatica per indirizzare gli host della stessa sottorete.
Questo tipo di indirizzo può essere instradato tra le varie sottoreti di una organizzazione (ingl.site) ma non su Internet. Questi indirizzi vengono utilizzati per Intranet, e sono un equivalente degli indirizzi privati dell'IPv4. Accanto ad un prefisso definito (fec0::/10) ed l'ID di interfaccia, questi indirizzi contengono un campo di 16 bit che codificano l'ID della sottorete. Il resto viene riempito con zero byte.
Inoltre, IPv6 presenta una novità: consente di assegnare ad una interfaccia di rete più indirizzi IP, in tal modo potrete accedere a diversi reti, di cui una può essere configurata in modo completamente automatico, prendendo un indirizzo MAC ed un prefisso noto, e dopo l'avvio di IPv6 grazie all' “indirizzo link local” potrete indirizzare direttamente tutti gli host all'interno della rete locale. Visto che l'indirizzo MAC è incluso nell'indirizzo IP, ognuno di questi indirizzi è unico a livello mondiale. Solo le parti inerenti al “Site Topology” o “Public Topology ” possono variare a seconda della rete a cui appartiene l'host.
Se un terminale si sposta tra reti differenti, gli servono almeno due indirizzi: uno è l' “home address” che contiene oltre all'ID di interfaccia delle informazioni inerenti alla sua rete home, dove viene utilizzato solitamente ed il relativo prefisso. L' “home address” è statico e non si modifica. Tutti i pacchetti inviati a questo indirizzo vengono consegnati sia nella propria rete che in quelle estranee. La consegna anche in reti estranee viene resa possibile grazie a delle innovazioni del protocollo IPv6, ovvero la stateless autoconfiguration e neighbor discovery. Il terminale mobile presenta accanto al suo indirizzo “home” ulteriori indirizzi appartenenti a delle ulteriori reti in cui si muove. Questi indirizzi hanno il nome di “care-of address”. Nella rete home del terminale mobile deve esservi una istanza che gli inoltra i pacchetti inviati al suo indirizzo “home”, quando questi si trova in un'altra rete. In IPv6 questa funzione viene svolta da un “home agent” che inoltra tutti i pacchetti inviati all'indirizzo home (home address) del terminale mobile tramite un tunnel. I pacchetti con “care-of address ” quale indirizzo di destinazione possono essere consegnati direttamente tramite l'home agent.
Ce ne vorrà di tempo prima che tutti i sistemi presenti su Internet effettuino il passaggio da IPv4 a IPv6, così il vecchio ed il nuovo protocollo dovranno coesistere l'uno accanto all'altro. Questa coesistenza nel caso di un sistema è resa possibile grazie al “dual stack”. Resta comunque la questione del modo in cui sistemi IPv6 possano comunicare con sistemi IPv4, e del modo in cui realizzare il trasporto di IPv6 attraverso reti IPv4 che al momento sono quelle maggiormente diffuse. Tunneling ed indirizzi di compatibilità (si veda la sezione Section 22.2.2.1, “Struttura di un indirizzo IPv6”) sono gli approcci per affrontare questa questione.
Le reti IPv6, che al momento sono le meno diffuse, realizzano lo scambio di dati in reti IPv4 tramite cosiddetti tunnel. Nel tunneling i pacchetti IPv6 vengono racchiusi in pacchetti IPv4 per poter transitare in reti prettamente IPv4. Un tunnel connette due estremità del tipo IPv4. Va indicato l'indirizzo meta IPv6 (oppure il relativo prefisso) dei pacchetti IPv6 “imballati”, e l'indirizzo IPv4 remoto che riceverà i pacchetti trasmessi via tunnel. Nei casi più semplici gli amministratori di rete configurano manualmente dei tunnel tra le loro reti di compentenza. Questo metodo di tunneling viene definito tunneling statico.
Spesso il tunneling statico non basta per configurare ed amministrare la quantità di tunnel necessari per uno svolgimento senza intoppi del lavoro in rete. Per questo motivo sono stati ideati tre modi per realizzare il tunnelingdinamico:
I pacchetti IPv6 vengono “impacchettati”automaticamente in pacchetti IPv4, ed inviati tramite una rete IPv4 con la funzionalità di multicasting abilitata. Ad IPv6 l'intera rete (Internet) “sembra” una LAN Local Area Network immensa. In tal maniera viene determinata in modo automatico l'estremitàdi destinazione IPv4 del tunnel. Lo svantaggio di questo approccio è da un lato la scarsa scalabilità ed il fatto che il multicasting IP non è affatto disponibile su tutto l'Internet. Questa soluzione è indicata per reti di piccole aziende o di istituzioni con il multicasting IP. L'RFC di riferimento è l'RFC2529.
Questo metodo consiste nel generare automaticamente indirizzi IPv4 da indirizzi IPv6. In tal maniera le poche reti IPv6, dette anche "isole IPv6", sparse nella Rete possono comunicare anche tramite una rete IPv4. Comunque, non è escluso l'insorgere di difficoltà durante lo scambio di dati tra reti IPv6 ed Internet. L'RFC di riferimento è l'RFC3056.
Qui dei server particolari creano i tunnel in modo automatico. L'RFC di riferimento è l' RFC3053.
![]() | L'iniziativa 6Bone |
|---|---|
Su Internet già “di vecchio stampo” troviamo 6Bone (www.6bone.net): una rete dislocata composta da sottoreti IPv6 connesse per via di tunnel. All'interno della rete 6Bone viene testato IPv6. Fornitori di software e provider che sviluppano o offrono dei servizi IPv6 possono ricorrere a questo ambiente di test per raccogliere delle esperienze in merito a questo nuovo protocollo. Per ulteriori informazioni consultate il sito di 6Bone. | |
Chiaramente quanto riassunto finora non è che una prima introduzione ad un tema così vasto come IPv6. Per degli approfondimenti in tema di IPv6, consultate la seguente documentazione che trovate online ed i seguenti manuali:
Una serie di articoli in cui vengono descritti i principi di IPv6. Indicato per un primo approccio a questo tema.
Linux-IPv6-HOWTO e tanti link.
Connettersi ad una rete IPv6 tramite un tunnel.
Tutto in tema di IPv6.
L'RFC introduttivo al tema IPv6.
In inglese. Hagen, Silvia: IPv6 Essentials. O'Reilly & Associates, 2002. -(ISBN 0-596-00125-8).