El router de borde de OpenThread (OTBR) requiere un nodo RCP Thread para poder unirse a un Red de Thread OTBR Docker brinda compatibilidad con un RCP físico (OpenThread) llave) o una RCP simulada.
Si quieres conectar el Docker de OTBR a otros dispositivos Thread físicos, usa un RCP físico. Si quieres probar el enrutamiento de frontera con un subproceso simulado de red, usa un RCP simulado.
RCP físico
Usa cualquier plataforma de OpenThread compatible para el RCP físico. Consulta Cómo compilar y escribir en la memoria flash del RCP. de la guía de compilación y configuración del router de borde de OpenThread para obtener más información información.
Conecta el RCP
- Después de compilar y escribir en la memoria flash, conecta el dispositivo RCP a la máquina en ejecución. Docker OTBR a través de USB.
- Determina el nombre del puerto en serie para el dispositivo RCP. Para ello, verifica
/dev
:ls /dev/tty*
/dev/ttyACMO
Inicia el contenedor de Docker de OTBR
En una nueva ventana de terminal, inicia el Docker de OTBR y haz referencia al puerto en serie de RCP.
Por ejemplo, si el RCP está activado 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 es exitosa, deberías tener 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.
OTBR Docker ya se está ejecutando. Deja esta ventana de terminal abierta y ejecutándose en la en segundo plano. Si sales del proceso o cierras la ventana, OTBR Docker ejecutará fuera de servicio.
Ve a Probar conectividad para continuar con la configuración de Docker de OTBR.
RCP simulado
Usar una compilación de RCP de OpenThread simulada para la RCP simulada Esto es útil si quieres probar el enrutamiento de frontera con una red Thread simulada en un solo máquina.
Compila la aplicación RCP simulada
Clona el repositorio de OpenThread:
cd ~
git clone https://github.com/openthread/openthread
Inicia y compila la aplicación simulada:
cd openthread
./script/bootstrap
./script/cmake-build simulation
Cómo configurar un flujo de datos bidireccional
Usa la utilidad de línea de comandos socat
para establecer un flujo de datos bidireccional
para transferir datos entre el RCP y el Docker OTBR simulados.
Abre una nueva ventana de terminal para ejecutar este proceso, ya que debe dejarse en ejecución. mientras se ejecuta OTBR Docker.
Instala
socat
:sudo apt-get install socat
Inicia
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 que aparecen en negrita en el resultado. Usar la primera para el RCP simulado y el segundo para OTBR Docker. En el resultado de ejemplo arriba:
/dev/pts/2
= Puerto RCP simulado/dev/pts/7
= Docker de OTBR
Deja esta ventana de terminal abierta y ejecutándose en segundo plano.
Inicia la RCP simulada
Abre una nueva ventana de terminal para ejecutar la RCP simulada, ya que se debe dejar mientras se ejecuta OTBR Docker.
Con el primer puerto en serie en la salida
socat
, inicia la RCP simulada y mantener la integridad de su aplicación. Por ejemplo, si usas/dev/pts/2
del resultado desocat
:~/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 terminal abierta y que se ejecuta en segundo plano.
Inicia el contenedor de Docker de OTBR
En una nueva ventana de terminal, inicia OTBR Docker con el segundo puerto en serie en el
Resultado socat
. Por ejemplo, si usas /dev/pts/7
del resultado 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
Ten en cuenta que el comando también usa el puerto /dev/ttyUSB0
. Esta es la opción predeterminada
punto de activación dentro del contenedor de Docker.
Si la operación es exitosa, deberías tener 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.
OTBR Docker ya se está ejecutando. Deja esta ventana de terminal abierta y ejecutándose en la en segundo plano. Si sales del proceso o cierras la ventana, OTBR Docker ejecutará fuera de servicio.