ما هو Thread و OpenThread و OTNS و Silk؟
Thread هو بروتوكول شبكة لاسلكية منخفض الطاقة قائم على بروتوكول الإنترنت يتيح اتصالات آمنة من جهاز إلى جهاز ومن جهاز إلى شبكة سحابية. يمكن لشبكات مؤشر الترابط التكيف مع تغييرات الهيكل لتجنب نقطة واحدة من الفشل.
OpenThread الذي أصدرته Google هو تطبيق مفتوح المصدر لـ Thread. على الرغم من صغر حجم الكود وبصمة الذاكرة ، يدعم OpenThread جميع الميزات المحددة في مواصفات Thread 1.1.1 .
يمكن استخدام OpenThread Network Simulator (OTNS) لمحاكاة شبكات الترابط عن طريق تشغيل عقد OpenThread المحاكاة على منصات posix. يوفر OTNS واجهة ويب سهلة الاستخدام (OTNS-Web) لتصور شبكات الترابط المحاكاة وتشغيلها.
Silk عبارة عن منصة اختبار مؤتمتة بالكامل للتحقق من صحة وظيفة OpenThread والميزات وأداء النظام باستخدام أجهزة حقيقية.
ماذا ستتعلم
- إطار التحقق من وظائف OpenThread: الحرير
- قم ببناء OpenThread للأجهزة الحقيقية مع تمكين ميزة OTNS
- استخدم واجهة OTNS-Web لمراقبة حالة شبكة الخيط التي تشكلت عن طريق تشغيل حالات اختبار الحرير
يركز مختبر الكود هذا على استخدام Silk مع OTNS. لا يتم تغطية الميزات الأخرى لـ Silk و OTNS.
ماذا ستحتاج
المعدات:
- 6 لوحات مطورة nRF52840 من Nordic Semiconductor
- 6 كبلات USB إلى Micro-USB لتوصيل اللوحات
- محور USB
برمجة:
- لينكس x86_64.
- بوابة .
- اذهب 1.11+ .
- متصفح الإنترنت. يستخدم OTNS-Web مستعرض ويب لعرض عمليات المحاكاة.
المتطلبات الأساسية:
أكمل مختبرات Codelab الأساسية السابقة
- التمهيدي الموضوع . ستحتاج إلى معرفة المفاهيم الأساسية لـ Thread لفهم ما يتم تدريسه في Codelab هذا.
- قم ببناء شبكة ترابط مع لوحات nRF52840 و OpenThread . يفترض هذا Codelab أنك قد أنشأت بنجاح شبكة موضوع.
- محاكاة شبكات الخيط باستخدام OTNS . يفترض هذا Codelab أنك قمت بتشغيل أداة OTNS بنجاح.
التحقق من متطلبات الحزمة
دعونا نتأكد من استيفاء جميع المتطلبات الأساسية.
- قم بتشغيل
which otns
للتحقق مما إذا كانتotns
القابلة للتنفيذ قابلة للبحث في$PATH
. - قم بتشغيل
which wpantund
للتأكد منwpantund
. - تأكد من
nrfjprog
حزم ARM GNU toolchain و J-Link وnrfjprog
. - تأكد من إمكانية عمل ملف ثنائي OpenThread ، بتشغيل
make -f examples/Makefile-nrf52840
ضمن مجلدopenthread
.
ملاحظة: يرجى الرجوع إلى الوثائق المرتبطة للحصول على إرشادات الإعداد. المتطلب رقم 1 هو من Simulate Thread Networks باستخدام OTNS والبعض الآخر من إنشاء شبكة Thread مع لوحات nRF52840 و OpenThread .
لاستنساخ الحرير وإعداد البيئة ، قم بتشغيل الأوامر التالية ضمن دليل المصدر الخاص بك:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
تحديد ملف تكوين الأجهزة
للسماح لـ Silk بجمع موارد أجهزة الاختبار المتاحة المتصلة بجهازك ، حدد ملف hwconfig.ini
بالتنسيق التالي:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
يتم تثبيت أداة تسمى usbinfo
كجزء من Silk والتي يمكن استخدامها لمعرفة الرقم التسلسلي usbinfo
ورقم واجهة USB. DutSerial هو رقم SN المطبوع على الشريحة أو المعروض بواسطة usbinfo
لمنتجات J-Link.
و LayoutCenter
و LayoutRadius
الحقول في [DEFAULT]
قسم تحدد شكل تخطيط عندما تصور الأجهزة على واجهة المستخدم على شبكة الإنترنت. يمكن أن يكون تعيينهم على القيم المعروضة هنا نقطة انطلاق جيدة.
بعد ذلك ، تحدد قسمًا لكل جهاز اختبار وتوفر معلومات الأجهزة ذات الصلة.
صورة المبنى وامض
افتراضيًا ، لا ترسل أجهزة OpenThread رسائل متعلقة بـ OTNS. للسماح لمجالس المطورين بإرسال رسائل الحالة إلى واجهات تسجيل ضرورية لتصور OTNS ، قم بتشغيل الأمر التالي ضمن دليل مصدر OpenThread لإنشاء صورة FTD ، وتحويلها إلى تنسيق سداسي عشري.
$ cd openthread $ make -f examples/Makefile-nrf52840 clean $ make -f examples/Makefile-nrf52840 COMMISSIONER=1 JOINER=1 USB=1 OTNS=1 $ cd output/nrf52840/bin $ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex
لإصدار وميض اللوحات ، اتبع الإرشادات الواردة في الخطوة 4 من إنشاء شبكة Codelab لاستخدام nrfjprog
. بعد ذلك ، قم بتوصيل جميع اللوحات عبر منفذ nRF USB بالجهاز المضيف. يمكن فصل نفس مجموعة كبلات USB إلى Micro-USB من منافذ J-Link وتوصيلها بمنافذ nRF USB للوحات التطوير nRF52840. وبالتالي مع هذه الكابلات الستة فقط يمكن تنفيذ الاختبار. لتجنب المتاعب ، استخدم 12 كبلاً وقم بتوصيل كلا المنفذين.
يتيح تشغيل OTNS مع المعلمات الافتراضية للمستخدم محاكاة شبكة الخيط. لاستخدامها كأداة تصور لشبكة فعلية فعلية ، قم بتشغيلها باستخدام:
otns -raw -real -ot-cli otns-silk-proxy
تخبر هذه الوسائط OTNS أن تتوقع رسائل gRPC و UDP التي تصف كيف يجب تصور شبكة Thread ، بدلاً من تشغيل عمليات ot-cli
متعددة لمحاكاة الشبكة. يجب أن يفتح متصفحك تلقائيًا صفحة التصور بلوحة فارغة.
Silk عبارة عن منصة اختبار مؤتمتة بالكامل للتحقق من صحة وظيفة OpenThread والميزات وأداء النظام باستخدام أجهزة حقيقية. تغطي التعليمات الواردة في مشروع README كيفية استخدامه.
silk_run_test.py
ملف silk_run_test.py
الموجود في silk/unit_tests
. يوفر Silk دعم OTNS عند تشغيل حالة الاختبار. نظرًا لأن خدمة الوضع الحقيقي لـ OTNS تعمل بالفعل محليًا ، نحتاج ببساطة إلى تعديل ملف silk_run_test.py
المطلوبة لملف سجل الإخراج ، ونصوص اختبار الإدخال ، وملف hwconfig.ini
. تخبر الوسيطة -s localhost
Silk بإرسال رسائل OTNS إلى localhost
المحلي.
على سبيل المثال ، يمكن إجراء الاختبار المسمى ot_test_form_network.py
باستخدام التعديلات التالية على ملف silk_run_test.py
. /opt/openthread_test/
هو المسار الافتراضي الذي يستخدمه Silk لإخراج السجل وملف التكوين ، ولكن يمكنك استخدام أي مسار.
silk_run_test.py
import datetime
import os
from silk.tests import silk_run
RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'
os.chdir('~/src/silk/silk/tests/')
timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')
run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'
argv = [
'tests/silk_run.py',
'-v2',
'-c', CONFIG_PATH + 'hwconfig.ini',
'-d', run_log_path,
'-s', 'localhost',
'ot_test_form_network.py'
]
silk_run.SilkRunner(argv=argv)
سيظهر تصور الهيكل للشبكة المشكلة على واجهة مستخدم ويب OTNS.
يُظهر الزاوية اليسرى العلوية إحصائيات التصور وإصدار OT وعنوان الاختبار. يحتوي الركن الأيسر السفلي على عناصر تحكم في نافذة السجل ، والتي تظهر على اليمين. في البداية ، تتم إضافة العقد ولكن لا يتم تشكيل أي شبكة. مع تقدم الاختبار ، تتغير أوضاع وأدوار كل عقدة وتتشكل الروابط.
تهانينا ، لقد نجحت في إجراء اختبار الحرير على أجهزة الخيط المادية وتصورها باستخدام OTNS!
لقد أجريت اختبار الحرير باستخدام لوحات التطوير التي تومض بالبرامج الثابتة التي تدعم OTNS. تقوم اللوحات بالإبلاغ عن حالتها إلى خادم Silk ، الذي يراقبها ويجمعها جميعًا ، ويرسلها إلى خدمة OTNS جنبًا إلى جنب مع معلومات الاختبار الأخرى. تعمل OTNS في الوضع الحقيقي على تصور شبكة مؤشر الترابط على واجهة الويب.
ماذا بعد؟
جرب تشغيل حالات اختبار OpenThread الأخرى المضمنة في حزمة الحرير.
قراءة متعمقة
تحقق من openthread.io و Silk للحصول على مجموعة متنوعة من موارد OpenThread.