Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

قم بتشغيل OTBR Docker

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

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

RCP المادي

استخدم أي منصة OpenThread مدعومة لـ RCP الفعلي. راجع خطوة Build and flash RCP من دليل OpenThread Border Router Build and Configuration للحصول على مزيد من المعلومات.

نعلق 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.

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

مقلد RCP

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

بناء تطبيق RCP المحاكي

  1. استنساخ مستودع OpenThread:
    cd ~
    git clone https://github.com/openthread/openthread
  2. التمهيد وبناء التطبيق المحاكي:
    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.