OsGate.org Logo

Introduzione ad IPv6 - ipv6 ipv4 network

Networks Networks

Date 24.05.2010

Visits 4184

"IPv6 é il protocollo che é stato designato come sostituto di IPv4. Grazie alle migliorie introdotte e sopratutto al maggior numero di indirizzi resi disponibili, IPv6 si appresta a garantire un futuro migliore alla rete."

Introduzione

IPv6 é un protocollo di rete che é stato introdotto alcuni anni fa come successore di IPv4.

Questo nuovo protocollo ha ormai raggiunto un alto livello di maturità e tra non molto diventerà il nuovo standard IP.La sua introduzione porterà notevoli miglioramenti sulla rete a beneficio di tutti i suoi utilizzatori, consentendo di raggiungere un nuovo obbiettivo nella storia di internet.

Vantaggi di IPv6

IPv6 introduce rispetto alla versione precedente molti cambiamenti che porteranno a modifiche nel modo di agire sulla rete. Le modifiche apportate sono anche il frutto di ciò che internet é diventato negli anni siccome sono state concepite per l'attuale e futura situazione della rete.

Ecco alcune novità:

    • Maggiore quantità di indirizzi: IPv4 si trascina da anni questa grande pecca, siccome quando fu progettato nessuno poteva immaginare come si sarebbe evoluto internet. Si passa da 2^32 a 2^128 indirizzi disponibili.
    • Routing adattato per le esigenze moderne: la versione 6 é stata concepita per funzionare e convivere al meglio con il routing negli ambienti moderni, combinando efficienza e flessibilità, cosa che con IPv4 non é stata fatta.
    • Alto livello di sicurezza: IPv6 é stato concepito pensando alla sicurezza, includendo la possibilità di utilizzare gli header di tipo authentication ed encryption.
    • Modifica dei protocolli esistenti: i protocolli che hanno a che fare in maniera stretta con IP devono essere adattati per poter gestire IPv6, uno di questi é per esempio ICMPv6. Inoltre é stato agguinto il protocollo ND (Neighbour Discovery) che svolge alcuni compiti di ARP e ICMP della versione precedente.

 

  • Tipologie di indirizzamento supportate: con questa versione il broadcast non esiste più a causa dei suoi problemi di performance. Possiamo trovare dunque:
    • unicast => da host a host
    • multicast => presente anche in IPv4 ma poco utilizzato, invia messaggi ad un gruppo di host in rete, é richiesto il supporto multicast per il funzionamento della versione 6.
    • anycast => é una novità, un messaggio spedito con anycast, é un messaggio che deve essere spedito a un gruppo di host in rete, ma é abbastanza che solo un host del gruppo lo riceva.
    • broadcast: non esiste più in IPv6, al suo posto si utilizza multicast
  • ...

Oltre alle novità elencate prima, é presente anche un sostanziale cambiamento nella rappresentazione e nelle operazioni più comuni che si possono eseguire sugli indirizzi. Questo siccome l'aumento da 2^32 a 2^128 porta anche a un modo differente di gestire il tutto.

Rappresentazione esadecimale

La lunghezza di IPv6 non ci consente di esprimere l'indirizzo in maniera del tutto decimale, siccome rappresentare 128 bit utilizzando solo numeri si rivelerebbe alquanto complesso, anche suddividendo in ottetti il numero come abbiamo sempre fatto in precedenza:

196.35.210.35.200.0.34.245.0.0.0.0.145.244.135.255

Questo é un indirizzo composto da 128 bit in maniera decimale.

Vediamo la stessa cosa con la notazione esadecimale:


Formato binario
11000100 00100011 11010010 00100011 11001000 00000000 00100010 11110101
00000000 00000000 00000000 00000000 10010001 11110100 10000111 11111111

Formato esadecimale
C4 23 D2 23 C8 00 22 F5 00 00 00 00 91 F4 87 FF

