شبکه های Thread را با استفاده از OTNS شبیه سازی کنید

۱. مقدمه

برداشتی از توپولوژی شبکه توری Thread

Thread و OTNS چیست؟

ترد (Thread) یک پروتکل شبکه مش بی‌سیم کم‌مصرف مبتنی بر IP است که ارتباطات امن دستگاه به دستگاه و دستگاه به ابر را امکان‌پذیر می‌کند. شبکه‌های ترد می‌توانند با تغییرات توپولوژی سازگار شوند تا از بروز یک نقطه شکست (Single Point of Failure) جلوگیری کنند.

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

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

آنچه یاد خواهید گرفت

  • نصب OTNS و وابستگی‌های آن
  • با اصول اولیه OTNS-CLI آشنا شوید
  • نحوه اضافه کردن/جابجایی/حذف گره‌های OpenThread در OTNS-Web
  • از سایر ویژگی‌های مفید OTNS-Web برای کنترل شبیه‌سازی شبکه استفاده کنید.
  • عدم وجود یک نقطه شکست در OpenThread را تأیید کنید
  • ترافیک داده بین گره‌های OpenThread را در Wireshark مشاهده کنید

این آزمایشگاه کد بر روی OTNS-CLI و OTNS-Web برای استفاده تعاملی تمرکز دارد. سایر ویژگی‌های OTNS، مانند اسکریپت‌نویسی پایتون، پوشش داده نشده است.

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

  • مبانی Thread . برای درک آنچه در این Codelab آموزش داده می‌شود، باید مفاهیم اولیه Thread را بدانید.
  • ترجیحاً لینوکس x86_64 یا مک او اس با Homebrew . نسخه اوبونتو ۲۴ یا بالاتر در ویندوز WSL2 نیز باید کار کند، اما ممکن است نیاز به تنظیمات دستی داشته باشد.
  • گیت
  • مرورگر وب. OTNS-Web از یک مرورگر وب برای نمایش شبیه‌سازی‌ها استفاده می‌کند.
  • تحلیلگر پروتکل شبکه Wireshark (اختیاری).
  • برو به نسخه ۱.۲۳ یا بالاتر.
    • اسکریپت نصب، نسخه Go نصب شده را بررسی می‌کند.
    • اگر Go نصب نشده باشد، در صورت موجود بودن از طریق مدیریت بسته، نسخه‌ای >= 1.23 را نصب خواهد کرد.
    • اگر از طریق مدیریت بسته‌ها در دسترس نباشد، نصب دستی لازم است.
    • توجه داشته باشید که اوبونتو ۲۴.۰۴ یا پایین‌تر به طور خودکار از Go 1.23 پشتیبانی نمی‌کند. برای جزئیات بیشتر به صفحه نسخه‌های موجود Golang در مستندات اوبونتو مراجعه کنید. نصب دستی، با استفاده از snap یا سایر روش‌ها امکان‌پذیر است.
  • پایتون نسخه ۳.۹ یا بالاتر.
    • اسکریپت نصب، نسخه پایتون نصب شده را بررسی می‌کند.
    • اگر پایتون ۳ هنوز نصب نشده باشد، در صورت وجود نسخه >= ۳.۹ از طریق مدیریت بسته، آن را نصب خواهد کرد.
    • اگر از طریق مدیریت بسته‌ها در دسترس نباشد، نصب دستی لازم است.

اصطلاحات

اصطلاح «روتر» به عنوان اصطلاح فنی برای توسعه‌دهنده‌ی شبکه‌ی ترد (Thread Mesh Extender) استفاده می‌شود که در ابتدا روتر ترد (Thread Router) نامیده می‌شد. «گره» به هر دستگاه شبیه‌سازی‌شده‌ی OpenThread در یک شبیه‌سازی OTNS اشاره دارد.

۲. نصب

دریافت کد OTNS

$ git clone https://github.com/openthread/ot-ns.git ./otns
$ cd otns

تمام دستورات کنسول بعدی در این Codelab از دایرکتوری otns اجرا می‌شوند.

بوت‌استرپ و نصب آن

