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