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
Utilice cualquier plataforma OpenThread compatible para el RCP físico. Consulte el paso Compilar y actualizar RCP de la guía de configuración y compilación del enrutador de borde OpenThread para obtener más información.
Adjuntar el RCP
- Después de construir y flashear, conecte el dispositivo RCP a la máquina que ejecuta OTBR Docker a través de USB.
- Determine el nombre del puerto serie para el dispositivo RCP marcando
/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 el 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á.
Vaya a Probar conectividad para continuar con la configuración de OTBR Docker.
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
- Clonar el repositorio de OpenThread:
cd ~
git clone https://github.com/openthread/openthread
- Bootstrap y compile la aplicación simulada:
cd openthread
./bootstrap
make -f examples/Makefile-simulation
Configurar un flujo de datos bidireccional
Utilice la utilidad de línea de comandos socat
para establecer un flujo de datos bidireccional para transferir datos entre el RCP simulado y el Docker OTBR.
- Abra una nueva ventana de terminal para ejecutar este proceso, ya que debe dejarse en ejecución mientras se ejecuta OTBR Docker.
- Instalar
socat
:sudo apt-get install socat
- 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]
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 RCP simulado -
/dev/pts/7
= OTBR Docker
Deje esta ventana de terminal abierta y ejecutándose en segundo plano.
Iniciar el RCP simulado
- Abra una nueva ventana de terminal para ejecutar el RCP simulado, ya que debe dejarse en ejecución mientras se ejecuta OTBR Docker.
- Utilizando el primer puerto serie en la salida
socat
, inicie la aplicación RCP simulada. Por ejemplo, si se utiliza/dev/pts/2
de lasocat
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, inicie OTBR Docker, utilizando el segundo puerto serie en la salida socat
. Por ejemplo, si usa /dev/pts/7
de la salida de 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
Tenga en cuenta que el comando también utiliza el puerto /dev/ttyUSB0
. Este es el punto de montaje predeterminado dentro del contenedor 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á.