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

Ejecuta OTBR Docker

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Ver código fuente en GitHub

El router de borde de OpenThread (OTBR) requiere un nodo RCP de Thread para unirse a una red de Thread. OTBR Docker proporciona compatibilidad con un RCP físico (llave de OpenThread) o un RCP simulado.

Si deseas conectar OTBR de Docker a otros dispositivos físicos de Thread, usa un RCP físico. Si quieres probar el enrutamiento de borde con una red Thread simulada, usa un RCP simulado.

RCP físico

Usa cualquier plataforma de OpenThread compatible para el RCP físico. Consulta el paso Compila y escribe el RCP en la guía de compilación y configuración del router de borde de OpenThread.

Adjunta el RCP

  1. Después de compilar y escribir en la memoria flash, conecta el dispositivo RCP a la máquina que ejecuta Docker OTBR a través de USB.
  2. Para determinar el nombre del puerto en serie del dispositivo RCP, marca /dev:
    ls /dev/tty*
    /dev/ttyACMO
    

Inicia el contenedor de OTBR de Docker

En una nueva ventana de la terminal, inicia OTBR Docker y haz referencia al puerto en serie de RCP. Por ejemplo, si el RCP se activa en /dev/ttyACM0:

docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0

Si la operación se completa de forma correcta, deberías obtener un resultado similar al siguiente:

WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers.
RADIO_URL: spinel+hdlc+uart:///dev/ttyACM0
TUN_INTERFACE_NAME: wpan0
NAT64_PREFIX: 64:ff9b::/96
AUTO_PREFIX_ROUTE: true
AUTO_PREFIX_SLAAC: true
Current platform is ubuntu
* Applying /etc/sysctl.d/10-console-messages.conf ...
kernel.printk = 4 4 1 7
* Applying /etc/sysctl.d/10-ipv6-privacy.conf ...
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
* Applying /etc/sysctl.d/10-kernel-hardening.conf ...
kernel.kptr_restrict = 1
* Applying /etc/sysctl.d/10-link-restrictions.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/10-magic-sysrq.conf ...
kernel.sysrq = 176
* Applying /etc/sysctl.d/10-network-security.conf ...
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
* Applying /etc/sysctl.d/10-ptrace.conf ...
kernel.yama.ptrace_scope = 1
* Applying /etc/sysctl.d/10-zeropage.conf ...
vm.mmap_min_addr = 65536
* Applying /etc/sysctl.d/60-otbr-ip-forward.conf ...
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1
* Applying /etc/sysctl.conf ...
 * Starting userspace NAT64 tayga             [ OK ]
/usr/sbin/service
 * Starting domain name service... bind9      [ OK ]
/usr/sbin/service
 * dbus is not running
 * Starting system message bus dbus           [ OK ]
   ...fail!
otWeb[155]: border router web started on wpan0
otbr-agent[224]: Thread interface wpan0
otbr-agent[224]: Thread is down
otbr-agent[224]: Check if Thread is up: OK
otbr-agent[224]: Stop publishing service
otbr-agent[224]: PSKc is not initialized
otbr-agent[224]: Check if PSKc is initialized: OK
otbr-agent[224]: Initialize OpenThread Border Router Agent: OK
otbr-agent[224]: Border router agent started.

Se está ejecutando OTBR Docker. Deja esta ventana de la terminal abierta y en ejecución en segundo plano. Si sales del proceso o cierras la ventana, Docker de OTBR dejará de estar disponible.

Ve a Test Connectivity para continuar con la configuración de Docker de OTBR.

RCP simulado

Usa una compilación RCP simulada de OpenThread para el RCP simulado. Esto es útil si deseas probar el enrutamiento de borde con una red Thread simulada en una sola máquina.

Compila la aplicación RCP simulada

  1. Clona el repositorio de OpenThread:

    cd ~
    git clone https://github.com/openthread/openthread
    

  2. Inicia y compila la aplicación simulada:

    cd openthread
    ./bootstrap
    ./script/cmake-build simulation
    

Cómo configurar un flujo de datos bidireccional

