|
Echemos un vistazo a cómo Thread identifica cada dispositivo en la red y qué tipos de direcciones utilizan para comunicarse entre sí.
Alcances

Hay tres ámbitos en una red de subprocesos para el direccionamiento unidifusión:
- Link-Local: todas las interfaces accesibles mediante una única transmisión de radio
- Mesh-Local: todas las interfaces accesibles dentro de la misma red Thread
- Global: todas las interfaces accesibles desde fuera de una red Thread
Los dos primeros ámbitos corresponden a prefijos designados por una red de subprocesos. Link-Local tiene prefijos de fe80::/16
, mientras que Mesh-Local tiene prefijos de fd00::/8
.
Unicast
Hay varias direcciones de unidifusión IPv6 que identifican un solo dispositivo Thread. Cada uno tiene una función diferente según el alcance y el caso de uso.
Antes de detallar cada tipo, aprendamos más sobre uno común, llamado Routing Locator (RLOC). El RLOC identifica una interfaz de subproceso, según su ubicación en la topología de la red.
Cómo se genera un localizador de enrutamiento
A todos los dispositivos se les asigna una ID de enrutador y una ID de niño. Cada enrutador mantiene una tabla de todos sus hijos, cuya combinación identifica de forma única un dispositivo dentro de la topología. Por ejemplo, considere los nodos resaltados en la siguiente topología, donde el número en un enrutador (pentágono) es el ID del enrutador y el número en un dispositivo final (círculo) es el ID del niño:

El ID de enrutador de cada niño corresponde a su padre (enrutador). Debido a que un enrutador no es un niño, el ID de niño para un enrutador siempre es 0. Juntos, estos valores son únicos para cada dispositivo en la red de subprocesos y se utilizan para crear el RLOC16, que representa los últimos 16 bits del RLOC.
Por ejemplo, así es como se calcula el RLOC16 para el nodo superior izquierdo (ID de enrutador = 1 e ID de niño = 1):

El RLOC16 es parte del Identificador de interfaz (IID), que corresponde a los últimos 64 bits de la dirección IPv6. Algunos IID se pueden utilizar para identificar algunos tipos de interfaces de subprocesos. Por ejemplo, el IID para los RLOC siempre tiene el formato 0000:00ff:fe00: RLOC16
.
El IID, combinado con un prefijo local de malla, da como resultado el RLOC. Por ejemplo, usando un prefijo local de fde5:8dba:82e1:1::/64
de fde5:8dba:82e1:1::/64
, el RLOC para un nodo donde RLOC16 = 0x401
es:

Esta misma lógica se puede utilizar para determinar el RLOC para todos los nodos resaltados en la topología de muestra anterior:

Sin embargo, debido a que el RLOC se basa en la ubicación del nodo en la topología, el RLOC de un nodo puede cambiar a medida que cambia la topología.
Por ejemplo, quizás el nodo 0x400
se elimine de la red Thread. Los nodos 0x401
y 0x402
establecen nuevos enlaces a diferentes enrutadores y, como resultado, a cada uno se le asigna un nuevo RLOC16 y RLOC:

