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

Simular subprocesos de red con OTNS

1. Introducción

5abd22afa2f2ee9a.png

¿Qué es Thread &OTNS?

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.

Qué aprenderás

  • Instala OTNS y sus dependencias
  • Cómo compilar OpenThread para OTNS
  • Cómo agregar, mover o borrar nodos en OTNS-Web
  • Usa las otras funciones útiles de OTNS-Web'para operar la simulación de la red
  • Verificar el punto único de fracaso de OpenThread

Este codelab está enfocado en OTNS-CLI y OTNS-Web. No se incluyen otras funciones de OTNS, como la secuencia de comandos de Python.

Requisitos

  • Linux x86_64 o Mac OS.
  • Git
  • Go 1.11+.
  • Navegador web. OTNS-Web usa un navegador web para mostrar simulaciones.
  • Primer hilo. 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.11 o una versión posterior para que se compile.

  1. Instala Go desde https://golang.org/dl/
  2. 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

Instala 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 Otns

Instala otns en $GOPATH/bin:

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

Comprobemos si otns está correctamente instalado

  1. Ejecuta which otns para verificar si se puede buscar el ejecutable otns en $PATH.
  2. Si no se encuentra el comando otns, verifica que hayas agregado $(go env GOPATH)/bin a $PATH.

3. Cómo compilar OpenThread para OTNS

Obtén el código de OpenThread en GitHub

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

Compila OpenThread con OTNS=1

$ cd ~/src/openthread
$ ./script/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

Puedes encontrar los archivos ejecutables de OpenThread en el directorio output:

Linux

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

macOS

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

Ahora es el momento de ejecutar OTNS...

4. Ejecutar OTNS

Ejecuta otns:

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Cuando se inicie correctamente, OTNS ingresará a una consola de la CLI (OTNS-CLI) e iniciará un navegador web para la visualización y la administración de la red (OTNS-Web):

a0e05178d66929b1.png

Si solo puedes ver una página en blanco para OTNS-Web, es posible que WebGL no esté habilitado en tu navegador. Consultahttps://superuser.com/a/836833 cómo habilitar WebGL.

En las siguientes secciones, aprenderás a administrar simulaciones de OTNS a través de OTNS-CLI y OTNS-Web.

5. Conoce OTNS-CLI & OTNS-Web

OTNS-CLI

OTNS-CLI proporciona una interfaz de línea de comandos (CLI) para administrar simulaciones de OTNS.

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Puedes escribir comandos mediante OTNS-CLI. Consulta la referencia de la CLI de OTNS para ver la lista completa de comandos. No te preocupes, solo usarás algunos de estos comandos en este codelab.

OTNS-Web

OTNS-Web es una 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 Thread simulada. Observa los diversos elementos de OTNS-Web:

4c5b43509a2ca0d0.png

6. Agregar nodos

Agregar nodos a través de OTNS-CLI

Cómo agregar un router a la posición (300 y 100)

> add router x 300 y 100
1
Done

Deberías ver un nodo creado en OTNS-Web. El nodo comienza como un router y se convierte en líder en pocos segundos:

6ca8c2e63ed9818d.png

Agrega más nodos mediante 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:

3ee67903c01aa612.png

Agregar nodos antes del OTNS-Web

También puedes agregar nodos mediante OTNS-Web. Haz clic en el botón New Router de la Action Bar. Deberías ver que se está creando un nodo justo antes del botón New Router. Arrastra el nodo para acercarte al líder que creaste a través de OTNS-CLI. Todos los nodos finalmente se deberían combinar en una partición:

420258bb92561146.png

También haz clic en los botones FED, MED y SED de la barra de acciones para crear otros tipos de nodos. Arrástralas a posiciones cerca de los nodos existentes para adjuntarlas a esa red Thread:

Fe15d6f9726a099e.png

Acaba de crear una red Thread de una partición que contenga muchos nodos. En la siguiente sección, ajustaremos la velocidad de simulación para que la simulación se ejecute más rápido.

7. Ajustar velocidad

En este momento, la simulación se debe ejecutar a la velocidad de 1X, lo que significa que el tiempo de simulación transcurrido hasta el momento es el mismo que el tiempo real desde que creamos el primer nodo.

Ajusta la velocidad durante OTNS-CLI

Puedes ajustar la velocidad de simulación mediante 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á tratando de simular lo más rápido posible, por lo que deberías ver los nodos que envían una gran cantidad de mensajes.

Poner simulación en pausa

> speed 0
Done

Si se configura la velocidad de simulación en 0, se pausa la simulación.

Restablece la simulación a velocidad normal

> speed 1
Done

Si se configura la velocidad en un valor mayor que 0, se reanuda la simulación.

Ajusta la velocidad durante OTNS-Web

