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

এই কোডল্যাব সম্পর্কে
schedule৩০ মিনিট
subject১৫ মে, ২০২৫-এ শেষবার আপডেট করা হয়েছে
account_circleSimon Lin, Colin Tan, Esko Dijk-এর লেখা

1. ভূমিকা

একটি থ্রেড মেশ নেটওয়ার্ক টপোলজির ছাপ

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

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

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

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

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

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

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

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

  • লিনাক্স x86_64, বা হোমব্রু সহ Mac OS। উইন্ডোজ WSL2- এ উবুন্টু 22/24ও কাজ করা উচিত তবে সেটিংসের কিছু ম্যানুয়াল টুইকিংয়ের প্রয়োজন হতে পারে।
  • গিট
  • ওয়েব ব্রাউজার। OTNS-ওয়েব সিমুলেশন প্রদর্শনের জন্য একটি ওয়েব ব্রাউজার ব্যবহার করে।
  • থ্রেড প্রাইমার । এই কোডল্যাবে কী পড়ানো হয় তা বোঝার জন্য আপনাকে থ্রেডের প্রাথমিক ধারণাগুলি জানতে হবে।

পরিভাষা

"রাউটার" শব্দটি থ্রেড মেশ এক্সটেন্ডারের প্রযুক্তিগত শব্দ হিসাবে ব্যবহৃত হয়, যা প্রথমে থ্রেড রাউটার নামে পরিচিত ছিল। "নোড" একটি OTNS সিমুলেশনে যেকোন সিমুলেটেড OpenThread ডিভাইসকে বোঝায়।

2. ইনস্টলেশন

OTNS কোড পান

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

এই কোডল্যাবের পরবর্তী সমস্ত কনসোল কমান্ডগুলি otns ডিরেক্টরি থেকে চালানো হয়।

বুটস্ট্র্যাপ এবং ইনস্টল করুন

bootstrap স্ক্রিপ্ট নির্ভরতা (Python3 এবং Go/Golang সহ, প্রয়োজনে) ইনস্টল করবে এবং OTNS ইনস্টল করবে। এটি বিভিন্ন 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.
$

এই ক্ষেত্রে, আপনাকে আপনার $PATH.$(go env GOPATH)/bin যোগ করতে হবে।

অন্যান্য ত্রুটির ক্ষেত্রে, একটি GitHub সমস্যা তৈরি করা যেতে পারে।

3. প্রথমবার OTNS চালান

otns চালান:

$ otns
>_ ← OTNS-CLI prompt

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

শুরুতে OTNS-ওয়েব উইন্ডো

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

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

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

OTNS-CLI

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

$ otns
>_ ← OTNS-CLI prompt

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

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

OTNS-ওয়েব উপাদান ব্যাখ্যা করা হয়েছে

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

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

সিমুলেশনে একটি থ্রেড রাউটার যোগ করুন:

> add router
1
Done

আপনি OTNS-Web তৈরি একটি নোড দেখতে হবে। নোডটি একটি রাউটার হিসাবে শুরু হয় এবং কয়েক সেকেন্ডের মধ্যে একটি নেতা হয়ে যায়:

নেতার ভূমিকায় এক নোড

ইন্টারেক্টিভভাবে সিমুলেশন শুরু করা সহজ করার জন্য, প্রতিটি নতুন OpenThread নোড ডিফল্টভাবে নেটওয়ার্ক প্যারামিটারের একটি স্ট্যান্ডার্ড সেটের সাথে চালু করা হয়।

OTNS-CLI এর মাধ্যমে আরো নোড যোগ করুন

এখন আমরা বিভিন্ন ধরনের কিছু নোড যোগ করব।

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

নোডগুলি একটি পার্টিশনে একত্রিত হওয়ার জন্য কয়েক সেকেন্ড অপেক্ষা করুন। আপনি OTNS-Web এ নোড দেখতে হবে:

4 নোড সহ থ্রেড নেটওয়ার্ক

এছাড়াও OTNS-Web এ, নোড সম্পর্কে আরও তথ্য সহ একটি প্যানেল পেতে নোডগুলির যেকোনো একটি নির্বাচন করা সম্ভব। উদাহরণস্বরূপ, নীচের চিত্রে নোড 1 নির্বাচন করা হয়েছে। প্যানেলে "ভূমিকা" এন্ট্রি নিশ্চিত করে যে এটি একজন নেতা।