اسکریپت bootstrap وابستگی‌ها (از جمله پایتون ۳ و Go/Golang، در صورت نیاز) و OTNS را نصب می‌کند. توجه داشته باشید که اگر اسکریپت نتواند وابستگی‌های خاصی مانند نسخه پایتون >= ۳.۹ یا نسخه Go >= ۱.۲۳ را به طور خودکار نصب کند، ممکن است متوقف شود. نصب خودکار مستلزم آن است که بسته‌ها در مخزن بسته پیکربندی شده سیستم عامل یافت شوند.

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

$ ./script/bootstrap
....
....
OTNS installed - use 'otns' to start it.
$

ممکن است در حین اجرای اسکریپت از شما خواسته شود که رمز عبور sudo را وارد کنید.

اگر otns به درستی نصب نشده باشد

اسکریپت ممکن است خطایی مانند زیر را گزارش دهد:

....
OTNS installed - please add ~/go/bin to your PATH variable first, to use it.
$

در این حالت، باید $(go env GOPATH)/bin به متغیر $PATH ‎ خود اضافه کنید.

در صورت بروز خطاهای دیگر، می‌توان یک مشکل گیت‌هاب ایجاد کرد.

۳. برای اولین بار OTNS را اجرا کنید

اجرای دستور otns :

$ otns
>_ ← OTNS-CLI prompt

وقتی OTNS با موفقیت شروع به کار کند، وارد یک کنسول CLI ( OTNS-CLI ) می‌شود و یک مرورگر وب برای تجسم و مدیریت شبکه ( OTNS-Web ) راه‌اندازی می‌کند:

پنجره OTNS-Web در شروع

اگر فقط یک صفحه خالی برای OTNS-Web می‌بینید، احتمالاً WebGL در مرورگر شما فعال نیست. لطفاً برای نحوه فعال کردن WebGL به https://superuser.com/a/836833 مراجعه کنید.

در بخش‌های بعدی، مدیریت شبیه‌سازی‌های OTNS را از طریق OTNS-CLI و OTNS-Web خواهید آموخت.

۴. با OTNS-CLI و OTNS-Web آشنا شوید

رابط خط فرمان OTNS

OTNS-CLI رابط خط فرمان (CLI) برای مدیریت شبیه‌سازی‌های OTNS است.

$ otns
>_ ← OTNS-CLI prompt

شما می‌توانید دستورات را از طریق OTNS-CLI تایپ کنید. برای مشاهده لیست کامل دستورات به مرجع OTNS CLI مراجعه کنید. نگران نباشید، شما فقط از تعدادی از این دستورات در این Codelab استفاده خواهید کرد.

برای مشاهده‌ی کلی دستورات CLI، دستور help را تایپ کنید. این لیست با مرجع CLI یکسان است.

> help
add             Add a node to the simulation and get the node ID.
....
....
Done
> 

برای دریافت راهنمایی بیشتر در مورد یک دستور خاص، از نام دستور استفاده کنید، برای مثال:

> help add
add
  Add a node to the simulation and get the node ID.
  
Definition:
....
....
> 

OTNS-وب

OTNS-Web ابزار تجسم و مدیریت شبکه OTNS است. این ابزار نمایش بصری از گره‌ها، پیام‌ها و لینک‌های شبکه Thread شبیه‌سازی شده را ارائه می‌دهد. به عناصر مختلف OTNS-Web توجه کنید:

عناصر وب OTNS توضیح داده شدند

۵. اضافه کردن گره‌ها

اضافه کردن گره‌ها از طریق OTNS-CLI

یک مسیریاب نخ (Thread Router) به شبیه‌سازی اضافه کنید:

> add router
1
Done

شما باید یک گره ایجاد شده در OTNS-Web را ببینید. این گره به عنوان یک روتر شروع به کار می‌کند و در عرض چند ثانیه به یک رهبر تبدیل می‌شود:

یک گره در نقش رهبر

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

اضافه کردن گره‌های بیشتر از طریق OTNS-CLI

حالا چند گره از انواع مختلف اضافه خواهیم کرد.

> add fed
2
Done
> add med
3
Done
> add sed
4
Done

چند ثانیه صبر کنید تا گره‌ها در یک پارتیشن ادغام شوند. باید گره‌ها را در OTNS-Web مشاهده کنید:

شبکه نخ با ۴ گره

