Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

เรียกใช้ OTBR Docker

OpenThread Border Router (OTBR) ต้องการเธรด RCP โหนดเพื่อเข้าร่วมเครือข่ายเธรด OTBR Docker รองรับทั้ง RCP (ดองเกิล OpenThread) หรือ RCP จำลอง

หากคุณต้องการเชื่อมต่อ OTBR Docker กับอุปกรณ์ Thread ทางกายภาพอื่น ๆ ให้ใช้ RCP ทางกายภาพ หากคุณต้องการทดสอบการกำหนดเส้นทางเส้นขอบด้วยเครือข่ายเธรดจำลองให้ใช้ RCP จำลอง

RCP ทางกายภาพ

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

แนบ RCP

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

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

ในหน้าต่างเทอร์มินัลใหม่ให้เริ่ม OTBR Docker โดยอ้างถึงพอร์ตอนุกรมของ 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 จะหยุดทำงาน

ไปที่ Test Connectivity เพื่อดำเนินการตั้งค่า OTBR Docker ต่อ

RCP จำลอง

ใช้โครงสร้าง OpenThread RCP จำลองสำหรับ RCP จำลอง สิ่งนี้มีประโยชน์หากคุณต้องการทดสอบการกำหนดเส้นทางชายแดนด้วยเครือข่ายเธรดจำลองบนเครื่องเดียว

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

  1. โคลนที่เก็บ OpenThread:
    cd ~
    git clone https://github.com/openthread/openthread
  2. Bootstrap และสร้างแอปพลิเคชันจำลอง:
    cd openthread
    ./bootstrap
    make -f examples/Makefile-simulation
    

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

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

  1. เปิดหน้าต่างเทอร์มินัลใหม่เพื่อเรียกใช้กระบวนการนี้เนื่องจากจะต้องเปิดทิ้งไว้ในขณะที่ OTBR Docker กำลังทำงาน
  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]
    

จดบันทึกพอร์ตอนุกรมสองพอร์ตที่เป็นตัวหนาในเอาต์พุต ใช้อันแรกสำหรับ RCP จำลองและอันที่สองสำหรับ OTBR Docker ในผลลัพธ์ตัวอย่างด้านบน:

  • /dev/pts/2 = พอร์ต RCP จำลอง
  • /dev/pts/7 = OTBR Docker

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

เริ่ม RCP จำลอง

  1. เปิดหน้าต่างเทอร์มินัลใหม่เพื่อเรียกใช้ RCP จำลองเนื่องจากต้องปล่อยให้ทำงานขณะที่ OTBR Docker กำลังทำงาน
  2. ใช้พอร์ตอนุกรมแรกในเอาต์พุต socat เริ่มแอปพลิเคชัน RCP จำลอง ตัวอย่างเช่นถ้าใช้ /dev/pts/2 จาก socat เอาท์พุท:
    ~/openthread/output/x86_64-unknown-linux-gnu/bin/ot-rcp 1 \
        > /dev/pts/2 < /dev/pts/2

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

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

ในหน้าต่างเทอร์มินัลใหม่ให้เริ่ม OTBR Docker โดยใช้พอร์ตอนุกรมที่สองในเอาต์พุต 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 จะหยุดทำงาน