1. مقدمه
Thread & OTNS چیست
Thread یک پروتکل شبکه بی سیم کم مصرف مبتنی بر IP است که ارتباطات دستگاه به دستگاه و دستگاه به ابر را ایمن می کند. شبکه های نخ می توانند با تغییرات توپولوژی سازگار شوند تا از یک نقطه شکست جلوگیری کنند.
OpenThread منتشر شده توسط گوگل یک پیاده سازی منبع باز Thread است. OpenThread علیرغم اندازه کد کوچک و ردپای حافظه اش، از تمام ویژگی های تعریف شده در Thread Specification پشتیبانی می کند.
از OpenThread Network Simulator (OTNS) می توان برای شبیه سازی شبکه های Thread با اجرای گره های OpenThread شبیه سازی شده بر روی پلتفرم های posix استفاده کرد. OTNS یک رابط وب با کاربری آسان (OTNS-Web) برای تجسم و عملکرد شبکه های Thread شبیه سازی شده فراهم می کند.
چیزی که یاد خواهید گرفت
- OTNS و وابستگی های آن را نصب کنید
- OpenThread برای OTNS بسازید
- نحوه افزودن/انتقال/حذف گره ها در OTNS-Web
- از دیگر ویژگی های مفید OTNS-Web برای اجرای شبیه سازی شبکه استفاده کنید
- عدم وجود یک نقطه شکست OpenThread را تأیید کنید
این کد لبه روی OTNS-CLI و OTNS-Web متمرکز شده است. سایر ویژگیهای OTNS، مانند برنامهنویسی پایتون، پوشش داده نمیشوند.
آنچه شما نیاز دارید
2. نصب و راه اندازی
Go را نصب کنید
OTNS برای ساخت به Go 1.13+ نیاز دارد.
- Go را از https://golang.org/dl/ نصب کنید
-
$(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
Dependencies را نصب کنید
$ ./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
به درستی نصب شده است یا خیر
-
which otns
اجرا کنید تا بررسی کنید که آیا فایل اجراییotns
در$PATH.
- اگر دستور
otns
پیدا نشد، بررسی کنید که$(go env GOPATH)/bin
به$PATH.
3. OpenThread را برای OTNS بسازید
کد OpenThread را از GitHub دریافت کنید
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
OpenThread را با OTNS=1
بسازید
$ cd ~/src/openthread $ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
می توانید فایل های اجرایی OpenThread را در دایرکتوری build
پیدا کنید:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
اکنون زمان اجرای OTNS است...
4. OTNS را اجرا کنید
otns
را اجرا کنید:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
هنگامی که با موفقیت شروع شد، OTNS وارد یک کنسول CLI ( OTNS-CLI
) می شود و یک مرورگر وب را برای تجسم و مدیریت شبکه راه اندازی می کند ( OTNS-Web
):
اگر فقط می توانید یک صفحه خالی برای OTNS-Web ببینید، به احتمال زیاد WebGL در مرورگر شما فعال نیست. لطفاً در مورد نحوه فعال کردن WebGL به https://superuser.com/a/836833 مراجعه کنید.
در بخشهای بعدی، مدیریت شبیهسازیهای OTNS را از طریق OTNS-CLI
و OTNS-Web
یاد خواهید گرفت.
5. OTNS-CLI و OTNS-Web را بشناسید
OTNS-CLI
OTNS-CLI
یک رابط خط فرمان (CLI) برای مدیریت شبیه سازی های OTNS فراهم می کند.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
می توانید دستورات را از طریق OTNS-CLI
تایپ کنید. برای لیست کامل دستورات به مرجع OTNS CLI مراجعه کنید. نگران نباشید، شما فقط از تعدادی از این دستورات در این Codelab استفاده می کنید.
OTNS-Web
OTNS-Web
ابزار تجسم و مدیریت شبکه OTNS است. این یک نمایش بصری از گره ها، پیام ها و پیوندهای شبکه Thread شبیه سازی شده را ارائه می دهد. به عناصر مختلف OTNS-Web
توجه کنید:
6. گره ها را اضافه کنید
اضافه کردن گره ها از طریق OTNS-CLI
اضافه کردن یک روتر در موقعیت (300، 100)
> add router x 300 y 100 1 Done
شما باید یک گره ایجاد شده در OTNS-Web
را ببینید. گره به عنوان یک روتر شروع می شود و در چند ثانیه به یک رهبر تبدیل می شود:
گره های بیشتری را از طریق 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
ببینید:
اضافه کردن گره توسط OTNS-Web
شما همچنین می توانید گره ها را از طریق OTNS-Web
اضافه کنید. روی دکمه New Router
در Action Bar
کلیک کنید. باید ببینید که یک گره درست بالای دکمه New Router
ایجاد می شود. گره را بکشید تا نزدیک Leader باشد که از طریق OTNS-CLI
ایجاد کردهاید. تمام گره ها باید در نهایت در یک پارتیشن ادغام شوند:
همچنین روی دکمه های FED، MED و SED در Action Bar کلیک کنید تا انواع دیگر گره ها ایجاد شود. آنها را به موقعیت های نزدیک گره های موجود بکشید تا به آن شبکه Thread متصل شوند:
اکنون یک شبکه Thread از یک پارتیشن ایجاد کرده اید که شامل گره های زیادی است. در قسمت بعدی قصد داریم سرعت شبیه سازی را تنظیم کنیم تا شبیه سازی سریعتر اجرا شود.
7. تنظیم سرعت
در حال حاضر، شبیه سازی باید با سرعت 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
برسد: .
کاهش سرعت شبیه سازی
شما می توانید با کلیک کردن بر روی آن سرعت شبیه سازی را کاهش دهید دکمه
شبیه سازی مکث
را کلیک کنید دکمه توقف شبیه سازی در هنگام اجرا. دکمه به تغییر خواهد کرد .
از سرگیری شبیه سازی
را کلیک کنید دکمه برای از سرگیری شبیه سازی در صورت توقف. دکمه به تغییر خواهد کرد .
سرعت شبیه سازی را روی 10X
تنظیم کنید
به منظور صرفه جویی در زمان، استفاده کنید
OTNS-CLI
برای تنظیم سرعت شبیه سازی
10X
تا بتوانیم تغییرات توپولوژی را در شبکه بسیار سریعتر مشاهده کنیم.
> speed 10 Done
8. رادیو را روشن/خاموش کنید
در حال حاضر، شبیه سازی باید شامل 2 روتر (شکل شش ضلعی) و تعداد زیادی کودک باشد و با سرعت 10X اجرا شود.
لیدر فعلی (حاشیه قرمز) 2 روتر را پیدا کنید، برای انتخاب آن تنها کلیک کنید:
رادیو را خاموش کنید
را کلیک کنید دکمه روی Action Bar برای خاموش کردن رادیو گره Leader:
رهبر نمی تواند با رادیو خاموش پیام ارسال یا دریافت کند.
حدود 12 ثانیه (120 ثانیه در زمان شبیه سازی) صبر کنید تا روتر دیگر رهبر جدید شود:
شبکه Thread با ایجاد یک پارتیشن جدید با یک Leader به طور خودکار از شکست Leader بازیابی می شود. پارتیشن جدید یک رنگ پارتیشن جدید نیز دارد.
رادیو را روشن کنید
لیدری که رادیو آن خاموش است را انتخاب کنید. را کلیک کنید دکمه روی Action Bar
برای بازیابی اتصال رادیویی:
رهبر باید پس از بازیابی اتصال رادیویی دوباره به شبکه متصل شود.
9. گره ها را جابجا کنید
OTNS کاربران را قادر می سازد تا گره ها را به راحتی از طریق OTNS-CLI
یا OTNS-Web
جابجا کنند.
گره را از طریق OTNS-CLI
منتقل کنید
گره 5 را به مکان جدید منتقل کنید:
> move 5 600 300 Done
از آنجایی که اکنون گره 5 از روتر دیگر دور است، باید اتصال خود را به یکدیگر از دست بدهند و پس از حدود 12 ثانیه (120 ثانیه در زمان شبیه سازی) هر دو رهبر پارتیشن خود می شوند:
گره را از طریق OTNS-Web منتقل کنید
گره 5 را با کشیدن به محل اصلی برگردانید. دو پارتیشن باید دوباره در یک پارتیشن ادغام شوند:
10. گره ها را حذف کنید
حذف گره ها از طریق OTNS-CLI
حذف گره 8:
> del 8 Done
گره 8 باید از شبیه سازی ناپدید شود:
حذف گره ها از طریق OTNS-Web
گره 5 را انتخاب کرده و روی آن کلیک کنید دکمه روی Action Bar
برای حذف گره 5:
Node 1
باید به لیدر تبدیل شود و Node 7
باید جدا شود زیرا نمی تواند به هیچ روتری دسترسی پیدا کند.
پاک کردن شبیه سازی (حذف تمام گره ها)
شما می توانید شبیه سازی را با حذف تمام گره ها از طریق OTNS-Web
پاک کنید.
کلیک کنید دکمه روی Action Bar.
همه گره ها به یکباره ناپدید می شوند.
قبل از ادامه...
تعدادی گره را خودتان به شبیه سازی اضافه کنید تا بتوانید در این آموزش ادامه دهید.
11. زمینه گره OTNS-CLI
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 >
12. تبریک می گویم
تبریک میگوییم، شما اولین شبیهسازی OTNS خود را با موفقیت اجرا کردید!
شما یاد گرفته اید که چگونه OTNS و وابستگی های آن را نصب کنید. شما OpenThread را برای OTNS ساختید و شبیه سازی OTNS را با نمونه های شبیه سازی OpenThread شروع کردید. شما یاد گرفته اید که چگونه شبیه سازی را به روش های مختلف از طریق OTNS-CLI
و OTNS-Web
دستکاری کنید.
اکنون می دانید OTNS چیست و چگونه می توانید از OTNS برای شبیه سازی شبکه های OpenThread استفاده کنید.
بعدش چی؟
برخی از این کدها را بررسی کنید...
- شبیه سازی شبکه Thread با OpenThread
- شبیه سازی شبکه Thread با استفاده از OpenThread در Docker
- با بردهای nRF52840 و OpenThread یک شبکه Thread بسازید