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

Prueba de una red de subprocesos con visualización

5abd22afa2f2ee9a.png

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

Thread es un protocolo de red de malla inalámbrica de baja potencia 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 un solo punto de falla.

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 Thread 1.1.1 .

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

Silk es una plataforma de prueba totalmente automatizada para validar la función, la característica y el rendimiento del sistema de OpenThread con dispositivos reales.

Lo que aprenderás

  • Marco de verificación de funcionalidad de OpenThread: Silk
  • Cree OpenThread para dispositivos reales con la función OTNS habilitada
  • Utilice la interfaz OTNS-Web para monitorear el estado de la red Thread formada al ejecutar casos de prueba de Silk

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

Lo que necesitarás

Hardware:

  • 6 placas de desarrollo Nordic Semiconductor nRF52840
  • 6 cables USB a Micro-USB para conectar las placas
  • Concentrador USB

Software:

  • Linux x86_64.
  • Git .
  • Vaya a 1.11+ .
  • Navegador web. OTNS-Web utiliza un navegador web para mostrar simulaciones.

Prerrequisitos:

Codelabs básicos anteriores completos

Comprobación de los requisitos previos del paquete

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

  1. Ejecute which otns para verificar si el ejecutable otns se puede buscar en $PATH .
  2. Ejecute which wpantund para asegurarse de que wpantund esté disponible.
  3. Asegúrese de que los paquetes ARM GNU toolchain, J-Link y nrfjprog estén disponibles.
  4. Asegúrese de que se pueda crear un binario OpenThread, ejecutando make -f examples/Makefile-nrf52840 en la carpeta openthread .

Nota: Consulte la documentación vinculada para obtener instrucciones de configuración. El requisito previo # 1 es de Simulate Thread Networks usando OTNS y otros son de Build a Thread network con placas nRF52840 y OpenThread .

Para clonar Silk y configurar el entorno, ejecute los siguientes comandos en su directorio de origen:

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

Definir archivo de configuración de hardware

Para permitir que Silk recopile los recursos de hardware de prueba disponibles conectados a su máquina, defina 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 parte de Silk que puede usarse 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 mostrado por usbinfo para los productos J-Link.

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

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

Construyendo imagen y flasheando

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

$ cd openthread
$ make -f examples/Makefile-nrf52840 clean
$ make -f examples/Makefile-nrf52840 COMMISSIONER=1 JOINER=1 USB=1 OTNS=1
$ cd output/nrf52840/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

Para flashear los tableros, siga las instrucciones en el paso 4 del Codelab de la red Build a Thread para usar nrfjprog . Después de eso, conecte todas las placas a través del puerto USB nRF a la máquina host. El mismo conjunto de cables USB a Micro-USB puede desconectarse de los puertos J-Link y conectarse a los puertos USB nRF de las placas de desarrollo nRF52840. Así, con tan solo estos 6 cables se puede realizar la ejecución de la prueba. Para evitar la molestia, use 12 cables y conéctelos a ambos puertos.

La ejecución de OTNS con parámetros predeterminados permite al usuario simular una red Thread. Para usarlo como una herramienta de visualización para una red física real, ejecútelo con:

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

Estos argumentos le dicen a OTNS que espere mensajes de gRPC y UDP que describan cómo se debe visualizar la red Thread, en lugar de ejecutar múltiples procesos ot-cli para simular la red. Su navegador debería abrir automáticamente la página de visualización con un lienzo vacío.

4dd5b41bf7e71334.png

Silk es una plataforma de prueba totalmente automatizada para validar la función, la característica y el rendimiento del sistema OpenThread con dispositivos reales. Las instrucciones en el proyecto README cubren cómo usarlo.

El archivo silk_run_test.py ubicado en silk/unit_tests le da una silk/unit_tests . Silk proporciona soporte OTNS cuando se ejecuta un caso de prueba. Dado que el servicio de modo real OTNS ya se está ejecutando localmente, simplemente necesitamos modificar el archivo silk_run_test.py con las ubicaciones deseadas para un archivo de registro de salida, scripts de prueba de entrada y archivo hwconfig.ini . El argumento -s localhost le dice a Silk que envíe mensajes OTNS a localhost .

Por ejemplo, se puede ejecutar la prueba denominada ot_test_form_network.py utilizando las siguientes modificaciones al archivo silk_run_test.py . /opt/openthread_test/ es la ruta predeterminada que Silk usa para la salida del registro y el archivo de configuración, pero puede 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 interfaz de usuario web de OTNS.

ee443b66e0a6620b.png

La esquina superior izquierda muestra 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, los modos y roles de cada nodo cambian y se forman vínculos.

5c38e2c72519e620.png

Felicitaciones, ha ejecutado con éxito una prueba de Silk en dispositivos físicos Thread y la ha visualizado usando OTNS.

Ejecutó una prueba de Silk utilizando placas de desarrollo que se actualizan con firmwares que tienen soporte OTNS. Los tableros informan su estado a un servidor Silk, que los monitorea y agrega todos y los envía al servicio OTNS junto con otra información de prueba. OTNS ejecutándose en modo real visualiza la red Thread en la interfaz web.

¿Que sigue?

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

Otras lecturas

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

Documentos de referencia