OpenThread Border Router (OTBR) wymaga węzła RCP Thread, aby dołączyć Sieć Thread. OTBR Docker zapewnia obsługę zarówno fizycznego RCP (OpenThread), lub symulowanym RCP.
Jeśli chcesz połączyć OTBR Docker z innymi fizycznymi urządzeniami Thread, użyj fizycznego RCP. Testowanie kierowania granicznego przy użyciu symulowanego wątku Thread użyj symulowanego RCP.
Fizyczny RCP
Użyj dowolnej obsługiwanej platformy OpenThread, fizycznego RCP. Zapoznaj się z artykułem RCP tworzenia i flashowania. w przewodniku po konfiguracji i konfiguracji routera granic OpenThread, aby dowiedzieć się więcej. i informacjami o nich.
Dołącz RCP
- Po skompilowaniu i zakończeniu aktualizacji podłącz urządzenie RCP do uruchomionego komputera OTBR Docker przez USB.
- Ustal nazwę portu szeregowego urządzenia RCP, sprawdzając pole
/dev
:ls /dev/tty*
/dev/ttyACMO
Uruchom kontener Dockera OTBR
W nowym oknie terminala uruchom OTBR Docker, odwołując się do portu szeregowego RCP.
Jeśli na przykład RCP jest podłączony w lokalizacji /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
Po pomyślnym przeprowadzeniu testu dane wyjściowe powinny wyglądać mniej więcej tak:
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.
Teraz działa OTBR Docker. Pozostaw okno terminala otwarte i uruchomione w w tle. Jeśli zamkniesz proces lub okno, OTBR Docker przestanie działać w dół.
Przejdź do testowania połączeń, aby kontynuuj konfigurowanie OTBR Dockera.
Symulowany RCP
na potrzeby symulowanej kompilacji RCP OpenThread. Jest to przydatne, jeśli Chcesz przetestować kierowanie graniczne z użyciem symulowanej sieci Thread na pojedynczym na komputerze.
Tworzenie symulowanej aplikacji RCP
Sklonuj repozytorium OpenThread:
cd ~
git clone https://github.com/openthread/openthread
Wczytywanie i skompilowanie symulowanej aplikacji:
cd openthread
./script/bootstrap
./script/cmake-build simulation
Konfigurowanie dwukierunkowego strumienia danych
Użyj narzędzia wiersza poleceń socat
, aby utworzyć dwukierunkowy strumień danych
do przenoszenia danych między symulowanym RCP i OTBR Dockerem.
Aby uruchomić ten proces, otwórz nowe okno terminala, ponieważ musi on pozostać uruchomiony podczas uruchamiania OTBR Dockera.
Zainstaluj aplikację
socat
:sudo apt-get install socat
Rozpoczęcie
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]
Zanotuj 2 porty szeregowe pogrubione w danych wyjściowych. Użyj pierwszej opcji symulowany RCP, a drugi – dla OTBR Docker. W przykładowych danych wyjściowych powyżej:
/dev/pts/2
= symulowany port RCP/dev/pts/7
= OTBR Docker
Pozostaw okno terminala otwarte i uruchomione w tle.
Uruchom symulowany RCP
Otwórz nowe okno terminala, aby uruchomić symulowany RCP (musi ono pozostać w pozycji) w trakcie działania OTBR Dockera.
Uruchom symulowany RCP, korzystając z pierwszego portu szeregowego w wyjściu
socat
aplikacji. Jeśli na przykład używasz parametru/dev/pts/2
z danych wyjściowychsocat
:~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
To polecenie nie ma żadnych danych wyjściowych. Zostaw okno terminala otwarte i który działa w tle.
Uruchom kontener Dockera OTBR
W nowym oknie terminala uruchom OTBR Docker, używając drugiego portu szeregowego w
Dane wyjściowe socat
. Jeśli na przykład używasz parametru /dev/pts/7
z danych wyjściowych 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
Pamiętaj, że polecenie używa też portu /dev/ttyUSB0
. Jest to ustawienie domyślne.
w kontenerze Dockera.
Po pomyślnym przeprowadzeniu testu dane wyjściowe powinny wyglądać mniej więcej tak:
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.
Teraz działa OTBR Docker. Pozostaw okno terminala otwarte i uruchomione w w tle. Jeśli zamkniesz proces lub okno, OTBR Docker przestanie działać w dół.