Indirizzi IPv6

Visualizza il codice sorgente su GitHub

Vediamo in che modo Thread identifica ogni dispositivo nella rete e quali tipi di indirizzi utilizza per comunicare tra loro.

Ambiti

Ambiti OT

In una rete Thread esistono 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 ai prefissi designati da una rete Thread. I prefissi di Link-Local sono fe80::/16, mentre quelli di Mesh-Local sono fd00::/8.

Unicast

Esistono più indirizzi unicast IPv6 che identificano un singolo dispositivo Thread. Ognuno ha una funzione diversa in base all'ambito e al caso d'uso.

Prima di descrivere in dettaglio ogni tipo, scopriamo di più su uno comune, chiamato Routing Locator (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 vengono assegnati un ID router e un ID bambino. Ogni genitore mantiene una tabella di tutti i suoi figli, la cui combinazione identifica in modo univoco un dispositivo all'interno della topologia. Ad esempio, considera i nodi evidenziati nella seguente topologia, in cui il numero in un Mesh Extender (pentagono) è l'ID router e il numero in un dispositivo finale (cerchio) è l'ID figlio:

Topologia RLOC OT

L'ID router di ogni dispositivo secondario corrisponde al suo dispositivo principale (extender mesh). Poiché un Mesh Extender non è un dispositivo secondario, il relativo ID è sempre 0. Insieme, questi valori sono univoci per ogni dispositivo nella rete Thread e vengono utilizzati per creare l'RLOC16, che rappresenta gli ultimi 16 bit dell'RLOC.

Ad esempio, ecco come viene calcolato RLOC16 per il nodo in alto a sinistra (ID router = 1 e ID secondario = 1):

OT RLOC16

RLOC16 fa parte dell'identificatore di interfaccia (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 gli RLOC è sempre nel seguente formato:

0000:00ff:fe00:RLOC16

L'IID, combinato con un prefisso locale mesh, genera l'RLOC. Ad esempio, utilizzando un prefisso locale mesh fde5:8dba:82e1:1::/64, l'RLOC per un nodo in cui RLOC16 = 0x401 è:

OT RLOC

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

Topologia OT con indirizzo

Tuttavia, poiché l'RLOC si basa sulla posizione del nodo nella topologia, l'RLOC di un nodo può cambiare man mano che la topologia cambia.

Ad esempio, il nodo 0x400 viene rimosso dalla rete Thread. I nodi 0x401 e 0x402 stabiliscono nuovi collegamenti a diversi Mesh Extender e, di conseguenza, a ciascuno viene assegnato un nuovo RLOC16 e RLOC:

Topologia OT dopo la modifica

Tipi di indirizzi unicast

L'RLOC è solo uno dei tanti indirizzi unicast IPv6 che un dispositivo Thread può avere. Un'altra categoria di indirizzi è costituita dagli identificatori di endpoint (EID), che identificano un'interfaccia Thread univoca all'interno di una partizione di rete Thread. Gli EID sono indipendenti dalla topologia della rete Thread.

Di seguito sono descritti i tipi di unicast comuni.

Un EID che identifica un'interfaccia Thread raggiungibile con una singola trasmissione radio.
Esempiofe80::54db:881c:3845:57f4
IIDIn base all'indirizzo esteso 802.15.4
AmbitoLocale rispetto al collegamento
Dettagli
  • Utilizzato per rilevare i vicini, configurare i link e scambiare informazioni di routing
  • Indirizzo non instradabile
  • Ha sempre il prefisso fe80::/16

Mesh-Local EID (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. Chiamato anche indirizzo locale univoco (ULA).
Esempiofde5:8dba:82e1:1:416:993c:8399:35ab
IIDCasuale, scelto al termine della messa in servizio
AmbitoMesh-Local
Dettagli
  • Non cambia al variare della topologia
  • Deve essere utilizzato dalle applicazioni
  • Ha sempre un prefisso fd00::/8

Localizzatore di routing (RLOC)

Identifica un'interfaccia Thread in base alla sua posizione nella topologia di rete.
Esempiofde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
AmbitoMesh-Local
Dettagli
  • Generato quando un dispositivo si connette a una rete
  • Per la distribuzione di datagrammi IPv6 all'interno di una rete Thread
  • Modifiche man mano che la topologia cambia
  • Generalmente non utilizzato dalle applicazioni

Anycast Locator (ALOC)

Identifica un'interfaccia Thread tramite la ricerca RLOC, quando l'RLOC di una destinazione non è noto.
Esempiofde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
AmbitoMesh-Local
Dettagli
  • fcXX = destinazione ALOC, che cerca l'RLOC appropriato
  • Generalmente non utilizzato dalle applicazioni

Indirizzo Global Unicast (GUA)

Un EID che identifica un'interfaccia Thread a livello globale, oltre una rete Thread.
Esempio2000::54db:881c:3845:57f4
IID
  • SLAAC: assegnato in modo casuale dal dispositivo stesso
  • DHCP: assegnato da un server DHCPv6
  • Manuale: assegnato dal livello applicazione
AmbitoGlobale
Dettagli
  • Un indirizzo IPv6 pubblico
  • Ha sempre il prefisso 2000::/3

Multicast

Il multicast viene utilizzato per comunicare informazioni a più dispositivi contemporaneamente. In una rete Thread, indirizzi specifici sono riservati all'utilizzo multicast con diversi gruppi di dispositivi, a seconda dell'ambito.

Indirizzo IPv6 Ambito Consegnato a
ff02::1 Locale rispetto al collegamento Tutti i FTD e i MED
ff02::2 Locale rispetto al collegamento Tutte le FTD
ff03::1 Mesh-Local Tutti i FTD e i MED
ff03::2 Mesh-Local Tutte le FTD

Potresti notare che i dispositivi finali inattivi (SED) non sono inclusi come destinatari nella tabella di multicast riportata sopra. Thread definisce invece l'indirizzo multicast IPv6 basato sul prefisso unicast con ambito link-local e realm-local utilizzato per tutti i nodi Thread, inclusi i SED. Questi indirizzi multicast variano in base alla rete Thread, perché si basano sul prefisso Mesh-Local unicast (per maggiori dettagli sugli indirizzi multicast IPv6 basati sul prefisso unicast, consulta l'RFC 3306).

Per i dispositivi Thread sono supportati anche ambiti arbitrari oltre a quelli già elencati.

Anycast

Anycast viene utilizzato per indirizzare il traffico a un'interfaccia Thread quando l'RLOC di una destinazione non è noto. Un Anycast Locator (ALOC) identifica la posizione di più interfacce all'interno di una partizione Thread. Gli ultimi 16 bit di un ALOC, denominati ALOC16, sono nel formato 0xfcXX, che rappresenta il tipo di ALOC.

Ad esempio, un ALOC16 tra 0xfc01 e 0xfc0f è riservato agli agenti DHCPv6. Se l'RLOC dell'agente DHCPv6 specifico non è noto (ad esempio perché la topologia di rete è cambiata), è possibile inviare un messaggio a un ALOC dell'agente DHCPv6 per ottenere l'RLOC.

Il thread definisce i seguenti valori ALOC16:

ALOC16 Tipo
0xfc00 Leader
0xfc010xfc0f Agente DHCPv6
0xfc100xfc2f Servizio
0xfc300xfc37 Commissario
0xfc400xfc4e Agente di rilevamento dei vicini
0xfc380xfc3f
0xfc4f0xfcff
Prenotate

Riepilogo

Cosa hai imparato:

  • 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 il multicast per inoltrare i dati a gruppi di nodi
  • Thread utilizza anycast quando l'RLOC di una destinazione è sconosciuto

Per saperne di più sull'indirizzamento IPv6 di Thread, consulta le sezioni 5.2 e 5.3 della specifica Thread.

Mettiti alla prova

Quali tre ambiti vengono utilizzati per l'indirizzamento unicast in una rete Thread?
Privato
Sbagliato.
Locale rispetto all'interfaccia
Sbagliato.
Locale rispetto al collegamento
risposta esatta.
Locale rispetto al sito
Sbagliato.
Mesh-Local
risposta esatta.
Globale
risposta esatta.
Che cosa significa quando un dispositivo ha un ID bambino pari a 0?
Il dispositivo è un bambino.
Sbagliato.
Il dispositivo è un dispositivo in grado di estendere la copertura.
Quasi, ma non è la risposta giusta.
Il dispositivo è un Mesh Extender.
risposta esatta. Un Mesh Extender ha sempre un ID dispositivo secondario pari a 0.
Una videocamera, che è un nodo di una rete Thread, riceve un nuovo RLOC16 e RLOC. Quale dei seguenti eventi potrebbe aver causato il problema?
Qualcuno ha scaricato in remoto le immagini dalla videocamera.
Sbagliato. Questo evento non avrebbe alcuna incidenza sulla rete Thread.
Un Mesh Extender è stato disconnesso dalla rete.
risposta esatta. Quando un Mesh Extender si disconnette da una rete, la topologia della rete cambia, il che potrebbe comportare la promozione del dispositivo a Mesh Extender e l'ottenimento di un nuovo RLOC.
La videocamera è entrata in modalità Sospensione, il che ha modificato la topologia di rete.
Sbagliato. L'attivazione della modalità di sospensione non comporta necessariamente l'assegnazione di un nuovo indirizzo di rete al dispositivo.
Un dispositivo su una rete Thread si iscrive all'indirizzo multicast ff03::2. Cosa ci dice questo sul dispositivo?
È un dispositivo finale minimo (MED).
Sbagliato.
È un dispositivo finale completo (FED).
Sbagliato. (Suggerimento: potrebbe o meno essere un FED).
È un dispositivo Thread minimo (MTD).
Sbagliato.
È un dispositivo Full Thread (FTD).
risposta esatta. Solo i dispositivi Full Thread si iscrivono all'indirizzo multicast ff03::2. Lo fanno nell'ambito di Mesh-Local.
Quale tipo di indirizzamento e routing utilizza Thread per inoltrare i dati a gruppi di nodi?
unicast
Sbagliato.
anycast
Sbagliato.
multicast
risposta esatta.
annuncio
Sbagliato.
Quale tipo di indirizzamento e routing utilizza un dispositivo Thread quando l'RLOC del destinatario del messaggio previsto è sconosciuto?
unicast
Sbagliato.
anycast
risposta esatta. Anycast consente a un dispositivo di raggiungere un nodo il cui RLOC non è noto, indirizzando l'ALOC del dispositivo.
multicast
Sbagliato.
annuncio
Sbagliato.