Tipos de direcciones de unidifusión
El RLOC es solo una de las muchas direcciones de unidifusión IPv6 que puede tener un dispositivo Thread. Otra categoría de direcciones se denominan Identificadores de punto final (EID), que identifican una interfaz de subproceso única dentro de una partición de red de subproceso. Los EID son independientes de la topología de la red Thread.
Los tipos comunes de unidifusión se detallan a continuación.
Dirección de enlace local (LLA) | |
---|---|
Un EID que identifica una interfaz Thread accesible mediante una única transmisión de radio. | |
Ejemplo | fe80::54db:881c:3845:57f4 |
IID | Basado en la dirección extendida 802.15.4 |
Alcance | Enlace local |
Detalles |
|
EID local de malla (ML-EID) | |
---|---|
Un EID que identifica una interfaz de subproceso, independientemente de la topología de la red. Se utiliza para llegar a una interfaz de subproceso dentro de la misma partición de subproceso. También se llama dirección local única (ULA). | |
Ejemplo | fde5:8dba:82e1:1:416:993c:8399:35ab |
IID | Aleatorio, elegido después de completar la puesta en servicio |
Alcance | Local de malla |
Detalles |
|
Localizador de enrutamiento (RLOC) | |
---|---|
Identifica una interfaz de subproceso, según su ubicación en la topología de la red. | |
Ejemplo | fde5:8dba:82e1:1::ff:fe00:1001 |
IID | 0000:00ff:fe00: RLOC16 |
Alcance | Local de malla |
Detalles |
|
Localizador de Anycast (ALOC) | |
---|---|
Identifica una interfaz de subproceso mediante la búsqueda de RLOC, cuando no se conoce el RLOC de un destino. | |
Ejemplo | fde5:8dba:82e1:1::ff:fe00:fc01 |
IID | 0000:00ff:fe00:fc XX |
Alcance | Local de malla |
Detalles |
|
Dirección de unidifusión global (GUA) | |
---|---|
Un EID que identifica una interfaz Thread en un ámbito global, más allá de una red Thread. | |
Ejemplo | 2000::54db:881c:3845:57f4 |
IID |
|
Alcance | Global |
Detalles |
|
Multidifusión
La multidifusión se utiliza para comunicar información a varios dispositivos a la vez. En una red Thread, las direcciones específicas se reservan para el uso de multidifusión con diferentes grupos de dispositivos, según el alcance.
Dirección IPv6 | Alcance | Entregado a |
---|---|---|
ff02::1 | Enlace local | Todos los FTD y MED |
ff02::2 | Enlace local | Todos los FTD |
ff03::1 | Local de malla | Todos los FTD y MED |
ff03::2 | Local de malla | Todos los FTD |
Es posible que observe que los dispositivos finales Sleepy (SED) no están incluidos como destinatarios en la tabla de multidifusión anterior. En su lugar, Thread define la dirección de multidifusión IPv6 basada en prefijo de unidifusión de ámbito local de vínculo y ámbito local que se utiliza para todos los nodos de Thread, incluidos los SED. Estas direcciones de multidifusión varían según la red de subprocesos, ya que se basan en el prefijo local de malla de unidifusión (consulte RFC 3306 para obtener más detalles sobre las direcciones de multidifusión IPv6 basadas en prefijo de unidifusión).
Los ámbitos arbitrarios más allá de los ya enumerados también son compatibles con dispositivos Thread.
Anycast
Anycast se utiliza para enrutar el tráfico a una interfaz Thread cuando se desconoce el RLOC de un destino. Un Anycast Locator (ALOC) identifica la ubicación de múltiples interfaces dentro de una partición Thread. Los últimos 16 bits de un ALOC, llamado ALOC16, tienen el formato 0xfc XX
, que representa el tipo de ALOC.
Por ejemplo, un ALOC16 entre 0xfc01
y 0xfc0f
está reservado para agentes DHCPv6. Si se desconoce el RLOC del Agente DHCPv6 específico (quizás porque la topología de la red ha cambiado), se puede enviar un mensaje a un ALOC del Agente DHCPv6 para obtener el RLOC.
Thread define los siguientes valores ALOC16:
ALOC16 | Tipo |
---|---|
0xfc00 | Líder |
0xfc01 - 0xfc0f | Agente DHCPv6 |
0xfc10 - 0xfc2f | Servicio |
0xfc30 - 0xfc37 | Notario |
0xfc40 - 0xfc4e | Agente de descubrimiento de vecinos |
0xfc38 - 0xfc3f 0xfc4f - 0xfcff | Reservado |
Resumen
Lo que has aprendido:
- Una red de subprocesos consta de tres ámbitos: enlace local, malla local y global.
- Un dispositivo Thread tiene varias direcciones IPv6 de unidifusión
- Un RLOC representa la ubicación de un dispositivo en la red Thread
- Un ML-EID es exclusivo de un dispositivo Thread dentro de una partición y debe ser utilizado por aplicaciones
- Thread utiliza multidifusión para reenviar datos a grupos de nodos y enrutadores
- Thread usa anycast cuando se desconoce el RLOC de un destino
Para obtener más información sobre el direccionamiento IPv6 de Thread, consulte las secciones 5.2 y 5.3 de la Especificación de Thread .