Architettura di IPv6
L'indirizzo ipv6 come nel caso di ipv4 è l'identificatore
di una singola interfaccia di rete (ind. unicast), ma anche
di un insieme di esse (indirizzi multicast ed anycast).
Ad una interfaccia possono essere associati anche più di
un indirizzo, ognuno dei quali identifica in modo univoco
quell'interfaccia.
Gli indirizzi unicast e multicast hanno le stesse caratteristiche
che in ipv4, mentre il tipo anycast è totalmente nuovo.
I broadcast non esistono più. La loro funzione è rimplementata
dagli indirizzi multicast.
Vediamo brevemente il funzionamento dei suddetti:
- unicast : identificano
una sola interfaccia e quindi i pacchetti mandati a quell'indirizzo
giungeranno solo a quella specifica interfaccia.
- multicast : identificano
un gruppo di interfacce e quindi i pacchetti mandati a
questi indirizzi giungeranno a tutte le interfacce del
gruppo.
- anycast : identificano
un gruppo di interfacce ed i pacchetti mandati a questi
indirizzi giungono all'interfaccia più vicina nel gruppo.
Quando dico interfaccia più vicina intendo a livello di
instradamento.
Altra particolarità di IPv6 è quella della sicurezza.
Breve parentesi, il TCP/IP come saprete è costituito da
4 layer (livelli)
- Livello 1 : Apllicazione (telnet, ftp, ...)
- Livello 2 : Trasporto (TCP, UDP)
- Livello 2 : Rete IP
- Livello 4 : Collegamento (interfaccia)
Con IPv4 la sicurezza poteva essere garantita solo a livello
1, ad esempio con applicazioni del tipo SSH, altrimenti
tutto "viaggiava" in chiaro, ed oltretutto i pacchetti erano
(diciamo cmq sono :P) facilmente manipolabili, basti pensare
ad IP Spoofing o il DoS chiamato Smurf.
Con IPv6 la sicurezza è garantita al livello 3, ovvero quello
di IP.
Per quanto riguarda questa parte non è ancora tutto definito
al 100%, il più recente RFC da consultare è il 2401.
Essenzialmente la sicurezza è data da:
- Un autentication header che ha lo scopo di
garantire al destinatario l'autenticità del pacchetto
ricevuto.
- Encrypted Security Payload garantisce che solo
il leggittimo ricevente possa leggere quel pacchetto.
Naturalmente sorgente e destinazione dovranno concordare
chiave crtittografica e algoritmi; tutti questi accordi
sono riporati sul RFC 2401.
Per concludere questa breve (e poco esauriente :P) carrellata
sull'architettura di IPv6 ecco un altra caratteristica :
l'autoconfigurazione. Non scenderò in dettaglio
anche perchè è un pò complesso e non voglio appesantire
troppo la lettura, inoltre esistono paper scritti da chi
ha molta più esperienza di me ;)
L'autoconfigurazione permette ad un nodo di sapere automaticamente
il suo indirizzo in modo da connettersi senza troppi problemi
ad internet.
Innanzittutto vengono sfruttati gli indirizzi link-local;
se sul nodo è presente una scheda ethernet viene garantito
un indirizzo di 48 bit univoco ad esempio fe80::xxxx:xxxx:xxxx
dove xxxx:xxxx:xxxx è l'indirizzo hardware della scheda.
(MAC)
A questo punto si ha un indirizzo locale, per avere automaticamente
un indirizzo globale (internet) esistono due modi:
- Autoconfiguraziona stateless
- Autoconfigurazione statefull
Stateless:
La forma + semplice, quando si avrà la possibilità
di un collegamento internet il prefisso locale fe80::/80
verra sostituito dal prefisso internet assegnato dal
provider (ora come ora dal tunnel broker).
Statefull:
I problemi della stateless sono che in molti casi
non è possibile che restino ben 48 bit per un indirizzo,
ad esempio in strutture su molti livelli; altro problema
è la sicurezza
Basti pensare che chiunque potrebbe collegare una macchina
con un ethernet alla LAN, ottenere un indirizzo valido
e operare tranquillamente :)
Per questo c'è la versione IPv6 del DHCP che permetta
di assegnare ad ogni nodo un indirizzo unicast globale.
(sperimentale)