Passa al contenuto principale

5. Istanza RPL

All'interno di una data LLN, possono esserci più istanze RPL logicamente indipendenti. Un nodo RPL può appartenere a più istanze RPL e può agire come router in alcune e come foglia in altre. Questo documento descrive come si comporta una singola istanza.

Esistono due tipi di istanze RPL: locali e globali. RPL divide lo spazio RPLInstanceID tra istanze globali e locali per consentire sia l'allocazione coordinata che unilaterale degli RPLInstanceID. Le istanze RPL globali sono coordinate, hanno uno o più DODAG e sono tipicamente di lunga durata. Le istanze RPL locali sono sempre un singolo DODAG la cui singolare radice possiede il corrispondente DODAGID e alloca l'RPLInstanceID locale in modo unilaterale. Le istanze RPL locali possono essere utilizzate, ad esempio, per costruire DODAG a supporto di una futura soluzione di routing on-demand. La modalità di funzionamento delle istanze RPL locali non rientra nell'ambito di questa specifica e può essere descritta in altre specifiche correlate.

La definizione e il provisioning delle istanze RPL non rientrano nell'ambito di questa specifica. Le linee guida possono essere specifiche dell'applicazione e dell'implementazione e si prevede che saranno elaborate in future specifiche correlate. Tali operazioni dovrebbero essere tali che i pacchetti di dati provenienti dall'esterno della rete RPL possano essere associati in modo inequivocabile ad almeno un'istanza RPL ed essere instradati in modo sicuro su qualsiasi istanza che corrisponderebbe al pacchetto.

I pacchetti di controllo e di dati all'interno della rete RPL sono etichettati per identificare in modo inequivocabile di quale istanza RPL fanno parte.

Ogni messaggio di controllo RPL ha un campo RPLInstanceID. Alcuni messaggi di controllo RPL, quando si riferiscono a un RPLInstanceID locale come definito di seguito, possono includere anche un DODAGID.

I pacchetti di dati che fluiscono all'interno della rete RPL espongono l'RPLInstanceID come parte delle informazioni sul pacchetto RPL richieste da RPL, come ulteriormente descritto nella Sezione 11.2. Per i pacchetti di dati provenienti dall'esterno della rete RPL, il router di ingresso determina l'RPLInstanceID e lo inserisce nel pacchetto risultante che inietta nella rete RPL.

5.1. ID Istanza RPL

Un RPLInstanceID globale DEVE essere unico per l'intera LLN. I meccanismi per l'allocazione e il provisioning dell'RPLInstanceID globale non rientrano nell'ambito di questa specifica. Possono esserci fino a 128 istanze globali nell'intera rete. Le istanze locali sono sempre utilizzate insieme a un DODAGID (che viene fornito esplicitamente o implicitamente in alcuni casi) e possono essere supportate fino a 64 istanze locali per DODAGID. Le istanze locali sono allocate e gestite dal nodo che possiede il DODAGID, senza alcuna coordinazione esplicita con altri nodi, come ulteriormente dettagliato di seguito.

Un RPLInstanceID globale è codificato in un campo RPLInstanceID come segue:

     0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|0| ID | Global RPLInstanceID in 0..127
+-+-+-+-+-+-+-+-+

Figure 4: RPLInstanceID Field Format for Global Instances

Un RPLInstanceID locale è autoconfigurato dal nodo che possiede il DODAGID e DEVE essere unico per quel DODAGID. Il DODAGID utilizzato per configurare l'RPLInstanceID locale DEVE essere un indirizzo IPv6 raggiungibile del nodo e DEVE essere utilizzato come endpoint di tutte le comunicazioni all'interno di quell'istanza locale.

Un RPLInstanceID locale è codificato in un campo RPLInstanceID come segue:

     0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1|D| ID | Local RPLInstanceID in 0..63
+-+-+-+-+-+-+-+-+

Figure 5: RPLInstanceID Field Format for Local Instances

Il flag 'D' in un RPLInstanceID locale è sempre impostato su 0 nei messaggi di controllo RPL. Viene utilizzato nei pacchetti di dati per indicare se il DODAGID è la sorgente o la destinazione del pacchetto. Se il flag 'D' è impostato su 1, allora l'indirizzo di destinazione del pacchetto IPv6 DEVE essere il DODAGID. Se il flag 'D' è cancellato, allora l'indirizzo sorgente del pacchetto IPv6 DEVE essere il DODAGID.

Ad esempio, si consideri un Nodo A che è la radice DODAG di un'istanza RPL locale e ha allocato un RPLInstanceID locale. Per definizione, tutto il traffico che attraversa quell'istanza RPL locale avrà origine o terminerà nel Nodo A. In questo caso, il DODAGID sarà l'indirizzo IPv6 raggiungibile del Nodo A. Tutto il traffico conterrà l'indirizzo del Nodo A, e quindi il DODAGID, nell'indirizzo sorgente o di destinazione. Pertanto, l'RPLInstanceID locale può indicare che il DODAGID è equivalente all'indirizzo sorgente o all'indirizzo di destinazione impostando il flag 'D' in modo appropriato.