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

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
  • OpenThread را برای دستگاه های واقعی با قابلیت OTNS فعال کنید
  • از رابط 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. برای بررسی اینکه آیا فایل اجرایی otns در $PATH قابل جستجو است، which otns اجرا کنید.
  2. برای اطمینان از در دسترس بودن wpantund which wpantund اجرا کنید.
  3. مطمئن شوید که بسته‌های زنجیره ابزار ARM GNU، J-Link و nrfjprog همگی در دسترس هستند.

توجه: لطفاً برای راهنمایی تنظیم به اسناد پیوندی مراجعه کنید. پیش نیاز شماره 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. اجرای کیس های تست سیلک با پشتیبانی 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 را بررسی کنید.

اسناد مرجع