Ora abbiamo il formato esadecimale e dobbiamo raggrupparlo in modo esatto per formare un indirizzo IPv6, per fare questo creiamo dei gruppi di 16 bits interponendo ":" tra ogni gruppo:

C423:D223:C800:22F5:0000:0000:91F4:87FF

Quattro zeri di fila possono essere compressi da :0000 a :0, e più zeri di fila possono essere sostituiti da "::". Possiamo inserire "::" solo una volta nell'indirizzo anche se questo contiene più gruppi di zeri non contigui in fila, questo siccome se comprimessimo tutto, non potremo sapere la quantità di zeri presenti in una o nell'altra parte compressa. Solo gli zeri posti davanti ad un gruppo possono essere rimossi (0E9C => E9C ; E9C0 => E9C0);

Quindi nel nostro caso avremo:


C423:D223:C800:22F5::91F4:87FF

Header IPv6

L'header IPv6 porta alcune modifiche rispetto all'header IPv4, ecco come si presenta:


Bits Campo Descrizione
4 Version Indica la versione del protocollo, sarà sempre 6
8 Traffic Class Rimpiazza il campo TOS di IPv4
20 Flow Label Viene usato per controllare il flusso di datagrammi e per il QoS
16 Payload Length Contiene il numero di bytes del payload e degli extension header qualora cene fossero
8 Next Header Contiene il tipo di protocollo/extension header utilizzato dopo il main header o un
extension header
8 Hop Limit Ha la stessa funzione del campo TTL (Time To Live)
128 Source Address L'indirizzo sorgente
128 Destination Address L'indirizzo di destinazione

L'header ha una lunghezza fissa di 40 bytes (320 bits).

Nei datagrammi IPv6 ora é possibile includere degli Extension Header, che devono essere posti tra l'header principale ed il payload. Questi contengono opzioni aggiuntive e hanno un header apposito. Possiamo inserirne quanti vogliamo o non inserirne del tutto, e ne esistono sei tipi:

  • Hop-by-hop Options
  • Routing
  • Fragment
  • ESP (Encapsulatin Security Payload)
  • AH (Authentication Header)
  • Destinations Options

Solitamente dopo l'ultimo extension header é presente il payload che contiene i dati provenienti dal livello superiore.

IPv6 Unicast

Gestione gerarchica degli indirizzi

Un indirizzo IPv6 di tipo unicast é suddivisibile in tre parti principali, ognuna delle quali ha uno scopo ben preciso. Questo ci consente di avere una gerarchia all'interno degli indirizzi.

Bits	Campo	 	 Descrizione
48 Prefix é il prefisso dell'indirizzo, chiamato anche Global Routing Prefix. Possiamo anche
rappresentarlo come network ID
16 Subnet ID Rappresenta una subnet appartenente all'indirizzo
64 Interface ID é un identificativo che rappresenta un device o host sulla rete. É un numero univoco.

Questa suddivisione permette di avere una struttura ben delineata già a partire dall'indirizzo IP.

Ogni campo può rappresentare un livello della gerarchia, per esempio i primi 48 bits del campo Prefix, rappresentano una classe di indirizzi /48 che può essere assegnata direttamente ad un azienda. Successivamente l'azienda può scegliere di suddividere ulteriormente i 16 bits della subnet mask (65536 subnet) alla stessa maniera con cui veniva eseguita in IPv4, oppure può settare a zero la subnet.

Gli ultimi 64 bits, rappresentano univocamente un host in rete.

Interface ID

Come abbiamo visto prima gli ultimi 64 bits rappresentano un host in rete, e questo numero é ricavato dall'indirizzo MAC di un host. Il MAC da 48 bit deve passare a 64, questo avviene grazie a delle modifiche dell'indirizzo, come specificato nel formato IEEE EUI-64 (EUI: extended unique identifier).

Per definire un Interface ID si ottiene prima il MAC address:

23:0C:6E:CC:13:89 

Si suddivide l'indirizzo cosi:


OUI (Organizationally Unique Identifier)
29:0C:6E => 230C:6E

Device Identifier
CC:13:89 => CC:1389

