Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

اختبار شبكة الخيط مع التصور

5abd22afa2f2ee9a.png

ما هو 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 الأساسية السابقة

التحقق من متطلبات الحزمة

دعونا نتأكد من استيفاء جميع المتطلبات الأساسية.

  1. قم بتشغيل which otns للتحقق مما إذا كانت otns القابلة للتنفيذ قابلة للبحث في $PATH .
  2. قم بتشغيل which wpantund للتأكد من wpantund .
  3. تأكد من nrfjprog حزم ARM GNU toolchain و J-Link و nrfjprog .
  4. تأكد من إمكانية عمل ملف ثنائي 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 متعددة لمحاكاة الشبكة. يجب أن يفتح متصفحك تلقائيًا صفحة التصور بلوحة فارغة.

4dd5b41bf7e71334.png

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.

ee443b66e0a6620b.png

يُظهر الزاوية اليسرى العلوية إحصائيات التصور وإصدار OT وعنوان الاختبار. يحتوي الركن الأيسر السفلي على عناصر تحكم في نافذة السجل ، والتي تظهر على اليمين. في البداية ، تتم إضافة العقد ولكن لا يتم تشكيل أي شبكة. مع تقدم الاختبار ، تتغير أوضاع وأدوار كل عقدة وتتشكل الروابط.

5c38e2c72519e620.png

تهانينا ، لقد نجحت في إجراء اختبار الحرير على أجهزة الخيط المادية وتصورها باستخدام OTNS!

لقد أجريت اختبار الحرير باستخدام لوحات التطوير التي تومض بالبرامج الثابتة التي تدعم OTNS. تقوم اللوحات بالإبلاغ عن حالتها إلى خادم Silk ، الذي يراقبها ويجمعها جميعًا ، ويرسلها إلى خدمة OTNS جنبًا إلى جنب مع معلومات الاختبار الأخرى. تعمل OTNS في الوضع الحقيقي على تصور شبكة مؤشر الترابط على واجهة الويب.

ماذا بعد؟

جرب تشغيل حالات اختبار OpenThread الأخرى المضمنة في حزمة الحرير.

قراءة متعمقة

تحقق من openthread.io و Silk للحصول على مجموعة متنوعة من موارد OpenThread.

مستندات مرجعية