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