Veamos cómo Thread identifica cada dispositivo en la red y qué o tipos de direcciones que usan para comunicarse entre sí.
Permisos
En una red de Thread, existen tres permisos para el direccionamiento de unidifusión:
- Vínculo local: todas las interfaces a las que puede acceder una sola transmisión de radio
- Mesh-Local: se puede acceder a todas las interfaces dentro de la misma red de Thread
- Global: Todas las interfaces son accesibles desde fuera de una red Thread
Los primeros dos alcances corresponden a los prefijos designados por una red de Thread.
El vínculo local local tiene prefijos fe80::/16
, mientras que el tipo de malla local tiene prefijos de
fd00::/8
Unicast
Existen varias direcciones IPv6 de unidifusión 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, denominado Localizador de rutas (RLOC). El RLOC identifica una interfaz Thread según su la ubicación en la topología de red.
Cómo se genera un localizador de rutas
A todos los dispositivos se les asigna un ID de router y un ID secundario. Cada router mantiene un tabla de todos sus elementos secundarios, cuya combinación identifica de forma exclusiva un dispositivo dentro de la topología. Por ejemplo, considera los nodos destacados en la según la topología, en la que el número en un router (péntágono) es el ID del router y el número en un dispositivo final (círculo) es el ID secundario:
Cada ID de router de un publicador secundario corresponde a su superior (router). Como un router es no es un elemento secundario, el ID secundario de un router siempre es 0. Juntos, estos valores son únicos para cada dispositivo de la red Thread y se usan para crear el RLOC16 que representa los últimos 16 bits del RLOC.
Por ejemplo, aquí te mostramos cómo se calcula RLOC16 para el nodo superior izquierdo (Router ID = 1 e ID secundario = 1):
El RLOC16 forma parte del identificador de la interfaz (IID), que corresponde al los últimos 64 bits de la dirección IPv6. Se pueden usar algunos IID para identificar algunos tipos de interfaces de Thread. Por ejemplo, el IID para los RLOC siempre está en este formato:
0000:00ff:fe00:RLOC16
El IID, combinado con un prefijo local de malla, da como resultado el RLOC. Por ejemplo:
con un prefijo local de malla de fde5:8dba:82e1:1::/64
, el RLOC para un nodo en el que
RLOC16 = 0x401
es:
Esta misma lógica se puede usar para determinar el RLOC de todos los nodos destacados 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, es posible que se quite el nodo 0x400
de la red Thread. Nodos
0x401
y 0x402
establecen vínculos nuevos con routers diferentes y, como resultado,
a cada uno se le asigna un RLOC16 y un RLOC nuevos:
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 llama identificadores de extremos (EID), que identificar una interfaz de Thread única dentro de una partición de red de Thread Los EID son independiente de la topología de red de Thread.
A continuación, se detallan los tipos de unidifusión comunes.
Dirección de vínculo local (LLA) |
|
---|---|
Es un EID que identifica una interfaz Thread a la que puede acceder una sola transmisión de radio. | |
Ejemplo | fe80::54db:881c:3845:57f4 |
IID | Según la dirección extendida 802.15.4 |
Alcance | Vínculo local |
Detalles |
|
EID local de malla (ML-EID) |
|
---|---|
Un EID que identifica una interfaz Thread, independientemente de la topología de red. Se usa para acceder a una interfaz de Thread dentro de la misma partición de Thread. También se denomina dirección local única (ULA). | |
Ejemplo | fde5:8dba:82e1:1:416:993c:8399:35ab |
IID | Aleatorio; se elige después de que se completa la puesta en marcha |
Alcance | Malla-local |
Detalles |
|
Localizador de rutas (RLOC) |
|
---|---|
Identifica una interfaz Thread en función de su ubicación en la topología de red. | |
Ejemplo | fde5:8dba:82e1:1::ff:fe00:1001 |
IID | 0000:00ff:fe00:RLOC16 |
Alcance | Malla-local |
Detalles |
|
Anycast Locator (ALOC) |
|
---|---|
Identifica una interfaz de Thread mediante una búsqueda de RLOC cuando se desconoce el RLOC de un destino. | |
Ejemplo | fde5:8dba:82e1:1::ff:fe00:fc01 |
IID | 0000:00ff:fe00:fcXX |
Alcance | Malla-local |
Detalles |
|
Dirección de unidifusión global (GUA) |
|
---|---|
Un EID que identifica una interfaz de Thread en un alcance global, más allá de una red de Thread. | |
Ejemplo | 2000::54db:881c:3845:57f4 |
IID |
|
Alcance | Global |
Detalles |
|
Multicast
La multidifusión se usa para comunicar información a varios dispositivos a la vez. En una Thread, las direcciones específicas se reservan para multidifusión con diferentes grupos de dispositivos, según el alcance.
Dirección IPv6 | Alcance | Dirección de entrega: |
---|---|---|
ff02::1 |
Vínculo local | Todos los FTD y MED |
ff02::2 |
Vínculo local | Todos los FTD |
ff03::1 |
Malla-local | Todos los FTD y MED |
ff03::2 |
Malla-local | Todos los FTD |
Es posible que notes que los dispositivos finales con sueño (SED) no se incluyen como de destino en la tabla de multidifusión anterior. En cambio, Thread define multicast IPv6 de alcance local basado en prefijos de unidifusión de alcance local y dominio local para todos los nodos de subprocesos, incluidos los SED. Estos modelos de multidifusión varían según la red de Thread, ya que se basa en el protocolo Prefijo local de malla (consulta RFC 3306) para obtener más detalles sobre las direcciones de multidifusión IPv6 basadas en prefijos de unidifusión).
También se admiten para Thread los alcances arbitrarios más allá de los que ya están enumerados. dispositivos.
Anycast
Anycast se usa para enrutar el tráfico a una interfaz Thread cuando el RLOC de un
el destino es desconocido. Un localizador Anycast (ALOC) identifica la ubicación de
múltiples interfaces dentro de una partición de Thread. Los últimos 16 bits de un ALOC
llamado ALOC16, tiene el formato 0xfcXX
, que
representa el tipo de ALOC.
Por ejemplo, un ALOC16 entre 0xfc01
y 0xfc0f
se reserva para DHCPv6.
Agentes. Si el RLOC del agente DHCPv6 específico se desconoce (quizás porque
la topología de red), se puede enviar un mensaje a un agente ALOC de DHCPv6 para
obtener el RLOC.
El subproceso define los siguientes valores de ALOC16:
ALOC16 | Tipo |
---|---|
0xfc00 |
Líder |
0xfc01 – 0xfc0f |
Agente DHCPv6 |
0xfc10 – 0xfc2f |
Servicio |
0xfc30 – 0xfc37 |
Comisionado |
0xfc40 – 0xfc4e |
Agente de descubrimiento de vecino |
0xfc38 – 0xfc3f 0xfc4f – 0xfcff |
Reservados |
Resumen
Qué aprendiste:
- Una red de Thread consta de tres permisos: Link-Local, Mesh-Local y el 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 lo deben usar las aplicaciones
- Thread usa la multidifusión para reenviar datos a grupos de nodos y routers
- El subproceso usa anycast cuando se desconoce el RLOC de un destino.
Para obtener más información sobre el direccionamiento IPv6 de Thread, consulta las secciones 5.2 y 5.3 del Especificación del subproceso.
Verifica tus conocimientos
ff03::2
multicast. ¿Qué nos dice esto sobre el dispositivo?ff03::2
. Lo hacen en el entorno de Mesh-Local
del proyecto.