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

1- مقدمة

5abd22afa2f2ee9a.png

ما المقصود بالخيوط وOpenthread وOTNS وحرير؟

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

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

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

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

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

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

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

المتطلبات

الأجهزة:

  • 6 لوحات شبه عمودية nRF52840 لمطوّري البرامج
  • 6 منافذ USB إلى كابلات USB صغيرة لتوصيل اللوحات
  • موزّع USB

برامج:

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

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

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

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

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

  1. شغِّل which otns للتحقق مما إذا كان يمكن تنفيذ otns الملف القابل للبحث في $PATH.
  2. شغِّل which wpantund للتأكد من توفّر wpantund.
  3. تأكّد من توفّر حزمة الأدوات ARM GNU وسلسلة J-Link وnrfjprog.
  4. تأكّد من إمكانية إنشاء برنامج ثنائي OpenOpen، وتشغيل make -f examples/Makefile-nrf52840 من مجلد openthread.

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

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. تجميع OpenOpen مع تفعيل 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 من درس تطبيقي حول ترميز شبكة سلاسل المحادثات لاستخدام nrfjprog. بعد ذلك، وصِّل جميع اللوحات عبر منفذ USB nRF بالجهاز المضيف. يمكن فصل المجموعة نفسها من كابلات USB إلى Micro-USB من منافذ J-Link وتوصيلها بمنافذ USB nRF للوحات التطوير nRF52840. وبالتالي، يمكن تنفيذ الاختبار باستخدام هذه الكابلات الستة فقط. لتجنُّب حدوث أي إزعاج، استخدِم 12 كابلاً ووصِّل المنفذين.

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

يسمح تشغيل OTNS باستخدام معلمات تلقائية للمستخدم بمحاكاة شبكة سلاسل محادثات. لاستخدام الأداة كأداة مرئية لشبكة فعلية، عليك تشغيلها من خلال:

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

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

4dd5b41bf7e71334.png

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

الحرير هو نظام أساسي مُبرمَج بالكامل للتحقق من صحة وظائف 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_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

7- تهانينا

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

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

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

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

قراءة إضافية

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

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