4 নোড সহ থ্রেড নেটওয়ার্ক, নোড 1 নির্বাচন করা হয়েছে

OTNS-Web দ্বারা নোড যোগ করুন

এছাড়াও আপনি OTNS-Web মাধ্যমে নোড যোগ করতে পারেন। Action Bar New Router বোতামে ক্লিক করুন। আপনি নির্বাচিত নোডের ডানদিকে একটি নোড তৈরি করা দেখতে পাবেন। নতুন রাউটার বিদ্যমান থ্রেড পার্টিশনে যোগদান করা উচিত:

একটি রাউটার যোগ করা হয়েছে, মোট 5টি নোড

এছাড়াও এই অন্যান্য ধরনের নোড তৈরি করতে অ্যাকশন বারে FED, MED, SSED এবং BR বোতামে ক্লিক করুন। এখন মোট 9টি নোড হওয়া উচিত। আপনি যদি চান, একটি ভিন্ন শারীরিক নেটওয়ার্ক টপোলজি তৈরি করতে, কিছু নোডকে অন্য অবস্থানে টেনে আনুন।

একাধিক নতুন নোড যোগ করা হয়েছে, মোট 9টি নোড

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

6. গতি সামঞ্জস্য করুন

বর্তমানে, সিমুলেশনটি 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

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

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

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

লিডার নোড 1 সহ থ্রেড নেটওয়ার্ক নির্বাচন করা হয়েছে৷

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

ক্লিক করুন রেডিও অফ বোতাম লিডার নোডের রেডিও বন্ধ করতে অ্যাকশন বারে বোতাম। নেতা রেডিও বন্ধ রেখে বার্তা পাঠাতে বা গ্রহণ করতে পারবেন না।

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

নতুন লিডার হিসাবে নোড 9 দিয়ে নতুন পার্টিশন গঠিত হয়

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

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

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

নোড 1 রেডিও আবার চালু হওয়ার পরে পার্টিশনে যোগ দেয়

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

8. নোড সরান

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

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

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

> move 9 50 50
Done

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

টেনে এনে নোড 5কে নীচে ডানদিকে সরান। যেহেতু নোড 5 এখন অন্যান্য রাউটারের রেডিও কভারেজের বাইরে, এটি একটি নতুন পার্টিশন আইডি দিয়ে নিজস্ব পার্টিশন গঠন করে। নোডগুলিতে ক্লিক করে নোড তথ্য প্যানেলে পার্টিশন আইডি চেক করা যেতে পারে।

নোড 5 অন্য নোড থেকে দূরে সরে যায় এবং একটি নতুন পার্টিশন গঠন করে

মনে রাখবেন যে নোড 5 এবং নোড 9 এর মধ্যে এখনও একটি একক সবুজ রেখা আঁকা আছে। এটি প্রায়শই একটি শিশু সম্পর্কে বাসি তথ্যের কারণে হয়, যা এখনও একজন প্রাক্তন পিতামাতার শিশু টেবিলে রাখা হয়। অথবা এটি নোড 9 এবং নোড 5-এর মধ্যে প্রাক্তন রাউটার-টু-রাউটার লিঙ্ক সম্পর্কে পুরানো তথ্য হতে পারে। (বা সম্ভবত, এই ক্ষেত্রে, এমনকি একটি রেন্ডারিং বাগ।) অবশেষে, উপযুক্ত সময় শেষ হওয়ার পরে নোডগুলিতে বাসি তথ্য পরিষ্কার করা হয়।

9. নোড মুছুন

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

নোড 5 মুছুন:

> del 5
Done

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

নোড 5 সিমুলেশন থেকে মুছে ফেলা হয়েছে

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

বর্ডার রাউটার নোড 9 নির্বাচন করুন এবং ক্লিক করুন মুছুন বোতাম নোড 9 মুছে ফেলার জন্য Action Bar বোতাম:

বর্ডার রাউটার নোড 9 মুছে ফেলা হয়েছে

Node 1 একটি নতুন পার্টিশনের নেতা হওয়া উচিত এবং অবশিষ্ট সমস্ত নোড একটি শিশু হিসাবে নোড 1 এ সংযুক্ত হবে।

10. 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
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 কমান্ড।

