Cómo probar una red Thread con visualización

1. Introducción

5abd22afa2f2ee9a.png

¿Qué son Thread, OpenThread, OTNS y Selk?

Thread es un protocolo de red en malla inalámbrica de bajo consumo basado en IP que permite comunicaciones seguras de dispositivo a dispositivo y de dispositivo a nube. Las redes de subprocesos pueden adaptarse a los cambios de topología para evitar puntos únicos de fallo.

OpenThread, lanzado por Google, es una implementación de código abierto de Thread. A pesar de su pequeño tamaño de código y huella de memoria, OpenThread admite todas las funciones definidas en la Especificación de subprocesos.

El simulador de red de Thread de OpenThread (OTNS) se puede usar para simular redes de Thread ejecutando nodos de OpenThread simulados en plataformas de posix. OTNS proporciona una interfaz web fácil de usar (OTNS-Web) para visualizar y operar redes de Thread simuladas.

Silk es una plataforma de pruebas totalmente automatizada para validar el rendimiento del sistema, las funciones y las funciones de OpenThread con dispositivos reales.

Qué aprenderás

  • Marco de verificación de funcionalidad de OpenThread: Seda
  • Cómo compilar OpenThread para dispositivos reales con la función OTNS habilitada
  • Usa la interfaz OTNS-Web para supervisar el estado de la red Thread formada por casos de prueba de Silk

Este codelab se enfoca en el uso de Silk con OTNS. No se incluyen otras características de Seda y OTNS.

Requisitos

Hardware:

  • 6 placas de desarrollo nRF52840 Semiconductor nórdico
  • 6 cables USB a Micro USB para conectar las placas
  • hub USB

Software:

Requisitos previos:

2. Requisitos previos

Completa codelabs básicos anteriores

Verificando los requisitos previos del paquete

Asegurémonos de que se cumplan todos los requisitos previos.

  1. Ejecuta which otns para verificar si el ejecutable otns se puede buscar en $PATH.
  2. Ejecuta which wpantund para asegurarte de que wpantund esté disponible.
  3. Asegúrate de que la cadena de herramientas ARM GNU, J-Link y los paquetes nrfjprog estén disponibles.

Nota: Consulta la documentación vinculada para obtener ayuda con la configuración. El requisito previo es que simule redes Thread con OTNS y que otros corresponden a Build a Thread network with nRF52840 boards and OpenThread.

3. Configuración de seda

Para clonar Silk y configurar el entorno, ejecuta los siguientes comandos en el directorio del código fuente:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

Define el archivo de configuración de hardware

Para permitir que Silk recopile los recursos de hardware de prueba disponibles conectados a tu máquina, define un archivo hwconfig.ini con el siguiente formato:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

Se instala una herramienta llamada usbinfo como parte de Silk que se puede usar para averiguar el número de serie de la interfaz y el número de interfaz USB. DutSerial es el número SN impreso en el chip o que muestra usbinfo para los productos J-Link.

Los campos LayoutCenter y LayoutRadius de la sección [DEFAULT] definen la forma del diseño cuando se visualizan los dispositivos en la IU web. Establecerlos en los valores que se presentan aquí puede ser un buen punto de partida.

Luego, define una sección para cada dispositivo de prueba y proporciona la información de hardware relevante.

4. Compila OpenThread con OTNS habilitado

Imagen del edificio y escritura en la memoria flash

De forma predeterminada, los dispositivos OpenThread no emiten mensajes relacionados con OTNS. Para permitir que las placas de desarrollo emitan mensajes de estado a las interfaces de registro que son esenciales para la visualización de OTNS, ejecuta el siguiente comando en el directorio de origen de OpenThread para compilar una imagen de FTD y convertirla al formato hexadecimal.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

A fin de instalar las placas, sigue las instrucciones del paso 4 del Codelab de compilación de una red Thread para usar nrfjprog. Luego, conecta todas las placas a través del puerto USB nRF a la máquina anfitrión. El mismo conjunto de cables USB a Micro-USB se puede desconectar de los puertos J-Link y conectarse a los puertos nRF USB de las placas de desarrollo nRF52840. Por lo tanto, con solo estos 6 cables, se puede llevar a cabo la ejecución de prueba. Para evitar problemas, usa 12 cables y conéctalos a ambos puertos.

5. Ejecuta el servidor OTNS con modo real

Ejecutar OTNS con parámetros predeterminados permite al usuario simular una red Thread. Si quieres usarla como herramienta de visualización para una red física real, ejecútala con el siguiente comando:

otns -raw -real -ot-cli otns-silk-proxy

Estos argumentos le indican a OTNS que esperen mensajes de gRPC y UDP que describan cómo se debe visualizar la red Thread, en lugar de ejecutar varios procesos ot-cli para simular la red. El navegador debería abrir automáticamente la página de visualización con un recuadro vacío.

4dd5b41bf7e71334.png

6. Ejecución de casos de prueba de seda compatibles con OTNS

Silk es una plataforma de pruebas completamente automatizada para validar el rendimiento del sistema, las funciones y las funciones de OpenThread con dispositivos reales. En las instrucciones del proyecto README, se describe cómo usarla.

El archivo silk_run_test.py ubicado en silk/unit_tests te ofrece una ventaja. Silk proporciona compatibilidad con OTNS cuando se ejecuta un caso de prueba. Dado que el servicio de modo real de OTNS ya se ejecuta de forma local, solo necesitamos modificar el archivo silk_run_test.py con las ubicaciones deseadas para un archivo de registro de salida, una secuencia de comandos de prueba de entrada y un archivo hwconfig.ini. El argumento -s localhost le indica a Silk que envíe mensajes OTNS a localhost.

Por ejemplo, se puede ejecutar la prueba llamada ot_test_form_network.py con las siguientes modificaciones en el archivo silk_run_test.py. /opt/openthread_test/ es la ruta predeterminada que Silk usa para los resultados del registro y el archivo de configuración, pero puedes usar cualquier ruta.

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

La visualización de la topología de la red formada se mostrará en la IU web de OTNS.

ee443b66e0a6620b.png

En la esquina superior izquierda, se muestran las estadísticas de visualización, la versión de OT y el título de la prueba. La esquina inferior izquierda tiene controles de la ventana de registro, que se muestra a la derecha. Inicialmente, se agregan nodos, pero no se forma ninguna red. A medida que avanza la prueba, cambian los modos y las funciones de cada nodo, y se forman vínculos.

5c38e2c72519e620.png

7. Felicitaciones

¡Felicitaciones! Ejecutaste correctamente una prueba de seda en dispositivos Thread físicos y la visualizaste con OTNS.

Ejecutaste una prueba de Silk con placas de desarrollo que están actualizadas con firmwares que admiten OTNS. Las placas informan su estado a un servidor de seda, que supervisa y agrega todas, y las envía al servicio de OTNS junto con otra información de prueba. La OTNS que se ejecuta en modo real visualiza la red de Thread en la interfaz web.

¿Qué sigue?

Intenta ejecutar otros casos de prueba de OpenThread incluidos en el paquete Silk.

Lecturas adicionales

Revise openthread.io y Selk para obtener una variedad de recursos de OpenThread.

Documentos de referencia