اختبار شبكة Thread باستخدام التمثيل البصري

1- المقدمة

5abd22afa2f2ee9a.png

ما هو Thread وOpenThread وOTNS وS Silk؟

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

إنّ OpenThread التي أصدرتها Google عبارة عن تنفيذ مفتوح المصدر لسلسلة المحادثات. على الرغم من صغر حجم الرمز وبصمة الذاكرة، يتوافق OpenThread مع جميع الميزات المحدّدة في مواصفات سلسلة المحادثات.

يمكن استخدام محاكي شبكة OpenThread (OTNS) لمحاكاة شبكات Thread من خلال تشغيل عُقد OpenThread الافتراضية على منصات posix. توفّر OTNS واجهة ويب سهلة الاستخدام (OTNS-Web) لعرض شبكات Thread المضمَّنة وتشغيلها.

Silk هو منصّة اختبار مبرمَجة بالكامل للتحقق من صحة وظيفة OpenThread والميزات وأداء النظام باستخدام أجهزة حقيقية.

ما ستتعرَّف عليه

  • إطار عمل التحقّق من وظائف OpenThread: الحرير
  • إنشاء سلسلة محادثات للأجهزة الفعلية باستخدام ميزة OTNS مفعَّلة
  • استخدام واجهة OTNS-Web لمراقبة حالة شبكة Thread التي تم إنشاؤها من خلال تشغيل حالات اختبار الحرير

يركّز هذا الدرس التطبيقي حول الترميز على استخدام الحرير مع تقنية OTNS. ولا يتم تغطية الميزات الأخرى للحرير وOTNS.

المتطلبات

الأجهزة:

  • 6 لوحات شبه عُرضية لـ Nordic nRF52840
  • 6 كابلات USB إلى USB صغيرة لتوصيل الألواح
  • موزّع USB

البرامج:

المتطلبات الأساسية:

2. المتطلبات الأساسية

إكمال الدروس التطبيقية الأساسية حول الترميز

جارٍ التحقّق من المتطلّبات الأساسية للحزمة.

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

  1. شغِّل which otns للتحقق مما إذا كان الملف otns القابل للبحث قابلاً للبحث في $PATH.
  2. يمكنك تشغيل which wpantund للتأكد من توفّر wpantund.
  3. تأكّد من توفّر كل من سلسلة أدوات ARM GNU وJ-Link وnrfjprog.

ملاحظة: يُرجى الرجوع إلى المستندات المرتبطة لإعداد الإرشادات. الشرط الأول هو من محاكاة شبكات سلاسل المحادثات باستخدام OTNS وأخرى من إنشاء شبكة سلسلة محادثات باستخدام لوحات nRF52840 وOpenThread.

3. إعداد الحرير

استنساخ الحرير وإعداد البيئة، نفِّذ الأوامر التالية ضمن دليلك المصدر:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

تحديد ملف إعداد الجهاز

للسماح لفريق الحرير بجمع موارد جهاز الاختبار المتاحة المتصلة بجهازك، حدِّد ملف hwconfig.ini بالتنسيق التالي:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

ويتم تثبيت أداة تُسمى usbinfo كجزء من الحرير، والتي يمكن استخدامها لمعرفة الرقم التسلسلي للواجهة ورقم واجهة USB. DutSerial هو رقم SN المطبوع على الشريحة أو يعرضها usbinfo لمنتجات J-Link.

يحدّد الحقلان LayoutCenter وLayoutRadius في قسم [DEFAULT] شكل التنسيق عند عرض الأجهزة على واجهة مستخدم الويب. قد يكون ضبطها على القيم المعروضة هنا نقطة انطلاق جيدة.

بعد ذلك، تحدِّد هذه السياسة قسمًا لكل جهاز اختبار وتزوِّد بمعلومات الأجهزة ذات الصلة.

4- تجميع سلسلة المحادثات المفتوحة مع تفعيل OOTNS

صورة المبنى والوميض

بشكل تلقائي، لا تنبعث أجهزة OpenThread رسائل ذات صلة باتصال OTNS. للسماح لألواح مطوّري البرامج بإرسال رسائل حالة لتسجيل الواجهات الضرورية لتمثيل OTNS، شغِّل الأمر التالي ضمن دليل مصدر OpenThread لإنشاء صورة FTD وتحويلها إلى تنسيق ست عشري.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

لاستخدام ألواح الرسم بسرعة، اتّبِع التعليمات الواردة في الخطوة 4 من Create a Thread Network Codelab لاستخدام nrfjprog. بعد ذلك، عليك توصيل جميع اللوحات عبر منفذ USB nRF بجهاز المضيف. ويمكن فصل مجموعة أجهزة USB نفسها مع كابلات USB الصغيرة من منافذ J-Link وتوصيلها بمنافذ USB التابعة لمنصة nRF على لوحات nRF52840. وبالتالي، يمكن تنفيذ اختبار الكابلات الستة فقط. لتجنّب المتاعب، استخدِم 12 كابل ووصِّل بكلا المنفذين.

5. تشغيل خادم OTNS باستخدام الوضع الحقيقي

يؤدي تشغيل OTNS مع معلَمات تلقائية إلى السماح للمستخدم بمحاكاة شبكة Thread. ولاستخدامها كأداة للعرض المرئي لشبكة فعلية، عليك تشغيلها باستخدام:

otns -raw -real -ot-cli otns-silk-proxy

تخبر هذه الوسيطات شبكة OTNS أن تتوقع رسائل gRPC وUDP التي تصف كيفية إنشاء تمثيل بصري لشبكة Thread، بدلاً من تشغيل عمليات ot-cli متعدّدة لمحاكاة الشبكة. من المفترض أن يفتح المتصفّح صفحة التمثيل البصري تلقائيًا باستخدام لوحة فارغة.

4dd5b41bf7e71334.png

6- تشغيل حافظات الاختبار الحريري مع دعم OTNS

الحرير هو منصّة اختبار مبرمَجة بالكامل للتحقّق من دقّة وظائف سلسلة المحادثات وميزاتها وأدائها باستخدام أجهزة حقيقية. تتناول التعليمات الواردة في المشروع ReadME كيفية استخدامها.

يتيح لك ملف silk_run_test.py المتوفّر في silk/unit_tests إمكانية توليد البداية. يوفّر الحرير دعم OTNS عند تشغيل حالة اختبار. نظرًا لأن خدمة "الوضع الفعلي" لخدمة OTNS قيد التشغيل محليًا، نحتاج إلى تعديل ملف silk_run_test.py بالمواقع الجغرافية المطلوبة لملف سجلّ الإخراج، والنصوص البرمجية لاختبارات الاختبار، وملف hwconfig.ini. تطلب الوسيطة -s localhost من الحرير إرسال رسائل 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

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

5c38e2c72519e620.png

7- تهانينا

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

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

ما هي الخطوات التالية؟

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

مواصلة القراءة

يمكنك الاطّلاع على openthread.io وSilk للحصول على مجموعة متنوعة من مراجع OpenThread.

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