همچنین در OTNS-Web ، می‌توان هر یک از گره‌ها را انتخاب کرد تا پنلی با اطلاعات بیشتر در مورد گره نمایش داده شود. برای مثال، در شکل زیر گره ۱ انتخاب شده است. ورودی "نقش" در پنل، رهبر بودن آن را تأیید می‌کند.

شبکه نخ با ۴ گره، گره ۱ انتخاب شده است

اضافه کردن گره‌ها توسط OTNS-Web

همچنین می‌توانید گره‌ها را از طریق OTNS-Web اضافه کنید. روی دکمه New Router در Action Bar کلیک کنید. باید یک گره در سمت راست گره انتخاب شده ایجاد شود. روتر جدید باید به پارتیشن Thread موجود بپیوندد:

یک روتر اضافه شده است، در مجموع ۵ گره

همچنین برای ایجاد انواع دیگر گره‌ها، روی دکمه‌های FED، MED، SSED و BR در نوار اقدام کلیک کنید. اکنون باید در مجموع 9 گره وجود داشته باشد. در صورت تمایل، برخی از گره‌ها را به موقعیت‌های دیگر بکشید تا توپولوژی شبکه فیزیکی متفاوتی ایجاد شود.

چندین گره جدید اضافه شد، در مجموع ۹ گره

حالا شما یک شبکه Thread از یک پارتیشن ایجاد کرده‌اید که شامل گره‌های زیادی است. در بخش بعدی، قصد داریم سرعت شبیه‌سازی را تنظیم کنیم تا شبیه‌سازی سریع‌تر اجرا شود.

۶. تنظیم سرعت

در حال حاضر، شبیه‌سازی باید با سرعت 1X اجرا شود، به این معنی که زمان سپری شده برای شبیه‌سازی تاکنون برابر با زمان واقعی از زمانی است که اولین گره را ایجاد کرده‌ایم.

تنظیم سرعت از طریق OTNS-CLI

شما می‌توانید سرعت شبیه‌سازی را از طریق OTNS-CLI تنظیم کنید.

سرعت شبیه‌سازی را روی 100X تنظیم کنید

> speed 100
Done

باید ببینید که گره‌ها پیام‌ها را بسیار بیشتر از قبل ارسال می‌کنند.

سرعت شبیه‌سازی را روی MAX تنظیم کنید

> speed max
Done

اکنون، OTNS تمام تلاش خود را می‌کند تا شبیه‌سازی را با حداکثر سرعت ممکن انجام دهد، بنابراین باید شاهد ارسال تعداد زیادی پیام توسط گره‌ها باشید.

شبیه‌سازی را متوقف کنید

> speed 0
Done

تنظیم سرعت شبیه‌سازی روی 0 شبیه‌سازی را متوقف می‌کند.

شبیه‌سازی را با سرعت عادی بازیابی کنید

> speed 1
Done

تنظیم سرعت شبیه‌سازی روی مقداری بزرگتر از 0 شبیه‌سازی را از سر می‌گیرد.

تنظیم سرعت از طریق OTNS-Web

دکمه‌های کنترل سرعت

دکمه‌های کنترل سرعت را پیدا کنید دکمه‌های کنترل سرعت روی Action Bar . دکمه‌ها سرعت شبیه‌سازی فعلی را نشان می‌دهند و می‌توانند برای تنظیم سرعت شبیه‌سازی و مکث/ازسرگیری شبیه‌سازی استفاده شوند.

افزایش سرعت شبیه‌سازی

شما می‌توانید با کلیک کردن روی []، سرعت شبیه‌سازی را افزایش دهید. دکمه افزایش سرعت دکمه را فشار دهید تا سرعت به MAX برسد: نشانگر سرعت شبیه‌سازی MAX .

کاهش سرعت شبیه‌سازی

شما می‌توانید با کلیک کردن روی [علامت]، سرعت شبیه‌سازی را کاهش دهید. دکمه کاهش سرعت دکمه

شبیه‌سازی را متوقف کنید

کلیک کنید دکمه مکث دکمه‌ای برای مکث شبیه‌سازی هنگام اجرا. این دکمه به ... تغییر خواهد کرد. دکمه پخش .

شبیه‌سازی رزومه

کلیک کنید دکمه پخش دکمه‌ای برای از سرگیری شبیه‌سازی پس از توقف آن. این دکمه به حالت قبل برمی‌گردد. دکمه مکث .