11. নোড লগ এবং প্যাকেট ক্যাপচার দেখা

OpenThread নোড লগ

ডিফল্টরূপে, OTNS সমস্ত সিমুলেটেড OpenThread নোডের জন্য বিস্তারিত লগ ফাইল তৈরি করে। এগুলি ./tmp ডিরেক্টরিতে দেখা যেতে পারে। ফাইলের নাম 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 নোডের নিজস্ব লগ টাইমস্ট্যাম্প দেখায়, যা পরম সিমুলেশন সময়ের থেকে আলাদা হতে পারে।

Wireshark প্যাকেট ক্যাপচার

ডিফল্টরূপে, সমস্ত প্রেরিত IEEE 802.15.4 ফ্রেম PCAP ফাইল current.pcap এ ক্যাপচার করা হয়। এই ফাইলটি সিমুলেশনের সময় বা পরে Wireshark দ্বারা পড়তে পারে। থ্রেডের লিঙ্ক-লেয়ার এনক্রিপশনের কারণে, OTNS-এর জন্য ডিক্রিপশন কী সঠিকভাবে সেট করার জন্য Wireshark-এ একটি এককালীন কনফিগারেশন অ্যাকশন প্রয়োজন। ডিফল্টরূপে, একটি সুপরিচিত নেটওয়ার্ক কী ব্যবহার করা হয় যাতে Wireshark দ্বারা ফ্রেম ডিক্রিপশন সহজ করা হয়।

Wireshark-এ OpenThread প্যাকেট পরিদর্শনের উদাহরণের জন্য নীচের স্ক্রিনশটটি দেখুন।

Wireshark-এ OpenThread প্যাকেট বিশ্লেষণের স্ক্রিনশট

ডিক্রিপশন কী কনফিগার করতে, মেনুতে সম্পাদনা -> পছন্দগুলি নির্বাচন করুন। তারপর পছন্দ উইন্ডোতে, প্রোটোকল -> IEEE 802.15.4 নির্বাচন করুন। "ডিক্রিপশন কী" এর পাশে Edit... বোতামে ক্লিক করুন। একটি নতুন এন্ট্রি তৈরি করতে + ক্লিক করুন এবং 00112233445566778899aabbccddeeff (32 অক্ষর) কী লিখুন এবং "কী হ্যাশ" ক্ষেত্রে "থ্রেড হ্যাশ" নির্বাচন করুন। "ডিক্রিপশন কী সূচক" 0 এ ছেড়ে দেওয়া যেতে পারে। তারপর ওকে ক্লিক করুন এবং আবার ঠিক আছে । এখন OTNS PCAP ফাইলটি লোড করার সময় সঠিকভাবে ডিক্রিপ্ট করা উচিত।

"টাইম" কলামে দেখানো টাইমস্ট্যাম্পগুলি (সেকেন্ডে) OpenThread নোড লগগুলিতে দেখানো নিখুঁত সিমুলেশন সময়ের মানগুলির সাথে মিলে যায়৷ এটি প্রেরিত বা প্রাপ্ত রেডিও ফ্রেমের সাথে লগ বার্তাগুলির সাথে সম্পর্ক স্থাপন করা সহজ করে তোলে। যাইহোক, মানগুলি সাধারণত একক মাইক্রোসেকেন্ড নির্ভুলতা পর্যন্ত অভিন্ন নয়: সিমুলেটেড IEEE 802.15.4 রেডিও হার্ডওয়্যার ওপেন থ্রেড স্ট্যাক দ্বারা একটি রেডিও ফ্রেম পাঠানোর অনুরোধ করার পরে কিছু অতিরিক্ত বিলম্ব যোগ করতে পারে।

12. অভিনন্দন

অভিনন্দন, আপনি আপনার প্রথম OTNS সিমুলেশন সফলভাবে সম্পাদন করেছেন!

আপনি শিখেছেন কিভাবে OTNS এবং এর নির্ভরতা ইনস্টল করতে হয়। আপনি OpenThread সিমুলেটেড নোডের সাথে একটি OTNS সিমুলেশন শুরু করেছেন। আপনি শিখেছেন কিভাবে OTNS-CLI এবং OTNS-Web উভয়ের মাধ্যমে বিভিন্ন উপায়ে সিমুলেশনকে ম্যানিপুলেট করতে হয়।

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

এরপর কি?

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

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