IPv6

Da Wikipedia, l'enciclopedia libera.

IPv6 è la versione dell'Internet Protocol designata come successore dell'IPv4. Tale protocollo introduce alcuni nuovi servizi e semplifica molto la configurazione e la gestione delle reti IP.

La sua caratteristica più importante è il più ampio spazio di indirizzamento:

  • IPv6 riserva 128 bit per gli indirizzi IP e gestisce 2128 (circa 3,4 × 1038) indirizzi;
  • IPv4 riserva 32 bit per l'indirizzamento e gestisce 232 (circa 4,3 × 109) indirizzi.

Quantificando con un esempio, per ogni metro quadrato di superficie terrestre, ci sono 655.570.793.348.866.943.898.599 indirizzi IPv6 unici (cioè 655.571 miliardi di miliardi), ma solo 0,000007 IPv4 (cioè solo 7 IPv4 ogni milione di metri quadrati). Per dare un'idea delle grandezze in uso, se si paragona l'indirizzo singolo ad un quark (grandezza nell'ordine di 1 attometro), con IPv4 si raggiungerebbe il diametro dell'elica del DNA (di pochi nanometri), mentre con IPv6 si raggiungerebbe il centro della Via lattea dalla Terra (tre decine di millenni-luce). L'adozione su vasta scala di IPv6 e quindi del formato per gli indirizzi IP risolverebbe per un lungo periodo il problema dell'esaurimento degli indirizzi IPv4.

Storia[modifica | modifica wikitesto]

L'ICANN rese disponibile[1] il protocollo IPv6 sui root nameserver dal 20 luglio 2004, ma solo dal 4 febbraio 2008 iniziò l'inserimento dei primi indirizzi IPv6 nel sistema di risoluzione dei nomi. Il 3 febbraio 2011 la IANA ha assegnato gli ultimi blocchi di indirizzo IPv4 ai 5 RIR (un blocco /8 ciascuno)[2], anche se il protocollo IPv4 verrà utilizzato fino al 2025 circa, per dare il tempo necessario ad adeguarsi[3].

Tappe[modifica | modifica wikitesto]

  • Nel 2003 Nihon Keizai Shimbun (come citato dallo staff di CNET Asia, nel 2003) ha segnalato che il Giappone, la Cina e la Corea del Sud hanno annunciato di essere determinati a diventare le principali nazioni nello sviluppo e utilizzo della tecnologia di Internet, partendo con lo sviluppo di IPv6 e terminando nel 2005 con la sua completa adozione.
  • Il 20 luglio 2004 l'ICANN[1][4] ha annunciato l'integrazione della nuova versione del protocollo Internet nei root server che gestiscono il traffico in rete. Entusiasta Vinton Cerf, padre del TCP/IP e presidente dell'ICANN che afferma: «Maggiore stabilità per il grande network». L'ICANN ha inoltre annunciato che i nameserver dei record IPv6 di tipo AAAA per i domini nazionali ccTLD (country code Top Level Domain) del Giappone (.jp) e Corea del Sud (.kr) sono diventati visibili nei file di zona dei root server di DNS con il numero di serie 2004072000. È stato previsto che i record IPv6 per la Francia (.fr) verranno aggiunti presto. Ciò ha reso IPv6 pubblicamente operativo.
  • L'8 giugno 2011 è stato organizzato il World IPv6 Day[5] in cui le maggiori aziende hanno utilizzato il nuovo protocollo per un giorno e non si sono registrati particolari problemi durante questo test.[6]
  • Il 6 giugno 2012 è stato organizzato il World IPv6 Launch in occasione del quale alcune delle maggiori aziende operanti su web sono migrate definitivamente al nuovo protocollo.[7]

Descrizione[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Saturazione di IPv4.

Il motivo più pressante dietro l'adozione del protocollo IPv6 è stato l'insufficienza di spazio per l'indirizzamento dei dispositivi in rete, in particolar modo nei paesi altamente popolati dell'Asia come l'India e la Cina.

Oltre a rispondere a questa esigenza l'IPv6 incorpora alcuni protocolli che prima erano separati, come l'ARP, ed è in grado di configurare automaticamente alcuni parametri di configurazione della rete, come per esempio il default gateway. Inoltre supporta nativamente la qualità di servizio e introduce l'indirizzamento anycast, che permette ad un computer in rete di raggiungere automaticamente il più vicino server disponibile di un dato tipo (un DNS, per esempio) anche senza conoscerne a priori l'indirizzo.

Per quanto riguarda i grandi gestori di telecomunicazioni, le principali migliorie sono:

Queste tre 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, assumendosi anche il compito di gestire le connessioni multicast.

IPv6 è la seconda versione dell'Internet Protocol ad essere ampiamente sviluppata e costituirà la base per la futura espansione di Internet.

Caratteristiche[modifica | modifica wikitesto]

L'indirizzamento in IPv6[modifica | modifica wikitesto]

Approfondimento
« Se l'intero pianeta, terraferma e acqua, fosse coperto di computer, IPv6 permetterebbe di utilizzare 7 \times 10^{23} indirizzi IP per metro quadro [...] questo numero è più grande del numero di Avogadro»
(Andrew S. Tanenbaum[8])

Il cambiamento più rilevante nel passaggio dall'IPv4 all'IPv6 è la lunghezza dell'indirizzo di rete. L'indirizzo IPv6, come definito nel RFC 2373 e nel RFC 2374 è lungo 128 bit, cioè 32 cifre esadecimali, che sono normalmente utilizzate nella scrittura dell'indirizzo come descritto più avanti.

Questo cambiamento porta il numero di indirizzi esprimibili dall'IPv6 a 2128 = 1632 ≈ 3,4 × 1038.

Una delle critiche allo spazio di indirizzamento di 128 bit è che potrebbe essere ampiamente sovradimensionato. Occorre considerare che la ragione di un indirizzamento così ampio non è da associare alla volontà di assicurare un numero sufficiente di indirizzi, quanto al tentativo di porre rimedio alla frammentazione dello spazio di indirizzamento IPv4, conseguenza, tra le altre cose, della limitazione dello spazio di indirizzamento e della poca possibilità di prevedere a medio-lungo termine la richiesta di indirizzi. È infatti possibile che un singolo operatore di telecomunicazione abbia assegnati numerosi blocchi di indirizzi non contigui.

Come per IPv4 anche IPv6 prevede che l’instradamento sia realizzato sulla base di prefissi (oggetto delle rotte) di lunghezza variabile. Normalmente tali prefissi sono non più lunghi di 64 bit, in modo da consentire l’impiego dei 64 bit meno significativi con il solo ruolo di identificare un terminale. Questo vale anche per l’accesso ad Internet di una normale abitazione, a cui verrebbero assegnati almeno 264 (1,8×1019) indirizzi pubblici, mentre per realtà che dispongono di una struttura di rete articolata i più segmenti di LAN occorre assegnare un arco di indirizzi ancora più grande (ad es. un prefisso di 56 bit, vedi RFC 6177). I primi 10 bit dell'indirizzo IPv6 descrivono genericamente il tipo di computer e l'uso che questo fa della connessione (telefono VoIP, PDA, data server, telefonia mobile ecc.)

Questa caratteristica svincola virtualmente il protocollo IPv6 dalla topologia della rete fisica, permettendo per esempio di avere lo stesso indirizzo IPv6 a prescindere dal particolare Internet service provider (ISP) che si sta usando (il cosiddetto IP personale) rendendo quindi l'indirizzo IPv6 simile ad un numero di telefono. Queste nuove caratteristiche complicano però il routing IPv6 che deve tenere conto di mappe di instradamento più complesse rispetto all'IPv4; proprio le nuove proprietà dell'indirizzamento rappresentano anche i potenziali talloni d'Achille del protocollo.

Notazione per gli indirizzi IPv6[modifica | modifica wikitesto]

Gli indirizzi IPv6 sono composti di 128 bit e sono rappresentati come 8 gruppi di 4 cifre esadecimali (ovvero 8 word di 16 bit ciascuna) in cui le lettere vengono scritte in forma minuscola. Ad esempio 2001:0db8:85a3:0000:1319:8a2e:0370:7344 rappresenta un indirizzo IPv6 valido.

Se uno dei gruppi – come nell'esempio – è composto da una sequenza di quattro zeri può essere contratto ad un solo zero: 2001:0db8:85a3:0:1319:8a2e:0370:7344

Inoltre, una sequenza di zeri contigui (e una soltanto)[9] composta da 2 o più gruppi può essere contratta con la semplice sequenza :: ovvero 2001:0db8:0000:0000:0000:8a2e:0370:7344 corrisponde a 2001:0db8:0:0:0:8a2e:0370:7344 o ancora più sinteticamente a 2001:0db8::8a2e:0370:7344

Seguendo le regole poc'anzi menzionate, se più sequenze simili si susseguono, è possibile ometterle tutte; di seguito vengono riportate varie rappresentazioni dello stesso indirizzo:

2001:0db8:0000:0000:0000:0000:1428:57ab
2001:0db8:0000:0000::1428:57ab
2001:0db8:0:0:0:0:1428:57ab
2001:0db8:0::0:1428:57ab
2001:0db8::1428:57ab

Tuttavia 2001:0db8::25de::cade non è un indirizzo valido[9], poiché non è possibile definire quante sequenze siano presenti nelle due lacune.

Inoltre possono essere omessi anche gli zeri iniziali di ogni gruppo: 2001:0db8:02de::0e13 corrisponde a 2001:db8:2de::e13

Gli ultimi 32 bit possono essere scritti in decimale (nella notazione dotted decimal):

 ::ffff:192.168.89.9

è uguale a

 ::ffff:c0a8:5909

ma diverso da:

 ::192.168.89.9

o da:

 ::c0a8:5909

rendendo così la sintassi IPv6 retrocompatibile con quella IPv4 con evidenti benefici.

La forma di scrittura ::ffff:1.2.3.4 è chiamata IPv4-mapped address ed è sconsigliata. Il formato ::1.2.3.4 è un IPv4-compatible address.

Gli indirizzi IPv4 sono facilmente trasformabili in formato IPv6. Ad esempio, se l'indirizzo decimale IPv4 è 135.75.43.52 (in esadecimale, 874B2B34), può essere convertito in 0000:0000:0000:0000:0000:0000:874b:2b34 o più brevemente ::874b:2b34. Anche in questo caso è possibile l'uso della notazione ibrida (IPv4-compatible address), usando la forma ::135.75.43.52.

Indirizzi speciali[modifica | modifica wikitesto]

È stato definito un certo numero di indirizzi con significati particolari. La tabella seguente ne elenca alcuni nella notazione CIDR.

  • ::/128 - l'indirizzo composto da tutti zeri viene utilizzato per indicare qualsiasi indirizzo e viene utilizzato esclusivamente a livello software;
  • ::1/128 - l'indirizzo di loopback è un indirizzo associato al dispositivo di rete che ripete come eco tutti i pacchetti che gli sono indirizzati. Corrisponde a 127.0.0.1 in IPv4;
  • ::/96 - è utilizzato per interconnettere le due tecnologie IPv4/IPv6 nelle reti ibride. Gli indirizzi IPv4 compatibili sono stati deprecati in favore degli indirizzi IPv4-Mapped address;
  • ::ffff:0:0/96 - l'indirizzo IPv4-mapped address è utilizzato nei dispositivi dual stack;
  • fe80::/10 - il prefisso link-local specifica che l'indirizzo è valido esclusivamente sullo specifico link fisico;
  • fec0::/10 - il prefisso site-local specifica che l'indirizzo è valido esclusivamente all'interno dell'organizzazione locale. Il suo uso è stato sconsigliato nel settembre del 2004 con il RFC 3879 e i sistemi futuri non ne dovrebbero implementare il supporto;
  • fc00::/7 - il prefisso Unique Local Addresses (ULA) è valido esclusivamente all'interno dell'organizzazione. Il suo uso è analogo alle classi private della versone IPv4 ( gli IP ULA non vengono ruotati su internet ). Sostituiscono gli indirizzi Site-local deprecati. Non esiste nessuna registrazione formale degli indirizzi privati presso organizzazioni RIR anche se esistono siti non istituzionali che tengono traccia dei vari ULA per evitare sovrapposizioni;
  • ff00::/8 - il prefisso di multicast è utilizzato per gli indirizzi di multicast.

Il pacchetto IPv6[modifica | modifica wikitesto]

Il pacchetto IPv6, come ogni altro pacchetto di un altro strato protocollare, si compone di due parti principali: l'header e il payload.

L'header è costituito dai primi 40 byte del pacchetto e contiene 8 campi, 5 in meno rispetto all'IPv4. I campi sono inseriti col byte più significativo messo per primo (notazione big-endian) e all'interno dei singoli byte il bit più significativo è il primo (quello di indice 0).

+ Bit 0–3 4–11 12–15 16–23 24–31
0-31 Version Traffic Class Flow Label
32-63 Payload Length Next Header Hop Limit
64
-
191
Source Address (128 bit)
192
-
319
Destination Address (128 bit)
  • Version [4 bit] - Indica la versione del datagramma IP: per IPv6, ha valore 6 (da qui il nome IPv6).
  • Traffic Class [8 bit] - Si traduce come "classe di traffico", permette di gestire le code by priority assegnando ad ogni pacchetto una classe di priorità rispetto ad altri pacchetti provenienti dalla stessa sorgente. Viene usata nel controllo della congestione.
  • Flow Label [20 bit] - Usata dal mittente per etichettare una sequenza di pacchetti come se fossero nello stesso flusso. Supporta la gestione del QoS (Quality of Service), consentendo ad esempio di specificare quali etichette abbiano via libera rispetto ad altre. Al momento, questo campo è ancora in fase sperimentale.
  • Payload Length [16 bit] - È la dimensione del payload, ovvero il numero di byte di tutto ciò che viene dopo l'header. Da notare che eventuali estensioni dell'header (utili ad esempio per l'instradamento o per la frammentazione) sono considerate payload, e quindi conteggiate nella lunghezza del carico. Se il suo valore è 65.535 byte, si tratta di un pacchetto di dimensione massima, anche detto Jumbogram.
  • Next Header [8 bit] - Indica quale tipo di intestazione segue l'header di base IPv6. Molto simile al campo protocol dell'header IPv4, del quale usa gli stessi valori.
  • Hop Limit [8 bit] - È il limite di salti consentito, praticamente il Time to live. Il suo valore viene decrementato di 1 ogni volta che il pacchetto passa da un router: quando arriva a zero viene scartato.
  • Source Address [128 bit] - Indica l'indirizzo IP del mittente del pacchetto.
  • Destination Address [128 bit] - Indica l'indirizzo IP del destinatario del pacchetto.

La parte successiva contiene il carico utile (payload in inglese) lungo come minimo 1280 byte o 1500 byte se la rete supporta un MTU variabile. Il carico utile può raggiungere i 65.535 byte in modalità standard o può essere di dimensioni maggiori in modalità "jumbo payload".

Esistono due versioni di IPv6 lievemente diverse tra loro: la versione iniziale (ora obsoleta, descritta nel RFC 1883) differisce da quella attuale (descritta nel RFC 2460) per un campo. Si tratta della classe di traffico la cui dimensione è stata portata da 4 a 8 bit. Tutte le altre differenze sono minime.

IPv6 ed i Domain Name System[modifica | modifica wikitesto]

Gli indirizzi IPv6 sono rappresentati nel Domain Name System dal Record AAAA (detto anche record quadruplo-A) per il forward lookup (analogamente al Record A del IPv4); la risoluzione DNS inversa si appoggia sulla zona ip6.arpa (precedentemente ip6.int). Questo schema di funzionamento viene descritto nel RFC 3596.

Lo schema della quadrupla A è uno dei due proposti in fase di design del protocollo IPv6. La proposta alternativa aveva record A6 per il reverse lookup ed altre innovazioni quali le bit-string labels e i record DNAME è descritta nel RFC 2874 (sperimentale) e nei documenti collegati.

Sebbene lo schema AAAA sia una semplice generalizzazione dei DNS IPv4, lo schema A6 sarebbe stato un'estensione più generica, ma anche più complessa:

  • i record A6 avrebbero permesso ad un singolo indirizzo IPv6 di essere diviso in diverse sezioni gestite in zone differenti. Questo avrebbe permesso, ad esempio, di ridistribuire in maniera rapida la numerazione di un network.
  • la delega degli indirizzi attraverso l'uso dei record NS sarebbe stata ampiamente sostituita dall'uso dei record DNAME (similmente agli attuali record CNAME, ma costituendo un intero albero di indirizzi). Questo avrebbe permesso la gestione unitaria dei lookup diretti ed inversi.
  • Un nuovo tipo di dato chiamato bit label veniva introdotto nei nomi di dominio, principalmente per scopi di lookup inverso.

Lo schema AAAA è stato standardizzato nell'agosto del 2002 nel RFC 3363 (nel RFC 3364 sono valutati tutti i pro ed i contro di entrambi gli schemi proposti).

La transizione all'IPv6[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Transizione IPV4/IPV6.

luglio 2007 è datato l'Internet Draft che presenta un piano di transizione per trasformare la rete Internet principalmente basata su IPv4 in quella principalmente basata su IPv6.(http://www.ripe.net/info/faq/IPv6-deployment.html#3), ma è praticamente certo che molti vecchi calcolatori rimarranno online senza venire aggiornati, e macchine IPv6 ed IPv4 conviveranno sulla rete per decenni.

Perciò il meccanismo adottato per gestire questo periodo transitorio è il cosiddetto dual stack: ogni sistema operativo che supporta IPv6 comunicherà con le macchine IPv4 grazie a un secondo stack di protocolli IPv4 che opera in parallelo a quello IPv6. Quando il computer si connetterà ad un'altra macchina in Internet, l'informazione di quale stack usare (v4 o v6) gli sarà data dal DNS, che insieme all'indirizzo di rete dirà anche quali protocolli sono supportati dall'altra macchina.

Vantaggi:

  • Transizione morbida: possibilità di liquidare gli investimenti già fatti in hardware/software senza dover sostenere nuove spese prima del necessario;
  • Piena compatibilità fra vecchie e nuove macchine e applicazioni;

Svantaggi:

  • Necessità di supportare in maniera estesa l'IPv4 nella Internet e negli apparati connessi.
  • Essere raggiungibili dall'universo IPv4 durante la fase di transizione costringe a mantenere un indirizzo IPv4 o una qualche forma di NAT nei gateway router. Si aggiunge quindi un livello di complessità che rende la teorica disponibilità di indirizzi non immediata.
  • Problemi architetturali: in particolare non sarà possibile supportare pienamente il multihoming IPv6.

Meccanismi di transizione[modifica | modifica wikitesto]

Sino a quando la connettività non sarà largamente disponibile e supportata nativamente in IPv6 dall'infrastruttura di rete, è necessario utilizzare un meccanismo di trasporto dei pacchetti IPv6 su rete IPv4 tramite la tecnologia del tunneling. Questo può essere realizzato con:

  • Tunnel IPv6 in IPv4 configurati staticamente per l'interconnessione di sottoreti IPv6 remote.
  • Tunneling Automatico 6to4, per interconnettere le reti IPv6 tra di loro attraverso una rete IPv4 comune, Internet ad esempio. L'interconnessione è automatica grazie all'automatismo del tunneling 6to4: avviene direttamente tra reti con indirizzamento IPv6 via 6to4, oppure tramite un 6to4 relay router per le destinazioni con indirizzo IPv6 nativo.

Questi tunnel funzionano tramite l'incapsulamento dei pacchetti IPv6 in pacchetti IPv4 con il campo next-layer (protocol-type) impostato a 41 da cui il nome di proto-41. Similarmente, l'ISATAP permette la trasmissione di traffico IPv6 su infrastrutture IPv4. Anche questo protocollo usa il proto-41.

Quando la connettività IPv6 è richiesta da una rete nascosta da un apparato che implementa NAT e che solitamente blocca il traffico del protocollo 41, è possibile usare il protocollo Teredo che incapsula l'IPv6 all'interno di datagrammi UDP su IPv4. È pure possibile usare proxy IPv6-to-IPv4 e IPv6-to-IPv6, sebbene questi siano solitamente specifiche dell'application-layer (come il protocollo HTTP).

Gruppi di lavoro IETF affini[modifica | modifica wikitesto]

  • (EN) 6bone IPv6 Backbone (concluso)
  • (EN) ipng IP Next Generation (concluso)
  • (EN) ipv6 IP Version 6 (concluso)
  • (EN) ipv6mib IPv6 MIB (concluso)
  • (EN) multi6 Site Multihoming in IPv6 (concluso)
  • (EN) v6ops IPv6 Operations

Note[modifica | modifica wikitesto]

  1. ^ a b (EN) Next-generation IPv6 Address Added to the Internet's Root DNS Zone
  2. ^ (EN) Free Pool of IPv4 Address Space Depleted. URL consultato il 13 gennaio 2012.
  3. ^ Luca Domenichini, La fine dell'IPv4, Programmazione.it, 24 luglio 2009. URL consultato il 13 gennaio 2012.
  4. ^ PI: Partito ufficialmente IPv6
  5. ^ Internet Society - World IPv6 Day
  6. ^ Alfonso Maruccia, Il giorno di IPv6 è stato un successo., Punto Informatico, 13 giugno 2011. URL consultato il 13 giugno 2011.
  7. ^ (EN) World IPv6 Launch. URL consultato il 19 gennaio 2012.
  8. ^ Andrew S. Tanenbaum, Reti di calcolatori, Pearson, p. 468, ISBN 978-88-7192-182-2.
  9. ^ a b Sezione 4.2 della RFC 5952

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Telematica Portale Telematica: accedi alle voci di Wikipedia che parlano di reti, telecomunicazioni e protocolli di rete