OpenThread Border Router (OTBR) ต้องใช้โหนด RCP เทรดเพื่อเข้าร่วม เครือข่าย Thread OTBR Docker รองรับทั้ง RCP จริง (OpenThread) ดองเกิล) หรือ RCP จำลอง
หากต้องการเชื่อมต่อ Docker OTBR กับอุปกรณ์เทรดจริงอื่นๆ ให้ใช้ RCP ทางกายภาพ ถ้าคุณต้องการทดสอบการกำหนดเส้นทางเส้นขอบด้วย Thread ที่จำลองขึ้น เครือข่าย ให้ใช้ RCP จำลอง
RCP ทางกายภาพ
ใช้แพลตฟอร์ม OpenThread ใดก็ได้ที่รองรับเพื่อ RCP ทางกายภาพ ดู RCP สร้างและ Flash จากคู่มือการสร้างและการกำหนดค่า Border Router ของ OpenThread เพื่อดูข้อมูลเพิ่มเติม
แนบ RCP
- หลังจากสร้างและกะพริบแล้ว ให้ติดอุปกรณ์ RCP เข้ากับเครื่องที่กำลังทำงาน แท่นชาร์จ OTBR ผ่าน USB
- ระบุชื่อพอร์ตอนุกรมของอุปกรณ์ RCP โดยตรวจสอบที่
/dev
ดังนี้ วันที่ls /dev/tty*
/dev/ttyACMO
เริ่มต้นคอนเทนเนอร์ Docker OTBR
ในหน้าต่างเทอร์มินัลใหม่ ให้เริ่ม Docker OTBR โดยอ้างอิงพอร์ตอนุกรมของ 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 Docker กำลังทำงาน เปิดหน้าต่างเทอร์มินัลนี้ทิ้งไว้และทำงานใน พื้นหลัง หากคุณออกจากกระบวนการหรือปิดหน้าต่าง OTBR Docker จะย้าย ลง
ไปที่ทดสอบการเชื่อมต่อเพื่อ ดำเนินการต่อด้วยการตั้งค่า OTBR Docker
RCP จำลอง
ใช้บิลด์ OpenThread RCP จำลองสำหรับ RCP ที่จำลอง วิธีนี้มีประโยชน์หาก คุณต้องการทดสอบการกำหนดเส้นทางเส้นขอบด้วยเครือข่าย Thread ที่จำลองในเครือข่าย Thread อุปกรณ์
สร้างแอปพลิเคชัน RCP จำลอง
โคลนที่เก็บ OpenThread ด้วยคำสั่งต่อไปนี้
cd ~
git clone https://github.com/openthread/openthread
เปิดระบบและสร้างแอปพลิเคชันจำลอง:
cd openthread
./script/bootstrap
./script/cmake-build simulation
ตั้งค่าสตรีมข้อมูลแบบ 2 ทิศทาง
ใช้ยูทิลิตีบรรทัดคำสั่ง socat
เพื่อสร้างสตรีมข้อมูลแบบ 2 ทิศทาง
เพื่อโอนข้อมูลระหว่าง RCP จำลองและ Docker OTBR
เปิดหน้าต่างเทอร์มินัลใหม่เพื่อเรียกใช้กระบวนการนี้ เนื่องจากต้องทำงานอยู่ต่อไป ขณะที่ OTBR Docker ทำงานอยู่
ติดตั้ง
socat
: วันที่sudo apt-get install socat
เริ่มต้น
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 จำลองและ RCP ที่ 2 สำหรับ OTBR Docker ในเอาต์พุตตัวอย่าง ด้านบน:
/dev/pts/2
= พอร์ต RCP จำลอง/dev/pts/7
= แท่นชาร์จ OTBR
เปิดหน้าต่างเทอร์มินัลนี้ทิ้งไว้และทำงานในเบื้องหลัง
เริ่ม RCP จำลอง
เปิดหน้าต่างเทอร์มินัลใหม่เพื่อเรียกใช้ RCP จำลอง เนื่องจากต้องปล่อยไว้ กำลังทำงานขณะที่ OTBR Docker ทำงานอยู่
เริ่ม RCP ที่จำลองขึ้นโดยใช้พอร์ตอนุกรมแรกในเอาต์พุต
socat
แอปพลิเคชัน เช่น หากใช้/dev/pts/2
จากเอาต์พุตsocat
~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
ไม่มีเอาต์พุตจากคำสั่งนี้ เปิดหน้าต่างเทอร์มินัลนี้ค้างไว้และ ทำงานในพื้นหลัง
เริ่มต้นคอนเทนเนอร์ Docker OTBR
ในหน้าต่างเทอร์มินัลใหม่ ให้เริ่ม Docker OTBR โดยใช้พอร์ตอนุกรมที่สองใน
เอาต์พุต 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
ด้วย นี่คือค่าเริ่มต้น
จุดต่อเชื่อมภายในคอนเทนเนอร์ Docker
เมื่อทำสำเร็จแล้ว คุณควรจะได้เอาต์พุตในลักษณะนี้
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 กำลังทำงาน เปิดหน้าต่างเทอร์มินัลนี้ทิ้งไว้และทำงานใน พื้นหลัง หากคุณออกจากกระบวนการหรือปิดหน้าต่าง OTBR Docker จะย้าย ลง