10. Esempi
10.1. Esempi di Messaggi
PASSO
6LN 6LR
| |
1. | ---------- Router Solicitation --------> |
| [SLLAO] |
| |
2. | <-------- Router Advertisement --------- |
| [PIO + 6CO + ABRO + SLLAO] |
Figura 2: Scambio Base Router Solicitation/Router Advertisement
tra un Nodo e un 6LR o 6LBR
6LN 6LR
| |
1. | ------- NS con Registrazione Indirizzo ------> |
| [ARO + SLLAO] |
| |
2. | <----- NA con Registrazione Indirizzo -------- |
| [ARO con Status] |
Figura 3: Registrazione Indirizzo Neighbor Discovery
6LN 6LR 6LBR
| | |
1. | --- NS con Registrazione Indirizzo -> | |
| [ARO + SLLAO] | |
| | |
2. | | ----------- DAR ----------> |
| | |
3. | | <---------- DAC ----------- |
| | |
4. | <-- NA con Registrazione Indirizzo -- | |
| [ARO con Status] |
Figura 4: Registrazione Indirizzo Neighbor Discovery con DAD Multihop
10.2. Esempio di Bootstrapping dell'Host
Il seguente esempio descrive gli scenari di bootstrapping dell'indirizzo utilizzando i meccanismi ND migliorati specificati in questo documento. Si presume che il 6LN esegua prima una sequenza di operazioni per ottenere un accesso sicuro al livello di collegamento della LoWPAN e ottenere una chiave per la sicurezza del livello di collegamento. I metodi su come stabilire la sicurezza del livello di collegamento sono fuori dall'ambito di questo documento. In questo esempio, un 6LN IEEE 802.15.4 forma un indirizzo IPv6 breve a 16 bit senza utilizzare DHCPv6 (cioè, il flag M non è impostato negli RA).
-
Dopo aver ottenuto la sicurezza del livello di collegamento, un 6LN assegna a se stesso un indirizzo IPv6 link-local. Un indirizzo IPv6 link-local è configurato in base all'indirizzo del livello di collegamento EUI-64 del 6LN formato come da [RFC4944].
-
Successivamente, il 6LN determina uno o più router predefiniti nella rete inviando un RS all'indirizzo multicast all-routers con lo SLLAO impostato sul suo indirizzo link-local EUI-64. Se il 6LN è stato in grado di ottenere l'indirizzo del livello di collegamento di un router attraverso le sue operazioni del livello di collegamento, allora il 6LN può formare un indirizzo IPv6 di destinazione link-local per il router e inviargli un RS unicast.
Il 6LR risponde con un RA unicast all'indirizzo sorgente IP utilizzando lo SLLAO dall'RS (potrebbe aver creato un NCE Tentative). Vedi Figura 2.
-
Per comunicare a più di un hop IP di distanza, il 6LN configura un indirizzo IPv6 globale. Per risparmiare overhead, questo 6LN desidera configurare il suo indirizzo IPv6 basato su un indirizzo breve a 16 bit come da [RFC4944]. Poiché la rete non è gestita (flag M non impostato nell'RA), il 6LN sceglie casualmente un indirizzo del livello di collegamento a 16 bit e forma un indirizzo IPv6 Tentative da esso.
-
Successivamente, il 6LN registra quell'indirizzo con uno o più dei suoi router predefiniti inviando un messaggio NS unicast con un ARO contenente il suo indirizzo IPv6 globale Tentative da registrare, la Durata di Registrazione e il suo EUI-64. Uno SLLAO è incluso anche con l'indirizzo del livello di collegamento corrispondente all'indirizzo che viene registrato. Se viene ricevuto un messaggio NA di successo (Status 0), l'indirizzo può quindi essere utilizzato e il 6LN presume che sia stato controllato con successo per i duplicati. Se viene ricevuto un messaggio NA di indirizzo duplicato (Status 1), il 6LN rimuove quindi l'indirizzo IPv6 temporaneo e l'indirizzo del livello di collegamento a 16 bit e torna al passaggio 3. Se viene ricevuto un messaggio Neighbor Cache Full (Status 2), il 6LN tenta di registrarsi con un altro router predefinito o, se nessuno, torna al passaggio 2. Vedi Figura 3. Notare che un messaggio NA che restituisce un errore verrebbe inviato indietro all'indirizzo IPv6 basato su EUI-64 link-local del 6LN invece dell'indirizzo (duplicato) a 16 bit.
-
Il 6LN esegue ora la manutenzione inviando una nuova registrazione dell'indirizzo NS prima che la durata scada.
Se vengono utilizzati DAD multihop e distribuzione multihop di prefisso e contesto, l'effetto dei 6LR e degli host che seguono il processo di bootstrapping di cui sopra è un "fronte d'onda" di 6LR e host configurati, che si diffonde verso l'esterno dai 6LBR: prima, gli host e i 6LR che possono raggiungere direttamente un 6LBR riceverebbero uno o più RA e quindi configurerebbero e registrerebbero i loro indirizzi IPv6. Una volta fatto ciò, abiliterebbero il protocollo di routing e inizierebbero a inviare RA. Ciò risulterebbe in un nuovo set di 6LR e host che ricevono risposte ai loro RS, formano e registrano i loro indirizzi, ecc. Ciò si ripete finché tutti i 6LR e gli host non sono stati configurati.
10.2.1. Messaggi di Bootstrapping dell'Host
Questa sezione fornisce esempi specifici di messaggi relativi al processo di bootstrapping descritto sopra. Quando si discutono i messaggi, viene utilizzata la seguente notazione:
- LL64: Indirizzo link-local basato sull'EUI-64, che è anche l'indirizzo lungo 802.15.4.
- GP16: Indirizzo globale basato sull'indirizzo breve 802.15.4. Questo indirizzo potrebbe non essere unico.
- GP64: Indirizzi globali derivati dall'indirizzo EUI-64 come specificato in [RFC4944].
- MAC64: Indirizzo EUI-64 utilizzato come indirizzo del livello di collegamento.
- MAC16: Indirizzo breve a 16 bit IEEE 802.15.4.
Notare che alcune implementazioni possono utilizzare indirizzi in stile LL64 e GP16 invece di LL64 e GP64. Di seguito, mostreremo un flusso di messaggi di esempio su come un nodo utilizza LL64 per registrare un indirizzo GP16 per la verifica DAD multihop.
6LN-----RS-------->6LR
Src= LL64 (6LN)
Dst= all-router-link-scope-multicast
SLLAO= MAC64 (6LN)
6LR------RA--------->6LN
Src= LL64 (6LR)
Dst= LL64 (6LN)
Nota: Indirizzo sorgente dell'RA deve essere un indirizzo
link-local (Sezione 4.2 di RFC 4861).
6LN-------NS Reg------>6LR
Src= GP16 (6LN)
Dst= LL64 (6LR)
ARO
SLLAO= MAC16 (6LN)
6LR---------DAR----->6LBR
Src= GP64 o GP16 (6LR)
Dst= GP64 o GP16 (6LBR)
Indirizzo Registrato= GP16 (6LN) e EUI-64 (6LN)
6LBR-------DAC--------->6LR
Src= GP64 o GP16 (6LBR)
Dst= GP64 o GP16 (6LR)
Copia delle informazioni dal DAR
Se Status è un successo:
6LR ---------NA-Reg------->6LN
Src= LL64 (6LR)
Dst= GP16 (6LN)
ARO con Status = 0
Se Status non è un successo:
6LR ---------NA-Reg-------->6LN
Src= LL64 (6LR)
Dst= LL64 (6LN) --> Derivato dall'EUI-64 dell'ARO
ARO con Status > 0
Figura 5: Esempi Dettagliati di Indirizzi dei Messaggi
10.3. Esempio di Interazione del Router
Nella topologia route-over, quando un protocollo di routing viene eseguito attraverso i 6LR, il bootstrapping e la gestione della Cache dei Vicini vengono gestiti in modo leggermente diverso. La descrizione in questo paragrafo fornisce solo una linea guida per un'implementazione.
All'inizializzazione di un 6LR, può scegliere di fare il bootstrap come host con l'aiuto di un 6LR genitore se il DAD multihop sostituibile viene eseguito con il 6LBR. La gestione della Cache dei Vicini di un router e la risoluzione degli indirizzi tra i router vicini sono descritte rispettivamente nelle Sezioni 6.5.3 e 6.5.5. In questo esempio, assumiamo che il collegamento 6LoWPAN vicino sia sicuro.
10.3.1. Bootstrapping di un Router
In questo scenario, il 6LR di bootstrapping, 'R1', è a più hop di distanza dal 6LBR e circondato da altri vicini 6LR. Inizialmente, R1 si comporta come un host. Invia un RS multicast e riceve un RA da uno o più 6LR vicini. R1 sceglie un 6LR come suo router predefinito temporaneo ed esegue la risoluzione dell'indirizzo tramite questo router predefinito. Notare che se il DAD multihop non è richiesto (ad esempio, in una rete gestita o utilizzando indirizzi basati su EUI-64), allora non ha bisogno di scegliere un router predefinito temporaneo; tuttavia, potrebbe comunque voler inviare il messaggio RS iniziale se vuole autoconfigurare il suo indirizzo con il prefisso globale disseminato dal 6LBR.
Sulla base delle informazioni ricevute negli RA, R1 aggiorna la sua cache con le voci per tutti i 6LR vicini. Al completamento della registrazione dell'indirizzo, il router di bootstrapping elimina la voce temporanea del router predefinito e il protocollo di routing viene avviato.
Notare anche che R1 può aggiornare la sua registrazione DAD multihop direttamente con il 6LBR (utilizzando il 6LR vicino next-hop determinato dal protocollo di routing per raggiungere il 6LBR).
10.3.2. Aggiornamento della Cache dei Vicini
In questo esempio, ci sono tre 6LR: R1, R2 e R3. Inizialmente, quando R2 si avvia, vede solo R1 e di conseguenza R2 crea un NCE per R1. Ora assumiamo che R2 riceva un aggiornamento di routing valido dal router R3. R2 non ha alcun NCE per R3. Se l'implementazione di R2 supporta il rilevamento degli indirizzi del livello di collegamento dai pacchetti di informazioni di routing, allora aggiorna direttamente la sua Cache dei Vicini utilizzando quelle informazioni del livello di collegamento. Se questo non è possibile, allora R2 dovrebbe eseguire NS multicast con la sorgente impostata con il suo indirizzo link-local o globale, a seconda dell'ambito dell'indirizzo IP sorgente ricevuto nel pacchetto di aggiornamento del routing. L'indirizzo di destinazione del messaggio NS è l'indirizzo IPv6 sorgente del pacchetto di aggiornamento del routing ricevuto. Il formato del messaggio NS è come descritto nella Sezione 4.3 di [RFC4861].
Più in generale, qualsiasi 6LR che riceve un aggiornamento di rotta valido da un router vicino per il quale non ha alcun NCE è tenuto ad aggiornare la sua Cache dei Vicini come descritto sopra.
Gli indirizzi IP del router (6LR e 6LBR) appresi tramite ND non vengono ridistribuiti al protocollo di routing.