1. Introducción
¿Qué es Thread y OTNS?
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.
Qué aprenderás
- Instala OTNS y sus dependencias
- Cómo compilar OpenThread para OTNS
- Cómo agregar, mover o borrar nodos en OTNS-Web
- Usar otras funciones útiles de OTNS-Web para operar la simulación de red
- Verifica el punto único de fallo de OpenThread
Este codelab se enfoca en OTNS-CLI y OTNS-Web. No se abordan otras características de OTNS, como la secuencia de comandos de Python.
Requisitos
- Linux x86_64 o Mac OS.
- Git:
- Go 1.13+.
- Navegador web. OTNS-Web usa un navegador web para mostrar simulaciones.
- Primer de Thread. Deberás conocer los conceptos básicos de Thread para comprender lo que se enseña en este Codelab.
2. Instalación
Instala Go
OTNS requiere Go 1.13+ para compilar.
- Instala Go en https://golang.org/dl/
- Agrega
$(go env GOPATH)/bin
(normalmente$HOME/go/bin
) a$PATH
:
$ export PATH=$PATH:$(go env GOPATH)/bin
Obtener código OTNS
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
Instale las dependencias
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
Es posible que debas ingresar una contraseña para sudo
.
Instala otn
Instala otns
en $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
Comprobemos si otns
está instalado correctamente
- Ejecuta
which otns
para verificar si el ejecutableotns
se puede buscar en$PATH.
. - Si no se encuentra el comando
otns
, verifica que hayas agregado$(go env GOPATH)/bin
a$PATH.
.
3. Cómo compilar OpenThread para OTNS
Obtener código de OpenThread en GitHub
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
Cómo compilar OpenThread con OTNS=1
$ cd ~/src/openthread $ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
Puedes encontrar los ejecutables de OpenThread en el directorio build
:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
Ahora es el momento de ejecutar la OTNS...
4. Ejecutar OTNS
Ejecuta otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Cuando se inicie correctamente, OTNS ingresará a una consola de CLI (OTNS-CLI
) e iniciará un navegador web para la visualización y administración de la red (OTNS-Web
):
Si solo puedes ver una página en blanco en OTNS-Web, es posible que WebGL no esté habilitado en tu navegador. Consultahttps://superuser.com/a/836833 para habilitar WebGL.
En las siguientes secciones, aprenderás a administrar simulaciones de OTNS mediante OTNS-CLI
y OTNS-Web
.
5. Conoce OTNS-CLI y OTNS-Web
OTNS‐CLI
OTNS-CLI
proporciona una interfaz de línea de comandos (CLI) para administrar las simulaciones de OTNS.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Puedes escribir comandos mediante OTNS-CLI
. Consulta la referencia de la CLI de OTNS para obtener una lista completa de comandos. No te preocupes, solo usarás algunos de estos comandos en este Codelab.
OTNS-Web
OTNS-Web
es la herramienta de administración y visualización de red de OTNS. Proporciona una representación visual de los nodos, mensajes y vínculos de la red de Thread simulada. Observa los diversos elementos de OTNS-Web
:
6. Agregar nodos
Agregar nodos a través de OTNS-CLI
Cómo agregar un router a la posición (300, 100)
> add router x 300 y 100 1 Done
Deberías ver un nodo creado en OTNS-Web
. El nodo se inicia como router y se convierte en líder en cuestión de segundos:
Agregar más nodos a través de OTNS-CLI
> add fed x 200 y 100 2 Done > add med x 400 y 100 3 Done > add sed x 300 y 200 4 Done
Espera unos segundos a que los nodos se combinen en una partición. Deberías ver los nodos en OTNS-WEB
:
Agregar nodos antes del OTNS-Web
También puedes agregar nodos mediante OTNS-Web
. Haz clic en el botón New Router
de Action Bar
. Deberías ver que se está creando un nodo justo encima del botón New Router
. Arrastra el nodo para estar cerca del líder que creaste a través de OTNS-CLI
. Con el tiempo, todos los nodos se deberían combinar en una partición:
También haga clic en los botones FED, MED y SED de la barra de acción para crear otros tipos de nodos. Arrástralos a posiciones cercanas a los nodos existentes para adjuntarlas a esa red Thread:
Ya creaste una red Thread de una partición que contiene muchos nodos. En la siguiente sección, ajustaremos la velocidad de simulación para que se ejecute más rápido.
7. Ajustar velocidad
Actualmente, la simulación debe ejecutarse a la velocidad de 1X
, lo que significa que el tiempo de simulación que transcurrió es el mismo que desde la creación del primer nodo.
Ajusta la velocidad en OTNS-CLI
Puedes ajustar la velocidad de simulación a través de OTNS-CLI
.
Establecer la velocidad de simulación en 100X
> speed 100 Done
Debería ver que los nodos envían mensajes con mucha más frecuencia que antes.
Establecer la velocidad de simulación en MAX
> speed max Done
Ahora, OTNS está intentando simular lo más rápido posible, por lo que deberías ver nodos que envían una gran cantidad de mensajes.
Poner simulación en pausa
> speed 0 Done
Si estableces la velocidad de simulación en 0
, se pausará la simulación.
Restablecer simulación a velocidad normal
> speed 1 Done
Si configuras la velocidad de simulación en un valor mayor que 0
, se reanudará la simulación.
Ajusta la velocidad en OTNS-Web
Botones de control de velocidad
Busca los botones de control de velocidad en Action Bar
. Los botones muestran la velocidad de simulación actual y se pueden usar para ajustarla y pausar/reanudarla.
Acelerar simulación
Para acelerar la simulación, haz clic en el botón hasta que la velocidad llegue a MAX
: .
Simulación de ralentización
Puedes ralentizar la simulación si haces clic en el botón .
Poner simulación en pausa
Haga clic en el botón para detener la simulación cuando se esté ejecutando. Se cambiará el botón por .
Reanudar simulación
Haga clic en el botón para reanudar la simulación cuando se detenga. Se volverá a cambiar el botón a .
Establecer la velocidad de simulación en 10X
Para ahorrar tiempo, usa
OTNS-CLI
para ajustar la velocidad de simulación a
10X
para que podamos observar los cambios de topología en la red mucho más rápido.
> speed 10 Done
8. Encender/apagar radio
La simulación debería contener 2 routers (forma hexagonal) y muchos elementos secundarios, y se ejecuta a una velocidad 10 veces superior.
Busca el líder actual (borde rojo) de los 2 routers, con un solo clic para seleccionarlo:
Apagar la radio
Haga clic en el botón de la barra de acciones para desactivar la radio del nodo Leader:
El Líder no podrá enviar ni recibir mensajes con la radio desactivada.
Espera unos 12 segundos (120 s en el tiempo de simulación) para que el otro router se convierta en el nuevo líder:
La red de Thread se recupera automáticamente de la falla de líder mediante la formación de una nueva partición con un nuevo líder. La nueva partición también tiene un nuevo color de partición.
Encender la radio
Selecciona el líder cuya radio se desactivó. Haz clic en el botón de Action Bar
para restablecer la conectividad.
El líder debe volver a conectarse a la red después de que se restablezca la conectividad de radio.
9. Mover nodos
OTNS permite que los usuarios muevan nodos fácilmente a través de OTNS-CLI
o OTNS-Web
.
Mover el nodo a través de OTNS-CLI
Mueve el nodo 5 a una ubicación nueva:
> move 5 600 300 Done
Dado que el nodo 5 está lejos del otro router, deberían perder conectividad entre sí y, después de aproximadamente 12 s (120 s en el tiempo de simulación), ambos se convertirán en líderes de su propia partición:
Mover el nodo a través de OTNS-Web
Arrastra el nodo 5 a la ubicación original arrastrando. Las dos particiones deben volver a combinarse en una partición:
10. Borrar nodos
Borra nodos mediante OTNS-CLI
Borra el nodo 8:
> del 8 Done
El nodo 8 debería desaparecer de la simulación:
Borra nodos mediante OTNS-Web
Selecciona el nodo 5 y haz clic en el botón en el archivo Action Bar
para borrar el nodo 5:
Node 1
debe convertirse en líder y Node 7
debe desconectarse, ya que no puede alcanzar a ningún router.
Borrar simulación (borrar todos los nodos)
Para borrar la simulación, borra todos los nodos mediante OTNS-Web
.
Haga clic en el botón en Action Bar.
Todos los nodos desaparecerán al mismo tiempo.
Antes de continuar...
Agrega algunos nodos a la simulación por tu cuenta para continuar con este instructivo.
11. Contexto del nodo de OTNS-CLI
OTNS-CLI
proporciona el modo de contexto de nodo para facilitar la interacción con nodos a fin de ayudar a los desarrolladores a diagnosticar el estado de un nodo.
Ingresar al modo de contexto de nodo
Ingresa el contexto del nodo 1:
> node 1 Done node 1>
El mensaje de la CLI cambió a node 1>
, lo que indica el contexto del nodo actual. Puede escribir comandos de la CLI de OpenThread para que se ejecuten en el nodo como si interactuara directamente con él.
Ejecuta comandos en el contexto del nodo
node 1> state leader Done node 1> channel 11 Done node 1> panid 0xface Done node 1> networkname OpenThread Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:d800 fdde:ad00:beef:0:2175:8a67:1000:6352 fe80:0:0:0:2075:82c2:e9e9:781d Done
Cambia a otro contexto de nodo
node 1> node 2 Done node 2>
Salir del contexto de nodos
node 1> exit Done >
12. Felicitaciones
¡Felicitaciones! Ejecutaste correctamente tu primera simulación de OTNS.
Aprendiste a instalar OTNS y sus dependencias. Compilaste OpenThread para OTNS y, luego, iniciaste la simulación de OTNS con instancias de simulación de OpenThread. Aprendiste a manipular la simulación de varias maneras mediante OTNS-CLI
y OTNS-Web
.
Ahora sabes qué es OTNS y cómo puedes usarla para simular redes de OpenThread.
¿Qué sigue?
Consulta algunos codelabs sobre los siguientes temas:
- Simulación de una red Thread con OpenThread
- Simula una red de Thread con OpenThread en Docker
- Cómo compilar una red Thread con placas nRF52840 y OpenThread