تشغيل شريط إرساء OTBR

عرض المصدر على GitHub

يتطلّب جهاز توجيه حدود OpenThread (OTBR) عقدة استدعاء الإجراء عن بُعد لسلسلة المحادثات من أجل الانضمام إلى شبكة Thread. يوفر Docker OTBR دعمًا لكل من RCP فعلي (دونغل OpenThread) أو محاكاة لـ RCP.

إذا كنت تريد توصيل OTBR Docker بأجهزة Thread الفعلية الأخرى، يمكنك استخدام RCP فعلي. إذا كنت ترغب في اختبار توجيه الحدود مع محاكاة شبكة Thread، يمكنك استخدام محاكاة استدعاء الإجراء عن بُعد (RCP).

متوسط عائد النقرة الفعلي

استخدم أي نظام أساسي لـ OpenThread معتمد لتهيئة الوقت الفعلي الفعلي. للحصول على مزيد من المعلومات، اطلع على خطوة إنشاء وفلاش RCP من دليل OpenThread Border Router and Configuration.

إرفاق RCP

  1. بعد إنشاء الجهاز والوميض، وصِّل جهاز RCP بالجهاز الذي يشغِّل وضع OTBR Docker عبر USB.
  2. حدِّد اسم المنفذ التسلسلي لجهاز RCP من خلال التحقُّق من /dev:
    ls /dev/tty*
    /dev/ttyACMO
    

بدء حاوية OTBR Docker

في نافذة محطة جديدة، ابدأ تشغيل OTBR Docker، مع الإشارة إلى المنفذ التسلسلي لـ 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 قيد التشغيل الآن. اترك نافذة الوحدة الطرفية هذه مفتوحة وقيد التشغيل في الخلفية. عند إنهاء العملية أو إغلاق النافذة، سيتم إيقاف Docker Docker.

انتقل إلى اختبار الاتصال لمتابعة إعداد OTBR Docker.

محاكاة استدعاء إجراء عن بُعد (RCP)

ويمكنك استخدام إصدار OpenCP RCP محاكاة لاستدعاء إجراء عن بُعد (RCP) للمحاكاة. ويفيد هذا إذا كنت تريد اختبار توجيه الحدود باستخدام شبكة Thread محاكاة على جهاز واحد.

إنشاء تطبيق محاكاة استخدام RCP

  1. نسخ مستودع OpenThread:

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

  2. التشغيل المبدئي وإنشاء محاكاة للتطبيق:

    cd openthread
    ./bootstrap
    ./script/cmake-build 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

اترك نافذة الوحدة الطرفية هذه مفتوحة وتعمل في الخلفية.

بدء محاكاة استدعاء الإجراء عن بُعد (RCP) المحاكي

  1. افتح نافذة طرفية جديدة لتشغيل محاكاة استدعاء الإجراء عن بُعد (RCP)، حيث يجب تركه قيد التشغيل أثناء تشغيل OTBR Docker.

  2. باستخدام المنفذ التسلسلي الأول في الإخراج socat، ابدأ تشغيل تطبيق RCP المحاكى. على سبيل المثال، في حال استخدام /dev/pts/2 من الناتج socat:

    ~/openthread/build/simulation/examples/apps/ncp/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 قيد التشغيل الآن. اترك نافذة الوحدة الطرفية هذه مفتوحة وقيد التشغيل في الخلفية. عند إنهاء العملية أو إغلاق النافذة، سيتم إيقاف Docker Docker.