1. ভূমিকা

থ্রেড এবং ওটিএনএস কী?
থ্রেড হল একটি আইপি-ভিত্তিক লো-পাওয়ার ওয়্যারলেস মেশ নেটওয়ার্কিং প্রোটোকল যা ডিভাইস-টু-ডিভাইস এবং ডিভাইস-টু-ক্লাউড যোগাযোগকে সুরক্ষিত করে। থ্রেড নেটওয়ার্কগুলি একক ব্যর্থতা এড়াতে টপোলজি পরিবর্তনের সাথে খাপ খাইয়ে নিতে পারে।
গুগল কর্তৃক প্রকাশিত ওপেনথ্রেড হল থ্রেডের একটি ওপেন-সোর্স বাস্তবায়ন। এর ছোট কোড আকার এবং মেমোরি ফুটপ্রিন্ট সত্ত্বেও, ওপেনথ্রেড থ্রেড স্পেসিফিকেশনে সংজ্ঞায়িত সমস্ত বৈশিষ্ট্য সমর্থন করে।
ওপেনথ্রেড নেটওয়ার্ক সিমুলেটর (OTNS) পজিক্স প্ল্যাটফর্মে সিমুলেটেড ওপেনথ্রেড নোড চালিয়ে থ্রেড নেটওয়ার্ক সিমুলেশন করতে ব্যবহার করা যেতে পারে। সিমুলেটেড থ্রেড নেটওয়ার্কগুলি ভিজ্যুয়ালাইজ এবং পরিচালনা করার জন্য OTNS একটি সহজে ব্যবহারযোগ্য ওয়েব ইন্টারফেস (OTNS-ওয়েব) প্রদান করে। স্ক্রিপ্টেড সিমুলেশন (পাইথন সহ)ও সম্ভব।
তুমি কি শিখবে
- OTNS এবং এর নির্ভরতা ইনস্টল করুন
- OTNS-CLI এর মূল বিষয়গুলি জানুন
- OTNS-Web-এ OpenThread নোডগুলি কীভাবে যোগ/সরানো/মুছে ফেলা যায়
- নেটওয়ার্ক সিমুলেশন নিয়ন্ত্রণ করতে OTNS-Web এর অন্যান্য দরকারী বৈশিষ্ট্যগুলি ব্যবহার করুন
- OpenThread এর নো-সিঙ্গেল-পয়েন্ট-অফ-ফেইলুর যাচাই করুন
- Wireshark-এ OpenThread নোডের মধ্যে ডেটা ট্র্যাফিক দেখুন
এই কোডল্যাবটি ইন্টারেক্টিভ ব্যবহারের জন্য OTNS-CLI এবং OTNS-Web-এর উপর দৃষ্টি নিবদ্ধ করে। OTNS-এর অন্যান্য বৈশিষ্ট্য, যেমন পাইথন স্ক্রিপ্টিং, এর আওতায় পড়ে না।
তোমার যা লাগবে
- থ্রেড প্রাইমার । এই কোডল্যাবে কী শেখানো হচ্ছে তা বোঝার জন্য আপনাকে থ্রেডের মৌলিক ধারণাগুলি জানতে হবে।
- Linux x86_64, অথবা Homebrew সহ Mac OS ব্যবহার করা ভালো। Windows WSL2- তে উবুন্টু সংস্করণ 24 বা তার উচ্চতর সংস্করণও কাজ করবে তবে সেটিংসের কিছু ম্যানুয়াল পরিবর্তনের প্রয়োজন হতে পারে।
- গিট ।
- ওয়েব ব্রাউজার। OTNS-ওয়েব সিমুলেশন প্রদর্শনের জন্য একটি ওয়েব ব্রাউজার ব্যবহার করে।
- ওয়্যারশার্ক নেটওয়ার্ক প্রোটোকল বিশ্লেষক (ঐচ্ছিক)।
- ১.২৩ বা তার বেশি সংস্করণে যান ।
- ইনস্টলেশন স্ক্রিপ্টটি ইনস্টল করা Go সংস্করণটি পরীক্ষা করবে।
- যদি Go ইনস্টল না করা থাকে, তাহলে প্যাকেজ ম্যানেজার থেকে পাওয়া গেলে এটি >= 1.23 সংস্করণ ইনস্টল করবে।
- প্যাকেজ ম্যানেজার থেকে যদি না পাওয়া যায়, তাহলে ম্যানুয়াল ইনস্টলেশন প্রয়োজন।
- মনে রাখবেন যে উবুন্টু 24.04 বা তার নিচের সংস্করণগুলি স্বয়ংক্রিয়ভাবে Go 1.23 সমর্থন করে না। বিস্তারিত জানার জন্য উবুন্টু ডকুমেন্টেশনে উপলব্ধ গোল্যাং সংস্করণ পৃষ্ঠাটি দেখুন।
snapব্যবহার করে বা অন্যান্য পদ্ধতি ব্যবহার করে ম্যানুয়াল ইনস্টলেশন সম্ভব।
- পাইথন সংস্করণ ৩.৯ বা তার বেশি।
- ইনস্টলেশন স্ক্রিপ্টটি ইনস্টল করা পাইথন সংস্করণটি পরীক্ষা করবে।
- যদি পাইথন 3 এখনও ইনস্টল না করা থাকে, তাহলে প্যাকেজ ম্যানেজার থেকে পাওয়া গেলে এটি >= 3.9 সংস্করণ ইনস্টল করবে।
- প্যাকেজ ম্যানেজার থেকে যদি না পাওয়া যায়, তাহলে ম্যানুয়াল ইনস্টলেশন প্রয়োজন।
পরিভাষা
"রাউটার" শব্দটি থ্রেড মেশ এক্সটেন্ডারের কারিগরি শব্দ হিসেবে ব্যবহৃত হয়, যা প্রথমে থ্রেড রাউটার নামে পরিচিত ছিল। "নোড" বলতে OTNS সিমুলেশনে যেকোনো সিমুলেটেড ওপেনথ্রেড ডিভাইসকে বোঝায়।
2. ইনস্টলেশন
OTNS কোড পান
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
এই কোডল্যাবের পরবর্তী সমস্ত কনসোল কমান্ড otns ডিরেক্টরি থেকে চালানো হয়।
বুটস্ট্র্যাপ এবং ইনস্টল করুন
bootstrap স্ক্রিপ্ট নির্ভরতা ইনস্টল করবে (প্রয়োজনে Python 3 এবং Go/Golang সহ) এবং OTNS ইনস্টল করবে। মনে রাখবেন যে স্ক্রিপ্টটি যদি নির্দিষ্ট নির্ভরতা, যেমন Python version >= 3.9 অথবা Go version >= 1.23, স্বয়ংক্রিয়ভাবে ইনস্টল করতে না পারে তবে এটি বন্ধ হয়ে যেতে পারে। স্বয়ংক্রিয় ইনস্টলেশনের জন্য প্যাকেজগুলি অপারেটিং সিস্টেমের কনফিগার করা প্যাকেজ সংগ্রহস্থলে পাওয়া যেতে পারে।
স্ক্রিপ্টটি বিভিন্ন 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 সমস্যা তৈরি হতে পারে।
৩. প্রথমবারের মতো OTNS চালান
otns চালান:
$ otns >_ ← OTNS-CLI prompt
সফলভাবে শুরু হলে, OTNS একটি CLI কনসোলে ( OTNS-CLI ) প্রবেশ করবে এবং নেটওয়ার্ক ভিজ্যুয়ালাইজেশন এবং পরিচালনার জন্য একটি ওয়েব ব্রাউজার চালু করবে ( OTNS-Web ):

