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 اولیه اساسی را کامل کنید
- آغازگر موضوع برای درک آنچه در این Codelab آموزش داده شده است ، باید مفاهیم اساسی Thread را بدانید.
- با تابلوهای nRF52840 و OpenThread یک شبکه Thread ایجاد کنید . این Codelab فرض می کند که شما با موفقیت یک شبکه Thread ساخته اید.
- شبکه های Thread را با استفاده از OTNS شبیه سازی کنید . این Codelab فرض می کند که شما با موفقیت ابزار OTNS را اجرا کرده اید.
در حال بررسی پیش نیازهای بسته
بیایید اطمینان حاصل کنیم که همه پیش نیازها برآورده شده اند.
-
which otns
را اجرا کنید تا بررسی کنید آیاotns
قابل اجرا در$PATH
قابل جستجو است. -
which wpantund
را اجرا کنید تا مطمئن شویدwpantund
موجود است. - اطمینان حاصل کنید که بسته های ARM GNU ، J-Link و
nrfjprog
همه در دسترس هستند. - اطمینان حاصل کنید که یک باینری 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
برای فلش برد ، برای استفاده از nrfjprog
دستورالعمل های مرحله 4 Codelab شبکه ساخت یک موضوع را دنبال کنید. پس از آن ، تمام بردها را از طریق درگاه 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 را توصیف می کنند ، باشد. مرورگر شما باید به صورت خودکار صفحه تجسم را با یک بوم خالی باز کند.
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 نشان داده می شود.
گوشه بالا سمت چپ آمار تجسم ، نسخه OT و عنوان آزمون را نشان می دهد. گوشه پایین سمت چپ کنترل پنجره ورود به سیستم را دارد که در سمت راست نشان داده شده است. در ابتدا ، گره ها اضافه می شوند اما شبکه ای تشکیل نمی شود. با پیشرفت آزمون ، حالت ها و نقش های هر گره تغییر می کند و پیوندها شکل می گیرند.
تبریک می گویم ، شما با موفقیت یک آزمایش Silk را روی دستگاه های Thread فیزیکی اجرا کرده و با استفاده از OTNS تجسم کرده اید!
شما یک تست Silk را با استفاده از تابلوهای توسعه که با سیستم عامل هایی که از پشتیبانی OTNS پشتیبانی می کنند ، اجرا کرده اید ، انجام داده اید. تابلوها وضعیت آنها را به یک سرور Silk گزارش می دهند که همه آنها را رصد و جمع می کند و آنها را به همراه سایر اطلاعات آزمون به سرویس OTNS می فرستد. OTNS که در حالت واقعی اجرا می شود ، شبکه Thread را در رابط وب تجسم می کند.
بعدی چیست؟
سایر موارد آزمایشی OpenThread را که در بسته Silk موجود است ، امتحان کنید.
خواندن بیشتر
برای انواع منابع OpenThread openthread.io و Silk را بررسی کنید.