Indirizzi IPv6

Visualizza origine su GitHub

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

Mirini con ingrandimento

Ambiti OT

In una rete Thread esistono tre ambiti per l'indirizzamento di oggetti 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. Link-Local ha un prefisso fe80::/16, mentre Mesh-Local ha un prefisso fd00::/8.

Unicast

Esistono 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, vediamo più nel dettaglio uno di questi, 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 viene assegnato un ID router e un ID bambino. Ogni router mantiene una tabella di tutti i suoi elementi secondari, la cui combinazione identifica in modo univoco un dispositivo all'interno della topologia. Ad esempio, considera i nodi evidenziati nella seguente topologia, dove il numero in un router (pentagono) è l'ID router, mentre il numero in un dispositivo finale (cerchio) è l'ID figlio.

Topologia OT RLOC

Ogni ID router secondario corrisponde al rispettivo genitore (router). Poiché un router non è un elemento 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 l'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):

OTT RLOC16

RLOC16 fa parte dell'Interfaccia identificativo (IID), che corrisponde agli ultimi 64 bit dell'indirizzo IPv6. Alcuni IID possono essere utilizzati per identificare alcuni tipi di interfacce Thread. Ad esempio, il parametro IID per RLOC è sempre nel seguente formato:

0000:00ff:fe00:RLOC16

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

OTT RLOC

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

Topologia OT con indirizzo

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

Ad esempio, il nodo 0x400 potrebbe essere rimosso dalla rete Thread. I nodi 0x401 e 0x402 stabiliscono nuovi link a router diversi e, di conseguenza, assegnano ognuno nuovi ruoli 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 è chiamata Endpoint Identifier (EID) che identificano un'interfaccia Thread univoca all'interno di una partizione di rete Thread. Gli EID sono indipendenti dalla topologia di rete Thread.

I tipi di comunicazione più comuni sono descritti di seguito.

Un EID che identifica un'interfaccia 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 rilevare i vicini, configurare i link e scambiare le informazioni di routing
  • Non è un indirizzo instradabile
  • Ha sempre un prefisso fe80::/16

EID mesh locale (ML-EID)

Un EID che identifica un'interfaccia di 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
IDCasuale, dopo che la messa in servizio è stata completata
AmbitoMesh-local
Dettagli
  • Non cambia man mano che la topologia cambia
  • Deve essere utilizzato dalle applicazioni
  • Ha sempre un prefisso fd00::/8

Localizzatore di routing (RLOC)

Identifica un'interfaccia Thread, basata sulla sua posizione nella topologia di rete.
Esempiofde5:8dba:82e1:1::ff:fe00:1001
ID0000:00ff:fe00:RLOC16
AmbitoMesh-local
Dettagli
  • Generato quando un dispositivo si collega a una rete
  • Per la distribuzione di datagrammi IPv6 all'interno di una rete Thread
  • Modifiche man mano che la topologia cambia
  • Solitamente non utilizzato dalle applicazioni

Localizzatore anycast (ALOC)

Identifica un'interfaccia Thread tramite la ricerca RLOC, quando il valore RLOC di una destinazione non è noto.
Esempiofde5:8dba:82e1:1::ff:fe00:fc01
ID0000:00ff:fe00:fcXX
AmbitoMesh-local
Dettagli
  • fcXX = destinazione ALOC, che cerca la chiave RLOC appropriata
  • Solitamente non utilizzato dalle applicazioni

Indirizzo Unicast globale (GUA)

Un EID che identifica un'interfaccia Thread su un ambito globale, oltre che una rete Thread.
Esempio2000::54db:881c:3845:57f4
ID
  • 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 2000::/3

Multicast

Il multicast viene utilizzato per comunicare informazioni a più dispositivi contemporaneamente. In una rete Thread, 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 Tutti gli FTD
ff03::1 Mesh-local Tutti gli FTD e MED
ff03::2 Mesh-local Tutti gli FTD

