OTNS ব্যবহার করে থ্রেড নেটওয়ার্ক অনুকরণ করুন

1. ভূমিকা

5abd22afa2f2ee9a.png

থ্রেড এবং ওটিএনএস কি

থ্রেড হল একটি আইপি-ভিত্তিক লো-পাওয়ার ওয়্যারলেস মেশ নেটওয়ার্কিং প্রোটোকল যা সুরক্ষিত ডিভাইস-টু-ডিভাইস এবং ডিভাইস-টু-ক্লাউড যোগাযোগ সক্ষম করে। থ্রেড নেটওয়ার্ক ব্যর্থতার একক পয়েন্ট এড়াতে টপোলজি পরিবর্তনের সাথে মানিয়ে নিতে পারে।

Google দ্বারা প্রকাশিত OpenThread হল থ্রেডের একটি ওপেন-সোর্স বাস্তবায়ন। এর ছোট কোড আকার এবং মেমরির পদচিহ্ন থাকা সত্ত্বেও, OpenThread থ্রেড স্পেসিফিকেশনে সংজ্ঞায়িত সমস্ত বৈশিষ্ট্য সমর্থন করে।

ওপেনথ্রেড নেটওয়ার্ক সিমুলেটর (OTNS) পজিক্স প্ল্যাটফর্মে সিমুলেটেড ওপেন থ্রেড নোড চালানোর মাধ্যমে থ্রেড নেটওয়ার্ক অনুকরণ করতে ব্যবহার করা যেতে পারে। OTNS একটি সহজে ব্যবহারযোগ্য ওয়েব ইন্টারফেস (OTNS-Web) প্রদান করে সিমুলেটেড থ্রেড নেটওয়ার্কগুলিকে ভিজ্যুয়ালাইজ এবং পরিচালনা করার জন্য।

আপনি কি শিখবেন

  • OTNS এবং এর নির্ভরতা ইনস্টল করুন
  • OTNS এর জন্য OpenThread তৈরি করুন
  • কিভাবে OTNS-ওয়েবে নোড যোগ/সরানো/মুছে ফেলা যায়
  • নেটওয়ার্ক সিমুলেশন পরিচালনা করতে OTNS-ওয়েবের অন্যান্য দরকারী বৈশিষ্ট্যগুলি ব্যবহার করুন৷
  • OpenThread-এর নো-সিঙ্গেল-পয়েন্ট-অফ-ফেইলার যাচাই করুন

এই কোডল্যাবটি OTNS-CLI এবং OTNS-ওয়েবের উপর দৃষ্টি নিবদ্ধ করে। OTNS এর অন্যান্য বৈশিষ্ট্য, যেমন পাইথন স্ক্রিপ্টিং, কভার করা হয় না।

আপনি কি প্রয়োজন হবে

  • Linux x86_64 বা Mac OS।
  • গিট
  • 1.13+ যান
  • ওয়েব ব্রাউজার। OTNS-ওয়েব সিমুলেশন প্রদর্শনের জন্য একটি ওয়েব ব্রাউজার ব্যবহার করে।
  • থ্রেড প্রাইমার । এই কোডল্যাবে কী পড়ানো হয় তা বোঝার জন্য আপনাকে থ্রেডের প্রাথমিক ধারণাগুলি জানতে হবে।

2. ইনস্টলেশন

Go ইনস্টল করুন

OTNS নির্মাণের জন্য Go 1.13+ প্রয়োজন।

  1. https://golang.org/dl/ থেকে Go ইনস্টল করুন
  2. $PATH$(go env GOPATH)/bin (সাধারণত $HOME/go/bin ) যোগ করুন :
$ 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 ইনস্টল করুন

$GOPATH/binotns ইনস্টল করুন:

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

otns সঠিকভাবে ইনস্টল করা আছে কিনা তা পরীক্ষা করা যাক

  1. $PATH.otns এক্সিকিউটেবল অনুসন্ধানযোগ্য কিনা তা পরীক্ষা করতে which otns চালান।
  2. যদি otns কমান্ড না পাওয়া যায়, তাহলে যাচাই করুন যে আপনি $PATH.$(go env GOPATH)/bin যোগ করেছেন।

3. OTNS-এর জন্য OpenThread তৈরি করুন

GitHub থেকে OpenThread কোড পান

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

OTNS=1 দিয়ে OpenThread তৈরি করুন

$ 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

