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

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

5abd22afa2f2ee9a.png

Thread & OTNS چیست

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

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

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

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

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

این Codelab بر روی OTNS-CLI و OTNS-Web متمرکز شده است. سایر ویژگی های OTNS ، مانند برنامه نویسی پایتون ، پوشش داده نمی شوند.

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

  • Linux x86_64 یا سیستم عامل Mac.
  • گیت
  • برو 1.11+
  • مرورگر اینترنت. OTNS-Web از یک مرورگر وب برای نمایش شبیه سازی استفاده می کند.
  • آغازگر موضوع برای درک آنچه در این Codelab آموزش داده شده است ، باید مفاهیم اساسی Thread را بدانید.

Go را نصب کنید

OTNS برای ساخت به نسخه 1.11+ نیاز دارد.

  1. Go را از https://golang.org/dl/ نصب کنید
  2. $(go env GOPATH)/bin (به طور معمول $HOME/go/bin ) را به $PATH :
$ export PATH=$PATH:$(go env GOPATH)/bin

کد OTNS را دریافت کنید

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

وابستگی ها را نصب کنید

$ ./script/install-deps
grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy

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

otns را نصب کنید

نصب otns در $GOPATH/bin :

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

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

  1. which otns را اجرا کنید تا بررسی کنید آیا otns قابل اجرا در $PATH. قابل جستجو است $PATH.
  2. اگر دستور otns یافت نشد ، بررسی کنید که $(go env GOPATH)/bin به $PATH.

کد OpenThread را از GitHub دریافت کنید

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

OpenThread را با OTNS=1

$ cd ~/src/openthread
$ ./script/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

می توانید اجرایی های OpenThread را در فهرست output پیدا کنید:

لینوکس

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

سیستم عامل مکینتاش

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

اکنون زمان اجرای OTNS فرا رسیده است ...

اجرای otns :

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

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

a0e05178d66929b1.png

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

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

OTNS-CLI

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

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

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

OTNS-Web

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

4c5b43509a2ca0d0.png

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

اضافه کردن یک روتر در موقعیت (300 ، 100)

> add router x 300 y 100
1
Done

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

6ca8c2e63ed9818d.png

گره های بیشتری را از طریق OTNS-CLI

> add fed x 200 y 100
2
Done
> add med x 400 y 100
3
Done
> add sed x 300 y 200
4
Done

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

3ee67903c01aa612.png

گره ها را توسط OTNS-Web

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

420258bb92561146.png

همچنین روی دکمه های FED ، MED و SED در نوار اقدام کلیک کنید تا انواع دیگری از گره ها ایجاد شود. آنها را به موقعیت های نزدیک گره های موجود بکشید تا به شبکه Thread متصل شوند:

fe15d6f9726a099e.png

اکنون یک شبکه 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

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

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

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

می توانید با کلیک کردن روی ، شبیه سازی را سرعت بخشید 39b88331779277ad.png دکمه تا رسیدن سرعت به MAX : f5f460b2586d299b.png .

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

با کلیک بر روی می توانید سرعت شبیه سازی را کاهش دهید 31cca8d5b52fa900.png دکمه.

شبیه سازی مکث کنید

کلیک کنید بر روی 46cc2088c9aa7ab6.png دکمه برای مکث هنگام شبیه سازی. دکمه به تغییر خواهد یافت ce25eda3496ffcd4.png .

از سرگیری شبیه سازی

کلیک کنید بر روی ce25eda3496ffcd4.png دکمه برای از سرگیری شبیه سازی در هنگام مکث. دکمه دوباره به تغییر خواهد یافت 46cc2088c9aa7ab6.png .

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

به منظور صرفه جویی در وقت ، استفاده کنید

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

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

> speed 10
Done

اکنون ، شبیه سازی باید شامل 2 روتر (به شکل شش ضلعی) و بسیاری از کودکان باشد و با سرعت 10 برابر اجرا شود.

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

8c6a2e191cdae0c7.png

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

کلیک کنید بر روی 7ca085f470491dd4.png دکمه نوار اقدام برای خاموش کردن رادیوی گره Leader:

a3bf58d9d125f95f.png

رهبر قادر به ارسال یا دریافت پیام با رادیو خاموش نخواهد بود.

حدود 12s صبر کنید (120s در زمان شبیه سازی) تا Router دیگر به رهبر جدید تبدیل شود:

e3d32f85c4a1b990.png

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

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

رهبری را که رادیو آن خاموش است انتخاب کنید. کلیک کنید بر روی 2d9cecb8612b42aa.png دکمه Action Bar برای بازیابی اتصال رادیویی:

7370a7841861aa3a.png

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

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

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

گره 5 را به مکان جدیدی منتقل کنید:

> move 5 600 300
Done

از آنجا که گره 5 از روتر دیگر فاصله دارد ، بنابراین آنها باید ارتباط خود را با یکدیگر از دست دهند و پس از حدود 12 ثانیه (120s در زمان شبیه سازی) هر دو رهبر پارتیشن خود می شوند:

c06b4d0a4f183299.png

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

با کشیدن گره 5 را به محل اصلی برگردانید. دو پارتیشن باید دوباره به یک پارتیشن ادغام شوند:

9ba305c4c5a5f892.png

گره ها را از طریق OTNS-CLI

حذف گره 8:

> del 8
Done

گره 8 باید از شبیه سازی ناپدید شود:

18156770d9f8bf83.png

گره ها را از طریق OTNS-Web

گره 5 را انتخاب کرده و بر روی آن کلیک کنید 7ff6afd565f4eafc.png دکمه Action Bar برای حذف گره 5:

d4079cceea0105f0.png

Node 1 باید Leader شود و Node 7 باید جدا شود زیرا نمی تواند به هیچ روتری برسد.

پاک کردن شبیه سازی (حذف همه گره ها)

با حذف همه گره ها از طریق OTNS-Web می توانید شبیه سازی را پاک کنید.

کلیک 89618191721e79a0.png دکمه روی Action Bar. همه گره ها به یک باره ناپدید می شوند.

قبل از ادامه ...

برخی از گره ها را توسط خودتان به شبیه سازی اضافه کنید تا بتوانید در این آموزش ادامه دهید.

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

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

زمینه گره گره 1 را وارد کنید:

> 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
OpenThread
Done
node 1> ipaddr
fdde:ad00:beef:0:0:ff:fe00:fc00
fdde:ad00:beef:0:0:ff:fe00:d800
fdde:ad00:beef:0:2175:8a67:1000:6352
fe80:0:0:0:2075:82c2:e9e9:781d
Done

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

node 1> node 2
Done
node 2> 

از متن گره خارج شوید

node 1> exit
Done
>

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

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

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

بعدی چیست؟

برخی از این Codelabs را بررسی کنید ...

اسناد مرجع