যদি আপনি OTNS-Web এর জন্য শুধুমাত্র একটি ফাঁকা পৃষ্ঠা দেখতে পান, তাহলে সম্ভবত আপনার ব্রাউজারে WebGL সক্রিয় নেই। WebGL কীভাবে সক্ষম করবেন তা জানতে দয়া করে https://superuser.com/a/836833 দেখুন।
নিম্নলিখিত বিভাগগুলিতে, আপনি OTNS-CLI এবং OTNS-Web মাধ্যমে OTNS সিমুলেশন পরিচালনা করতে শিখবেন।
৪. 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-CLI এর মাধ্যমে নোড যোগ করুন
সিমুলেশনে একটি থ্রেড রাউটার যোগ করুন:
> add router 1 Done
আপনি OTNS-Web এ একটি নোড তৈরি দেখতে পাবেন। নোডটি রাউটার হিসেবে শুরু হয় এবং কয়েক সেকেন্ডের মধ্যে লিডার হয়ে যায়:

ইন্টারেক্টিভভাবে সিমুলেশন শুরু করা সহজ করার জন্য, প্রতিটি নতুন ওপেনথ্রেড নোড ডিফল্টভাবে নেটওয়ার্ক প্যারামিটারের একটি স্ট্যান্ডার্ড সেট দিয়ে কমিশন করা হয়।
OTNS-CLI এর মাধ্যমে আরও নোড যোগ করুন
এখন আমরা বিভিন্ন ধরণের কিছু নোড যোগ করব।
> add fed 2 Done > add med 3 Done > add sed 4 Done
নোডগুলি একটি পার্টিশনে একত্রিত হওয়ার জন্য কয়েক সেকেন্ড অপেক্ষা করুন। আপনি OTNS-Web এ নোডগুলি দেখতে পাবেন:

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

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