Potresti notare che i dispositivi SED (Sleepy End Devices) non sono inclusi come destinatari nella tabella multicast sopra riportata. Invece, Thread definisce l'indirizzo multicast IPv6 dell'ambito link-local e realm-local utilizzato per tutti i nodi Thread, inclusi i SED. Questi indirizzi multicast variano in base alla rete Thread, in quanto sono basati sul prefisso unicast Mesh-Local (vedi RFC 3306 per ulteriori dettagli sugli indirizzi multicast IPv6 unicast-prefix).

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

Anycast

Viene utilizzato Anycast per instradare il traffico a un'interfaccia Thread quando non è noto il valore RLOC di una destinazione. 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 tra 0xfc01 e 0xfc0f è riservato agli agenti DHCPv6. Se lo specifico RLOC dell'agente DHCPv6 è sconosciuto (forse perché la topologia di rete è cambiata), può essere inviato un messaggio a un ALOC dell'agente DHCPv6 per ottenere la RLOC.

Il thread definisce i seguenti valori di ALOC16:

ALOC16 Tipo
0xfc00 Leader
0xfc01 - 0xfc0f Agente DHCPv6
0xfc10 - 0xfc2f Service
0xfc30 - 0xfc37 Commissario
0xfc40 - 0xfc4e Agente Neighbor Discovery
0xfc38 - 0xfc3f
0xfc4f - 0xfcff
Riservata

Riepilogo

Cosa hai imparato:

  • Una rete Thread è costituita da tre ambiti: Link-Local, Mesh-Local e Global
  • Un dispositivo Thread ha più indirizzi IPv6 comunicativi
    • Una 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
  • Il thread utilizza il multicast per inoltrare i dati a gruppi di nodi e router
  • Il thread utilizza anycast quando la RLOC di una destinazione è sconosciuta

Per ulteriori informazioni sugli indirizzi IPv6 di Thread, consulta le sezioni 5.2 e 5.3 della specifica dei thread.

Verificare le tue conoscenze

Quali sono i tre ambiti utilizzati per l'indirizzamento di un utente in una rete Thread?
Privata
Sbagliato.
Interfaccia-locale
Sbagliato.
Link locale
risposta esatta.
Sito-Local
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 REED.
Chiudi, ma non corretto.
Il dispositivo è un router.
risposta esatta. Un router ha sempre un ID secondario pari a 0.
Una videocamera, che è un nodo su una rete Thread, riceve un nuovo modello RLOC16 e RLOC. Quale dei seguenti eventi potrebbe aver causato questa causa?
Qualcuno ha scaricato immagini da remoto dalla fotocamera.
Sbagliato. Questo evento non avrebbe alcun impatto sulla rete Thread.
Il router ha perso la connessione di rete.
risposta esatta. Quando un router perde una rete, la topologia di rete cambia, il che potrebbe comportare la promozione del dispositivo a un router e l'acquisizione di un nuovo RLOC.
La videocamera è passata alla modalità di sospensione, che ha cambiato la topologia di rete.
Sbagliato. Se attivi la modalità di sospensione, il dispositivo non riceve necessariamente un nuovo indirizzo di rete.
Un dispositivo su una rete Thread si iscrive all'indirizzo multicast ff03::2. Cosa ci comunica il dispositivo?
Si tratta di un dispositivo finale minimo.
Sbagliato.
Si tratta di un dispositivo FED (Full End Device).
Sbagliato. Suggerimento: potrebbe essere FED.
Si tratta di un dispositivo Thread minimo.
Sbagliato.
Si tratta di un FTD (Full Thread Device).
risposta esatta. Solo i dispositivi Thread completi si iscrivono all'indirizzo multicast ff03::2. Operazione nell'ambito Mesh-Local.
Che tipo di indirizzamento e routing utilizza Thread per inoltrare i dati a gruppi di nodi e router?
comunicatore
Sbagliato.
anycast
Sbagliato.
multicast
risposta esatta.
annuncio
Sbagliato.
Che tipo di indirizzamento e routing utilizza un dispositivo Thread quando il RLOC del destinatario del messaggio previsto è sconosciuto?
comunicatore
Sbagliato.
anycast
risposta esatta. Anycast consente a un dispositivo di raggiungere un nodo la cui RLOC non è nota, affrontando l'ALOC del dispositivo.
multicast
Sbagliato.
annuncio
Sbagliato.