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

1. مقدمة

5abd22afa2f2ee9a.png

ما هي Thread وOpenThread وOTNS وSillk؟

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

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

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

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

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

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

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

المتطلبات

الأجهزة:

  • 6 لوحات Nordic تعليقconductor nRF52840 لمطوِّري التطبيقات
  • 6 كابلات USB إلى USB صغير لتوصيل اللوحات
  • موزّع USB

البرامج:

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

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

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

التحقق من المتطلبات الأساسية للحزمة

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

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

ملاحظة: يُرجى الرجوع إلى المستندات المرتبطة للحصول على إرشادات حول الإعداد. الشرط الأساسي رقم 1 هو من مقالة Simulate Thread Networks باستخدام OTNS، ومصدر آخر هو Build a Thread Network with nRF52840 boards وOpenThread.

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

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

$ 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 يتم تثبيتها كجزء من الحرير والتي يمكن استخدامها لمعرفة الرقم التسلسلي للواجهة ورقم واجهة USB. DutSerial هو رقم SN المطبوع على الشريحة أو المعروض من قِبل usbinfo لمنتجات J-Link.

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

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

4. تجميع OpenThread مع تفعيل OTNS

إنشاء صورة وامضة

لا تصدر أجهزة 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 من درس تطبيقي حول ترميز شبكة Thread لاستخدام 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

Silk هي منصة اختبار آلية بالكامل للتحقّق من صحة وظائف OpenThread وميزاتها وأدائها على الأجهزة الحقيقية. تتناول التعليمات الواردة في مشروع 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. وترسل اللوحات تقارير عن حالتها إلى خادم Silk الذي يراقب ويجمع كل العناصر ويرسلها إلى خدمة OTNS مع معلومات الاختبار الأخرى. تصور OTNS التي تعمل في الوضع الحقيقي شبكة Thread على واجهة الويب.

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

يمكنك تجربة إجراء حالات اختبار OpenThread الأخرى المضمّنة في حزمة Silk.

محتوى إضافي للقراءة

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

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