এই অন্যান্য ধরণের নোড তৈরি করতে অ্যাকশন বারের FED, MED, SSED এবং BR বোতামগুলিতে ক্লিক করুন। এখন মোট 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 না পৌঁছানো পর্যন্ত বোতামটি টিপুন:
.
ধীর গতির সিমুলেশন
আপনি ক্লিক করে সিমুলেশনটি ধীর করতে পারেন
বোতাম।
সিমুলেশন বিরতি দিন
ক্লিক করুন
সিমুলেশনটি চলাকালীন থামানোর জন্য বোতাম। বোতামটি পরিবর্তন করা হবে
.
রিজিউম সিমুলেশন
ক্লিক করুন
সিমুলেশনটি পজ করা হলে পুনরায় চালু করার জন্য বোতাম। বোতামটি আবার পরিবর্তন করা হবে
.
সিমুলেটিং গতি 10X এ সেট করুন
সময় বাঁচাতে, ব্যবহার করুন
সিমুলেটিং গতি সামঞ্জস্য করতে OTNS-CLI
10X যাতে আমরা নেটওয়ার্কে টপোলজির পরিবর্তনগুলি আরও দ্রুত পর্যবেক্ষণ করতে পারি।
> speed 10 Done
৭. রেডিও চালু/বন্ধ করুন
এখন, সিমুলেশনটিতে কমপক্ষে ২টি রাউটার (ষড়ভুজ আকৃতির), সম্ভবত একটি বর্ডার রাউটার (বর্গাকার আকৃতির) এবং অনেকগুলি শিশু থাকা উচিত এবং এটি ১০ গুণ গতিতে চলবে।
দুটি রাউটারের বর্তমান লিডার (লাল বর্ডার) খুঁজুন, এটি নির্বাচন করতে এক ক্লিক করুন:

রেডিও বন্ধ করো।
ক্লিক করুন
লিডার নোডের রেডিও বন্ধ করার জন্য অ্যাকশন বারের বোতামটি টিপুন। রেডিও বন্ধ থাকা অবস্থায় লিডার বার্তা পাঠাতে বা গ্রহণ করতে পারবে না।
অন্য রাউটার বা বর্ডার রাউটারটি নতুন লিডার হওয়ার জন্য প্রায় ১২ সেকেন্ড (সিমুলেটিং সময় ১২০ সেকেন্ড) অপেক্ষা করুন:

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

রেডিও সংযোগ পুনরুদ্ধারের পর লিডারকে নেটওয়ার্কের সাথে পুনরায় সংযুক্ত করা উচিত।
৮. নোড সরান
OTNS ব্যবহারকারীদের OTNS-CLI অথবা OTNS-Web মাধ্যমে সহজেই নোড স্থানান্তর করতে সক্ষম করে।
OTNS-CLI এর মাধ্যমে নোড সরান
বর্ডার রাউটার নোড ৯ একটি নতুন স্থানে সরান:
> move 9 50 50 Done
OTNS-ওয়েবের মাধ্যমে নোড সরান
টেনে এনে নোড ৫ কে একেবারে নীচের ডানদিকে সরান। যেহেতু নোড ৫ এখন অন্যান্য রাউটারের রেডিও কভারেজের বাইরে, তাই এটি একটি নতুন পার্টিশন আইডি দিয়ে নিজস্ব পার্টিশন তৈরি করে। নোড তথ্য প্যানেলে নোডগুলিতে ক্লিক করে পার্টিশন আইডিগুলি পরীক্ষা করা যেতে পারে।

মনে রাখবেন যে নোড ৫ এবং নোড ৯ এর মধ্যে এখনও একটি সবুজ রেখা টানা আছে। এটি প্রায়শই একটি শিশু সম্পর্কে পুরানো তথ্যের কারণে হয়, যা এখনও একজন প্রাক্তন পিতামাতার চাইল্ড টেবিলে রাখা হয়। অথবা এটি নোড ৯ এবং নোড ৫ এর মধ্যে প্রাক্তন রাউটার-টু-রাউটার লিঙ্ক সম্পর্কে পুরানো তথ্য হতে পারে। (অথবা সম্ভবত, এই ক্ষেত্রে, এমনকি একটি রেন্ডারিং বাগও।) অবশেষে, উপযুক্ত সময়সীমা শেষ হওয়ার পরে নোডগুলিতে পুরানো তথ্য পরিষ্কার করা হয়।
9. নোড মুছে ফেলুন
OTNS-CLI এর মাধ্যমে নোডগুলি মুছুন
নোড ৫ মুছুন:
> del 5 Done
সিমুলেশন থেকে নোড ৫ অদৃশ্য হয়ে যাওয়া উচিত:

