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

الاطّلاع على المصدر على GitHub

يتطلب جهاز توجيه حدود OpenThread (OTBR) عقدة Thread RCP من أجل ضم شبكة Thread توفر OTBR Docker دعمًا لكل من RCP المادي (OpenThread) دونجل) أو محاكاة RCP.

إذا أردت ربط OTBR Docker بأجهزة Thread أخرى، استخدِم RCP الفعلي. إذا أردت اختبار توجيه الحدود باستخدام سلسلة محادثات تمت محاكاتها. الاتصال، أو استخدام محاكاة RCP.

RCP مادي

استخدام أي نظام أساسي OpenThread متوافق مع RCP الفعلي. اطّلِع على عملية إنشاء المحتوى والتضمين في RCP. من دليل إنشاء أجهزة توجيه الحدود وتهيئتها من OpenThread لمزيد من المعلومات المعلومات.

إرفاق RCP

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

بدء حاوية Docker في OTBR

في نافذة طرفية جديدة، ابدأ تشغيل 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. إلى الأسفل.

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

محاكاة RCP

يمكنك استخدام إصدار OpenThread RCP المحاكي لـ RCP. يكون هذا مفيدًا إذا فأنت تريد اختبار توجيه الحدود باستخدام شبكة Thread على شبكة الجهاز.

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

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

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

  2. التمهيد وإنشاء التطبيق الذي تمت محاكاته:

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

لا يتم عرض نتائج من هذا الأمر. اترك نافذة المحطة الطرفية هذه مفتوحة قيد التشغيل في الخلفية.

بدء حاوية Docker في OTBR

في نافذة طرفية جديدة، شغِّل 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. إلى الأسفل.