Panoramica del protocollo IP versione 6 (IPv6)

IPv6 (Internet Protocol version 6) è una famiglia di protocolli standard per il livello di rete di Internet. IPv6 è progettato per risolvere molti dei problemi riscontrati nell'attuale versione della famiglia di protocolli IP (chiamata IPv4), relativi a esaurimento di indirizzi, sicurezza, configurazione automatica, estendibilità e così via. IPv6 estende le funzionalità di Internet in modo da permettere nuovi tipi di applicazioni, tra cui applicazioni peer-to-peer e per dispositivi mobili. Di seguito sono elencati i problemi principali dell'attuale protocollo IPv4:

  • Esaurimento rapido dello spazio di indirizzi.

    Questo problema ha comportato l'uso di convertitori NAT (Network Address Translator) che eseguono il mapping di più indirizzi privati in un unico indirizzo IP pubblico. I problemi principali creati da questo meccanismo sono il sovraccarico di elaborazione e la mancanza di connettività end-to-end.

  • Mancanza di supporto delle gerarchie.

    A causa della sua tipica organizzazione predefinita delle classi, il protocollo IPv4 è privo di vero supporto delle gerarchie. È impossibile strutturare gli indirizzi IP in modo da eseguire un mapping effettivo della topologia di rete. Questo notevole difetto di progettazione crea la necessità di tabelle di routing di grandi dimensioni per distribuire pacchetti IPv4 in qualsiasi posizione in Internet.

  • Configurazione di rete complessa.

    Con IPv4, gli indirizzi devono essere assegnati in modo statico o tramite un protocollo di configurazione come DHCP. In una situazione ideale, gli host non dovrebbero dipendere dall'amministrazione di un'infrastruttura DHCP. Al contrario, dovrebbero essere in grado di configurare se stessi in base al segmento di rete in cui si trovano.

  • Mancanza di autenticazione e riservatezza integrate.

    IPv4 non richiede il supporto di meccanismi che forniscono l'autenticazione o la crittografia dei dati scambiati. Questo problema è stato risolto con IPv6. Internet Protocol security (IPSec) è un requisito del supporto di IPv6.

Una nuova famiglia di protocolli deve soddisfare i requisiti di base seguenti:

  • Routing e indirizzamento su larga scala con sovraccarico ridotto.
  • Configurazione automatica per diverse situazione di connessione.
  • Autenticazione e riservatezza integrate.

Indirizzamento IPv6

Con IPv6, gli indirizzi sono lunghi a 128 bit. Uno dei motivi di uno spazio indirizzi così grande è la possibilità di suddividere gli indirizzi disponibili in una gerarchia di domini di routing che riflettono la topologia di Internet. Un altro motivo è poter eseguire il mapping degli indirizzi delle schede (o interfacce) di rete che connettono i dispositivi alla rete. IPv6 è automaticamente in grado di risolvere gli indirizzi al livello inferiore, ovvero a livello di interfaccia di rete, e include anche funzionalità di configurazione automatica.

Rappresentazione di testo

Di seguito vengono mostrati tre formati convenzionali usati per rappresentare gli indirizzi IPv6 come stringhe di testo:

  • Formato con valori esadecimali separati da due punti:

    Questo è il modulo consigliato n:n:n:n:n:n:n:n. Ogni n rappresenta il valore esadecimale di uno degli otto elementi a 16 bit dell'indirizzo. Ad esempio: 3FFE:FFFF:7654:FEDA:1245:BA98:3210:4562.

  • Modulo compresso:

    A causa della lunghezza degli indirizzi, alcuni indirizzi contengono una lunga stringa di zeri. Per semplificare la scrittura di questi indirizzi, usare il formato compresso, in cui una singola sequenza contigua di blocchi di zeri viene rappresentata da un simbolo costituito da un doppio carattere di due punti (::). Questo simbolo può apparire una sola volta in un indirizzo. Ad esempio, l'indirizzo multicast FFED:0:0:0:0:BA98:3210:4562 in formato compresso è FFED::BA98:3210:4562. L'indirizzo unicast 3FFE:FFFF:0:0:8:800:20C4:0 in formato compresso è 3FFE:FFFF::8:800:20C4:0. L'indirizzo di loopback 0:0:0:0:0:0:0:1 in formato compresso è ::1. L'indirizzo non specificato 0:0:0:0:0:0:0:0 in formato compresso è ::.

  • Formato misto:

    Questo formato combina indirizzi IPv4 e IPv6. In questo caso, il formato dell'indirizzo è n:n:n:n:n:n:d.d.d.d, dove ogni n rappresenta i valori esadecimali dei sei elementi a 16 bit significativi dell'indirizzo IPv6 e ogni d rappresenta il valore decimale di un indirizzo IPv4.

