Indirizzi IPv6

Visualizza il codice sorgente su GitHub

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

Ambiti

Ambiti OT

In una rete Thread sono presenti tre ambiti 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 indicati da una rete Thread. Il campo Link-Local ha un prefisso di fe80::/16, mentre il mesh-Local ha un prefisso 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 descrivere ogni tipo, scopriamo di più su quello comune, chiamato RLOC (Routing Locator). Il RLOC identifica un'interfaccia Thread, in base al suo più elevata 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 mantiene di tutti i figli, la cui combinazione identifica in modo univoco dispositivo all'interno della topologia. Ad esempio, considera i nodi evidenziati nella la seguente topologia, dove il numero in un router (pentagono) è l'ID router, e il numero in un dispositivo finale (cerchio) è l'ID secondario:

Topologia OT RLOC

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

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

OT RLOC16

Il RLOC16 fa parte dell’interfaccia Identifier (IID), che corrisponde gli ultimi 64 bit dell'indirizzo IPv6. Alcuni IID possono essere usati per identificare tipi delle interfacce Thread. Ad esempio, l'IID per i RLOC è sempre nel seguente formato:

0000:00ff:fe00:RLOC16

L'IID, combinato con un prefisso locale mesh, genera il RLOC. Ad esempio: utilizzando un prefisso mesh-locale di fde5:8dba:82e1:1::/64, l'RLOC per un nodo in cui 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é il RLOC si basa sulla posizione del nodo nella topologia, il RLOC di un nodo può cambiare man mano che la topologia cambia.

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

Topologia OT dopo la modifica

Tipi di indirizzi Unicast

Il RLOC è solo uno dei tanti indirizzi unicast IPv6 che un dispositivo Thread può avere. Un'altra categoria di indirizzi è chiamata Endpoint Identifier (EID), Identificare un'interfaccia Thread univoca all'interno di una partizione di rete Thread. Gli EID sono indipendenti dalla topologia della rete Thread.

I tipi unicast più comuni sono descritti di seguito.

Un EID che identifica un'interfaccia Thread raggiungibile da una singola trasmissione radio.
Esempiofe80::54db:881c:3845:57f4
IIDBasata sulla norma 802.15.4 per gli indirizzi estesi
AmbitoLocale del link
Dettagli
  • Utilizzato per scoprire vicini, configurare i collegamenti e scambiare informazioni di routing
  • Non è un indirizzo instradabile
  • Ha sempre un prefisso di 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 indirizzo locale univoco (ULA).
Esempiofde5:8dba:82e1:1:416:993c:8399:35ab
IIDCasuale, scelto al termine della messa in servizio
AmbitoMesh locale
Dettagli
  • Non cambia quando cambia la topologia
  • Deve essere utilizzato dalle applicazioni
  • Ha sempre un prefisso fd00::/8

RLOC (Routing Locator)

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 locale
Dettagli
  • Generato dopo che un dispositivo si collega a una rete
  • Per distribuire datagrammi IPv6 all'interno di una rete Thread
  • Modifiche alla topologia
  • Generalmente non usato 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 locale
Dettagli
  • fcXX = destinazione ALOC, che cerca il RLOC appropriato.
  • Generalmente non usato dalle applicazioni

Indirizzo Unicast globale (GUA)

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

Multicast

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

Indirizzo IPv6 Ambito Consegnato a
ff02::1 Locale del link Tutti gli FTD e i MED
ff02::2 Locale del link Tutti i FTD
ff03::1 Mesh locale Tutti gli FTD e i MED
ff03::2 Mesh locale Tutti i FTD

Potresti notare che i dispositivi finali per dormire (SED) non sono inclusi come nella tabella multicast riportata sopra. Thread definisce invece multicast IPv6 basato su prefisso unicast con ambito unicast e ambito locale e link utilizzato per tutti i nodi Thread, inclusi i SED. Questi multicast gli indirizzi variano a seconda della rete Thread, perché è basata sulla tecnologia Prefisso locale mesh (vedi RFC 3306 per maggiori dettagli sugli indirizzi multicast IPv6 basati su prefisso unicast).

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

Anycast

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

Ad esempio, un ALOC16 tra 0xfc01 e 0xfc0f è riservato per DHCPv6 Agenti. Se il RLOC dell'agente DHCPv6 specifico è sconosciuto (forse perché la topologia di rete è cambiata), un messaggio può essere inviato a un ALOC dell'agente DHCPv6 per ottenere il RLOC.

Thread definisce i seguenti valori ALOC16:

ALOC16 Tipo
0xfc00 Leader
0xfc010xfc0f Agente DHCPv6
0xfc100xfc2f Servizio
0xfc300xfc37 Commissario
0xfc400xfc4e Agente Discovery Nearby
0xfc38 - 0xfc3f
0xfc4f - 0xfcff
Prenotato

Riepilogo

Cosa hai imparato:

  • Una rete Thread è composta da tre ambiti: Link-Local, Mesh-Local e Globale
  • 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
  • Thread utilizza anycast quando il RLOC di una destinazione è sconosciuto

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

Verifica le tue conoscenze

Quali tre ambiti vengono utilizzati per l'indirizzamento unicast in una rete Thread?
Privato
Sbagliato.
Locale nell'interfaccia
Sbagliato.
Locale del link
risposta esatta.
Locale
Sbagliato.
Mesh locale
risposta esatta.
Globale
risposta esatta.
Che cosa significa quando un dispositivo ha un ID figlio pari a 0?
Il dispositivo è un Bambino.
Sbagliato.
Il dispositivo è un REED.
Quasi, ma sbagliato.
Il dispositivo è un router.
risposta esatta. Un router ha sempre un ID figlio 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 immagini dalla fotocamera.
Sbagliato. Questo evento non dovrebbe influire sul Thread in ogni rete.
Un router è caduto dalla rete.
risposta esatta. Quando un router interrompe la connessione a una rete, modifiche alla topologia, che possono comportare la promozione del dispositivo in una router e ottenere un nuovo RLOC.
La videocamera è passata alla modalità sonno, il che ha modificato la topologia di rete.
Sbagliato. Attivare la Modalità Sonno non è necessariamente la causa per ricevere un nuovo indirizzo di rete.
Un dispositivo su una rete Thread si abbona a ff03::2 un indirizzo multicast. Che cosa ci dice sul dispositivo?
Si tratta di un MED (Minimal End Device).
Sbagliato.
Si tratta di un dispositivo FED (Full End Device).
Sbagliato. Suggerimento: potrebbe trattarsi o meno di un FED.
È un dispositivo Minimal Thread (MTD).
Sbagliato.
Si tratta di un dispositivo Full Thread (FTD).
risposta esatta. Soltanto i dispositivi Full Thread si abbonano al Indirizzo multicast ff03::2. Per farlo, utilizzano mesh-local l'ambito di attività.
Che tipo di indirizzamento e routing utilizza Thread per inoltrare i dati a gruppi di nodi e router?
unicast
Sbagliato.
anycast
Sbagliato.
multicast
risposta esatta.
annuncio
Sbagliato.
Quale tipo di indirizzamento e routing utilizza un dispositivo Thread quando Il RLOC del destinatario del messaggio previsto è sconosciuto?
unicast
Sbagliato.
anycast
risposta esatta. Anycast consente a un dispositivo di raggiungere un nodo il cui RLOC noti, affrontando l'ALOC del dispositivo.
multicast
Sbagliato.
annuncio
Sbagliato.