আপনি build ডিরেক্টরিতে OpenThread এক্সিকিউটেবলগুলি খুঁজে পেতে পারেন:

$ ls ~/src/openthread/build/simulation/examples/apps/cli/
ot-cli-ftd        ot-cli-mtd        ot-cli-radio

এখন ওটিএনএস চালানোর পালা...

4. OTNS চালান

otns চালান:

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

সফলভাবে শুরু হলে, OTNS একটি CLI কনসোলে প্রবেশ করবে ( OTNS-CLI ) এবং নেটওয়ার্ক ভিজ্যুয়ালাইজেশন এবং পরিচালনার জন্য একটি ওয়েব ব্রাউজার চালু করবে ( OTNS-Web ):

a0e05178d66929b1.png

আপনি যদি OTNS-Web-এর জন্য শুধুমাত্র একটি ফাঁকা পৃষ্ঠা দেখতে পান, তাহলে আপনার ব্রাউজারে WebGL সক্ষম না হওয়ার সম্ভাবনা রয়েছে৷ WebGL কিভাবে সক্ষম করবেন তার জন্য দয়া করে https://superuser.com/a/836833 দেখুন

নিম্নলিখিত বিভাগে, আপনি OTNS-CLI এবং OTNS-Web মাধ্যমে OTNS সিমুলেশন পরিচালনা করতে শিখতে যাচ্ছেন।

5. OTNS-CLI এবং OTNS-ওয়েব জানুন

OTNS-CLI

OTNS-CLI OTNS সিমুলেশন পরিচালনার জন্য একটি কমান্ড লাইন ইন্টারফেস (CLI) প্রদান করে।

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

আপনি OTNS-CLI এর মাধ্যমে কমান্ড টাইপ করতে পারেন। কমান্ডের সম্পূর্ণ তালিকার জন্য OTNS CLI রেফারেন্স পড়ুন। চিন্তা করবেন না, আপনি এই কোডল্যাবে শুধুমাত্র কয়েকটি কমান্ড ব্যবহার করতে যাচ্ছেন।

OTNS-ওয়েব

OTNS-Web হল OTNS এর নেটওয়ার্ক ভিজ্যুয়ালাইজেশন এবং ম্যানেজমেন্ট টুল। এটি সিমুলেটেড থ্রেড নেটওয়ার্কের নোড, বার্তা এবং লিঙ্কগুলির একটি চাক্ষুষ উপস্থাপনা প্রদান করে। OTNS-Web এর বিভিন্ন উপাদান নোট করুন:

4c5b43509a2ca0d0.png

6. নোড যোগ করুন

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 এর মাধ্যমে নোড যোগ করতে পারেন। Action Bar New Router বোতামে ক্লিক করুন। আপনি দেখতে পাবেন যে New Router বোতামের উপরে একটি নোড তৈরি হচ্ছে। OTNS-CLI এর মাধ্যমে আপনার তৈরি লিডারের কাছে নোডটি টেনে আনুন। সমস্ত নোডগুলি অবশেষে একটি পার্টিশনে একত্রিত হওয়া উচিত:

420258bb92561146.png

এছাড়াও অন্যান্য ধরনের নোড তৈরি করতে অ্যাকশন বারে FED, MED এবং SED বোতামে ক্লিক করুন। থ্রেড নেটওয়ার্কের সাথে সংযুক্ত করতে তাদের বিদ্যমান নোডের কাছাকাছি অবস্থানে টেনে আনুন:

fe15d6f9726a099e.png

এখন আপনি একটি পার্টিশনের একটি থ্রেড নেটওয়ার্ক তৈরি করেছেন যাতে অনেকগুলি নোড রয়েছে। পরবর্তী বিভাগে, আমরা সিমুলেশনটি দ্রুত চালানোর জন্য সিমুলেটিং গতি সামঞ্জস্য করতে যাচ্ছি।

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 মাধ্যমে গতি সামঞ্জস্য করুন

গতি নিয়ন্ত্রণ বোতাম

গতি নিয়ন্ত্রণ বোতাম খুঁজুন 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

8. রেডিও চালু/বন্ধ করুন

এখন, সিমুলেশনে 2টি রাউটার (ষড়ভুজ আকৃতি) এবং অনেক শিশু থাকা উচিত এবং 10X গতিতে চলে।

2টি রাউটারের বর্তমান লিডার (লাল সীমানা) খুঁজুন, এটি নির্বাচন করতে একক ক্লিক করুন:

