1. Introducción
¿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:
Requisitos previos:
2. Requisitos previos
Completar codelabs básicos anteriores
- Primer hilo. Deberás conocer los conceptos básicos de Thread para comprender lo que se enseña en este Codelab.
- Crea una red Thread con placas nRF52840 y OpenThread. En este Codelab, se supone que compilaste correctamente una red Thread.
- Simula redes de subprocesos con OTNS. En este codelab, se supone que ejecutaste correctamente la herramienta OTNS.
Verificando los requisitos previos del paquete
Asegurémonos de que se cumplan todos los requisitos previos.
- Ejecuta
which otns
para verificar si se puede buscar el ejecutableotns
en$PATH
. - Ejecuta
which wpantund
para asegurarte de quewpantund
esté disponible. - Asegúrate de que estén disponibles los conjuntos de herramientas de ARM GNU, J-Link y
nrfjprog
. - Asegúrate de que se pueda crear un objeto binario de OpenThread que ejecute
make -f examples/Makefile-nrf52840
en la carpetaopenthread
.
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.
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.
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.
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.