Google is committed to advancing racial equity for Black communities. See how.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

آزمایش شبکه نخ با تجسم

5abd22afa2f2ee9a.png

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

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

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

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

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

آنچه خواهید آموخت

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

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

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

سخت افزار:

  • 6 صفحه Nordic Semiconductor nRF52840 dev
  • 6 کابل USB به Micro-USB برای اتصال بردها
  • هاب USB

نرم افزار:

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

پیش نیازها:

Codelabs اولیه اساسی را کامل کنید

در حال بررسی پیش نیازهای بسته

بیایید اطمینان حاصل کنیم که همه پیش نیازها برآورده شده اند.

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

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

برای شبیه سازی 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] هنگام نمایش دستگاهها در UI وب ، شکل طرح را مشخص می کند. تنظیم آنها بر روی مقادیر ارائه شده در اینجا می تواند نقطه شروع خوبی باشد.

به دنبال آن ، برای هر دستگاه آزمایشی بخشی تعریف شده و اطلاعات سخت افزاری مربوطه را ارائه می دهد.

تصویر ساختمان و چشمک زن

به طور پیش فرض ، دستگاه های OpenThread پیام های مربوط به OTNS را منتشر نمی کنند. برای اینکه به تابلوهای dev اجازه دهید پیام های وضعیت را برای ورود رابط های ضروری برای تجسم OTNS منتشر کنند ، دستور زیر را در فهرست منبع OpenThread اجرا کنید تا یک تصویر FTD ایجاد کند و آن را به قالب hex تبدیل کنید.

$ cd openthread
$ make -f examples/Makefile-nrf52840 clean
$ make -f examples/Makefile-nrf52840 COMMISSIONER=1 JOINER=1 USB=1 OTNS=1
$ cd output/nrf52840/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

برای فلش برد ، دستورالعمل های مرحله 4 از Codelab network Build a Thread را دنبال کنید تا از nrfjprog استفاده کنید. پس از آن ، تمام بردها را از طریق درگاه USB nRF به دستگاه میزبان وصل کنید. همان کابل های USB به Micro-USB را می توان از درگاه های J-Link جدا و به درگاه های USB nRF برد های nRF52840 dev متصل کرد. بنابراین فقط با این 6 کابل می توان تست آزمایشی را انجام داد. برای جلوگیری از دردسر ، از 12 کابل استفاده کنید و به هر دو پورت متصل شوید.

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

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

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

4dd5b41bf7e71334.png

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

پرونده silk_run_test.py واقع در silk/unit_tests یک 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)

تجسم توپولوژی شبکه شکل گرفته در UI وب OTNS نشان داده می شود.

ee443b66e0a6620b.png

گوشه بالا سمت چپ آمار تجسم ، نسخه OT و عنوان آزمون را نشان می دهد. گوشه پایین سمت چپ کنترل پنجره ورود به سیستم را دارد که در سمت راست نشان داده شده است. در ابتدا ، گره ها اضافه می شوند اما شبکه ای تشکیل نمی شود. با پیشرفت آزمون ، حالت ها و نقش های هر گره تغییر می کند و پیوندها شکل می گیرند.

5c38e2c72519e620.png

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

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

بعدی چیست؟

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

بیشتر خواندن

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

اسناد مرجع