martedì 9 dicembre 2014

IPv6 Neighbor Discovery: il protocollo tuttofare

PREMESSA
Chi lavora in questo mondo sa bene che uno dei problemi che inevitabilmente dovrà essere affrontato in un futuro più o meno prossimo, è la transizione verso IPv6 (ma ricordate, come in Star Trek: First Contact (1996) "... Resistance is futile"). 

Non voglio discutere qui le ragioni dietro questo passo e perché lo ritengo inevitabile (l'unico dilemma è sul quando, ma non sul "se"). IPv6 è già una realtà e viene introdotta in rete più o meno velocemente, in funzione del "coraggio" di vari ISP e di gestori di reti Enterprise

Oggi molti siti dei principali attori del nuovo mondo del web, i famosi Over The Top (Google, Facebook, Yahoo, e chi più ne ha più ne metta), sono raggiungibili via IPv6. Anche il server su cui state leggendo questo Post è raggiungibile dall'Internet IPv6 (l'indirizzo non ve lo posso dire per motivi di sicurezza, ma è parte del blocco 2a01:2000::/20 assegnato dal RIPE a Telecom Italia, di cui ci è stata gentilmente concessa una subnet /48).

IPv6 è un protocollo ancora oggetto di molti studi, ma le sue linee fondamentali sono ben consolidate. Non voglio qui rifare tutta la storia né soffermarmi sui fondamenti (spazio di indirizzamento, tipologie di indirizzi e loro rappresentazione, struttura dell'header e degli Extension Header, ecc.). In questo che è il primo post (spero di una lunga serie) su IPv6, tratterò quello che secondo me è il protocollo correlato più importante, che lo differenzia tra l'altro da IPv4: il protocollo Neighbor Discovery

BREVE PROLOGO: ICMPv6
Come in IPv4, anche in IPv6 è stato standardizzato il protocollo ICMP, di solito indicato come ICMPv6 (che non è la versione 6 di ICMP, ma è ICMP per IPv6 !).

ICMPv6 svolge maggiori funzionalità rispetto a ICMP per IPv4, e ha integrati messaggi di protocolli che in IPv4 sono indipendenti, come ad esempi i messaggi dei protocolli per il Mobile IP e MLDv1/v2 (NOTA: MLD, Multicast Listener Discovery è l'analogo in ambiente IPv6 del protocollo IGMP, che come noto consente ad un Host di comunicare ad un router, la sua volontà di ricevere traffico di un determinato gruppo multicast).
ICMPv6 svolge tutte quelle funzioni che in IPv4 sono suddivise tra i protocolli ICMP, ARP, Mobile IP e IGMP. Tra queste ricordiamo:
  • Le funzionalità di diagnostica (ping, traceroute, ecc.).
  • La determinazione del mapping degli indirizzi di Livello 2 e Livello 3 (Neighbor Discovery).
  • Il Join di gruppi multicast.
e molto altro ancora. 

ICMPv6 è un protocollo standard definito nella RFC 4443 - Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification, Marzo 2006. Come in IPv4, i messaggi ICMPv6 sono direttamente incapsulati in pacchetti IPv6. La presenza di un messaggio ICMPv6 è definita dal valore Next Header = 58 presente nell'header IPv6.

La figura seguente riporta il formato generale dei messaggi ICMPv6. 


I campi hanno il significato seguente:
  • Type : indica il tipo di messaggio (es. Echo Request, Time Exceeded, Router Solicitation, ecc.). Il suo valore determina il formato dei dati successivi. Esistono due tipi di messaggi: di errore (valore di Type nell’intervallo 0-127) e informativi (valore di Type è nell’intervallo 128-255).
  • Code : dipende dal valore del campo Type. Viene utilizzato per creare un maggiore livello di granularità nei messaggi.
  • Checksum : utilizzato per rilevare errori sull’intero messaggio ICMPv6 e parte dell’intestazione IPv6.
  • Message Body : contenuto del messaggio.
La tabella seguente riporta un elenco parziale dei messaggi ICMPv6:


Tra questi, molto importanti, vi sono i 5 messaggi di un altro protocollo correlato, che è un po' il cuore di IPv6, il protocollo Neighbor Discovery, che adesso vado a trattare.

IL PROTOCOLLO NEIGHBOR DISCOVERY
Il Neighbor Discovery, definito nella RFC 4861 - Neighbor Discovery for IP version 6 (IPv6), Settembre 2007, è forse il più importante tra i protocolli built-in di IPv6, e svolge le funzioni dei protocolli ICMP, ARP e ICMP Redirect in ambiente IPv4.

La sua funzione principale è di consentire a nodi (Host, Router) di una stessa sottorete (tipicamente un segmento Ethernet) di annunciare la loro esistenza agli altri nodi della sottorete e di apprendere l’esistenza degli altri nodi presenti nella sottorete. 

Queste sono le funzioni principali svolte dal protocollo: 
  • Router discovery : funzione che consente agli Host di una sottorete di localizzare i router presenti nella stessa sottorete (candidati default router).
  • Prefix discovery : funzione che consente agli Host di una sottorete di scoprire i prefissi IPv6 che definiscono quali destinazioni sono on-link.
  • Parameter discovery : funzione che consente a un nodo di apprendere i parametri caratteristici della sottorete a cui appartiene (es. MTU) o globali (es. Hop Limit) da inserire nei pacchetti uscenti.
  • Address Resolution : funzione che consente a un nodo di determinare l’indirizzo di Livello 2 di un altro nodo della stessa sottorete (analogo del protocollo ARP). 
  • Next-hop determination : algoritmo che fa corrispondere ad un indirizzo IPv6 destinazione, l’indirizzo IPv6 del neighbor (Next-Hop) al quale il pacchetto deve essere inviato.
  • Neighbor Unreachability Detection : funzione che consente a un Host di determinare che un neighbor non è più raggiungibile. Se il neighbor non più raggiungibile è un router che ha il ruolo di default router, è possibile determinare un default router alternativo.
  • Duplicate Address Detection : funzione che consente a un nodo di una sottorete di determinare se l’indirizzo che desidera utilizzare è già utilizzato da un altro nodo.
  • Redirect : funzione che permette a un router di informare un Host della presenza di un neighbor migliore per raggiungere una particolare destinazione. È simile al meccanismo ICMP Redirect di IPv4.
  • Stateless Address AutoConfiguration (SLAAC) : introduce i meccanismi necessari che consentono ai nodi di configurare automaticamente un indirizzo IPv6 di una interfaccia (autoconfigurazione stateless). Questa funzione è caratteristica di IPv6 e non è presente in IPv4. I dettagli sono definiti nella RFC 4862 - IPv6 Stateless Address Autoconfiguration, Settembre 2007.
Il protocollo Neighbor Discovery utilizza, per tutte queste funzioni i seguenti 5 messaggi ICMPv6 (vedi tabella sopra):
  • Router Solicitation (Type = 133).
  • Router Advertisement (Type = 134). 
  • Neighbor Solicitation (Type = 135). 
  • Neighbor Advertisement (Type = 136). 
  • Redirect (Type = 137). 
Molto tempo fa, per spiegare ai partecipanti ai nostri corsi i dettagli di funzionamento del protocollo, realizzai un test di laboratorio molto dettagliato, per illustrare tutte le varie funzioni. Il documento contenente i risultati è disponibile qui. La sua lettura richiede la conoscenza degli aspetti base di IPv6 e di alcuni elementi base del protocollo Neighbor Discovery, per il resto è self-contained

Buona lettura.

CONCLUSIONI
Capisco che vi sia una certa riluttanza a studiare IPv6, vuoi perché uno dentro di se pensa che IPv4 sia immortale, o perché "ma questi cavolo di indirizzi IPv6 hanno una struttura illeggibile", o ecc. ecc. Ma come ho scritto nella premessa, "Resistance is futile", se volete lavorare in questo campo prima o poi con IPv6 dovrete farci i conti. Per cui vi consiglio di iniziare a studiarlo un po'. E poi, rimanete sintonizzati su questo blog, dove di tanto in tanto proporrò qualcosa (spero) di interessante.

Qualora siate interessati ad approfondimenti, noi della Reiss Romoli abbiamo profuso su IPv6 molte energie e abbiamo nel nostro catalogo molti corsi sull'argomento, base ed avanzati, che abbiamo già realizzato con successo per molti ISP e per molti Clienti Large Business. Ad ausilio della parte didattica, abbiamo anche realizzato un Lab molto complesso che emula tutta la catena, dagli Host, ai server DNS, RADIUS, DHCPv6, al backbone IPv6, fino all'Internet IPv6.

Abbiamo inoltre un IPv6 Express Consulting Service attraverso il quale forniamo supporto tecnico su attività di progettazione (definizione di piani di numerazione e di migrazione), assessment degli attuali apparati di rete, allestimento e collaudo di test plant, implementazione e testing di nuove release software, trasferimento delle competenze agli specialisti interni all’azienda e formazione ai formatori aziendali. Tramite questo servizio forniamo inoltre assistenza nella definizione di eventuali bandi di gara, nella selezione dei migliori fornitori, nell’acquisizione degli apparati e delle infrastrutture tecnologiche.

Nessun commento:

Posta un commento