Botones de control de velocidad

Busca los botones de control de velocidad 9329157c1bd12672.png en el Action Bar. Los botones muestran la velocidad de simulación actual y se pueden usar para ajustar la velocidad de simulación y pausar/reanudar la simulación.

Acelerar simulación

Para acelerar la simulación, haz clic en el botón 39b88331779277ad.png hasta que la velocidad alcance MAX: f5f460b2586d299b.png.

Simulación de ralentización

Puedes ralentizar la simulación haciendo clic en el botón 31cca8d5b52fa900.png.

Poner simulación en pausa

Haz clic en el botón 46cc2088c9aa7ab6.png para detener la simulación cuando se esté ejecutando. Se cambiará el botón a ce25eda3496ffcd4.png.

Reanudar simulación

Haz clic en el botón ce25eda3496ffcd4.png para reanudar la simulación cuando se detenga. Se volverá a cambiar el botón a 46cc2088c9aa7ab6.png.

Establecer la velocidad de simulación en 10X

Para ahorrar tiempo, utilice

OTNS-CLI para ajustar la velocidad de simulación a

10X para que podamos observar los cambios de la topología en la red mucho más rápido.

> speed 10
Done

8. Encender/apagar radio

Ahora, la simulación debería contener 2 routers (forma hexagonal) y muchos elementos secundarios. Además, se ejecuta a una velocidad de 10 X.

Busca el líder actual (borde rojo) de los 2 routers con un solo clic para seleccionarlo:

8c6a2e191cdae0c7.png

Apagar la radio

Haz clic en el botón 7ca085f470491dd4.png en la barra de acciones para desactivar la radio del nodo líder:

a3bf58d9d125f95f.png

El líder no podrá enviar ni recibir mensajes con la radio desactivada.

Espera aproximadamente 12 s (120 s en tiempo de simulación) para que el otro router se convierta en el nuevo líder:

e3d32f85c4a1b990.png

La red Thread se recupera de la falla de los líderes automáticamente formando una nueva partición con un nuevo líder. La partición nueva también tendrá un color de partición nuevo.

Encender la radio

Selecciona el líder cuya radio se haya desactivado. Haz clic en el botón 2d9cecb8612b42aa.png de Action Bar para restaurar la conectividad:

7370a7841861aa3a.png

El líder deberá volver a conectarse a la red después de que se restablezca la conectividad.

9. Mover nodos

OTNS permite que los usuarios muevan nodos con facilidad a través de OTNS-CLI o OTNS-Web.

Mover nodo por OTNS-CLI

Mueve el nodo 5 a una ubicación nueva:

> move 5 600 300
Done

Dado que ahora el nodo 5 está lejos del otro router, debería perder conectividad entre sí y, después de unos 12 segundos (120 s en tiempo de simulación), ambos se convertirán en líderes de su propia partición:

c06b4d0a2f183299.png

Mover nodo a través de OTNS-Web

Arrastra el nodo 5 a la ubicación original arrastrando. Las dos particiones se deberían volver a combinar en una sola partición:

9ba305c4c5a5f892.png

10. Borrar nodos

Borra nodos mediante OTNS-CLI

Borre el nodo 8:

> del 8
Done

El nodo 8 debería desaparecer de la simulación:

18156770d9f8bf83.png

Borra nodos mediante OTNS-Web

Selecciona el nodo 5 y haz clic en el botón 7ff6afd565f4eafc.png en el Action Bar para borrar el nodo 5:

d4079cceea0105f0.png

Node 1 debe convertirse en líder y Node 7 debe desconectarse porque no puede llegar a ningún router.

Borrar simulación (borrar todos los nodos)

Para borrar la simulación, borra todos los nodos mediante OTNS-Web.

Haz clic en el botón 89618191721e79a0.png en Action Bar.. Todos los nodos desaparecerán a la vez.

Antes de continuar...

Agregue algunos nodos a la simulación usted mismo para poder continuar con este instructivo.

11. Contexto del nodo de OTNS-CLI

OTNS-CLI proporciona un modo de contexto de nodos 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 estuviera interactuando directamente con este.

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 del nodo

node 1> exit
Done
>

12. Felicitaciones

¡Felicitaciones! Ejecutaste correctamente tu primera simulación de OTNS.

Aprendiste cómo instalar OTNS y sus dependencias. Creaste OpenThread para OTNS e iniciaste la simulación de OTNS con instancias de simulación de OpenThread. Aprendiste a manipular la simulación de varias maneras, tanto a través de OTNS-CLI como con OTNS-Web.

Ahora sabes qué es OTNS y cómo puedes usarlo para simular redes de OpenThread.

Próximos pasos

Consulta algunos de estos Codelabs…

Documentos de referencia