سرعت شبیه‌سازی را روی 10X تنظیم کنید

برای صرفه جویی در وقت، از

OTNS-CLI برای تنظیم سرعت شبیه‌سازی

10X تا بتوانیم تغییرات توپولوژی در شبکه را خیلی سریع‌تر مشاهده کنیم.

> speed 10
Done

۷. روشن/خاموش کردن رادیو

حالا، شبیه‌سازی باید حداقل شامل ۲ روتر (شش ضلعی)، احتمالاً یک روتر مرزی (مربعی شکل) و تعداد زیادی روتر فرزند باشد و با سرعت ۱۰ برابر اجرا شود.

رهبر فعلی (حاشیه قرمز) از بین دو روتر را پیدا کنید، برای انتخاب آن یک کلیک کنید:

شبکه نخ با گره رهبر ۱ انتخاب شده است

رادیو را خاموش کنید

کلیک کنید دکمه خاموش کردن رادیو برای خاموش کردن رادیوی گره رهبر، روی دکمه‌ی «در نوار اقدام» کلیک کنید. رهبر قادر به ارسال یا دریافت پیام با رادیوی خاموش نخواهد بود.

حدود ۱۲ ثانیه (۱۲۰ ثانیه در زمان شبیه‌سازی) صبر کنید تا روتر دیگر یا روتر مرزی به عنوان رهبر جدید انتخاب شود:

پارتیشن جدید با گره ۹ به عنوان رهبر جدید تشکیل می‌شود.

شبکه Thread با تشکیل یک پارتیشن جدید با یک Leader جدید، به طور خودکار از خرابی Leader بهبود می‌یابد. پارتیشن جدید همچنین دارای یک رنگ پارتیشن جدید است.

رادیو را روشن کنید

رهبری را که رادیوی او خاموش بود انتخاب کنید. روی دکمه روشن کردن رادیو برای بازیابی اتصال رادیویی، روی Action Bar کلیک کنید:

گره ۱ پس از روشن شدن مجدد رادیوی خود، به پارتیشن متصل می‌شود.

پس از برقراری مجدد اتصال رادیویی، رهبر باید دوباره به شبکه متصل شود.

۸. جابجایی گره‌ها

OTNS به کاربران این امکان را می‌دهد که گره‌ها را به راحتی از طریق OTNS-CLI یا OTNS-Web جابجا کنند.

انتقال گره از طریق OTNS-CLI

گره Border Router 9 را به مکان جدید منتقل کنید:

> move 9 50 50
Done

انتقال گره از طریق OTNS-Web

گره ۵ را با کشیدن، کاملاً به پایین سمت راست منتقل کنید. از آنجایی که گره ۵ اکنون از پوشش رادیویی سایر روترها خارج شده است، پارتیشن مخصوص به خود را با یک شناسه پارتیشن جدید تشکیل می‌دهد. شناسه‌های پارتیشن را می‌توان با کلیک روی گره‌ها در پنل اطلاعات گره بررسی کرد.

گره ۵ از گره‌های دیگر دور می‌شود و یک پارتیشن جدید تشکیل می‌دهد.

توجه داشته باشید که هنوز یک خط سبز واحد بین گره ۵ و گره ۹ کشیده شده است. این اغلب به دلیل اطلاعات قدیمی در مورد یک فرزند است که هنوز در جدول فرزند گره والد قبلی نگهداری می‌شود. یا می‌تواند اطلاعات قدیمی در مورد لینک روتر به روتر قبلی بین گره ۹ و گره ۵ باشد. (یا احتمالاً، در این مورد، حتی یک اشکال رندرینگ.) در نهایت، اطلاعات قدیمی پس از اتمام زمان مناسب در گره‌ها پاک می‌شوند.

۹. حذف گره‌ها

حذف گره‌ها از طریق OTNS-CLI

حذف گره ۵:

> del 5
Done

گره ۵ باید از شبیه‌سازی حذف شود:

گره ۵ از شبیه‌سازی حذف شده است

حذف گره‌ها از طریق OTNS-Web

گره Border Router 9 را انتخاب کرده و روی آن کلیک کنید دکمه حذف دکمه‌ی روی Action Bar برای حذف گره ۹:

گره ۹ روتر مرزی حذف شده است

