Diamo un'occhiata a come Thread identifica ogni dispositivo nella rete e ai tipi di indirizzi che comunicano tra loro.
Mirini con ingrandimento

Una rete Thread prevede tre ambiti per l'indirizzamento unicast:
- Link-Local: tutte le interfacce raggiungibili con una singola trasmissione radio
- Mesh-local: tutte le interfacce raggiungibili all'interno della stessa rete Thread
- Globale: tutte le interfacce raggiungibili dall'esterno di una rete Thread
I primi due ambiti corrispondono a prefissi designati da una rete Thread.
I link locali hanno prefissi di fe80::/16
, mentre quelli locali includono i prefissi fd00::/8
.
Unicast
Sono presenti più indirizzi unicast IPv6 che identificano un singolo dispositivo Thread. Ognuno ha una funzione diversa a seconda dell'ambito e del caso d'uso.
Prima di descrivere in dettaglio ogni tipo, esaminiamo un percorso più comune, chiamato RLOC (Routing Locator). L'RLOC identifica un'interfaccia di Thread, in base alla sua posizione nella topologia di rete.
Come viene generato un localizzatore di routing
A tutti i dispositivi vengono assegnati un ID router e un ID secondario. Ogni router gestisce una tabella di tutti i rispettivi elementi secondari, la cui combinazione identifica in modo univoco un dispositivo all'interno della topologia. Considera ad esempio i nodi evidenziati nella seguente topologia, dove il numero in un router (pentagon) è l'ID router e il numero in un dispositivo finale (cerchia) è l'ID secondario:

L'ID del router di ciascun figlio corrisponde al rispettivo elemento principale (router). Poiché un router non è un Soggetto secondario, l'ID secondario di un router è sempre 0. Insieme, questi valori sono univoci per ogni dispositivo nella rete Thread e vengono utilizzati per creare il protocollo RLOC16, che rappresenta gli ultimi 16 bit del processo RLOC.
Ad esempio, di seguito viene calcolato come viene calcolato il RLOC16 per il nodo in alto a sinistra (ID router = 1 e ID secondario = 1):

Il RLOC16 fa parte dell'Identifier interfaccia (IID), che corrisponde agli ultimi 64 bit dell'indirizzo IPv6. Alcuni IID possono essere utilizzati per identificare alcuni tipi di interfacce di Thread. Ad esempio, l'IID per RLOC è sempre in questo formato:
0000:00ff:fe00:RLOC16
L'IID, combinato con un prefisso locale mesh, si traduce nel risultato RLOC. Ad esempio,
utilizzando un prefisso mesh-local di fde5:8dba:82e1:1::/64
, un RLOC per un nodo in cui
RLOC16 = 0x401
è:

Questa stessa logica può essere utilizzata per determinare il protocollo RLOC per tutti i nodi evidenziati nella topologia di esempio riportata sopra:

Tuttavia, poiché il RLOC si basa sulla località del nodo nella topologia, quest'ultimo può cambiare al cambiare della topologia.
Ad esempio, il nodo 0x400
potrebbe essere rimosso dalla rete Thread. I nodi 0x401
e 0x402
stabiliscono nuovi collegamenti a router diversi e, di conseguenza, a ciascuno di essi vengono assegnati nuovi RLOC16 e RLOC:

