يتطلّب جهاز توجيه حدود OpenThread (OTBR) عُقدة RCP في Thread للانضمام إلى شبكة Thread. توفّر أداة إرساء OTBR الدعم لكل من RCP الفعلي (فتحة OpenThread) أو RCP محاكاة.
إذا أردت توصيل شريط إرساء OTBR بالأجهزة الأخرى التي تعمل بسلسلة محادثات، استخدِم سرعة المعالجة الفعلية. إذا كنت تريد اختبار توجيه الحدود باستخدام شبكة سلاسل محادثات، استخدِم محاكاة RCP.
متوسط تكلفة النقرة الفعلية
يمكنك استخدام أي منصّة مفتوحة لـ OpenThread تتوافق مع التكلفة الفعلية لكل ألف ظهور. يمكنك الاطّلاع على خطوة إصدار RCP والفلاش من دليل إنشاء جهاز توجيه حدود سلسلة المحادثات وفتحها. للحصول على مزيد من المعلومات.
إرفاق RCP
- بعد البناء والوميض، يمكنك توصيل جهاز RCP بالجهاز الذي يشغِّل مُشغّل OTBR عبر USB.
- حدِّد اسم المنفذ التسلسلي لجهاز RCP من خلال التحقُّق من
/dev
:ls /dev/tty*
/dev/ttyACMO
بدء تشغيل قاعدة إرساء OTBR
في نافذة طرفية جديدة، ابدأ إرساء OTBR، مع الإشارة إلى المنفذ التسلسلي لـ RCP's.
على سبيل المثال، إذا تم تثبيت 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 الآن. اترك نافذة المحطة الطرفية مفتوحة وتعمل في الخلفية. في حال الخروج من العملية أو إغلاق النافذة، سيتم إيقاف قاعدة إرساء OTBR.
انتقل إلى اختبار إمكانية الاتصال لمتابعة إعداد إرساء OTBR.
محاكى RCP
يُرجى استخدام تصميم OpenCP RCP محاكاة لمحاكاة RCP. ويُعدّ هذا الإجراء مفيدًا إذا كنت تريد اختبار توجيه الحدود باستخدام شبكة سلاسل محادثات تمت محاكاتها على جهاز واحد.
إنشاء تطبيق RCP محاكاة
انسَخ مستودع OpenThread:
cd ~
git clone https://github.com/openthread/openthread
تشغيل الجهاز وإنشاء تطبيق يحاكي الجهاز:
cd openthread
./bootstrap
./script/cmake-build simulation
إعداد مصدر بيانات ثنائي الاتجاه
استخدِم أداة سطر الأوامر socat
لإنشاء مصدر بيانات ثنائي الاتجاه
لنقل البيانات بين وحدة التحكُّم في حدود الجلسة (RCP) ومحاكاة OTBR.
افتح نافذة طرفية جديدة لتشغيل هذه العملية، حيث يجب تركها قيد التشغيل أثناء تشغيل شريط إرساء OTBR.
ثبِّت تطبيق
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. في المثال على الناتج أعلاه:
/dev/pts/2
= محاكاة منفذ RCP/dev/pts/7
= شريط إرساء OTBR
اترك نافذة المحطة الطرفية مفتوحة وتعمل في الخلفية.
بدء محاكاة محاكاة التجّار الحالية
افتح نافذة طرفية جديدة لتشغيل محاكاة بشأن RCP، حيث يجب أن يتم تركها قيد التشغيل أثناء تشغيل شريط إرساء OTBR.
باستخدام المنفذ التسلسلي الأول في جهاز الإخراج
socat
، عليك تشغيل تطبيق RCP منها. على سبيل المثال، إذا كنت تستخدم/dev/pts/2
من الناتجsocat
:~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
ما مِن نتيجة من هذا الأمر. اترك نافذة المحطة الطرفية مفتوحة وتعمل في الخلفية.
بدء تشغيل قاعدة إرساء OTBR
في نافذة طرفية جديدة، ابدأ إرساء OTBR، باستخدام المنفذ التسلسلي الثاني في الإخراج 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
. هذه هي نقطة التثبيت التلقائية ضمن حاوية الإرساء.
وبعد إنشاء الملف الشخصي، يجب أن يكون لديك نتيجة مماثلة لما يلي:
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 الآن. اترك نافذة المحطة الطرفية مفتوحة وتعمل في الخلفية. في حال الخروج من العملية أو إغلاق النافذة، سيتم إيقاف قاعدة إرساء OTBR.