OpenThread Border Router (OTBR) memerlukan node Thread RCP agar dapat bergabung dengan jaringan Thread. Docker OTBR menyediakan dukungan untuk RCP fisik (dongle OpenThread) atau simulasi RCP.
Jika Anda ingin menghubungkan Docker OTBR ke perangkat Thread fisik lainnya, gunakan RCP fisik. Jika Anda ingin menguji perutean batas dengan jaringan Thread yang disimulasikan, gunakan RCP yang disimulasikan.
RCP Fisik
Gunakan platform OpenThread yang didukung untuk RCP fisik. Lihat langkah Membangun dan flash RCP dari panduan Build dan Konfigurasi Router Pembatas OpenThread untuk mengetahui informasi selengkapnya.
Lampirkan RCP
- Setelah membangun dan melakukan flash, pasang perangkat RCP ke mesin yang menjalankan OTBR Docker melalui USB.
- Tentukan nama port serial untuk perangkat RCP dengan memeriksa
/dev
:ls /dev/tty*
/dev/ttyACMO
Memulai container Docker OTBR
Di jendela terminal baru, mulai Docker OTBR dengan merujuk port serial RCP.
Misalnya, jika RCP dipasang pada /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
Setelah berhasil, Anda akan memiliki output yang mirip dengan ini:
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 sedang berjalan. Biarkan jendela terminal ini terbuka dan berjalan di latar belakang. Jika Anda keluar dari proses atau menutup jendela, Docker OTBR akan berhenti.
Buka Menguji Konektivitas untuk melanjutkan dengan penyiapan Docker OTBR.
Simulasi RCP
Gunakan build RCP OpenThread yang disimulasikan untuk RCP yang disimulasikan. Ini berguna jika Anda ingin menguji perutean batas dengan simulasi jaringan Thread pada satu mesin.
Membangun aplikasi simulasi RCP
Buat clone repositori OpenThread:
cd ~
git clone https://github.com/openthread/openthread
Lakukan bootstrap dan bangun aplikasi simulasi:
cd openthread
./script/bootstrap
./script/cmake-build simulation
Menyiapkan aliran data dua arah
Gunakan utilitas command line socat
untuk membuat aliran data dua arah
guna mentransfer data antara simulasi RCP dan Docker OTBR.
Buka jendela terminal baru untuk menjalankan proses ini, karena jendela ini harus tetap berjalan saat Docker OTBR sedang berjalan.
Instal
socat
:sudo apt-get install socat
Mulai
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]
Catat dua port serial yang dicetak tebal di output. Gunakan yang pertama untuk simulasi RCP dan yang kedua untuk Docker OTBR. Pada contoh output di atas:
/dev/pts/2
= Port RCP yang disimulasikan/dev/pts/7
= Docker OTBR
Biarkan jendela terminal ini terbuka dan berjalan di latar belakang.
Memulai simulasi RCP
Buka jendela terminal baru untuk menjalankan simulasi RCP, karena RCP harus dibiarkan berjalan saat Docker OTBR sedang berjalan.
Mulai aplikasi RCP yang disimulasikan dengan menggunakan port serial pertama dalam output
socat
. Misalnya, jika menggunakan/dev/pts/2
dari outputsocat
:~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
Tidak ada output dari perintah ini. Biarkan jendela terminal ini terbuka dan berjalan di latar belakang.
Memulai container Docker OTBR
Di jendela terminal baru, mulai Docker OTBR menggunakan port serial kedua dalam
output socat
. Misalnya, jika menggunakan /dev/pts/7
dari output 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
Perlu diingat bahwa perintah ini juga menggunakan port /dev/ttyUSB0
. Ini adalah direktori pemasangan default
dalam container Docker.
Setelah berhasil, Anda akan memiliki output yang mirip dengan ini:
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 sedang berjalan. Biarkan jendela terminal ini terbuka dan berjalan di latar belakang. Jika Anda keluar dari proses atau menutup jendela, Docker OTBR akan berhenti.