Tipi di indirizzi Unicast
Il protocollo RLOC è solo uno dei tanti indirizzi unicast IPv6 che possono avere un dispositivo Thread. Un'altra categoria di indirizzi è chiamata Endpoint Identifier (EID), che identifica un'interfaccia di Thread univoca all'interno di una partizione della rete Thread. Gli EID sono indipendenti dalla topologia delle reti Thread.
Di seguito sono riportati i tipi di unicast comuni.
Link-Local Address (LLA) |
|
---|---|
Un EID che identifica un'interfaccia di Thread raggiungibile da una singola trasmissione radio. | |
Esempio | fe80::54db:881c:3845:57f4 |
ID | In base all'indirizzo esteso 802.15.4 |
Ambito | Link locale |
Dettagli |
|
EID mesh-local (ML-EID) |
|
---|---|
Un EID che identifica un'interfaccia di Thread, indipendentemente dalla topologia di rete. Utilizzato per raggiungere un'interfaccia di Thread all'interno della stessa partizione di Thread. Chiamato anche indirizzo locale unico (ULA). | |
Esempio | fde5:8dba:82e1:1:416:993c:8399:35ab |
ID | Casuale, scelta al termine della messa in servizio |
Ambito | Rete locale |
Dettagli |
|
Localizzatore di routing (RLOC) |
|
---|---|
Identifica un'interfaccia di Thread, in base alla sua posizione nella topologia di rete. | |
Esempio | fde5:8dba:82e1:1::ff:fe00:1001 |
ID | 0000:00ff:fe00:RLOC16 |
Ambito | Rete locale |
Dettagli |
|
Localizzatore Anycast (ALOC) |
|
---|---|
Identifica un'interfaccia Thread tramite la ricerca RLOC, quando il RLOC di una destinazione non è noto. | |
Esempio | fde5:8dba:82e1:1::ff:fe00:fc01 |
ID | 0000:00ff:fe00:fcXX |
Ambito | Rete locale |
Dettagli |
|
Global Unicast Address (GUA) |
|
---|---|
Un EID che identifica un'interfaccia di Thread su un ambito globale, oltre una rete Thread. | |
Esempio | 2000::54db:881c:3845:57f4 |
ID |
|
Ambito | Globale |
Dettagli |
|
Multicast
Il multicast viene utilizzato per comunicare le informazioni su più dispositivi contemporaneamente. In una rete Thread, gli indirizzi specifici sono riservati all'utilizzo multicast con gruppi diversi di dispositivi, a seconda dell'ambito.
Indirizzo IPv6 | Ambito | Consegnato a |
---|---|---|
ff02::1 |
Link locale | Tutti i FTD e i MED |
ff02::2 |
Link locale | Tutti i FTD |
ff03::1 |
Rete locale | Tutti i FTD e i MED |
ff03::2 |
Rete locale | Tutti i FTD |
Potresti notare che i dispositivi Sleepy End (SED) non sono inclusi come destinatario nella tabella multicast sopra riportata. Thread definisce invece un indirizzo multicast IPv6 basato su prefisso con ambito link-local e realm-local utilizzato per tutti i nodi di thread, inclusi SED. Questi indirizzi multicast variano in base alla rete Thread, perché è basato sul prefisso unicast Mesh-Local (vedi RFC 3306 per ulteriori dettagli sul multicast IPv6 basato su prefisso unicast). ).
Gli ambiti arbitrari oltre a quelli già elencati sono supportati anche per i dispositivi Thread.
Anycast
Anycast viene utilizzato per instradare il traffico a un'interfaccia di Thread quando il RLOC di una
destinazione non è noto. Un localizzatore Anycast (ALOC) identifica la posizione di più interfacce all'interno di una partizione di thread. Gli ultimi 16 bit di un valore ALOC,
chiamato ALOC16, sono nel formato 0xfcXX
, che
rappresenta il tipo di ALOC.
Ad esempio, un valore ALOC16 compreso tra 0xfc01
e 0xfc0f
è riservato agli agenti DHCPv6. Se lo specifico RLOC dell'agente DHCPv6 è sconosciuto (forse perché la topologia di rete è cambiata), è possibile inviare un messaggio a un agente ALOC DHCPv6 per ottenere il RLOC.
Il thread definisce i seguenti valori ALOC16:
ALOC16 | Tipo |
---|---|
0xfc00 |
Leader |
0xfc01 - 0xfc0f |
Agente DHCPv6 |
0xfc10 - 0xfc2f |
Servizio |
0xfc30 - 0xfc37 |
Commissario |
0xfc40 - 0xfc4e |
Agente di Neighbor Discovery |
0xfc38 - 0xfc3f 0xfc4f - 0xfcff |
Riservata |
Riepilogo
Argomenti trattati:
- Una rete Thread è composta da tre ambiti: Link-Local, Mesh-Local e Global
- Un dispositivo Thread ha più indirizzi IPv6 unicast
- Un RLOC rappresenta la posizione di un dispositivo nella rete Thread
- Un ML-EID è univoco per un dispositivo Thread all'interno di una partizione e deve essere utilizzato dalle applicazioni
- Thread utilizza multicast per inoltrare dati a gruppi di nodi e router
- Il thread utilizza anycast quando il valore RLOC di una destinazione è sconosciuto
Per ulteriori informazioni sull'indirizzamento IPv6 di Thread, consulta le sezioni 5.2 e 5.3 della specifica dei thread.
Verificare le conoscenze
ff03::2
. Quali informazioni consentono di fornire informazioni sul dispositivo?ff03::2
. Lo fanno nell'ambito mesh-local.