3. Panoramica del protocollo (Protocol Overview)
Questo protocollo risolve un insieme di problemi relativi all'interazione tra nodi collegati allo stesso collegamento. Definisce meccanismi per risolvere ciascuno dei seguenti problemi:
Router Discovery: Come gli host localizzano i router che risiedono su un collegamento collegato.
Prefix Discovery: Come gli host scoprono l'insieme dei prefissi di indirizzo che definiscono quali destinazioni sono on-link per un collegamento collegato. (I nodi utilizzano i prefissi per distinguere le destinazioni che risiedono on-link da quelle raggiungibili solo attraverso un router.)
Parameter Discovery: Come un nodo apprende i parametri di collegamento (come l'MTU del collegamento) o i parametri Internet (come il valore del limite di hop) da inserire nei pacchetti in uscita.
Address Autoconfiguration: Introduce i meccanismi necessari per consentire ai nodi di configurare un indirizzo per un'interfaccia in modo stateless. L'autoconfigurazione degli indirizzi stateless è specificata in [ADDRCONF].
Address resolution: Come i nodi determinano l'indirizzo di livello di collegamento di una destinazione on-link (ad esempio, un vicino) avendo solo l'indirizzo IP della destinazione.
Next-hop determination: L'algoritmo per mappare un indirizzo di destinazione IP nell'indirizzo IP del vicino a cui il traffico per la destinazione deve essere inviato. Il next-hop può essere un router o la destinazione stessa.
Neighbor Unreachability Detection: Come i nodi determinano che un vicino non è più raggiungibile. Per i vicini utilizzati come router, possono essere provati router predefiniti alternativi. Sia per i router che per gli host, la risoluzione degli indirizzi può essere eseguita nuovamente.
Duplicate Address Detection: Come un nodo determina se un indirizzo che desidera utilizzare è già in uso da un altro nodo o meno.
Redirect: Come un router informa un host di un nodo di primo hop migliore per raggiungere una particolare destinazione.
Neighbor Discovery definisce cinque diversi tipi di pacchetti ICMP: Una coppia di messaggi Router Solicitation e Router Advertisement, una coppia di messaggi Neighbor Solicitation e Neighbor Advertisement, e un messaggio Redirect. I messaggi servono ai seguenti scopi:
Router Solicitation: Quando un'interfaccia viene abilitata, gli host possono inviare Router Solicitations che richiedono ai router di generare Router Advertisements immediatamente anziché al loro prossimo momento programmato.
Router Advertisement: I router annunciano la loro presenza insieme a vari parametri di collegamento e Internet periodicamente, o in risposta a un messaggio Router Solicitation. I Router Advertisements contengono prefissi utilizzati per determinare se un altro indirizzo condivide lo stesso collegamento (determinazione on-link) e/o configurazione degli indirizzi, un valore di limite di hop suggerito, ecc.
Neighbor Solicitation: Inviato da un nodo per determinare l'indirizzo di livello di collegamento di un vicino, o per verificare che un vicino sia ancora raggiungibile tramite un indirizzo di livello di collegamento memorizzato nella cache. Le Neighbor Solicitations sono utilizzate anche per la Duplicate Address Detection.
Neighbor Advertisement: Una risposta a un messaggio Neighbor Solicitation. Un nodo può anche inviare Neighbor Advertisements non richiesti per annunciare un cambiamento di indirizzo di livello di collegamento.
Redirect: Utilizzato dai router per informare gli host di un primo hop migliore per una destinazione.
Sui collegamenti capaci di multicast, ogni router multicast periodicamente un pacchetto Router Advertisement annunciando la sua disponibilità. Un host riceve Router Advertisements da tutti i router, costruendo una lista di router predefiniti. I router generano Router Advertisements abbastanza frequentemente affinché gli host apprendano della loro presenza entro pochi minuti, ma non abbastanza frequentemente da poter fare affidamento sull'assenza di annunci per rilevare il guasto del router; un algoritmo separato di Neighbor Unreachability Detection fornisce il rilevamento del guasto.
I Router Advertisements contengono una lista di prefissi utilizzati per la determinazione on-link e/o configurazione autonoma degli indirizzi; i flag associati ai prefissi specificano gli usi previsti di un particolare prefisso. Gli host utilizzano i prefissi on-link annunciati per costruire e mantenere una lista utilizzata per decidere quando la destinazione di un pacchetto è on-link o oltre un router. Si noti che una destinazione può essere on-link anche se non è coperta da alcun prefisso on-link annunciato. In tali casi, un router può inviare un Redirect informando il mittente che la destinazione è un vicino.
I Router Advertisements (e i flag per prefisso) consentono ai router di informare gli host su come eseguire l'Address Autoconfiguration. Ad esempio, i router possono specificare se gli host dovrebbero utilizzare DHCPv6 e/o la configurazione autonoma (stateless) degli indirizzi.
I messaggi Router Advertisement contengono anche parametri Internet come il limite di hop che gli host dovrebbero utilizzare nei pacchetti in uscita e, facoltativamente, parametri di collegamento come l'MTU del collegamento. Ciò facilita l'amministrazione centralizzata dei parametri critici che possono essere impostati sui router e automaticamente propagati a tutti gli host collegati.
I nodi realizzano la risoluzione degli indirizzi multicastando una Neighbor Solicitation che chiede al nodo di destinazione di restituire il suo indirizzo di livello di collegamento. I messaggi Neighbor Solicitation vengono multicastati all'indirizzo multicast solicited-node dell'indirizzo di destinazione. La destinazione restituisce il suo indirizzo di livello di collegamento in un messaggio Neighbor Advertisement unicast. Una singola coppia di pacchetti richiesta-risposta è sufficiente affinché sia l'iniziatore che la destinazione risolvano gli indirizzi di livello di collegamento reciproci; l'iniziatore include il suo indirizzo di livello di collegamento nella Neighbor Solicitation.
I messaggi Neighbor Solicitation possono essere utilizzati anche per determinare se a più di un nodo è stato assegnato lo stesso indirizzo unicast. L'uso dei messaggi Neighbor Solicitation per la Duplicate Address Detection è specificato in [ADDRCONF].
La Neighbor Unreachability Detection rileva il guasto di un vicino o il guasto del percorso in avanti verso il vicino. Farlo richiede una conferma positiva che i pacchetti inviati a un vicino stiano effettivamente raggiungendo quel vicino e vengano elaborati correttamente dal suo livello IP. La Neighbor Unreachability Detection utilizza conferme da due fonti. Quando possibile, i protocolli di livello superiore forniscono una conferma positiva che una connessione sta facendo "progressi in avanti", ovvero, i dati inviati in precedenza sono noti per essere stati consegnati correttamente (ad esempio, nuovi acknowledgment sono stati ricevuti di recente). Quando la conferma positiva non arriva attraverso tali "suggerimenti", un nodo invia messaggi Neighbor Solicitation unicast che sollecitano Neighbor Advertisements come conferma di raggiungibilità dal next hop. Per ridurre il traffico di rete non necessario, i messaggi di sonda vengono inviati solo ai vicini a cui il nodo sta inviando attivamente pacchetti.
Oltre ad affrontare i problemi generali di cui sopra, Neighbor Discovery gestisce anche le seguenti situazioni:
Link-layer address change - Un nodo che sa che il suo indirizzo di livello di collegamento è cambiato può multicastare alcuni pacchetti Neighbor Advertisement (non richiesti) a tutti i nodi per aggiornare rapidamente gli indirizzi di livello di collegamento memorizzati nella cache che sono diventati non validi. Si noti che l'invio di annunci non richiesti è solo un miglioramento delle prestazioni (ad esempio, inaffidabile). L'algoritmo di Neighbor Unreachability Detection garantisce che tutti i nodi scopriranno in modo affidabile il nuovo indirizzo, anche se il ritardo potrebbe essere un po' più lungo.
Inbound load balancing - I nodi con interfacce replicate potrebbero voler bilanciare il carico della ricezione dei pacchetti in arrivo su più interfacce di rete sullo stesso collegamento. Tali nodi hanno più indirizzi di livello di collegamento assegnati alla stessa interfaccia. Ad esempio, un singolo driver di rete potrebbe rappresentare più schede di interfaccia di rete come una singola interfaccia logica con più indirizzi di livello di collegamento. Neighbor Discovery consente a un router di eseguire il bilanciamento del carico per il traffico indirizzato a se stesso consentendo ai router di omettere l'indirizzo di livello di collegamento sorgente dai pacchetti Router Advertisement, costringendo così i vicini a utilizzare i messaggi Neighbor Solicitation per apprendere gli indirizzi di livello di collegamento dei router. I messaggi Neighbor Advertisement restituiti possono quindi contenere indirizzi di livello di collegamento che differiscono a seconda, ad esempio, di chi ha emesso la sollecitazione. Questa specifica non definisce un meccanismo che consenta agli host di bilanciare i pacchetti in arrivo. Vedere [LD-SHRE].
Anycast addresses - Gli indirizzi anycast identificano uno di un insieme di nodi che forniscono un servizio equivalente, e più nodi sullo stesso collegamento possono essere configurati per riconoscere lo stesso indirizzo anycast. Neighbor Discovery gestisce gli anycast facendo in modo che i nodi si aspettino di ricevere più Neighbor Advertisements per lo stesso target. Tutti gli annunci per gli indirizzi anycast sono contrassegnati come annunci non-Override. Un annuncio non-Override è uno che non aggiorna o sostituisce le informazioni inviate da un altro annuncio. Questi annunci sono discussi più avanti nel contesto dei messaggi Neighbor Advertisement. Ciò richiama regole specifiche per determinare quale dei potenzialmente più annunci dovrebbe essere utilizzato.
Proxy advertisements - Un nodo disposto ad accettare pacchetti per conto di un indirizzo di destinazione che non è in grado di rispondere alle Neighbor Solicitations può emettere Neighbor Advertisements non-Override. Gli annunci proxy sono utilizzati dagli Home Agents Mobile IPv6 per difendere gli indirizzi dei nodi mobili quando si spostano off-link. Tuttavia, non è inteso come un meccanismo generale per gestire i nodi che, ad esempio, non implementano questo protocollo.
3.1. Confronto con IPv4 (Comparison with IPv4)
Il protocollo Neighbor Discovery IPv6 corrisponde a una combinazione dei protocolli IPv4 Address Resolution Protocol [ARP], ICMP Router Discovery [RDISC] e ICMP Redirect [ICMPv4]. In IPv4 non esiste un protocollo o meccanismo generalmente concordato per la Neighbor Unreachability Detection, sebbene il documento Hosts Requirements [HR-CL] specifichi alcuni possibili algoritmi per la Dead Gateway Detection (un sottoinsieme dei problemi affrontati dalla Neighbor Unreachability Detection).
Il protocollo Neighbor Discovery fornisce una moltitudine di miglioramenti rispetto al set di protocolli IPv4:
-
Router Discovery fa parte del set di protocolli di base; non è necessario che gli host "intercettino" i protocolli di routing.
-
I Router Advertisements trasportano indirizzi di livello di collegamento; non è necessario alcuno scambio di pacchetti aggiuntivo per risolvere l'indirizzo di livello di collegamento del router.
-
I Router Advertisements trasportano prefissi per un collegamento; non è necessario avere un meccanismo separato per configurare la "netmask".
-
I Router Advertisements abilitano l'Address Autoconfiguration.
-
I router possono annunciare un MTU per gli host da utilizzare sul collegamento, garantendo che tutti i nodi utilizzino lo stesso valore MTU sui collegamenti privi di un MTU ben definito.
-
I multicast di risoluzione degli indirizzi sono "distribuiti" su 16 milioni (2^24) di indirizzi multicast, riducendo notevolmente le interruzioni correlate alla risoluzione degli indirizzi sui nodi diversi dalla destinazione. Inoltre, le macchine non IPv6 non dovrebbero essere interrotte affatto.
-
I Redirects contengono l'indirizzo di livello di collegamento del nuovo primo hop; non è necessaria una risoluzione degli indirizzi separata al ricevimento di un redirect.
-
Più prefissi possono essere associati allo stesso collegamento. Per impostazione predefinita, gli host apprendono tutti i prefissi on-link dai Router Advertisements. Tuttavia, i router possono essere configurati per omettere alcuni o tutti i prefissi dai Router Advertisements. In tali casi gli host presumono che le destinazioni siano off-link e inviano il traffico ai router. Un router può quindi emettere redirects secondo necessità.
-
A differenza di IPv4, il destinatario di un redirect IPv6 presume che il nuovo next-hop sia on-link. In IPv4, un host ignora i redirects che specificano un next-hop che non è on-link secondo la network mask del collegamento. Il meccanismo di redirect IPv6 è analogo alla funzionalità XRedirect specificata in [SH-MEDIA]. Si prevede che sia utile sui collegamenti non-broadcast e media condivisi in cui è indesiderabile o non possibile per i nodi conoscere tutti i prefissi per le destinazioni on-link.
-
La Neighbor Unreachability Detection fa parte della base, il che migliora significativamente la robustezza della consegna dei pacchetti in presenza di router guasti, collegamenti parzialmente guasti o partizionati, o nodi che cambiano i loro indirizzi di livello di collegamento. Ad esempio, i nodi mobili possono spostarsi off-link senza perdere alcuna connettività a causa di cache ARP obsolete.
-
A differenza di ARP, Neighbor Discovery rileva i guasti di mezzo collegamento (utilizzando la Neighbor Unreachability Detection) ed evita di inviare traffico ai vicini con cui la connettività bidirezionale è assente.
-
A differenza di IPv4 Router Discovery, i messaggi Router Advertisement non contengono un campo di preferenza. Il campo di preferenza non è necessario per gestire router di diversa "stabilità"; la Neighbor Unreachability Detection rileverà i router morti e passerà a uno funzionante.
-
L'uso di indirizzi link-local per identificare in modo univoco i router (per i messaggi Router Advertisement e Redirect) consente agli host di mantenere le associazioni del router nel caso in cui il sito venga rinumerato per utilizzare nuovi prefissi globali.
-
Impostando il Hop Limit a 255, Neighbor Discovery è immune ai mittenti off-link che inviano accidentalmente o intenzionalmente messaggi ND. In IPv4, i mittenti off-link possono inviare sia Redirects ICMP che messaggi Router Advertisement.
-
Posizionare la risoluzione degli indirizzi al livello ICMP rende il protocollo più indipendente dal media rispetto ad ARP e consente di utilizzare meccanismi generici di autenticazione e sicurezza del livello IP secondo necessità.
3.2. Tipi di collegamento supportati (Supported Link Types)
Neighbor Discovery supporta collegamenti con proprietà diverse. In presenza di determinate proprietà, solo un sottoinsieme dei meccanismi del protocollo ND è completamente specificato in questo documento:
point-to-point - Neighbor Discovery gestisce tali collegamenti proprio come i collegamenti multicast. (Il multicast può essere fornito banalmente sui collegamenti point-to-point e alle interfacce possono essere assegnati indirizzi link-local.)
multicast - Neighbor Discovery opera su collegamenti capaci di multicast come descritto in questo documento.
non-broadcast multiple access (NBMA) - Redirect, Neighbor Unreachability Detection e determinazione del next-hop dovrebbero (SHOULD) essere implementati come descritto in questo documento. La risoluzione degli indirizzi e il meccanismo per la consegna di Router Solicitations e Advertisements sui collegamenti NBMA non sono specificati in questo documento. Si noti che se gli host supportano la configurazione manuale di una lista di router predefiniti, gli host possono acquisire dinamicamente gli indirizzi di livello di collegamento per i loro vicini dai messaggi Redirect.
shared media - Il messaggio Redirect è modellato sul messaggio XRedirect in [SH-MEDIA] per semplificare l'uso del protocollo sui collegamenti di media condivisi.
Questa specifica non affronta i problemi di media condivisi che riguardano solo i router, come:
- Come i router scambiano informazioni sulla raggiungibilità su un collegamento di media condivisi.
- Come un router determina l'indirizzo di livello di collegamento di un host, di cui ha bisogno per inviare messaggi di redirect all'host.
- Come un router determina che è il router di primo hop per un pacchetto ricevuto.
Il protocollo è estensibile (attraverso la definizione di nuove opzioni) in modo che altre soluzioni possano essere possibili in futuro.
variable MTU - Neighbor Discovery consente ai router di specificare un MTU per il collegamento, che tutti i nodi utilizzano poi. Tutti i nodi su un collegamento devono (MUST) utilizzare lo stesso MTU (o Maximum Receive Unit) affinché il multicast funzioni correttamente. Altrimenti, quando si effettua il multicast, un mittente, che non può sapere quali nodi riceveranno il pacchetto, non potrebbe determinare una dimensione minima del pacchetto che tutti i ricevitori possono elaborare (o Maximum Receive Unit).
asymmetric reachability - Neighbor Discovery rileva l'assenza di raggiungibilità simmetrica; un nodo evita i percorsi verso un vicino con cui non ha connettività simmetrica.
La Neighbor Unreachability Detection identificherà tipicamente tali mezzi collegamenti e il nodo si asterrà dall'usarli.
Il protocollo può presumibilmente essere esteso in futuro per trovare percorsi praticabili in ambienti che mancano di connettività riflessiva e transitiva.
3.3. Protezione dei messaggi Neighbor Discovery (Securing Neighbor Discovery Messages)
I messaggi Neighbor Discovery sono necessari per varie funzioni. Diverse funzioni sono progettate per consentire agli host di accertare la proprietà di un indirizzo o la mappatura tra indirizzi di livello di collegamento e di livello IP. Le vulnerabilità relative a Neighbor Discovery sono discusse nella Sezione 11.1. Una soluzione generale per proteggere Neighbor Discovery è al di fuori dello scopo di questa specifica ed è discussa in [SEND]. Tuttavia, la Sezione 11.2 spiega come e sotto quali vincoli IPsec Authentication Header (AH) o Encapsulating Security Payload (ESP) possono essere utilizzati per proteggere Neighbor Discovery.