เรียกใช้ OTBR Docker

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

เราเตอร์ BThread ของ OpenThread (OTBR) ต้องใช้โหนด RCP ของเทรดจึงจะเข้าร่วมเครือข่าย Thread ได้ OTBR Dock รองรับทั้ง RCP จริง (OpenThread ดองเกิล) หรือ RCP จําลอง

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

RCP ทางกายภาพ

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

แนบ RCP

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

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

ในหน้าต่าง OT ใหม่ ให้เริ่มแท่นชาร์จ OTBR โดยอ้างอิงพอร์ตอนุกรม RCP&#39 เช่น หากมีการต่อเชื่อม 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 กําลังทํางาน เปิดหน้าต่างเทอร์มินัลนี้ไว้และทํางานขณะล็อกหน้าจอหรือขณะใช้แอปอื่น หากคุณออกจากกระบวนการหรือปิดหน้าต่าง OTBR Dock จะปิดลง

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

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 จําลองและ Dock ของ OTBR

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

  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 Dock ในตัวอย่างเอาต์พุตด้านบน

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

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

เริ่ม RCP จําลอง

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

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

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

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

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

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