เรียกใช้ OTBR Docker

ดูแหล่งที่มาใน GitHub

เราเตอร์ OpenThread Border Router (OTBR) ต้องใช้โหนด RCP ของชุดข้อความเพื่อเข้าร่วมเครือข่ายเทรด OTBR Dash รองรับทั้ง RCP จริง (OpenThread ดองเกิล) หรือ RCP จําลอง

หากต้องการเชื่อมต่อแท่นชาร์จ OTBR กับอุปกรณ์เทรดอื่นๆ ให้ใช้ RCP จริง หากต้องการทดสอบการกําหนดเส้นทางเส้นขอบด้วยเครือข่ายเทรดจําลอง ให้ใช้ RCP ที่จําลองไว้

RCP ทางกายภาพ

ใช้แพลตฟอร์ม OpenThread ที่รองรับสําหรับ RCP จริง ดูข้อมูลเพิ่มเติมได้จากขั้นตอนสร้างและแฟลช RCP จากคู่มือการสร้างและกําหนดค่าเราเตอร์ OpenThread Border Router สําหรับข้อมูลเพิ่มเติม

แนบ RCP

  1. หลังจากสร้างและกะพริบ ให้แนบอุปกรณ์ RCP เข้ากับเครื่องที่ใช้งาน OTBR Postini ผ่าน USB
  2. กําหนดชื่อพอร์ตอนุกรมของอุปกรณ์ RCP โดยตรวจสอบ /dev:
    ls /dev/tty*
    /dev/ttyACMO
    

เริ่มคอนเทนเนอร์ OTBR BlackBerry

ในหน้าต่างเทอร์มินัลใหม่ ให้เริ่ม OTBR Dash ที่อ้างอิงพอร์ตอนุกรมของ RCP เช่น หาก RCP ต่อเชื่อมที่ /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

เมื่อสําเร็จ คุณควรมีเอาต์พุตในลักษณะนี้

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 CDN ทํางานอยู่ เปิดหน้าต่างเทอร์มินัลนี้ไว้และเรียกใช้ใน พื้นหลัง หากคุณออกจากกระบวนการหรือปิดหน้าต่าง OTBR Postini จะหยุดทํางาน

ไปที่ทดสอบการเชื่อมต่อเพื่อดําเนินการตั้งค่า OTBR BlackBerry

RCP ที่จําลองขึ้นมา

ใช้บิลด์ OpenCP RCP ที่จําลองสําหรับ RCP ที่จําลองขึ้น ซึ่งจะเป็นประโยชน์หากต้องการทดสอบการกําหนดเส้นทางเส้นขอบด้วยเครือข่ายเทรดจําลองในคอมพิวเตอร์เครื่องเดียว

สร้างแอปพลิเคชัน RCP จําลอง

  1. โคลนที่เก็บ OpenThread:

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

  2. เปิดเครื่องแล้วสร้างแอปพลิเคชันจําลอง ดังนี้

    cd openthread
    ./bootstrap
    ./script/cmake-build simulation
    

ตั้งค่าสตรีมข้อมูลแบบ 2 ทิศทาง

ใช้ยูทิลิตีบรรทัดคําสั่ง socat เพื่อสร้างสตรีมข้อมูลแบบ 2 ทิศทาง เพื่อโอนข้อมูลระหว่าง RCP ที่จําลองกับแท่นชาร์จ OTBR

  1. เปิดหน้าต่างเทอร์มินัลใหม่เพื่อเรียกใช้กระบวนการนี้ เพราะต้องมีการเปิดใช้งานในขณะที่เรียกใช้ OTBR BlackBerry

  2. ติดตั้ง socat:

    sudo apt-get install socat
    

  3. เริ่มต้น 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]
    

จดบันทึกพอร์ตอนุกรม 2 พอร์ตที่เป็นตัวหนาไว้ในเอาต์พุต ใช้รายการแรกสําหรับ RCP ที่จําลองขึ้นมา และรายการที่ 2 สําหรับ OTBR CDN ในตัวอย่างเอาต์พุตข้างต้น

  • /dev/pts/2 = พอร์ต RCP ที่จําลองขึ้นมา
  • /dev/pts/7 = แท่นชาร์จ OTBR

เปิดหน้าต่างเทอร์มินัลนี้ค้างไว้และทํางานในพื้นหลัง

เริ่ม RCP ที่จําลองขึ้นมา

  1. เปิดหน้าต่างเทอร์มินัลใหม่เพื่อเรียกใช้ RCP จําลอง เพราะจะต้องเปิดทิ้งไว้ขณะที่ OTBR BlackBerry ทํางานอยู่

  2. เริ่มใช้งานแอปพลิเคชัน RCP จําลองโดยใช้พอร์ตอนุกรมแรกในเอาต์พุต socat เช่น หากใช้ /dev/pts/2 จากเอาต์พุต socat ให้ทําดังนี้

    ~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
    

ไม่มีเอาต์พุตจากคําสั่งนี้ เปิดหน้าต่างเทอร์มินัลนี้ค้างไว้ แล้วทํางานอยู่เบื้องหลัง

เริ่มคอนเทนเนอร์ OTBR BlackBerry

ในหน้าต่างเทอร์มินัลใหม่ ให้เริ่มต้น OTBR CDN โดยใช้พอร์ตอนุกรมที่ 2 ในเอาต์พุต socat เช่น หากใช้ /dev/pts/7 จากเอาต์พุต 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

โปรดทราบว่าคําสั่งใช้พอร์ต /dev/ttyUSB0 ด้วย เป็นจุดต่อเชื่อมเริ่มต้นในคอนเทนเนอร์คอนเทนเนอร์

เมื่อสําเร็จ คุณควรมีเอาต์พุตในลักษณะนี้

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 CDN ทํางานอยู่ เปิดหน้าต่างเทอร์มินัลนี้ไว้และเรียกใช้ใน พื้นหลัง หากคุณออกจากกระบวนการหรือปิดหน้าต่าง OTBR Postini จะหยุดทํางาน