Tipi di indirizzi

I bit iniziali nell'indirizzo definiscono il tipo di indirizzo IPv6 specifico. Il campo a lunghezza variabile contenente questi bit iniziali è chiamato prefisso di formato.

Un indirizzo unicast IPv6 è diviso in due parti. La prima parte contiene il prefisso dell'indirizzo, mentre la seconda contiene l'identificatore di interfaccia. Un modo conciso per esprimere una combinazione indirizzo/prefisso IPv6 è: indirizzo-ipv6/lunghezza-prefisso.

L'esempio seguente mostra un indirizzo con prefisso a 64 bit.

3FFE:FFFF:0:CD30:0:0:0:0/64.

In questo esempio il prefisso è 3FFE:FFFF:0:CD30. L'indirizzo può anche essere scritto in formato compresso, come 3FFE:FFFF:0:CD30::/64.

IPv6 definisce i tipi di indirizzo seguenti:

  • Indirizzo unicast:

    Identificatore per una singola interfaccia. Un pacchetto inviato a questo indirizzo viene recapitato all'interfaccia identificata. Gli indirizzi unicast si distinguono dagli indirizzi multicast per il valore dell'ottetto significativo. L'ottetto significativo degli indirizzi multicast ha il valore esadecimale FF. Qualsiasi altro valore per l'ottetto identifica un indirizzo unicast. Ecco alcuni tipi diversi di indirizzi unicast:

    • Indirizzi locali rispetto al collegamento:

      Questi indirizzi vengono usati in un singolo collegamento e hanno questo formato: FE80::*InterfaceID*. Gli indirizzi locali rispetto al collegamento vengono usati tra nodi in un collegamento per la configurazione automatica degli indirizzi, l'individuazione di router adiacenti o quando non è presente alcun router. Un indirizzo locale rispetto al collegamento viene usato in particolare all'avvio e quando il sistema non ha ancora acquisito indirizzi di ambito maggiore.

    • Indirizzi locali rispetto al sito:

    Questi indirizzi vengono usati in un singolo collegamento e hanno questo formato: FEC0::*SubnetID*:*InterfaceID*. Gli indirizzi locali rispetto al sito vengono usati per l'indirizzamento all'interno di un sito senza necessità di un prefisso globale.

    • Indirizzi unicast IPv6 globali:

    Questi indirizzi possono essere usati in Internet e hanno questo formato: *GlobalRoutingPrefix*::*SubnetID*:*InterfaceID*.

  • Indirizzo multicast:

    Identificatore per un set di interfacce, in genere appartenenti a nodi diversi. Un pacchetto inviato a questo indirizzo viene recapitato a tutte le interfacce identificate dall'indirizzo. I tipi di indirizzo multicast sostituiscono gli indirizzi di broadcast IPv4.

  • Indirizzo anycast:

    Identificatore per un set di interfacce, in genere appartenenti a nodi diversi. Un pacchetto inviato a questo indirizzo viene recapitato a una sola interfaccia identificata dall'indirizzo. Si tratta dell'interfaccia più vicina in base a quanto identificato dalle metriche di routing. Gli indirizzi anycast provengono dallo spazio indirizzi unicast e non sono distinguibili sintatticamente. L'interfaccia di destinazione esegue la distinzione tra indirizzi unicast e anycast come funzione della propria configurazione.

In generale, un nodo ha sempre un indirizzo locale rispetto al collegamento. Può avere anche un indirizzo locale rispetto al sito e uno o più indirizzi globali.

Routing IPv6

Uno dei vantaggi di IPv6 è che fornisce un meccanismo di routing flessibile. A causa del modo in cui gli ID rete IPv4 venivano e vengono allocati, tabelle di routing di grandi dimensioni devono essere gestite dai router che si trovano sulle backbone Internet. Questi router devono conoscere tutte le route per poter inoltrare i pacchetti potenzialmente indirizzati a qualsiasi nodo in Internet. Grazie a questa capacità di aggregare indirizzi, IPv6 consente un indirizzamento flessibile e riduce drasticamente le dimensioni delle tabelle di routing. In questa nuova architettura di indirizzamento i router intermedi devono tenere traccia solo della parte locale della rete per poter inoltrare i messaggi nel modo appropriato.

Individuazione router adiacenti

Ecco alcune delle funzionalità offerte da Individuazione router adiacenti:

  • Individuazione dei router: permette agli host di identificare i router locali.
  • Risoluzione degli indirizzi: permette ai nodi di risolvere un indirizzo a livello di collegamento per un indirizzo dell'hop successivo corrispondente (in sostituzione ad Address Resolution Protocol, ARP).
  • Gestisci configurazione automatica: permette agli host di configurare automaticamente gli indirizzi locali rispetto al sito e gli indirizzi globali.

