يتطلب جهاز توجيه حدود OpenThread (OTBR) عقدة Thread RCP من أجل الانضمام إلى شبكة Thread. يوفر OTBR Docker دعمًا لـ RCP الفعلي (OpenThread ) أو لمحاكاة RCP.
إذا كنت تريد توصيل OTBR Docker بأجهزة Thread أخرى، استخدِم RCP فعليًا. إذا كنت ترغب في اختبار توجيه الحدود باستخدام شبكة Thread مُحاكية، استخدِم محاكاة RCP.
RCP مادي
استخدِم أي منصة OpenThread متوافقة مع RCP الفعلي. لمعرفة المزيد من المعلومات، يُرجى الاطّلاع على خطوة Build and Flash RCP من دليل إنشاء وإعداد جهاز توجيه الحدود في OpenThread للحصول على مزيد من المعلومات.
إرفاق RCP
- بعد الإنشاء والوميض، وصِّل جهاز RCP بالجهاز الذي يشغِّل OTBR Docker عبر 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.