Direccionamiento IPv6

Ver código fuente en GitHub

Veamos cómo Thread identifica cada dispositivo en la red y qué o tipos de direcciones que usan para comunicarse entre sí.

Permisos

Alcances de OT

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:

Topología de RLOC de OT

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):

OT RLOC16

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:

RLOC de OT

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

Topología de OT con dirección

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:

Topología de OT después del cambio

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.

Es un EID que identifica una interfaz Thread a la que puede acceder una sola transmisión de radio.
Ejemplofe80::54db:881c:3845:57f4
IIDSegún la dirección extendida 802.15.4
AlcanceVínculo local
Detalles
  • Se usa para descubrir vecinos, intercambiar información de enrutamiento y configurar vínculos
  • No es una dirección enrutable
  • Siempre tiene un prefijo de fe80::/16.

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).
Ejemplofde5:8dba:82e1:1:416:993c:8399:35ab
IIDAleatorio; se elige después de que se completa la puesta en marcha
AlcanceMalla-local
Detalles
  • No cambia a medida que cambia la topología
  • Debe usarse en las aplicaciones
  • Siempre tiene un prefijo fd00::/8.

Localizador de rutas (RLOC)

Identifica una interfaz Thread en función de su ubicación en la topología de red.
Ejemplofde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
AlcanceMalla-local
Detalles
  • Se genera cuando un dispositivo se conecta a una red
  • Para entregar datagramas IPv6 dentro de una red Thread
  • Cambios a medida que cambia la topología
  • Por lo general, las aplicaciones no lo usan

Anycast Locator (ALOC)

Identifica una interfaz de Thread mediante una búsqueda de RLOC cuando se desconoce el RLOC de un destino.
Ejemplofde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
AlcanceMalla-local
Detalles
  • fcXX = ALOC destination, que busca el RLOC adecuado
  • Por lo general, las aplicaciones no lo usan

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.
Ejemplo2000::54db:881c:3845:57f4
IID
  • SLAAC: El mismo dispositivo lo asigna de forma aleatoria.
  • DHCP: asignado por un servidor DHCPv6
  • Manual: Lo asigna la capa de aplicación
AlcanceGlobal
Detalles
  • Una dirección IPv6 pública
  • Siempre tiene un prefijo de 2000::/3.

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
0xfc010xfc0f Agente DHCPv6
0xfc100xfc2f Servicio
0xfc300xfc37 Comisionado
0xfc400xfc4e Agente de descubrimiento de vecino
0xfc380xfc3f
0xfc4f0xfcff
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

¿Cuáles son los tres alcances que se usan para el direccionamiento de unidifusión en una red Thread?
Privado
Incorrecto.
Interfaz local
Incorrecto.
Vínculo local
Correcto.
Sitio local
Incorrecto.
Malla-local
Correcto.
Global
Correcto.
¿Qué significa que un dispositivo tenga un ID secundario de 0?
El dispositivo es un publicador secundario.
Incorrecto.
El dispositivo es un REED.
Buen intento, pero es incorrecto.
El dispositivo es un router.
Correcto. Un router siempre tiene un ID secundario de 0.
Una cámara, que es un nodo en una red Thread, recibe un nuevo RLOC16 y RLOC. ¿Cuál de los siguientes eventos pudo haber sido la causa de esto?
Alguien descargó imágenes de la cámara de forma remota.
Incorrecto. Este evento no tendría efecto en el subproceso. en cada red.
Un router dejó de estar en la red.
Correcto. Cuando un router deja de usar una red, esta cambios de topología, lo que puede provocar que el dispositivo se promocione a sí mismo a un y obtener un nuevo RLOC.
La cámara entró en modo de suspensión, lo que cambió la topología de red.
Incorrecto. Entrar en modo de suspensión no provocaría necesariamente la activación del dispositivo para recibir una nueva dirección de red.
Un dispositivo de una red Thread se suscribe a ff03::2 multicast. ¿Qué nos dice esto sobre el dispositivo?
Es un dispositivo final mínimo (MED).
Incorrecto.
Es un dispositivo de extremo completo (FED).
Incorrecto. (Pista: puede o no ser un FED).
Es un dispositivo de Thread mínimo (MTD).
Incorrecto.
Es un dispositivo de Thread completo (FTD).
Correcto. Solo los dispositivos con Thread completo se suscriben a Dirección de multidifusión ff03::2. Lo hacen en el entorno de Mesh-Local del proyecto.
¿Qué tipo de direccionamiento y enrutamiento usa Thread para reenviar datos a grupos de nodos y routers?
unidifusión
Incorrecto.
Anycast
Incorrecto.
multidifusión
Correcto.
transmisión
Incorrecto.
¿Qué tipo de direccionamiento y enrutamiento usa un dispositivo Thread cuando ¿Se desconoce el RLOC del destinatario del mensaje correspondiente?
unidifusión
Incorrecto.
Anycast
Correcto. Anycast permite que un dispositivo llegue a un nodo cuyo RLOC no sea conocido, abordando el ALOC del dispositivo.
multidifusión
Incorrecto.
transmisión
Incorrecto.