Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

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

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

Topología OT RLOC

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 es siempre 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 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:

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

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 Thread, 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 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
  • fc XX = destino ALOC , que busca el RLOC apropiado
  • Generalmente no utilizado por aplicaciones

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
  • 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 Thread, se reservan direcciones específicas para 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 subproceso, 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: 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 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 .