La prima parte va posizionata completamente a destra, mentre la seconda completamente a sinistra.

Successivamente si aggiungono al centro 16 bit aggiuntivi, questi devono essere sempre "FF:FE":

290C:6EFF:FECC:1389

L'ultimo passaggio é quello di cambiare il settimo bit (bit universal/local) a partire da sinistra:

29 0C
00101001 00001100

2A 0C
00101011 00001100

Quindi avremo:

2A0C:6EFF:FECC:1389

Tipi di indirizzi speciali

Esistono degli indirizzi speciali in IPv6 come in IPv4, questi possono essere indirizzi di loopback/privati, vediamo le tipologie di questi indirizzi:

  • loopback: come in IPv4 un esiste un indirizzo di loopback, indicato con 0:0:0:0:0:0:0:1 o ::1 nella sua forma compressa
  • non specificati: un indirizzo non specificato é utilizzato quando il dispositivo non conosce il suo indirizzo, il valore che assume é 0:0:0:0:0:0:0:0. Compresso é ::.
  • privati: con IPv6 non é più necessario utilizzare il NAT per una rete locale ed avviene una suddivisione della tipologia di indirizzi privati:
  • site-local address: un indirizzo privato di tipo site-local é utilizzabile solamente all'interno della rete locale e non può essere inoltrato in internet. Questi indirizzi iniziano sempre con, FEC, FED, FEE o FEF
  • link-local address: un indirizzo che non viene inoltrato dai router all'interno della rete privata a differenza di uno site-local. Sono utilizzati solo in casi speciali quando si ha la necessità di comunicare solamente su un dato segmento di rete. Iniziano sempre con FE8, FE9 FEA o FEB.

IPv6 Multicast

Il tipo di trasmissione detta multicast, permette l'invio di un messaggio ad un gruppo di host in modo contemporaneo. Possiamo distinguere questi indirizzi siccome iniziano sempre con 11111111 o FF in esadecimale.

Formato

Ecco il formato di un indirizzo IPv6 Multicast:

Bits	Campo	 	Descrizione
8 - I primi 8 bits sono settati sempre a 1 per indicare un indirizzo multicast
4 Flags Sono le flags dell'indirizzo
4 Scope ID É lo scope dove l'indirizzo può agire. Più in basso vedremo che valori può asusmere
112 Group ID É l'indirizzo del gruppo multicast

Lo Scope ID serve per definire in quale area può agire l'indirizzo, ecco quali sono gli scope che il campo può assumere:

  • 0 = Riservato
  • 1 = Node-local => Si riferisce ad un nodo sulla rete
  • 2 = Link-local => Si riferisce ad una rete locale, non può essere inoltrato dai router
  • 5 = Site-local => Si riferisce ad una rete locale, può essere inoltrato dai router
  • 8 = Organization-local => Agisce tra più reti attraverso internet
  • 14 = Global => Internet
  • 15 = Riservato

Sul sito della iana sono presenti gli indirizzi Multicast IPv6 assegnati => http://www.iana.org/assignments/ipv6-multicast-addresses/

IPv6 Stateless Configuration

In IPv6 é presente una feature che permette ad un host in rete di determinare il proprio indirizzo in maniera automatica. Questo senza bisogno di un server come il DHCP in rete.

Per fare questo esegue una serie di passi:


Generazione indirizzo link-local => il device genera un indirizzo unicast link-local, tramite il MAC address
o con l'uso di un token
Test dell'indirizzo generato => verifica che l'indirizzo generato sia unico in rete. Questo é valido per
lo più quando viene generato tramite token. Utilizza ND.
Assegnamento dell'indirizzo => se il test precedente ha successo assegna l'indirizzo all'interfaccia
Router contact => Viene contattato il router locale per avere maggiori informazioni su come
continuare la configurazione
Router direction => Il router risponde comunicando se é in uso l'auto-configurazione,
altrimenti invia l'indirizzo di un server DHCP
Configurazione Indirizzo Globale => L'host definisce il suo indirizzo globale Internet

