Indirizzamento IPv6

Visualizza sorgente su GitHub

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

Mirini con ingrandimento

Ambiti OT

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:

Topologia OT RLOC

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):

OT RLOC16

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 è:

RLOC OT

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

Topologia OT con indirizzo

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:

Topologia OT dopo il cambiamento

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.

Un EID che identifica un'interfaccia di Thread raggiungibile da una singola trasmissione radio.
Esempiofe80::54db:881c:3845:57f4
IDIn base all'indirizzo esteso 802.15.4
AmbitoLink locale
Dettagli
  • Utilizzato per trovare vicini, configurare link e scambiare informazioni sui percorsi
  • Non è un indirizzo instradabile
  • Ha sempre il prefisso fe80::/16

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).
Esempiofde5:8dba:82e1:1:416:993c:8399:35ab
IDCasuale, scelta al termine della messa in servizio
AmbitoRete locale
Dettagli
  • Non cambia di pari passo con la modifica della topologia
  • Utilizzabile dalle applicazioni
  • Ha sempre il prefisso fd00::/8

Localizzatore di routing (RLOC)

Identifica un'interfaccia di Thread, in base alla sua posizione nella topologia di rete.
Esempiofde5:8dba:82e1:1::ff:fe00:1001
ID0000:00ff:fe00:RLOC16
AmbitoRete locale
Dettagli
  • Generato quando un dispositivo si collega a una rete
  • Per la distribuzione di datagrammi IPv6 all'interno di una rete Thread
  • Cambiamenti man mano che la topologia cambia
  • Non sono generalmente utilizzate dalle applicazioni

Localizzatore Anycast (ALOC)

Identifica un'interfaccia Thread tramite la ricerca RLOC, quando il RLOC di una destinazione non è noto.
Esempiofde5:8dba:82e1:1::ff:fe00:fc01
ID0000:00ff:fe00:fcXX
AmbitoRete locale
Dettagli
  • fcXX = destinazione ALOC, che cerca il livello RLOC appropriato
  • Non sono generalmente utilizzate dalle applicazioni

Global Unicast Address (GUA)

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

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

Quali tre ambiti vengono utilizzati per l'indirizzamento unicast di una rete Thread?
Privata
Sbagliato.
Interfaccia locale
Sbagliato.
Link locale
Giusto.
Sito locale
Sbagliato.
Rete locale
Giusto.
Globale
Giusto.
Che cosa significa quando un dispositivo ha l'ID secondario pari a 0?
Il dispositivo è un Soggetto secondario.
Sbagliato.
Il dispositivo è un REED.
Chiusura, ma non corretta.
Il dispositivo è un router.
Giusto. Un router ha sempre un ID secondario pari a 0.
Una videocamera, che è un nodo su una rete Thread, riceve un nuovo RLOC16 e RLOC. Quale dei seguenti eventi potrebbe aver causato questo problema?
Qualcuno ha scaricato da remoto le immagini dalla fotocamera.
Sbagliato. Questo evento non avrebbe alcun impatto sulla rete Thread.
Un router ha interrotto la rete.
Giusto. Quando un router interrompe una rete, la topologia di rete cambia, il che può comportare l'autopromozione del dispositivo e la ricezione di un nuovo RLOC.
La videocamera è entrata in modalità di sospensione, cambiando la topologia della rete.
Sbagliato. L'attivazione della modalità di sospensione non comporta necessariamente la ricezione di un nuovo indirizzo di rete sul dispositivo.
Un dispositivo su una rete Thread si abbona all'indirizzo multicast ff03::2. Quali informazioni consentono di fornire informazioni sul dispositivo?
Si tratta di un dispositivo al minimo (MED).
Sbagliato.
Si tratta di un dispositivo completo (FED).
Sbagliato. Suggerimento: potrebbe essere o meno un FED.
Si tratta di un dispositivo Minimal Thread Device (MTD).
Sbagliato.
Si tratta di un dispositivo FTD (Full Thread Device).
Giusto. Solo i dispositivi Thread completi si abbonano all'indirizzo multicast ff03::2. Lo fanno nell'ambito mesh-local.
Che tipo di indirizzamento e routing utilizza Thread per inoltrare dati a gruppi di nodi e router?
unicast
Sbagliato.
anycast
Sbagliato.
multicast
Giusto.
trasmetti
Sbagliato.
Che tipo di indirizzamento e routing utilizza un dispositivo Thread quando il RLOC del destinatario del messaggio previsto è sconosciuto?
unicast
Sbagliato.
anycast
Giusto. Anycast consente a un dispositivo di raggiungere un nodo il cui RLOC non è noto, tramite indirizzo ALOC del dispositivo.
multicast
Sbagliato.
trasmetti
Sbagliato.