Usa la utilidad de línea de comandos de socat para establecer un flujo de datos bidireccional a fin de transferir datos entre el Docker RCP y OTBR simulado.

  1. Abre una nueva ventana de la terminal para ejecutar este proceso, ya que debe permanecer en ejecución mientras se ejecuta OTBR Docker.

  2. Instala socat:

    sudo apt-get install socat
    

  3. Iniciar socat:

    socat -d -d pty,raw,echo=0 pty,raw,echo=0
    2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/2
    2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/7
    2018/09/06 09:58:29 socat[242994] N starting data transfer loop with FDs [5,5] and [7,7]
    

Toma nota de los dos puertos en serie en negrita en el resultado. Usa el primero para el RCP simulado y el segundo para Docker de OTBR. En el resultado de ejemplo anterior:

  • /dev/pts/2 = Puerto RCP simulado
  • /dev/pts/7 = Docker de OTBR

Deje esta ventana de la terminal abierta y ejecutándose en segundo plano.

Inicia el RCP simulado

  1. Abre una ventana de la terminal nueva para ejecutar el RCP simulado, ya que debe dejarse en ejecución mientras se ejecuta OTBR Docker.

  2. Usa el primer puerto en serie de la salida socat para iniciar la aplicación RCP simulada. Por ejemplo, si usas /dev/pts/2 desde el resultado socat:

    ~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
    

No hay resultados de este comando. Deja esta ventana de la terminal abierta y ejecutándose en segundo plano.

Inicia el contenedor de OTBR de Docker

En una nueva ventana de la terminal, inicia OTBR Docker con el segundo puerto en serie en el resultado socat. Por ejemplo, si usas /dev/pts/7 desde el resultado socat:

docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/pts/7:/dev/ttyUSB0 --privileged openthread/otbr

Ten en cuenta que el comando también usa el puerto /dev/ttyUSB0. Este es el punto de activación predeterminado dentro del contenedor de Docker.

Si la operación se completa de forma correcta, deberías obtener un resultado similar al siguiente:

WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers.
RADIO_URL: spinel+hdlc+uart:///dev/ttyUSB0
TUN_INTERFACE_NAME: wpan0
NAT64_PREFIX: 64:ff9b::/96
AUTO_PREFIX_ROUTE: true
AUTO_PREFIX_SLAAC: true
Current platform is ubuntu
* Applying /etc/sysctl.d/10-console-messages.conf ...
kernel.printk = 4 4 1 7
* Applying /etc/sysctl.d/10-ipv6-privacy.conf ...
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
* Applying /etc/sysctl.d/10-kernel-hardening.conf ...
kernel.kptr_restrict = 1
* Applying /etc/sysctl.d/10-link-restrictions.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/10-magic-sysrq.conf ...
kernel.sysrq = 176
* Applying /etc/sysctl.d/10-network-security.conf ...
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
* Applying /etc/sysctl.d/10-ptrace.conf ...
kernel.yama.ptrace_scope = 1
* Applying /etc/sysctl.d/10-zeropage.conf ...
vm.mmap_min_addr = 65536
* Applying /etc/sysctl.d/60-otbr-ip-forward.conf ...
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1
* Applying /etc/sysctl.conf ...
 * Starting userspace NAT64 tayga             [ OK ]
/usr/sbin/service
 * Starting domain name service... bind9      [ OK ]
/usr/sbin/service
 * dbus is not running
 * Starting system message bus dbus           [ OK ]
   ...fail!
otWeb[155]: border router web started on wpan0
otbr-agent[224]: Thread interface wpan0
otbr-agent[224]: Thread is down
otbr-agent[224]: Check if Thread is up: OK
otbr-agent[224]: Stop publishing service
otbr-agent[224]: PSKc is not initialized
otbr-agent[224]: Check if PSKc is initialized: OK
otbr-agent[224]: Initialize OpenThread Border Router Agent: OK
otbr-agent[224]: Border router agent started.

Se está ejecutando OTBR Docker. Deja esta ventana de la terminal abierta y en ejecución en segundo plano. Si sales del proceso o cierras la ventana, Docker de OTBR dejará de estar disponible.