تست شبکه موضوعی با تجسم

1. معرفی

5abd22afa2f2ee9a.png

Thread، OpenThread، OTNS و Silk چیست؟

Thread یک پروتکل شبکه بی سیم کم مصرف مبتنی بر IP است که ارتباطات دستگاه به دستگاه و دستگاه به ابر را ایمن می کند. شبکه های نخ می توانند با تغییرات توپولوژی سازگار شوند تا از یک نقطه شکست جلوگیری کنند.

OpenThread منتشر شده توسط گوگل یک پیاده سازی منبع باز Thread است. OpenThread علیرغم اندازه کد کوچک و ردپای حافظه اش، از تمام ویژگی های تعریف شده در Thread Specification پشتیبانی می کند.

از OpenThread Network Simulator (OTNS) می توان برای شبیه سازی شبکه های Thread با اجرای گره های OpenThread شبیه سازی شده بر روی پلتفرم های posix استفاده کرد. OTNS یک رابط وب با کاربری آسان (OTNS-Web) برای تجسم و عملکرد شبکه های Thread شبیه سازی شده فراهم می کند.

Silk یک پلت فرم آزمایشی کاملاً خودکار برای تأیید عملکرد، ویژگی و عملکرد سیستم OpenThread با دستگاه های واقعی است.

چیزی که یاد خواهید گرفت

  • چارچوب تأیید عملکرد OpenThread: Silk
  • با فعال بودن ویژگی OTNS، OpenThread را برای دستگاه های واقعی بسازید
  • از رابط OTNS-Web برای نظارت بر وضعیت شبکه Thread که با اجرای موارد آزمایش Silk تشکیل شده است، استفاده کنید

این Codelab بر روی استفاده از Silk با OTNS متمرکز شده است. سایر ویژگی های Silk و OTNS پوشش داده نشده است.

آنچه شما نیاز دارید

سخت افزار:

  • 6 برد توسعه دهنده Nordic Semiconductor nRF52840
  • 6 کابل USB به Micro-USB برای اتصال بردها
  • هاب USB

نرم افزار:

  • لینوکس x86_64.
  • گیت .
  • برو 1.11+ .
  • مرورگر اینترنت. OTNS-Web از یک مرورگر وب برای نمایش شبیه سازی ها استفاده می کند.

پیش نیازها:

2. پیش نیازها

Codelab های اولیه اولیه را کامل کنید

بررسی پیش نیازهای بسته

بیایید مطمئن شویم که همه پیش نیازها برآورده شده است.

  1. which otns را اجرا کنید تا بررسی کنید که آیا فایل اجرایی otns در $PATH قابل جستجو است یا خیر.
  2. برای اطمینان از در دسترس بودن wpantund which wpantund را اجرا کنید.
  3. مطمئن شوید که بسته‌های زنجیره ابزار ARM GNU، J-Link و nrfjprog همگی در دسترس هستند.
  4. مطمئن شوید که می‌توانید یک OpenThread باینری درست کنید، و make -f examples/Makefile-nrf52840 را در زیر پوشه openthread کنید.

توجه: لطفاً برای راهنمایی تنظیم به اسناد پیوندی مراجعه کنید. پیش نیاز شماره 1 مربوط به Simulate Thread Networks با استفاده از OTNS است و دیگران از ساخت شبکه Thread با بردهای nRF52840 و OpenThread هستند .

3. راه اندازی ابریشم

برای شبیه سازی Silk و راه اندازی محیط، دستورات زیر را در فهرست منبع خود اجرا کنید:

$ 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 نصب شده است که می توان از آن برای یافتن شماره سریال رابط و شماره رابط 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 از Codelab شبکه Build a Thread را دنبال کنید تا از nrfjprog استفاده کنید. پس از آن، تمام بردها را از طریق درگاه USB nRF به دستگاه میزبان متصل کنید. همان مجموعه کابل‌های USB به Micro-USB را می‌توان از درگاه‌های J-Link جدا کرد و به درگاه‌های USB nRF بردهای توسعه‌دهنده nRF52840 متصل کرد. بنابراین فقط با این 6 کابل می توان آزمایش را انجام داد. برای جلوگیری از دردسر، از 12 کابل استفاده کنید و به هر دو پورت متصل شوید.

5. اجرای سرور OTNS با حالت واقعی

اجرای OTNS با پارامترهای پیش فرض به کاربر امکان شبیه سازی شبکه Thread را می دهد. برای استفاده از آن به عنوان یک ابزار تجسم برای یک شبکه فیزیکی واقعی، آن را با:

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

این آرگومان‌ها به OTNS می‌گویند که به جای اجرای چندین فرآیند ot-cli برای شبیه‌سازی شبکه، انتظار پیام‌های gRPC و UDP را داشته باشد که توضیح می‌دهند چگونه شبکه Thread باید تجسم شود. مرورگر شما باید به طور خودکار صفحه تجسم را با یک بوم خالی باز کند.

4dd5b41bf7e71334.png

6. اجرای کیس های تست Silk با پشتیبانی OTNS

Silk یک پلت فرم آزمایشی کاملاً خودکار برای تأیید عملکرد، ویژگی و عملکرد سیستم OpenThread با دستگاه های واقعی است. دستورالعمل های پروژه README نحوه استفاده از آن را پوشش می دهد.

فایل 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

7. تبریک می گویم

تبریک می‌گوییم، شما با موفقیت تست Silk را روی دستگاه‌های Thread فیزیکی اجرا کردید و آن را با استفاده از OTNS تجسم کردید!

شما یک آزمایش Silk را با استفاده از بردهای توسعه اجرا کردید که با سیستم عامل هایی که از OTNS پشتیبانی می کنند فلش می شوند. بردها وضعیت خود را به سرور Silk گزارش می دهند که همه آنها را نظارت و جمع آوری می کند و آنها را به همراه سایر اطلاعات تست به سرویس OTNS ارسال می کند. OTNS که در حالت واقعی اجرا می شود، شبکه Thread را در رابط وب تجسم می کند.

بعدش چی؟

سایر موارد تست OpenThread موجود در بسته Silk را امتحان کنید.

بیشتر خواندن

برای انواع منابع OpenThread، openthread.io و Silk را بررسی کنید.

اسناد مرجع