<ph type="x-smartling-placeholder"></ph> Consulter le code source sur GitHub
Le routeur de bordure OpenThread (OTBR) nécessite un nœud RCP Thread pour pouvoir joindre un Réseau Thread. OTBR Docker prend en charge à la fois un RCP physique (OpenThread, un dongle) ou un RCP simulé.
Si vous souhaitez connecter OTBR Docker à d'autres appareils Thread physiques, utilisez un un RCP physique. Si vous souhaitez tester le routage des bordures avec un thread simulé utilisez un RCP simulé.
RCP physique
Utilisez n'importe quelle plate-forme OpenThread compatible pour le un RCP physique. Consultez le RCP de compilation et de flash du guide de création et de configuration du routeur de bordure OpenThread pour en savoir plus des informations.
Joindre le RCP
- Après la compilation et le flash, connectez le périphérique RCP à la machine exécutant OTBR Docker via USB.
- Déterminez le nom du port série du périphérique RCP en consultant
/dev
:ls /dev/tty*
/dev/ttyACMO
Démarrer le conteneur Docker OTBR
Dans une nouvelle fenêtre de terminal, démarrez OTBR Docker, en référençant le port série du RCP.
Par exemple, si le RCP est installé sur /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
En cas de réussite, un résultat semblable aux lignes suivantes doit s'afficher:
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.
Docker OTBR est maintenant en cours d'exécution. Laissez cette fenêtre de terminal ouverte et s'exécuter dans le en arrière-plan. Si vous quittez le processus ou fermez la fenêtre, OTBR Docker passera vers le bas.
Accédez à Tester la connectivité pour poursuivez la configuration de Docker OTBR.
RCP simulé
Utiliser une version RCP OpenThread simulée pour le RCP simulé. Ceci est utile si vous voulez tester le routage de bordure avec un réseau Thread simulé sur un seul machine.
Créer l'application RCP simulée
Clonez le dépôt OpenThread:
cd ~
git clone https://github.com/openthread/openthread
Amorcer et créer l'application simulée:
cd openthread
./script/bootstrap
./script/cmake-build simulation
Configurer un flux de données bidirectionnel
Établir un flux de données bidirectionnel à l'aide de l'utilitaire de ligne de commande socat
pour transférer des données entre le RCP simulé et le Docker OTBR.
Ouvrez une nouvelle fenêtre de terminal pour exécuter ce processus, car il doit rester en cours d'exécution. lorsque OTBR Docker est en cours d'exécution.
Installez
socat
:sudo apt-get install socat
Démarrez
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]
Notez les deux ports série en gras dans la sortie. Utilisez le premier pour le RCP simulé et le deuxième pour Docker OTBR. Dans l'exemple de résultat ci-dessus:
/dev/pts/2
= port RCP simulé/dev/pts/7
= OTBR Docker
Laissez cette fenêtre de terminal ouverte et s'exécuter en arrière-plan.
Démarrer le RCP simulé
Ouvrez une nouvelle fenêtre de terminal pour exécuter le RCP simulé, car il doit être laissé même si OTBR Docker est en cours d'exécution.
À l'aide du premier port série dans la sortie
socat
, démarrer le RCP simulé application. Par exemple, si vous utilisez/dev/pts/2
à partir de la sortiesocat
:~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
Cette commande ne donne aucun résultat. Laissez cette fenêtre de terminal ouverte et qui s'exécute en arrière-plan.
Démarrer le conteneur Docker OTBR
Dans une nouvelle fenêtre de terminal, démarrez OTBR Docker à l'aide du deuxième port série du
Sortie socat
. Par exemple, si vous utilisez /dev/pts/7
à partir de la sortie 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
Notez que la commande utilise également le port /dev/ttyUSB0
. Il s'agit de l'option par défaut
d'installation dans le conteneur Docker.
En cas de réussite, un résultat semblable aux lignes suivantes doit s'afficher:
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.
Docker OTBR est maintenant en cours d'exécution. Laissez cette fenêtre de terminal ouverte et s'exécuter dans le en arrière-plan. Si vous quittez le processus ou fermez la fenêtre, OTBR Docker passera vers le bas.