يتطلب OpenThread Border Router (OTBR) عقدة Thread RCP للانضمام إلى شبكة Thread. يوفر OTBR Docker الدعم لكل من RCP المادي (OpenThread dongle) أو محاكاة RCP.
إذا كنت ترغب في توصيل OTBR Docker بأجهزة خيط مادية أخرى ، فاستخدم RCP المادي. إذا كنت ترغب في اختبار توجيه الحدود باستخدام شبكة خيطية محاكاة ، فاستخدم RCP محاكاة.
RCP المادي
استخدم أي منصة OpenThread مدعومة لـ RCP الفعلي. راجع خطوة Build and flash RCP من دليل OpenThread Border Router Build and Configuration للحصول على مزيد من المعلومات.
قم بتوصيل RCP
- بعد البناء والوميض ، قم بتوصيل جهاز RCP بالجهاز الذي يقوم بتشغيل OTBR Docker عبر USB.
- حدد اسم المنفذ التسلسلي لجهاز 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 المحاكي
- استنساخ مستودع OpenThread:
cd ~
git clone https://github.com/openthread/openthread
- التمهيد وبناء التطبيق المحاكي:
cd openthread
./bootstrap
make -f examples/Makefile-simulation
قم بإعداد دفق بيانات ثنائي الاتجاه
استخدم أداة سطر أوامر socat
لإنشاء دفق بيانات ثنائي الاتجاه لنقل البيانات بين RCP المحاكي و OTBR Docker.
- افتح نافذة طرفية جديدة لتشغيل هذه العملية ، حيث يجب تركها قيد التشغيل أثناء تشغيل OTBR Docker.
- قم بتثبيت
socat
:sudo apt-get install socat
- ابدأ
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
- افتح نافذة طرفية جديدة لتشغيل RCP المحاكي ، حيث يجب تركه قيد التشغيل أثناء تشغيل OTBR Docker.
- باستخدام أول منفذ تسلسلي في إخراج
socat
، ابدأ تطبيق RCP المحاكي. على سبيل المثال، إذا كان استخدام/dev/pts/2
منsocat
الإخراج:~/openthread/output/simulation/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.