OTNS-Web মাধ্যমে নোডগুলি মুছুন
বর্ডার রাউটার নোড ৯ নির্বাচন করুন এবং ক্লিক করুন
নোড ৯ মুছে ফেলার জন্য Action Bar বোতাম:

Node 1 একটি নতুন পার্টিশনের লিডার হওয়া উচিত এবং বাকি সমস্ত নোড চাইল্ড হিসেবে নোড ১ এর সাথে সংযুক্ত হবে।
১০. 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 কমান্ড।
১১. নোড লগ এবং প্যাকেট ক্যাপচার দেখা
ওপেনথ্রেড নোড লগ
ডিফল্টরূপে, OTNS সমস্ত সিমুলেটেড OpenThread নোডের জন্য বিস্তারিত লগ ফাইল তৈরি করে। এগুলি ./tmp ডিরেক্টরিতে দেখা যাবে। ফাইলের নাম হল 0_ . উদাহরণস্বরূপ, একটি লগ ফাইলের অংশ নিচে দেখানো হল:
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 এর লিঙ্ক-লেয়ার এনক্রিপশনের কারণে, OTNS এর জন্য ডিক্রিপশন কী সঠিকভাবে সেট করার জন্য Wireshark এ একটি এককালীন কনফিগারেশন অ্যাকশন প্রয়োজন। ডিফল্টরূপে, একটি সুপরিচিত নেটওয়ার্ক কী ব্যবহার করা হয় যাতে Wireshark দ্বারা ফ্রেম ডিক্রিপশন সহজ হয়।
Wireshark-এ OpenThread প্যাকেট পরিদর্শনের উদাহরণের জন্য নীচের স্ক্রিনশটটি দেখুন।

ডিক্রিপশন কী কনফিগার করতে, মেনুতে Edit -> Preferences নির্বাচন করুন। তারপর preferences উইন্ডোতে, Protocols -> IEEE 802.15.4 নির্বাচন করুন। "Decryption Keys" এর পাশে Edit... বোতামে ক্লিক করুন। একটি নতুন এন্ট্রি তৈরি করতে + এ ক্লিক করুন এবং 00112233445566778899aabbccddeeff (32 অক্ষর) কীটি প্রবেশ করান এবং "Key hash" ক্ষেত্রে "Thread hash" নির্বাচন করুন। "Decryption key index" 0 এ ছেড়ে দেওয়া যেতে পারে। তারপর OK এবং আবার OK ক্লিক করুন। এখন OTNS PCAP ফাইলটি লোড হওয়ার পরে সঠিকভাবে ডিক্রিপ্ট করা উচিত।
"সময়" কলামে (সেকেন্ডে) প্রদর্শিত টাইমস্ট্যাম্পগুলি OpenThread নোড লগে প্রদর্শিত পরম সিমুলেশন সময় মানের সাথে মিলে যায়। এটি প্রেরিত বা প্রাপ্ত রেডিও ফ্রেমের সাথে লগ বার্তাগুলির সম্পর্ক স্থাপন করা সহজ করে তোলে। তবে, মানগুলি সাধারণত একক মাইক্রোসেকেন্ড নির্ভুলতার জন্য অভিন্ন হয় না: সিমুলেটেড IEEE 802.15.4 রেডিও হার্ডওয়্যার OpenThread স্ট্যাক দ্বারা একটি রেডিও ফ্রেম পাঠানোর অনুরোধ করার পরে কিছু অতিরিক্ত বিলম্ব যোগ করতে পারে।
১২. অভিনন্দন
অভিনন্দন, আপনি আপনার প্রথম OTNS সিমুলেশন সফলভাবে সম্পন্ন করেছেন!
তুমি OTNS এবং এর নির্ভরতা ইনস্টল করতে শিখেছো। তুমি OpenThread সিমুলেটেড নোড দিয়ে একটি OTNS সিমুলেশন শুরু করেছো। তুমি OTNS-CLI এবং OTNS-Web উভয়ের মাধ্যমে বিভিন্ন উপায়ে সিমুলেশনটি কীভাবে পরিচালনা করতে হয় তা শিখেছো।
এখন তুমি জানো OTNS কী এবং কিভাবে তুমি OpenThread নেটওয়ার্ক সিমুলেট করতে OTNS ব্যবহার করতে পারো।
এরপর কী?
এই কোডল্যাবগুলির কিছু দেখুন...
- ওপেনথ্রেড দিয়ে একটি থ্রেড নেটওয়ার্ক সিমুলেট করা
- ডকারে ওপেনথ্রেড ব্যবহার করে একটি থ্রেড নেটওয়ার্ক সিমুলেট করা
- nRF52840 বোর্ড এবং OpenThread দিয়ে একটি থ্রেড নেটওয়ার্ক তৈরি করুন