Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menjalankan Docker OTBR

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Lihat sumber di GitHub

OpenThread Border Router (OTBR) memerlukan node RThread Thread agar dapat bergabung dengan jaringan Thread. OTBR Docker menyediakan dukungan untuk RCP fisik (dongle OpenThread) atau RCP yang disimulasikan.

Jika Anda ingin menghubungkan OTBR Docker ke perangkat Thread fisik lainnya, gunakan RCP fisik. Jika Anda ingin menguji perutean batas dengan jaringan Thread yang disimulasikan, gunakan simulasi RCP.

RCP fisik

Menggunakan platform OpenThread yang didukung untuk RCP fisik. Lihat langkah Mem-build dan mem-flash RCP dari panduan Build dan Konfigurasi Router Border OpenThread untuk informasi selengkapnya.

Lampirkan RCP

  1. Setelah mem-build dan mem-flash, pasang perangkat RCP ke mesin yang menjalankan OTBR Docker melalui USB.
  2. Tentukan nama port serial untuk perangkat RCP dengan memeriksa /dev:
    ls /dev/tty*
    /dev/ttyACMO
    

Memulai container Docker OTBR

Di jendela terminal baru, jalankan OTBR Docker, dengan merujuk port serial RCP. Misalnya, jika RCP dipasang di /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 mendapatkan output yang serupa 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.

OTBR Docker sekarang berjalan. Biarkan jendela terminal ini terbuka dan berjalan di latar belakang. Jika Anda keluar dari proses atau menutup jendela, OTBR Docker akan bermasalah.

Buka Menguji Konektivitas untuk melanjutkan penyiapan OTBR Docker.

Simulasi RCP

Menggunakan simulasi build OpenThread RCP untuk simulasi RCP. Hal ini berguna jika Anda ingin menguji perutean batas dengan jaringan Thread yang disimulasikan pada satu mesin.

Mem-build aplikasi RCP yang disimulasikan

  1. Lakukan clone repositori OpenThread:

    cd ~
    git clone https://github.com/openthread/openthread
    

  2. Bootstrap dan build aplikasi yang disimulasikan:

    cd openthread
    ./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 OTBR Docker.

  1. Buka jendela terminal baru untuk menjalankan proses ini karena harus dibiarkan berjalan saat OTBR Docker sedang berjalan.

  2. Instal socat:

    sudo apt-get install socat
    

  3. 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 RCP yang disimulasikan dan yang kedua untuk OTBR Docker. Pada contoh output di atas:

  • /dev/pts/2 = Simulasi port RCP
  • /dev/pts/7 = Docker OTBR

Biarkan jendela terminal ini terbuka dan berjalan di latar belakang.

Memulai simulasi RCP

  1. Buka jendela terminal baru untuk menjalankan simulasi RCP karena harus dibiarkan berjalan saat OTBR Docker sedang berjalan.

  2. Dengan menggunakan port serial pertama dalam output socat, mulai simulasi aplikasi RCP. Misalnya, jika menggunakan /dev/pts/2 dari output socat:

    ~/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 OTBR Docker, 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

Perhatikan bahwa perintah ini juga menggunakan port /dev/ttyUSB0. Ini adalah direktori pemasangan default dalam container Docker.

Setelah berhasil, Anda akan mendapatkan output yang serupa 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.

OTBR Docker sekarang berjalan. Biarkan jendela terminal ini terbuka dan berjalan di latar belakang. Jika Anda keluar dari proses atau menutup jendela, OTBR Docker akan bermasalah.