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

Cómo probar una red Thread con visualización

1. Introducción

5abd22afa2f2ee9a.png

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

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

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

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

Seda es una plataforma de pruebas completamente automatizada que permite validar el rendimiento del sistema, las funciones y las funciones de OpenThread con dispositivos reales.

Qué aprenderás

  • Framework de verificación de funcionalidad de OpenThread: seda
  • Cómo compilar OpenThread para dispositivos reales con la función OTNS habilitada
  • Usa la interfaz web de OTNS para supervisar el estado de la red Thread formada por casos de prueba de seda.

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

Requisitos

Hardware:

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

Software:

  • Linux x86_64.
  • Git
  • Go 1.11+.
  • Navegador web. OTNS-Web usa un navegador web para mostrar simulaciones.

Requisitos previos:

2. Requisitos previos

Completar 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 se puede buscar el ejecutable otns en $PATH.
  2. Ejecuta which wpantund para asegurarte de que wpantund esté disponible.
  3. Asegúrate de que estén disponibles los conjuntos de herramientas de ARM GNU, J-Link y nrfjprog.
  4. Asegúrate de que se pueda crear un objeto binario de OpenThread que ejecute make -f examples/Makefile-nrf52840 en la carpeta openthread.

Nota: Consulta la documentación vinculada para obtener ayuda con la configuración. El requisito n.o 1 es del artículo Simula redes de Thread con OTNS y otros pertenecen a Cómo crear una red de Thread con placas nRF52840 y OpenThread.

3. Configuración de la seda

Para clonar Silk y configurar el entorno, ejecute los siguientes comandos en su 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 que se conectan a tu máquina, define un archivo hwconfig.ini en 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 seda, que se puede usar para averiguar el número de serie de la interfaz y el número de la interfaz USB. DutSerial es el número de SN impreso en el chip que muestra usbinfo para productos de J-Link.

Los campos LayoutCenter y LayoutRadius de la sección [DEFAULT] definen la forma del diseño cuando los dispositivos se visualizan en la IU web. Configurarlos en los valores presentados 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. Cómo compilar OpenThread con OTNS habilitado

Cómo compilar imágenes y escribir en la memoria flash

De forma predeterminada, los dispositivos OpenThread no emiten mensajes OTNS. A fin de permitir que las placas de desarrollo emitan mensajes de estado a las interfaces de registros 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

Para instalar las placas, sigue las instrucciones del paso 4 del Codelab para compilar una red Thread a fin de usar nrfjprog. Luego, conecta todas las placas mediante el puerto USB nRF a la máquina anfitrión. El mismo conjunto de cables USB a microUSB se puede desconectar de los puertos J-Link y conectarse a los puertos USB nRF de las placas de desarrollo nRF52840. Por lo tanto, con estos 6 cables se puede ejecutar la prueba. Para evitar problemas, usa 12 cables y conéctate a ambos puertos.

5. Ejecuta el servidor OTNS con modo real

Si ejecutas OTNS con parámetros predeterminados, el usuario podrá simular una red Thread. Para usarlo como una herramienta de visualización de una red física real, ejecútalo con lo siguiente:

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

Estos argumentos le indican a OTNS que esperen los mensajes de gRPC y UDP que describen 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. Ejecuta casos de prueba de seda compatibles con OTNS

Silk es una plataforma de pruebas completamente automatizada que permite validar el rendimiento del sistema, las funciones y los sistemas de OpenThread con dispositivos reales. Las instrucciones del proyecto README abarcan cómo usarlo.

El archivo silk_run_test.py ubicado en silk/unit_tests te proporciona una ventaja. Seda ofrece compatibilidad con OTNS cuando se ejecuta un caso de prueba. Dado que el servicio en 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, secuencias 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, puedes 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 usa Seda para el resultado 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 aparecerá 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 la prueba avanza, los modos y roles de cada nodo cambian, y se forman vínculos.

5c38e2c72519e620.png

7. Felicitaciones

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

Ejecutaste una prueba de seda con placas de desarrollo que se actualizan con firmwares compatibles con OTNS. Las placas informan su estado a un servidor de seda, que supervisa y reúne todas ellas, y las envía al servicio de OTNS junto con otra información de prueba. El OTNS que se ejecuta en modo real visualiza la red de Thread en la interfaz web.

Próximos pasos

Intenta ejecutar otros casos de prueba de OpenThread que se incluyan en el paquete de Seda.

Lecturas adicionales

Consulta openthread.io y Silk para obtener una variedad de recursos de OpenThread.

Documentos de referencia