8c6a2e191cdae0c7.png

রেডিও বন্ধ করুন

ক্লিক করুন 7ca085f470491dd4.png লিডার নোডের রেডিও বন্ধ করতে অ্যাকশন বারে বোতাম:

a3bf58d9d125f95f.png

নেতা রেডিও বন্ধ রেখে বার্তা পাঠাতে বা গ্রহণ করতে পারবেন না।

অন্য রাউটার নতুন নেতা হওয়ার জন্য প্রায় 12 সেকেন্ড (সিমুলেটিং টাইমে 120 সেকেন্ড) অপেক্ষা করুন:

e3d32f85c4a1b990.png

থ্রেড নেটওয়ার্ক একটি নতুন লিডারের সাথে একটি নতুন পার্টিশন তৈরি করে স্বয়ংক্রিয়ভাবে লিডার ব্যর্থতা থেকে পুনরুদ্ধার করে। নতুন পার্টিশনে একটি নতুন পার্টিশন রঙও রয়েছে।

রেডিও চালু করুন

যে নেতার রেডিও বন্ধ ছিল তাকে নির্বাচন করুন। ক্লিক করুন 2d9cecb8612b42aa.png রেডিও সংযোগ পুনরুদ্ধার করতে Action Bar বোতাম:

7370a7841861aa3a.png

রেডিও সংযোগ পুনরুদ্ধার করার পরে নেতাকে নেটওয়ার্কে পুনরায় সংযুক্ত করা উচিত।

9. নোড সরান

OTNS ব্যবহারকারীদের OTNS-CLI বা OTNS-Web মাধ্যমে সহজেই নোডগুলি সরাতে সক্ষম করে৷

OTNS-CLI এর মাধ্যমে নোড সরান

একটি নতুন অবস্থানে নোড 5 সরান:

> move 5 600 300
Done

যেহেতু এখন নোড 5 অন্য রাউটার থেকে অনেক দূরে, তাদের একে অপরের সাথে সংযোগ হারানো উচিত এবং প্রায় 12 সেকেন্ডের পরে (সিমুলেটিং টাইমে 120) উভয়ই তাদের নিজস্ব পার্টিশনের নেতা হয়ে ওঠে:

c06b4d0a4f183299.png

OTNS-ওয়েবের মাধ্যমে নোড সরান

টেনে এনে নোড 5 কে আসল অবস্থানে নিয়ে যান। দুটি পার্টিশন আবার একটি পার্টিশনে একত্রিত হওয়া উচিত:

9ba305c4c5a5f892.png

10. নোড মুছুন

OTNS-CLI এর মাধ্যমে নোড মুছুন

নোড 8 মুছুন:

> del 8
Done

নোড 8 সিমুলেশন থেকে অদৃশ্য হওয়া উচিত:

18156770d9f8bf83.png

OTNS-Web মাধ্যমে নোড মুছুন

নোড 5 নির্বাচন করুন এবং ক্লিক করুন 7ff6afd565f4eafc.png নোড 5 মুছে ফেলার জন্য Action Bar বোতাম:

d4079cceea0105f0.png

Node 1 নেতা হওয়া উচিত এবং Node 7 বিচ্ছিন্ন হওয়া উচিত কারণ এটি কোনও রাউটারে পৌঁছাতে পারে না।

সিমুলেশন সাফ করুন (সমস্ত নোড মুছুন)

আপনি OTNS-Web এর মাধ্যমে সমস্ত নোড মুছে সিমুলেশন সাফ করতে পারেন।

ক্লিক করুন 89618191721e79a0.png 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 এবং এর নির্ভরতা ইনস্টল করতে হয়। আপনি OTNS এর জন্য OpenThread তৈরি করেছেন এবং OpenThread সিমুলেশন দৃষ্টান্ত সহ OTNS সিমুলেশন শুরু করেছেন। আপনি শিখেছেন কিভাবে OTNS-CLI এবং OTNS-Web উভয়ের মাধ্যমে বিভিন্ন উপায়ে সিমুলেশনকে ম্যানিপুলেট করতে হয়।

আপনি এখন জানেন OTNS কি এবং কিভাবে আপনি OpenThread নেটওয়ার্ক অনুকরণ করতে OTNS ব্যবহার করতে পারেন।

এরপর কি?

এই কোডল্যাবগুলির কিছু পরীক্ষা করে দেখুন...

রেফারেন্স ডক্স