ICMPv6

É il protocollo gemello di ICMPv4, e svolge fondamentalmente gli stessi compiti solo che include alcune migliorie.

Messaggi di Errore

Destination Unreachable
Informa che l'host che é fallito l'invio del datagramma siccome la destinazione non é raggiungibile.

Packet Too Big
Una novità in questa versione é l'introduzione dei messaggi "Packet Too Big", questo siccome é cambiato il modo in cui avviene la frammentazione dei datagrammi IPv6 da parte dei router. Infatti il router non frammenterà più i datagrammi con dimensioni maggiori rispetto all'MTU, ma si limiterà a rispedire all'host un messaggio "Packet Too Big". In IPv6 l'MTU di default é 1280 byte.

Time Exceeded
Il messaggio "Time Exceeded" é generato quando un pacchetto IPv6 ha raggiunto il limite di hop che può oltrepassare sulla rete. Il vecchio TTL (Time to live) ora é stato rinominato in Hop Limits.
Questo messaggio é generato quando il campo Hop Limits raggiunge lo zero e dunque non può più essere inoltrato sulla rete.

Parameter Problem
Questo tipo di messaggio viene utilizzato quando é presente un errore grave all'interno di un campo nell'header IPv6. Rispetto agli altri messaggi che indicano un problema definito, "Parameter Problem" ri riferisce ad un errore generale del datagramma.
Ecco i tipi di problemi per la quale un datagramma non può essere inoltrato generando questo messaggio:

Erroneus Header Filed Encountered => L'header contiene un errore e non può essere processato
Unrecognized Next Header Type Encountered => un Next Header all'interno dell'header contiene valori sconosciuti
Unrecognized IPv6 Option Encountered => É presente un opzione IPv6 non riconosciuta.

Messaggi informativi

Ecco alcuni dei tanti messaggi informativi presenti in ICMPv6:


Echo => Presenti come in precedenza i classici Echo Request e Echo Reply, usati nel comando ping
Router Advertisement => Sono messaggi inviati dai router sulla rete, per far si che un host possa
venire a conoscenza dei router presenti
Router Solicitation => Permette ad un host che invia questo messaggio di sapere quali sono i
router presenti in rete.
Neighbor Advertisement => Come Router Advertisement, solo che funziona attraverso gli host in rete
Neighbot Solicitation => Come Router Solicitation, funziona tra gli host in rete

ND - Neighbor Discovery

Il nuovo protocollo introdotto in IPv6 é il Neighbor Discovery (ND), che include numerose funzioni riguardanti la comunicazione tra i dispositivi in rete svolte in precedenza da ICMP o ARP. Questo protocollo strettamente correlato con ICMPv6 "aiuta" per lo più le comunicazioni IPv6.

ND é composto da 9 funzioni principali che é possibile suddividere in più gruppi di comunicazione:

Comunicazione Host - Router

Router Discovery => Utilizzato dagli host per venire a conoscenza dei router

Prefix Discovery => Viene utilizzato per scoprire il prefisso di rete e quindi si usa per sapere su quale rete ci si trova

Parameter Discovery => Permette di venire a conoscenza di altri parametri delle rete, come per esempio l'MTU

Address Autoconfiguration => Utilizzato per la configurazione stateless

Comunicazione Host - Host

Address Resolution => Utilizzato per ricavare il MAC address di un host in base all'IP. É come ARP in IPv4.

Next-hop determination => Controllando la destinazione dal datagramma IP riesce a determinare chi sarà il prossimo hop a cu iniviare il tutto

Neighbor Unreachability Detection => Tramite questa funzione si riesce a determinare un host adiacente é raggiungibile o no

Duplicate Address Detection => Questa funzione controlla se l'indirizzo che si vuole utilizzare é già in uso

Redirect

Redirect é una funzione che viene utilizzata quando un router informa l'host su una migliore strada da percorrere per raggiungere una data destinazione.

Utilità

ping6
traceroute6
tracepath6
ip6tables