Node 1 باید رهبر (Leader) یک پارتیشن جدید شود و تمام گره‌های باقی‌مانده به عنوان فرزند (Child) به گره ۱ متصل شوند.

۱۰. زمینه گره OTNS-CLI

OTNS-CLI حالت زمینه گره را برای تعامل آسان با گره‌ها فراهم می‌کند تا به توسعه‌دهندگان در تشخیص وضعیت گره کمک کند. همچنین می‌توان اقدامات گره را از این حالت آغاز کرد.

حالت زمینه گره را وارد کنید

متن گره گره ۱ را وارد کنید:

> node 1
Done
node 1>

اعلان CLI به node 1> تغییر کرد که نشان‌دهنده‌ی زمینه‌ی گره‌ی فعلی است. می‌توانید دستورات OpenThread CLI را برای اجرا روی گره تایپ کنید، گویی مستقیماً با گره در تعامل هستید.

اجرای دستورات در متن گره

node 1> state
leader
Done
node 1> channel
11
Done
node 1> panid
0xface
Done
node 1> networkname
otns
Done
node 1> ipaddr
fdde:ad00:beef:0:0:ff:fe00:fc00
fdde:ad00:beef:0:0:ff:fe00:b400
fd00:f00d:cafe:0:2505:8719:3685:ebfb
fdde:ad00:beef:0:4fd9:b9ba:44e0:96cb
fe80:0:0:0:e86a:e07:ec97:777
Done

به یک زمینه گره دیگر بروید

node 1> node 2
Done
node 2> 

زمینه گره خروجی

node 1> exit
Done
>

یک روش جایگزین برای خروج از زمینه گره، دستور node 0 است.

۱۱. مشاهده لاگ‌های گره و ضبط بسته‌ها

سیاهه‌های گره OpenThread

به طور پیش‌فرض، OTNS فایل‌های گزارش دقیقی را برای همه گره‌های شبیه‌سازی شده OpenThread ایجاد می‌کند. این فایل‌ها را می‌توان در دایرکتوری ./tmp مشاهده کرد. نام فایل 0_ .log است. 0_ .log . برای مثال، گزیده‌ای از یک فایل لاگ در زیر نشان داده شده است:

7616488 00:00:06.326 [I] MeshForwarder-: Received IPv6 UDP msg, len:90, chksum:5915, ecn:no, from:ca72650db7b856af, sec:no, prio:net, rss:-58.0
7616488 00:00:06.326 [I] MeshForwarder-:     src:[fe80:0:0:0:c872:650d:b7b8:56af]:19788
7616488 00:00:06.326 [I] MeshForwarder-:     dst:[ff02:0:0:0:0:0:0:1]:19788
7616488 00:00:06.326 [D] Mle-----------: Receive MLE message
7616488 00:00:06.326 [D] Mac-----------: Idle mode: Radio receiving on channel 11
7657544 00:00:06.367 [D] Mac-----------: ==============================[RX len=063]==============================
7657544 00:00:06.367 [D] Mac-----------: | 41 D8 7F CE FA FF FF 46 | 74 5A 33 9E 76 51 4E 7F | A......FtZ3.vQN. |
7657544 00:00:06.367 [D] Mac-----------: | 3B 02 F0 4D 4C 4D 4C 81 | E6 00 15 03 00 00 00 00 | ;..MLML......... |
7657544 00:00:06.367 [D] Mac-----------: | 00 00 00 01 46 86 7D FE | 06 CC DB 94 86 9C 88 0B | ....F.}......... |
7657544 00:00:06.367 [D] Mac-----------: | 1C 1E 26 9B 8D 21 2E 65 | 53 5A 43 4E A2 59 D6    | ..&..!.eSZCN.Y.  |
7657544 00:00:06.367 [D] Mac-----------: ------------------------------------------------------------------------
7657544 00:00:06.367 [I] MeshForwarder-: Received IPv6 UDP msg, len:84, chksum:81e6, ecn:no, from:4e51769e335a7446, sec:no, prio:net, rss:-48.0
7657544 00:00:06.367 [I] MeshForwarder-:     src:[fe80:0:0:0:4c51:769e:335a:7446]:19788
7657544 00:00:06.367 [I] MeshForwarder-:     dst:[ff02:0:0:0:0:0:0:2]:19788
7657544 00:00:06.367 [D] Mac-----------: Idle mode: Radio receiving on channel 11
7833912 00:00:06.543 [I] Mle-----------: AttachState ParentReq -> Idle
7833912 00:00:06.543 [N] RouterTable---: Allocate router id 12
7833912 00:00:06.543 [N] Mle-----------: RLOC16 fffe -> 3000
7833912 set node RLOC16: fffe -> 3000
7833912 00:00:06.543 [D] SubMac--------: RadioShortAddress: 0x3000
7833912 00:00:06.543 [N] Mle-----------: Role detached -> leader
7833912 00:00:06.543 [N] Mle-----------: Partition ID 0x24c35f10
7833912 00:00:06.543 [I] RouterTable---: Route table
7833912 00:00:06.543 [I] RouterTable---:     12 0x3000 - me - leader

