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

1 المقدمة

5abd22afa2f2ee9a.png

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

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

OpenThread التي أطلقتها جوجل هو تنفيذ المصدر المفتوح من الموضوع. وعلى الرغم من صغر حجم رمز وذاكرة وجودها، OpenThread يدعم جميع الميزات المحددة في الموضوع 1.1.1 مواصفات .

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

الحرير هي عبارة عن منصة اختبار مؤتمتة بالكامل للتحقق من صحة وظيفة OpenThread، ميزة، وأداء النظام مع الأجهزة الحقيقية.

ماذا ستتعلم

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

يركز مختبر الكود هذا على استخدام Silk مع OTNS. لا يتم تغطية الميزات الأخرى لـ Silk و OTNS.

ماذا ستحتاج

المعدات:

  • 6 لوحات ديف نورديك لأشباه الموصلات nRF52840
  • 6 كبلات USB إلى Micro-USB لتوصيل اللوحات
  • محور USB

برمجة:

  • لينكس x86_64.
  • بوابة .
  • الذهاب 1.11+ .
  • متصفح الإنترنت. يستخدم OTNS-Web مستعرض ويب لعرض عمليات المحاكاة.

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

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

أكمل Codelabs الأساسية السابقة

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

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

  1. تشغيل which otns لمعرفة ما اذا كان otns للتنفيذ هو للبحث في $PATH .
  2. تشغيل which wpantund للتأكد من wpantund هو متاح.
  3. تأكد ARM GNU toolchain، J-لينك، و nrfjprog الحزم هي كل ما هو متاح.
  4. تأكد من ثنائي OpenThread يمكن أن يتم، تشغيل make -f examples/Makefile-nrf52840 تحت openthread المجلد.

ملاحظة: يرجى الرجوع إلى الوثائق المرتبطة لاقامة التوجيه. المتطلبات المسبقة # 1 من محاكاة شبكات الموضوع باستخدام 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-لينك.

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

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

يتيح تشغيل OTNS مع المعلمات الافتراضية للمستخدم محاكاة شبكة الخيط. لاستخدامها كأداة تصور لشبكة فعلية فعلية ، قم بتشغيلها باستخدام:

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

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

4dd5b41bf7e71334.png

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

Silk عبارة عن منصة اختبار مؤتمتة بالكامل للتحقق من صحة وظيفة OpenThread والميزات وأداء النظام باستخدام أجهزة حقيقية. الإرشادات في المشروع التمهيدي يغطي كيفية استخدامها.

و silk_run_test.py الملف الموجود في silk/unit_tests يمنحك البداية المتقدمة. يوفر Silk دعم 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. مبروك

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

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

ماذا بعد؟

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

قراءة متعمقة

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

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