Visualizza l'origine su GitHub
Vediamo come Thread identifica ogni dispositivo nella rete e quali tipi di indirizzi utilizzano per comunicare tra loro.
Mirini con ingrandimento

In una rete Thread esistono tre ambiti per l'indirizzamento unicast:
- Link-Local: tutte le interfacce raggiungibili da un'unica 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 ai prefissi designati da una rete Thread.
Link-Local ha il prefisso fe80::/16
, mentre Mesh-Local ha il prefisso 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 ciascun tipo, vediamo più informazioni su uno comune, chiamato Locator routing (RLOC). RLOC identifica un'interfaccia Thread, in base alla sua posizione nella topologia di rete.
Come viene generato un localizzatore di routing
A tutti i dispositivi sono assegnati un ID router e un ID bambino. Ogni router mantiene una tabella di tutti i suoi figli, la cui combinazione identifica in modo univoco un dispositivo nella topologia. Ad esempio, considera i nodi evidenziati nella seguente topologia, dove il numero in un router (pentagono) è l'ID router e il numero in un dispositivo finale (cerchio) è l'ID figlio:

Ogni ID router secondario corrisponde al rispettivo (router). Poiché un router non è un minore, l'ID secondario per un router è sempre 0. Insieme, questi valori sono univoci per ogni dispositivo nella rete Thread e vengono utilizzati per creare la RLOC16, che rappresenta gli ultimi 16 bit della RLOC.
Ad esempio, ecco come viene calcolato il RLOC16 per il nodo in alto a sinistra (ID router = 1 e ID figlio = 1):

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

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

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

Tipi di indirizzi Unicast
RLOC è solo uno dei tanti indirizzi unicast IPv6 che un dispositivo Thread può avere. Un'altra categoria di indirizzi è denominata Endpoint Identifier (EID), che identificano un'interfaccia Thread univoca all'interno di una partizione di rete Thread. Gli EID non dipendono dalla topologia di rete Thread.
Di seguito sono riportati i tipi più comuni di annunci.
Indirizzo locale rispetto al collegamento (LLA) |
|
---|---|
Un EID che identifica un'interfaccia Thread raggiungibile da una singola trasmissione radio. | |
Esempio | fe80::54db:881c:3845:57f4 |
ID pubblicità | In base all'indirizzo esteso 802.15.4 |
Ambito | Link locale |
Dettagli |
|
EID mesh locale (ML-EID) |
|
---|---|
Un EID che identifica un'interfaccia Thread, indipendentemente dalla topologia di rete. Utilizzato per raggiungere un'interfaccia Thread all'interno della stessa partizione Thread. detto anche indirizzo locale unico (ULA). | |
Esempio | fde5:8dba:82e1:1:416:993c:8399:35ab |
ID pubblicità | Casuale, scelto al termine della commissione |
Ambito | Locale mesh |
Dettagli |
|
Locator di routing (RLOC) |
|
---|---|
Identifica un'interfaccia Thread, in base alla sua posizione nella topologia di rete. | |
Esempio | fde5:8dba:82e1:1::ff:fe00:1001 |
ID pubblicità | 0000:00ff:fe00:RLOC16 |
Ambito | Locale mesh |
Dettagli |
|
Anycast Locator (ALOC) |
|
---|---|
Identifica un'interfaccia Thread tramite la ricerca RLOC, quando la RLOC di una destinazione non è nota. | |
Esempio | fde5:8dba:82e1:1::ff:fe00:fc01 |
ID pubblicità | 0000:00ff:fe00:fcXX |
Ambito | Locale mesh |
Dettagli |
|
Indirizzo Unicast globale |
|
---|---|
Un EID che identifica un'interfaccia Thread su un ambito globale, oltre a una rete Thread. | |
Esempio | 2000::54db:881c:3845:57f4 |
ID pubblicità |
|
Ambito | Global |
Dettagli |
|
Multicast
La tecnologia multicast consente di comunicare informazioni a più dispositivi contemporaneamente. In una rete Thread, gli indirizzi specifici vengono riservati per l'utilizzo multicast con gruppi di dispositivi diversi, a seconda dell'ambito.
Indirizzo IPv6 | Ambito | Consegnato a |
---|---|---|
ff02::1 |
Link locale | Tutti gli FTD e MED |
ff02::2 |
Link locale | Tutte le FTD |
ff03::1 |
Locale mesh | Tutti gli FTD e MED |
ff03::2 |
Locale mesh | Tutte le FTD |
Potresti notare che i dispositivi Sleepy End (SED) non sono inclusi come destinatari della tabella multicast riportata sopra. Thread definisce invece l'indirizzo multicast IPv6 basato su prefisso dell'ambito locale e realm-local utilizzato per tutti i nodi Thread, inclusi i SED. Questi indirizzi multicast variano in base alla rete Thread, perché è basato sul prefisso unicast Mesh-Local (consulta il documento RFC 3306 per ulteriori dettagli sugli indirizzi multicast IPv6 basati 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 Thread quando il RLOC di una destinazione non è noto. Un localizzatore anycast (ALOC) identifica la posizione di più interfacce all'interno di una partizione Thread. Gli ultimi 16 bit di un ALOC, chiamato ALOC16, hanno il formato 0xfcXX
, che rappresenta il tipo di ALOC.
Ad esempio, un 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 ALOC dell'agente DHCPv6 per ottenere la RLOC.
Thread definisce i seguenti valori ALOC16:
ALOC16 | Tipo |
---|---|
0xfc00 |
Leader |
0xfc01 - 0xfc0f |
Agente DHCPv6 |
0xfc10 - 0xfc2f |
Servizio |
0xfc30 - 0xfc37 |
Commissario |
0xfc40 - 0xfc4e |
Agente Neighbor Discovery |
0xfc38 - 0xfc3f 0xfc4f - 0xfcff |
Riservata |
Riepilogo
Che cosa hai imparato:
- Una rete Thread è costituita da tre ambiti: Link-Local, Mesh-Local e Global
- Un dispositivo Thread ha più indirizzi IPv6 unificati.
- 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 il multicast per inoltrare i dati a gruppi di nodi e router
- Thread utilizza anycast quando il RLOC di una destinazione è sconosciuto
Per scoprire di più sull'indirizzamento IPv6 di Thread, consulta le sezioni 5.2 e 5.3 della specifica di Thread.
Verifica le tue conoscenze
ff03::2
. Cosa ci parla del dispositivo?ff03::2
. Per farlo, nell'ambito del mesh
locale.