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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

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

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

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

يمكنك استخدام أي منصّة مفتوحة لـ OpenThread تتوافق مع التكلفة الفعلية لكل ألف ظهور. يمكنك الاطّلاع على خطوة إصدار RCP والفلاش من دليل إنشاء جهاز توجيه حدود سلسلة المحادثات وفتحها. للحصول على مزيد من المعلومات.

إرفاق RCP

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

بدء تشغيل قاعدة إرساء OTBR

في نافذة طرفية جديدة، ابدأ إرساء OTBR، مع الإشارة إلى المنفذ التسلسلي لـ RCP's. على سبيل المثال، إذا تم تثبيت 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.

انتقل إلى اختبار إمكانية الاتصال لمتابعة إعداد إرساء OTBR.

محاكى RCP

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

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

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

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

  2. تشغيل الجهاز وإنشاء تطبيق يحاكي الجهاز:

    cd openthread
    ./bootstrap
    ./script/cmake-build simulation
    

إعداد مصدر بيانات ثنائي الاتجاه

استخدِم أداة سطر الأوامر socat لإنشاء مصدر بيانات ثنائي الاتجاه لنقل البيانات بين وحدة التحكُّم في حدود الجلسة (RCP) ومحاكاة 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]
    

دوِّن المنفذَين التسلسليَين بالخط الغامق في الإخراج. يمكنك استخدام البروتوكول الأول لمحاكاة RCP والثاني لقاعدة إرساء OTBR. في المثال على الناتج أعلاه:

  • /dev/pts/2 = محاكاة منفذ RCP
  • /dev/pts/7 = شريط إرساء OTBR

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

بدء محاكاة محاكاة التجّار الحالية

  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

في نافذة طرفية جديدة، ابدأ إرساء 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. هذه هي نقطة التثبيت التلقائية ضمن حاوية الإرساء.

وبعد إنشاء الملف الشخصي، يجب أن يكون لديك نتيجة مماثلة لما يلي:

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.