Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Direccionamiento IPv6

Ver fuente en GitHub

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

Alcances

Alcances OT

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 de subprocesos
  • Global: todas las interfaces accesibles desde fuera de una red Thread

Los dos primeros ámbitos corresponden a prefijos designados por una red de subprocesos. De enlace local tienen prefijos de fe80::/16 , mientras que en malla local tiene prefijos de fd00::/8 .

Unidifusión

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 la identificación del enrutador y el número en un dispositivo final (círculo) es la identificación del niño:

Topología OT RLOC

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

OT RLOC16

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 este formato:

0000:00ff:fe00:RLOC16

El IID, combinado con un prefijo local de malla, da como resultado el RLOC. Por ejemplo, utilizando un Prefijo Mesh-Local de fde5:8dba:82e1:1::/64 , la RLOC para un nodo donde RLOC16 = 0x401 es:

OT RLOC

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

Topología 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, tal vez nodo 0x400 se retira de la red de rosca. Los nodos 0x401 y 0x402 establecer nuevos enlaces a diferentes routers, y como resultado, se les asigna un nuevo RLOC16 y RLOC:

Topología 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 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.

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
  • Se utiliza para descubrir vecinos, configurar enlaces e intercambiar información de enrutamiento.
  • 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 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
  • No cambia a medida que cambia la topología
  • Debe ser utilizado por aplicaciones
  • Siempre tiene un prefijo fd00::/8

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
  • Generado una vez que un dispositivo se conecta a una red
  • Para entregar datagramas IPv6 dentro de una red Thread
  • Cambios a medida que cambia la topología
  • Generalmente no utilizado por aplicaciones

Localizador de Anycast (ALOC)

Identifica una interfaz de subproceso mediante la búsqueda de RLOC, cuando se desconoce el RLOC de un destino.
Ejemplo fde5:8dba:82e1:1::ff:fe00:fc01
IID 0000:00ff:fe00:fc XX
Alcance Local de malla
Detalles
  • fc XX = destino ALOC , que busca el RLOC apropiada
  • Generalmente no utilizado por aplicaciones

Dirección de unidifusión global (GUA)

Un EID que identifica una interfaz de Thread en un ámbito global, más allá de una red de Thread.
Ejemplo 2000::54db:881c:3845:57f4
IID
  • SLAAC: asignado aleatoriamente por el propio dispositivo
  • DHCP: asignado por un servidor DHCPv6
  • Manual: asignado por la capa de aplicación
Alcance Global
Detalles
  • Una dirección IPv6 pública
  • Siempre tiene un prefijo de 2000::/3

Multidifusión

La multidifusión se utiliza para comunicar información a varios dispositivos a la vez. En una red de subprocesos, 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 se incluyen 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 subprocesos, incluidos los SED. Estas direcciones de multidifusión varían según la red de hilo, ya que se basa en la unicast prefijo Malla-local (ver RFC 3306 IPv6 basado en unicast-prefijo para más detalles sobre las direcciones de multidifusió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 localizador de Anycast (ALOC) identifica la ubicación de múltiples interfaces dentro de una partición de subprocesos. Los últimos 16 bits de un ALOC, llamado el ALOC16, está en el formato de 0xfc XX , que representa el tipo de ALOC.

Por ejemplo, un ALOC16 entre 0xfc01 y 0xfc0f está reservado para los agentes de 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 Escribe
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: Link-Local, Mesh-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 utiliza anycast cuando se desconoce el RLOC de un destino

Para obtener más información sobre el direccionamiento IPv6 del hilo, ver secciones 5.2 y 5.3 de la Especificación de rosca .