الاطّلاع على المصدر على GitHub
يتطلب جهاز توجيه حدود OpenThread (OTBR) عقدة Thread RCP من أجل ضم شبكة Thread توفر OTBR Docker دعمًا لكل من RCP المادي (OpenThread) دونجل) أو محاكاة RCP.
إذا أردت ربط OTBR Docker بأجهزة Thread أخرى، استخدِم RCP الفعلي. إذا أردت اختبار توجيه الحدود باستخدام سلسلة محادثات تمت محاكاتها. الاتصال، أو استخدام محاكاة RCP.
RCP مادي
استخدام أي نظام أساسي OpenThread متوافق مع RCP الفعلي. اطّلِع على عملية إنشاء المحتوى والتضمين في RCP. من دليل إنشاء أجهزة توجيه الحدود وتهيئتها من OpenThread لمزيد من المعلومات المعلومات.
إرفاق RCP
- بعد الإنشاء والوميض، وصِّل جهاز RCP بالجهاز الذي يتم تشغيله. قاعدة إرساء OTBR عبر USB.
- حدِّد اسم المنفذ التسلسلي لجهاز RCP من خلال وضع علامة في المربّع "
/dev
":ls /dev/tty*
/dev/ttyACMO
بدء حاوية Docker في OTBR
في نافذة طرفية جديدة، ابدأ تشغيل 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. يكون هذا مفيدًا إذا فأنت تريد اختبار توجيه الحدود باستخدام شبكة 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
عليك إبقاء نافذة المحطة الطرفية هذه مفتوحة وتعمل في الخلفية.
بدء محاكاة 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
لا يتم عرض نتائج من هذا الأمر. اترك نافذة المحطة الطرفية هذه مفتوحة قيد التشغيل في الخلفية.
بدء حاوية 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. إلى الأسفل.