Individuazione router adiacenti usa messaggi ICMPv6 (Internet Control Message Protocol for IPv6) che includono:

  • Annuncio router: inviato da un router con una frequenza più o meno periodica o in risposta a un messaggio Router Solicitation. I router IPv6 usano messaggi Router Advertisement per comunicare la propria disponibilità, i prefissi di indirizzo e altri parametri.
  • Richiesta router: inviata da un host per richiedere che i router nel collegamento inviino immediatamente un messaggio Router Solicitation.
  • Richiesta vicino: inviata dai nodi per la risoluzione degli indirizzi, il rilevamento di indirizzi duplicati o la verifica che un router adiacente sia ancora raggiungibile.
  • Annuncio vicino: inviato dai nodi per rispondere a un messaggio di richiesta vicino o per comunicare ai router adiacenti una modifica nell'indirizzo a livello di collegamento.
  • Reindirizzamento: inviato dai router per indicare un indirizzo dell'hop successivo migliore a una destinazione specifica per un nodo di invio.

Configurazione automatica di IPv6

Un obiettivo importante per IPv6 consiste nel supportare la modalità Plug and Play per i nodi. Questo significa che deve essere possibile collegare un nodo in una rete IPv6 perché il nodo venga automaticamente configurato senza alcun intervento manuale.

Configurazione automatica dei tipi

IPv6 supporta i tipi di configurazione automatica seguenti:

  • Configurazione automatica con stato:

    Questo tipo di configurazione richiede un certo livello di intervento manuale, perché è necessario un server DHCPv6 (Dynamic Host Configuration Protocol for IPv6) per l'installazione e l'amministrazione dei nodi. Il server DHCPv6 mantiene un elenco di nodi a cui fornisce informazioni di configurazione. Mantiene inoltre le informazioni sullo stato in modo da determinare per quanto tempo ogni indirizzo è in uso e quando può essere disponibile per la riassegnazione.

  • Configurazione automatica senza stato:

    Questo tipo di configurazione è adatto per piccole organizzazioni e singoli utenti. In questo caso, ogni host determina il proprio indirizzo dal contenuto degli annunci router ricevuti. Usando lo standard IEEE EUI-64 per definire la parte dell'ID di rete dell'indirizzo, l'host presuppone in modo ragionevole l'univocità dell'indirizzo host nel collegamento.

Indipendentemente dal modo in cui viene determinato l'indirizzo, il nodo deve verificare che il proprio possibile indirizzo sia univoco per il collegamento locale. A questo scopo, viene inviato un messaggio Neighbor Solicitation al possibile indirizzo. Se il nodo riceve una risposta, sa che l'indirizzo è già in uso e deve determinarne un altro.

Mobilità di IPv6

La grande diffusione di dispositivi mobili ha introdotto un nuovo requisito: un dispositivo deve essere in grado di cambiare arbitrariamente posizione nella rete Internet IPv6, mantenendo comunque le connessioni esistenti. Per fornire questa funzionalità, a un nodo mobile viene assegnato un indirizzo di posizione iniziale a cui può essere sempre raggiunto. Quando il nodo mobile si trova nella posizione iniziale, si connette al collegamento di questa posizione e usa il proprio indirizzo di posizione iniziale. Quando il nodo mobile si trova in un'altra posizione, un home agent, che è in genere un router, inoltra i messaggi tra il nodo mobile e i nodi con cui sta comunicando.

Disabilitare o abilitare IPv6

Per usare il protocollo IPv6, assicurarsi di eseguire una versione del sistema operativo che supporti IPv6 e che il sistema operativo e le classi di rete siano configurati correttamente.

Procedura di configurazione

La tabella seguente elenca diverse configurazioni

IPv6 del sistema operativo abilitato? IPv6 del codice abilitato? Descrizione
❌ No ❌ No È possibile analizzare gli indirizzi IPv6.
❌ No ✔️ Sì È possibile analizzare gli indirizzi IPv6.
✔️ Sì ❌ No È possibile analizzare gli indirizzi IPv6 e risolvere gli indirizzi IPv6 usando metodi di risoluzione dei nomi non contrassegnati come obsoleti.
✔️ Sì ✔️ Sì È possibile analizzare e risolvere gli indirizzi IPv6 usando tutti i metodi, inclusi quelli contrassegnati come obsoleti.

IPv6 è abilitato per impostazione predefinita. Per configurare questa opzione in una variabile di ambiente, usare la variabile di ambiente DOTNET_SYSTEM_NET_DISABLEIPV6. Per altre informazioni, vedere Variabili di ambiente .NET: DOTNET_SYSTEM_NET_DISABLEIPV6.

Vedi anche