Indirizzi IPv6

Visualizza l'origine su GitHub

Vediamo come Thread identifica ogni dispositivo nella rete e quali tipi di indirizzi utilizzano per comunicare tra loro.

Mirini con ingrandimento

Ambiti OT

In una rete Thread esistono tre ambiti per l'indirizzamento unicast:

  • Link-Local: tutte le interfacce raggiungibili da un'unica 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 il prefisso fe80::/16, mentre Mesh-Local ha il prefisso 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 ciascun tipo, vediamo più informazioni su uno comune, chiamato Locator routing (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 sono assegnati un ID router e un ID bambino. Ogni router mantiene una tabella di tutti i suoi figli, la cui combinazione identifica in modo univoco un dispositivo nella topologia. Ad esempio, considera i nodi evidenziati nella seguente topologia, dove il numero in un router (pentagono) è l'ID router e il numero in un dispositivo finale (cerchio) è l'ID figlio:

Topologia OT RLOC

Ogni ID router secondario corrisponde al rispettivo (router). Poiché un router non è un minore, l'ID secondario per un router è sempre 0. Insieme, questi valori sono univoci per ogni dispositivo nella rete Thread e vengono utilizzati per creare la 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):

OT RLOC16

RLOC16 fa parte dell'interfaccia per l'identificatore (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 le regole RLOC è sempre in questo formato:

0000:00ff:fe00:RLOC16

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

RLOC OT

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

Topologia OT con indirizzo

Tuttavia, poiché la RLOC si basa sulla località del nodo nella topologia, la RLOC di un nodo può cambiare quando cambia la topologia.

Ad esempio, il nodo 0x400 potrebbe essere rimosso dalla rete Thread. I nodi 0x401 e 0x402 stabiliscono nuovi collegamenti a diversi router e, di conseguenza, a ciascuno vengono assegnati nuovi RLOC16 e RLOC:

Topologia OT dopo la modifica

Tipi di indirizzi 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 identificano un'interfaccia Thread univoca all'interno di una partizione di rete Thread. Gli EID non dipendono dalla topologia di rete Thread.

Di seguito sono riportati i tipi più comuni di annunci.

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

EID mesh locale (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. detto anche indirizzo locale unico (ULA).
Esempiofde5:8dba:82e1:1:416:993c:8399:35ab
ID pubblicitàCasuale, scelto al termine della commissione
AmbitoLocale mesh
Dettagli
  • Non cambia come cambia la topologia
  • Dovrebbe essere usato dalle applicazioni
  • Ha sempre un prefisso fd00::/8

Locator di routing (RLOC)

Identifica un'interfaccia Thread, in base alla sua posizione nella topologia di rete.
Esempiofde5:8dba:82e1:1::ff:fe00:1001
ID pubblicità0000:00ff:fe00:RLOC16
AmbitoLocale mesh
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

Anycast Locator (ALOC)

Identifica un'interfaccia Thread tramite la ricerca RLOC, quando la RLOC di una destinazione non è nota.
Esempiofde5:8dba:82e1:1::ff:fe00:fc01
ID pubblicità0000:00ff:fe00:fcXX
AmbitoLocale mesh
Dettagli
  • fcXX = destinazione ALOC, che cerca il RLOC appropriato
  • Solitamente non utilizzato dalle applicazioni

Indirizzo Unicast globale

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

Multicast

La tecnologia multicast consente di comunicare informazioni a più dispositivi contemporaneamente. In una rete Thread, gli 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 Tutte le FTD
ff03::1 Locale mesh Tutti gli FTD e MED
ff03::2 Locale mesh Tutte le FTD

Potresti notare che i dispositivi Sleepy End (SED) non sono inclusi come destinatari della tabella multicast riportata sopra. Thread definisce invece l'indirizzo multicast IPv6 basato su prefisso dell'ambito locale e realm-local utilizzato per tutti i nodi Thread, inclusi i SED. Questi indirizzi multicast variano in base alla rete Thread, perché è basato sul prefisso unicast Mesh-Local (consulta il documento RFC 3306 per ulteriori dettagli sugli indirizzi multicast IPv6 basati 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 Thread quando il RLOC di una destinazione non è noto. 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 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 la RLOC.

Thread definisce i seguenti valori ALOC16:

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

Riepilogo

Che cosa hai imparato:

  • Una rete Thread è costituita da tre ambiti: Link-Local, Mesh-Local e Global
  • Un dispositivo Thread ha più indirizzi IPv6 unificati.
    • 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 e router
  • Thread utilizza anycast quando il RLOC di una destinazione è sconosciuto

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

Verifica le tue conoscenze

Quali sono i tre ambiti utilizzati per l'indirizzamento unicast in una rete Thread?
Privata
risposta errata.
Interfaccia-locale
risposta errata.
Link locale
risposta esatta.
Sito locale
risposta errata.
Locale mesh
risposta esatta.
Global
risposta esatta.
Cosa significa quando un dispositivo ha un ID bambino pari a 0?
Il dispositivo è un bambino.
risposta errata.
Il dispositivo è un REED.
Quasi, 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 nuovi RLOC16 e RLOC. Quale dei seguenti eventi potrebbe aver causato questa situazione?
Qualcuno ha scaricato immagini da remoto dalla fotocamera.
risposta errata. Questo evento non interessa la rete Thread.
Un router ha interrotto la connessione alla rete.
risposta esatta. Quando un router lascia 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 è entrata in modalità di sospensione, che ha cambiato la topologia di rete.
risposta errata. L'attivazione della modalità di sospensione non comporta necessariamente che un dispositivo riceva un nuovo indirizzo di rete.
Un dispositivo su una rete Thread si abbona all'indirizzo multicast ff03::2. Cosa ci parla del dispositivo?
È un dispositivo finale minimo (MED).
risposta errata.
È un dispositivo FED (Full End Device).
risposta errata. Suggerimento: potrebbe anche non essere un FED.
È un dispositivo thread minimo (MTD).
risposta errata.
È un dispositivo full thread (FTD).
risposta esatta. Solo i dispositivi Full Thread si iscrivono all'indirizzo multicast ff03::2. Per farlo, nell'ambito del mesh locale.
Che tipo di indirizzamento e routing utilizza Thread per inoltrare i dati a gruppi di nodi e router?
unicast
risposta errata.
anycast
risposta errata.
multicast
risposta esatta.
annuncio
risposta errata.
Che tipo di indirizzamento e routing utilizza un dispositivo Thread quando il RLOC del destinatario del messaggio previsto è sconosciuto?
unicast
risposta errata.
anycast
risposta esatta. anycast consente a un dispositivo di raggiungere un nodo il cui RLOC non è noto, mediante l'assegnazione dell'ALOC al dispositivo.
multicast
risposta errata.
annuncio
risposta errata.