Cómo mostrar y administrar datos de red con la CLI de OT

Ver código fuente en GitHub

Los datos de red de Thread contienen información sobre los routers de borde y otros servidores disponibles en la red de Thread. Los routers y dispositivos de borde que ofrecen servicios registran su información con el líder. El líder recopila y estructura esta información dentro de los datos de red de Thread y la distribuye a todos los dispositivos en la red de Thread.

Los routers de borde pueden registrar prefijos asignados a la red de Thread y prefijos para los que ofrecen rutas. Los servicios pueden registrar cualquier información relevante para el servicio en sí.

El router de borde y la información del servicio pueden ser estables o temporales. Los datos de la red de subprocesos estables se distribuyen a todos los dispositivos, incluidos los dispositivos de última hora con sueño (SED). Los datos de red temporales se distribuyen a todos los nodos, excepto a los SED.

Comandos de datos de red

Para obtener una lista de los comandos netdata, escribe help:

netdata help
help
full
length
maxlength
publish
register
show
steeringdata
unpublish
Done

Comandos full

Los comandos full informan el estado de la marca o vuelven a rastrear el seguimiento si se invocó la devolución de llamada "net data full".

Este comando requiere OPENtas_CONFIG_BORDER_ROUTER_SIGNAL_NETWORK_DATA_FULL.

Comandos length y maxlength

El comando length obtiene la longitud actual de los datos de red de Thread, que se informan como una cantidad de bytes. Los comandos maxlength obtienen la longitud máxima observada o restablecen la longitud máxima con seguimiento.

Comandos publish

El editor de datos de red proporciona mecanismos para limitar la cantidad de entradas similares de servicio y prefijo (prefijo en malla o ruta externa) en los datos de red de Thread mediante la supervisión de los datos de red y la administración de cuándo agregar o quitar entradas.

El publicador requiere OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE.

Red de formularios y prefijo de configuración

  1. Generar nueva configuración de red

    dataset init new
    Done
    
  2. Muestra la configuración de la red.

    dataset
    Active Timestamp: 1
    Channel: 13
    Channel Mask: 0x07fff800
    Ext PAN ID: d63e8e3e495ebbc3
    Mesh Local Prefix: fd3d:b50b:f96d:722d::/64
    Network Key: dfd34f0f05cad978ec4e32b0413038ff
    Network Name: OpenThread-8f28
    PAN ID: 0x8f28
    PSKc: c23a76e98f1a6483639b1ac1271e2e27
    Security Policy: 0, onrcb
    Done
    
  3. Confirme el nuevo conjunto de datos con el conjunto de datos operativo activo en un almacenamiento no volátil.

    dataset commit active
    Done
    
  4. Cómo habilitar la interfaz de Thread

    ifconfig up
    Done
    thread start
    Done
    
  5. Muestra las direcciones IPv6 asignadas a la interfaz de Thread.

    ipaddr
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    
  6. Registra un prefijo de IPv6 asignado a la red Thread.

    prefix add fd00:dead:beef:cafe::/64 paros med
    Done
    netdata register
    Done
    
  7. Mostrar datos de la red del subproceso.

    netdata show
    Prefixes:
    fd00:dead:beef:cafe::/64 paros med dc00
    Routes:
    fd49:7770:7fc5:0::/64 s med 4000
    Services:
    44970 5d c000 s 4000
    44970 01 9a04b000000e10 s 4000
    Done
    

    Los prefijos y las rutas incluyen las asignaciones de argumentos y el valor de RLOC.

    Los registros de servicio incluyen valores otServiceConfig, incluidos mEnterpriseNumber, mServiceData, otServerConfig::mServerData y s para indicar otServerConfig::mStable. El RLOC también se agrega al final del registro.

  8. Muestra la longitud actual, en cantidad de bytes, de los datos de red de subprocesos de la partición.

    netdata length
    23
    Done
    
  9. Muestra las direcciones IPv6 asignadas a la interfaz de Thread, incluido el prefijo agregado.

    ipaddr
    fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    

Conectar a la red existente

Solo se requiere la clave de red para que un dispositivo se conecte a una red Thread.

Si bien no es obligatorio, especificar el canal evita la necesidad de buscar en varios canales, lo que mejora la latencia y la eficiencia del proceso de conexión.

Después de que un dispositivo se conecta correctamente a una red Thread, el dispositivo recupera el conjunto de datos operativo activo completo.

  1. Crear un conjunto de datos operativo parcial activo

    dataset networkkey dfd34f0f05cad978ec4e32b0413038ff
    Done
    dataset commit active
    Done
    
  2. Habilita la interfaz de Thread.

    ifconfig up
    Done
    thread start
    Done
    
  3. Después de conectarte a la red existente, muestra los datos de la red Thread.

    netdata show
    Prefixes:
    fd00:dead:beef:cafe::/64 paros med dc00
    Routes:
    Services:
    Done
    
  4. Muestra la longitud actual, en cantidad de bytes, de los datos de red de subprocesos de la partición.

    netdata length
    23
    Done
    
  5. Muestra las direcciones IPv6 asignadas a la interfaz de Thread.

    ipaddr
    fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    

Depuración y diagnóstico

Los datos de red tienen un tamaño limitado de 254 bytes. Si los routers de borde continúan agregando entradas (por ejemplo, prefijos, rutas o entradas de servicio) a los datos de red, pueden obtener información completa. Cuando esto sucede, el líder rechazará o ignorará las solicitudes de un router de borde para agregar elementos nuevos. El líder no necesariamente indica el rechazo al router de borde, por lo que es posible que este no note de inmediato que los datos de red se están llenando. Sin embargo, hay un método disponible para detectar cuándo se llenan los datos de red.

El método de detección, implementado en los routers de borde y en el líder, usa un mecanismo de API de devolución de llamada y permite que los usuarios reciban una notificación cuando los datos de red estén completos. La devolución de llamada se puede usar para realizar acciones, como quitar prefijos inactivos o entradas de servicio. Los comandos netdata full se usan para la marca que rastrea si se invocó la devolución de llamada "net data full". Estos comandos pueden informar el estado de la marca o restablecerla.

Para los casos de uso típicos de Thread, es poco probable que los datos de red se completen, incluso en los casos en los que haya muchos routers de borde y todos agreguen prefijos de ruta.

Técnicamente, los datos de red se pueden completar. Sin embargo, esto suele deberse a una configuración incorrecta o a un problema en el router de borde. Los comandos netdata length y netdata maxlength pueden ayudar a depurar los errores completos de los datos de red. length obtiene la longitud actual de los datos de red, informada como bytes, y maxlength obtiene la longitud máxima observada y también puede restablecer la longitud máxima con seguimiento.