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

Ejecute OTBR Docker

Ver fuente en GitHub

El enrutador de borde OpenThread (OTBR) requiere un nodo Thread RCP para unirse a una red Thread. OTBR Docker proporciona soporte tanto para un RCP físico (dongle OpenThread) como para un RCP simulado.

Si desea conectar OTBR Docker a otros dispositivos Thread físicos, use un RCP físico. Si desea probar el enrutamiento fronterizo con una red de subprocesos simulada, utilice un RCP simulado.

RCP físico

Utilizar cualquier plataforma soportada OpenThread del PCR física. Consulte la construcción y el flash RCP paso de la construcción Border Router OpenThread y guía de configuración para más información.

Adjuntar el RCP

  1. Después de construir y flashear, conecte el dispositivo RCP a la máquina que ejecuta OTBR Docker a través de USB.
  2. Determinar el nombre del puerto serie para el dispositivo de RCP por la comprobación /dev :
    ls /dev/tty*
    /dev/ttyACMO
    

Inicie el contenedor OTBR Docker

En una nueva ventana de terminal, inicie OTBR Docker, haciendo referencia al puerto serie del RCP. Por ejemplo, si la RCP está montado 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 tiene éxito, debería tener una salida similar a esta:

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.

OTBR Docker ahora se está ejecutando. Deje esta ventana de terminal abierta y ejecutándose en segundo plano. Si sale del proceso o cierra la ventana, OTBR Docker se desactivará.

Ir a prueba de conectividad para continuar con la configuración OTBR estibador.

RCP simulado

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

Cree la aplicación RCP simulada

  1. Clonar el repositorio OpenThread:

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

  2. Bootstrap y construir la aplicación simulada:

    cd openthread
    ./bootstrap
    make -f examples/Makefile-simulation
    

Configurar un flujo de datos bidireccional

Utilice el socat utilidad de línea de comandos para establecer un flujo de datos bidireccional para transferir datos entre el PCR simulada y OTBR estibador.

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

  2. Instalar socat :

    sudo apt-get install socat
    

  3. Inicio 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]
    

Tome nota de los dos puertos serie en negrita en la salida. Utilice el primero para el RCP simulado y el segundo para OTBR Docker. En la salida de ejemplo anterior:

  • /dev/pts/2 = puerto simulado RCP
  • /dev/pts/7 = OTBR acoplable

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

Iniciar el RCP simulado

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

  2. Usando el primer puerto serie en el socat de salida, iniciar la aplicación RCP simulado. Por ejemplo, si se utiliza /dev/pts/2 de la socat salida:

    ~/openthread/output/simulation/bin/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
    

No hay salida de este comando. Deje esta ventana de terminal abierta y ejecutándose en segundo plano.

Inicie el contenedor OTBR Docker

En una nueva ventana de terminal, iniciar OTBR estibador, utilizando el segundo puerto serie en el socat salida. Por ejemplo, si se utiliza /dev/pts/7 de la socat salida:

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

Tenga en cuenta que el comando también está utilizando la /dev/ttyUSB0 puerto. Este es el punto de montaje predeterminado dentro del contenedor de Docker.

Si tiene éxito, debería tener una salida similar a esta:

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.

OTBR Docker ahora se está ejecutando. Deje esta ventana de terminal abierta y ejecutándose en segundo plano. Si sale del proceso o cierra la ventana, OTBR Docker se desactivará.