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