زمان شبیه‌سازی مطلق بر حسب میکروثانیه در سمت چپ نشان داده شده است. مهر زمانی hh:mm:ss مهر زمانی لاگ خود گره OpenThread را نشان می‌دهد که ممکن است با زمان شبیه‌سازی مطلق متفاوت باشد.

ضبط بسته‌های وایرشارک

به طور پیش‌فرض، تمام فریم‌های IEEE 802.15.4 منتقل شده در فایل PCAP current.pcap ضبط می‌شوند. این فایل می‌تواند توسط Wireshark در حین یا بعد از شبیه‌سازی خوانده شود. با توجه به رمزگذاری لایه پیوند Thread، یک اقدام پیکربندی یک‌باره در Wireshark برای تنظیم صحیح کلید رمزگشایی برای OTNS مورد نیاز است. به طور پیش‌فرض، از یک کلید شبکه شناخته شده استفاده می‌شود تا رمزگشایی فریم توسط Wireshark آسان شود.

برای مثالی از بازرسی بسته OpenThread در Wireshark، به تصویر زیر مراجعه کنید.

تصویر صفحه تحلیل بسته OpenThread در Wireshark

برای پیکربندی کلید رمزگشایی، از منو Edit -> Preferences را انتخاب کنید. سپس در پنجره تنظیمات، Protocols -> IEEE 802.15.4 را انتخاب کنید. روی دکمه Edit... در کنار "Decryption Keys" کلیک کنید. برای ایجاد یک ورودی جدید، روی + کلیک کنید و کلید 00112233445566778899aabbccddeeff (32 کاراکتر) را وارد کنید و "Thread hash" را در فیلد "Key hash" انتخاب کنید. "Decryption key index" را می‌توان روی 0 تنظیم کرد. سپس روی OK و دوباره OK کلیک کنید. اکنون فایل OTNS PCAP باید هنگام بارگذاری به درستی رمزگشایی شود.

مهرهای زمانی نشان داده شده در ستون "زمان" (به ثانیه) مطابق با مقادیر زمان شبیه‌سازی مطلق نشان داده شده در گزارش‌های گره OpenThread هستند. این امر ارتباط پیام‌های گزارش با فریم‌های رادیویی ارسالی یا دریافتی را آسان‌تر می‌کند. با این حال، مقادیر معمولاً تا دقت یک میکروثانیه یکسان نیستند: سخت‌افزار رادیویی شبیه‌سازی شده IEEE 802.15.4 ممکن است پس از درخواست ارسال یک فریم رادیویی توسط پشته OpenThread، مقداری تأخیر اضافی ایجاد کند.

۱۲. تبریک

تبریک می‌گویم، شما با موفقیت اولین شبیه‌سازی OTNS خود را اجرا کردید!

شما یاد گرفته‌اید که چگونه OTNS و وابستگی‌های آن را نصب کنید. یک شبیه‌سازی OTNS را با گره‌های شبیه‌سازی شده OpenThread شروع کردید. یاد گرفته‌اید که چگونه شبیه‌سازی را به روش‌های مختلف از طریق OTNS-CLI و OTNS-Web دستکاری کنید.

اکنون می‌دانید OTNS چیست و چگونه می‌توانید از OTNS برای شبیه‌سازی شبکه‌های OpenThread استفاده کنید.

بعدش چی؟

به برخی از این آزمایشگاه‌های کد نگاهی بیندازید...

اسناد مرجع