يتطلّب جهاز توجيه حدود OpenThread (OTBR) عقدة استدعاء الإجراء عن بُعد لسلسلة المحادثات من أجل الانضمام إلى شبكة Thread. يوفر Docker OTBR دعمًا لكل من RCP فعلي (دونغل OpenThread) أو محاكاة لـ RCP.
إذا كنت تريد توصيل OTBR Docker بأجهزة Thread الفعلية الأخرى، يمكنك استخدام RCP فعلي. إذا كنت ترغب في اختبار توجيه الحدود مع محاكاة شبكة Thread، يمكنك استخدام محاكاة استدعاء الإجراء عن بُعد (RCP).
متوسط عائد النقرة الفعلي
استخدم أي نظام أساسي لـ OpenThread معتمد لتهيئة الوقت الفعلي الفعلي. للحصول على مزيد من المعلومات، اطلع على خطوة إنشاء وفلاش RCP من دليل OpenThread Border Router and Configuration.
إرفاق RCP
- بعد إنشاء الجهاز والوميض، وصِّل جهاز RCP بالجهاز الذي يشغِّل وضع OTBR Docker عبر USB.
- حدِّد اسم المنفذ التسلسلي لجهاز 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
نسخ مستودع OpenThread:
cd ~
git clone https://github.com/openthread/openthread
التشغيل المبدئي وإنشاء محاكاة للتطبيق:
cd openthread
./bootstrap
./script/cmake-build 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
اترك نافذة الوحدة الطرفية هذه مفتوحة وتعمل في الخلفية.
بدء محاكاة استدعاء الإجراء عن بُعد (RCP) المحاكي
افتح نافذة طرفية جديدة لتشغيل محاكاة استدعاء الإجراء عن بُعد (RCP)، حيث يجب تركه قيد التشغيل أثناء تشغيل OTBR Docker.
باستخدام المنفذ التسلسلي الأول في الإخراج
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.