Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Indirizzamento IPv6

Visualizza sorgente su GitHub

Diamo un'occhiata a come Thread identifica ogni dispositivo nella rete e quali tipi di indirizzi usano per comunicare tra loro.

Ambiti

OT Scopes

Esistono tre ambiti in una rete di thread per l'indirizzamento unicast:

  • Link-Local - tutte le interfacce raggiungibili da 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. Link-Local ha prefissi di fe80::/16 , mentre Mesh-Local ha prefissi di 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 dettagliare ogni tipo, impariamo 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 Routing Locator

A tutti i dispositivi viene assegnato un ID router e un ID bambino. Ogni router mantiene una tabella di tutti i propri figli, la cui combinazione identifica in modo univoco un dispositivo all'interno della topologia. Ad esempio, si consideri i nodi evidenziati nella topologia seguente, dove il numero in un router (pentagono) è l'ID del router e il numero in un dispositivo finale (cerchio) è l'ID figlio:

Topologia OT RLOC

L'ID router di ogni bambino corrisponde al suo genitore (router). Poiché un router non è un figlio, l'ID figlio di un router è sempre 0. Insieme, questi valori sono univoci per ogni dispositivo nella rete Thread e vengono utilizzati per creare RLOC16, che rappresenta gli ultimi 16 bit di RLOC.

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

OT RLOC16

RLOC16 fa parte dell'IID (Interface Identifier), 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 RLOC è sempre nel formato 0000:00ff:fe00: RLOC16 .

L'IID, combinato con un prefisso Mesh-Local, produce RLOC. Ad esempio, utilizzando un prefisso Mesh-Local di fde5:8dba:82e1:1::/64 , l'RLOC per un nodo dove RLOC16 = 0x401 è:

OT RLOC

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

Topologia OT con indirizzo

Tuttavia, poiché l'RLOC si basa sulla posizione del nodo nella topologia, l'RLOC di un nodo può cambiare al variare della topologia.

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

Topologia OT dopo la modifica

Tipi di indirizzo 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 identifica un'interfaccia Thread univoca all'interno di una partizione di rete Thread. Gli EID sono indipendenti dalla topologia di rete Thread.

I tipi di unicast comuni sono descritti di seguito.

Un EID che identifica un'interfaccia Thread raggiungibile da una singola trasmissione radio.
Esempio fe80::54db:881c:3845:57f4
IID Basato su 802.15.4 Extended Address
Scopo Link-Local
Dettagli
  • Utilizzato per rilevare i vicini, configurare collegamenti e scambiare informazioni di instradamento
  • Non è un indirizzo instradabile
  • Ha sempre il prefisso fe80::/16

EID locale mesh (ML-EID)

Un EID che identifica un'interfaccia Thread, indipendente dalla topologia di rete. Utilizzato per raggiungere un'interfaccia Thread all'interno della stessa partizione Thread. Chiamato anche un indirizzo locale univoco (ULA).
Esempio fde5:8dba:82e1:1:416:993c:8399:35ab
IID Casuale, scelto dopo il completamento della messa in servizio
Scopo Mesh-Local
Dettagli
  • Non cambia al variare della topologia
  • Dovrebbe essere utilizzato dalle applicazioni
  • Ha sempre un prefisso fd00::/8

Routing Locator (RLOC)

Identifica un'interfaccia Thread, in base alla sua posizione nella topologia di rete.
Esempio fde5:8dba:82e1:1::ff:fe00:1001
IID 0000:00ff:fe00: RLOC16
Scopo Mesh-Local
Dettagli
  • Generato una volta che un dispositivo si collega a una rete
  • Per la consegna di datagrammi IPv6 all'interno di una rete Thread
  • Cambia quando cambia la topologia
  • Generalmente non utilizzato dalle applicazioni

Anycast Locator (ALOC)

Identifica un'interfaccia Thread tramite la ricerca RLOC, quando l'RLOC di una destinazione non è noto.
Esempio fde5:8dba:82e1:1::ff:fe00:fc01
IID 0000:00ff:fe00:fc XX
Scopo Mesh-Local
Dettagli
  • fc XX = destinazione ALOC , che cerca l'RLOC appropriato
  • Generalmente non utilizzato dalle applicazioni

Indirizzo unicast globale (GUA)

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

Multicast

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

Indirizzo IPv6 Scopo Spedito a
ff02::1 Link-Local Tutti gli FTD e i MED
ff02::2 Link-Local Tutti gli FTD
ff03::1 Mesh-Local Tutti gli FTD e i MED
ff03::2 Mesh-Local Tutti gli FTD

Potresti notare che Sleepy End Devices (SED) non sono inclusi come destinatari nella tabella multicast sopra. Invece, Thread definisce l'indirizzo multicast IPv6 basato sul prefisso unicast di ambito locale al collegamento e realm-locale utilizzato per tutti i nodi thread, inclusi i SED. Questi indirizzi multicast variano in base alla rete Thread, perché si basa sul prefisso Mesh-Local unicast (vedere RFC 3306 per maggiori dettagli sugli indirizzi multicast IPv6 basati sul 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 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, chiamato ALOC16, hanno il formato 0xfc XX , 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 l'RLOC.

Thread definisce i seguenti valori ALOC16:

ALOC16 genere
0xfc00 Capo
0xfc01 - 0xfc0f Agente DHCPv6
0xfc10 - 0xfc2f Servizio
0xfc30 - 0xfc37 Commissario
0xfc40 - 0xfc4e Neighbor Discovery Agent
0xfc38 - 0xfc3f
0xfc4f - 0xfcff
Riservato

Ricapitolare

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 dovrebbe essere utilizzato dalle applicazioni
  • Thread utilizza il multicast per inoltrare i dati a gruppi di nodi e router
  • Il thread utilizza anycast quando l'RLOC di una destinazione è sconosciuto

Per ulteriori informazioni sull'indirizzamento IPv6 di Thread, vedere le sezioni 5.2 e 5.3 della Specifica del thread .