1. ভূমিকা

গুগল কর্তৃক প্রকাশিত ওপেনথ্রেড হল থ্রেড নেটওয়ার্কিং প্রোটোকলের একটি ওপেন-সোর্স বাস্তবায়ন। সংযুক্ত বাড়ির জন্য পণ্যের উন্নয়ন ত্বরান্বিত করার জন্য নেস্ট পণ্যগুলিতে ব্যবহৃত প্রযুক্তি ডেভেলপারদের কাছে ব্যাপকভাবে উপলব্ধ করার জন্য গুগল নেস্ট ওপেনথ্রেড প্রকাশ করেছে।
থ্রেড স্পেসিফিকেশন হোম অ্যাপ্লিকেশনের জন্য একটি IPv6-ভিত্তিক নির্ভরযোগ্য, নিরাপদ এবং কম-পাওয়ার ওয়্যারলেস ডিভাইস-টু-ডিভাইস যোগাযোগ প্রোটোকল সংজ্ঞায়িত করে। OpenThread সমস্ত থ্রেড নেটওয়ার্কিং স্তর বাস্তবায়ন করে যার মধ্যে রয়েছে IPv6, 6LoWPAN, IEEE 802.15.4 যার মধ্যে MAC নিরাপত্তা, মেশ লিঙ্ক স্থাপন এবং মেশ রাউটিং রয়েছে।
এই কোডল্যাব আপনাকে সিমুলেটেড ডিভাইসে একটি থ্রেড নেটওয়ার্ক সিমুলেশন করার পদ্ধতি সম্পর্কে জানাবে।
তুমি কি শিখবে
- ওপেনথ্রেড বিল্ড টুলচেইন কীভাবে সেট আপ করবেন
- কিভাবে একটি থ্রেড নেটওয়ার্ক সিমুলেট করবেন
- থ্রেড নোডগুলি কীভাবে প্রমাণীকরণ করবেন
- ওপেনথ্রেড ডেমন দিয়ে কীভাবে একটি থ্রেড নেটওয়ার্ক পরিচালনা করবেন
তোমার যা লাগবে
- গিট
- লিনাক্স, নেটওয়ার্ক রাউটিং সম্পর্কে প্রাথমিক জ্ঞান।
2. বিল্ড সিস্টেম সেট আপ করুন
গিট
এই কোডল্যাবটি সম্পূর্ণ করার জন্য Git প্রয়োজন। চালিয়ে যাওয়ার আগে এটি ডাউনলোড করে ইনস্টল করুন।
ইনস্টল করার পরে, আপনার নির্দিষ্ট অপারেটিং সিস্টেমের জন্য নির্দেশাবলী অনুসরণ করে OpenThread ডাউনলোড এবং তৈরি করুন।
ম্যাক ওএস এক্স এর জন্য এক্সকোড
Mac OS X- এ OpenThread ইনস্টল এবং তৈরি করতে XCode প্রয়োজন।
XCode ইনস্টল করার পরে, XCode কমান্ড লাইন টুলগুলি ইনস্টল করুন:
$ xcode-select --install
লিনাক্স / ম্যাক ওএস এক্স-এ তৈরি করুন
এই ইনস্টলেশন নির্দেশাবলী উবুন্টু সার্ভার 14.04 LTS এবং Mac OS X Sierra 10.12.6-এ পরীক্ষা করা হয়েছে।
OpenThread ইনস্টল করুন। bootstrap কমান্ড নিশ্চিত করে যে টুলচেইন ইনস্টল করা আছে এবং পরিবেশ সঠিকভাবে কনফিগার করা আছে:
$ mkdir -p ~/src $ cd ~/src $ git clone --recursive https://github.com/openthread/openthread.git $ cd openthread $ ./script/bootstrap
উইন্ডোজ ব্যবহার করে
আপনি যদি উইন্ডোজ পছন্দ করেন, তাহলে আমরা এই কোডল্যাবের ডকার সংস্করণটি চেষ্টা করার পরামর্শ দিচ্ছি।
৩. ওপেনথ্রেড অ্যাপ্লিকেশন তৈরি করুন
আপনার ইনস্টলেশন সম্পূর্ণ হয়ে গেলে, OpenThread অ্যাপ্লিকেশনটির উদাহরণ তৈরি করুন। এই কোডল্যাবের জন্য আমরা সিমুলেশনের উদাহরণ ব্যবহার করছি।
$ cd ~/src/openthread $ ./script/cmake-build simulation
এখন OpenThread ডেমন তৈরি করুন:
$ ./script/cmake-build posix -DOT_DAEMON=ON
৪. একটি থ্রেড নেটওয়ার্ক অনুকরণ করুন
এই কোডল্যাবের জন্য আপনি যে উদাহরণ অ্যাপ্লিকেশনটি ব্যবহার করবেন তা একটি ন্যূনতম ওপেনথ্রেড অ্যাপ্লিকেশন প্রদর্শন করে যা একটি মৌলিক কমান্ড-লাইন ইন্টারফেস (CLI) এর মাধ্যমে ওপেনথ্রেড কনফিগারেশন এবং পরিচালনা ইন্টারফেসগুলিকে প্রকাশ করে।
এই অনুশীলনীটি আপনাকে একটি সিমুলেটেড থ্রেড ডিভাইসকে অন্য একটি সিমুলেটেড থ্রেড ডিভাইস থেকে পিং করার জন্য প্রয়োজনীয় ন্যূনতম পদক্ষেপগুলি অতিক্রম করতে সাহায্য করবে।
নিচের চিত্রটি একটি মৌলিক থ্রেড নেটওয়ার্ক টপোলজি বর্ণনা করে। এই অনুশীলনের জন্য, আমরা সবুজ বৃত্তের মধ্যে দুটি নোড সিমুলেট করব: একটি থ্রেড লিডার এবং থ্রেড রাউটার যার মধ্যে একটি সংযোগ থাকবে।

একটি নোড পিং করুন
১. নোড ১ শুরু করুন
openthread ডিরেক্টরিতে যান এবং ot-cli-ftd বাইনারি ব্যবহার করে একটি সিমুলেটেড থ্রেড ডিভাইসের জন্য CLI প্রক্রিয়া তৈরি করুন।
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
দ্রষ্টব্য: এই কমান্ডটি চালানোর পরে যদি আপনি > প্রম্পট দেখতে না পান, তাহলে enter টিপুন।
এই বাইনারিটি POSIX এর উপরে সিমুলেটেড একটি OpenThread ডিভাইস প্রয়োগ করে। IEEE 802.15.4 রেডিও ড্রাইভার UDP এর উপরে প্রয়োগ করা হয় (IEEE 802.15.4 ফ্রেমগুলি UDP পেলোডের মধ্যে পাস করা হয়)।
1 এর আর্গুমেন্ট হল একটি ফাইল বর্ণনাকারী যা সিমুলেটেড ডিভাইসের জন্য "ফ্যাক্টরি-অ্যাসাইনড" IEEE EUI-64 এর সবচেয়ে কম গুরুত্বপূর্ণ বিটগুলিকে প্রতিনিধিত্ব করে। IEEE 802.15.4 রেডিও এমুলেশনের জন্য একটি UDP পোর্টের সাথে বাঁধাই করার সময়ও এই মানটি ব্যবহার করা হয় (পোর্ট = 9000 + ফাইল বর্ণনাকারী)। এই কোডল্যাবে একটি সিমুলেটেড থ্রেড ডিভাইসের প্রতিটি উদাহরণ একটি ভিন্ন ফাইল বর্ণনাকারী ব্যবহার করবে।
দ্রষ্টব্য: সিমুলেটেড ডিভাইসের জন্য প্রক্রিয়া তৈরি করার সময় শুধুমাত্র এই কোডল্যাবে উল্লিখিত 1 বা তার বেশি ফাইল বর্ণনাকারী ব্যবহার করুন। 0 এর একটি ফাইল বর্ণনাকারী অন্য ব্যবহারের জন্য সংরক্ষিত।
একটি নতুন অপারেশনাল ডেটাসেট তৈরি করুন এবং এটিকে সক্রিয় হিসাবে কমিট করুন। অপারেশনাল ডেটাসেট হল আপনার তৈরি করা থ্রেড নেটওয়ার্কের কনফিগারেশন।
> dataset init new Done > dataset Active Timestamp: 1 Channel: 20 Channel Mask: 07fff800 Ext PAN ID: d6263b6d857647da Mesh Local Prefix: fd61:2344:9a52:ede0/64 Network Key: e4344ca17d1dca2a33f064992f31f786 Network Name: OpenThread-c169 PAN ID: 0xc169 PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4 Security Policy: 0, onrcb Done
এই ডেটাসেটটিকে সক্রিয় হিসাবে কমিট করুন:
> dataset commit active Done
IPv6 ইন্টারফেসটি আনুন:
> ifconfig up Done
থ্রেড প্রোটোকল অপারেশন শুরু করুন:
> thread start Done
কয়েক সেকেন্ড অপেক্ষা করুন এবং যাচাই করুন যে ডিভাইসটি থ্রেড লিডার হয়ে গেছে। লিডার হল রাউটার আইডি অ্যাসাইনমেন্ট পরিচালনার জন্য দায়ী ডিভাইস।
> state leader Done
নোড ১ এর থ্রেড ইন্টারফেসে নির্ধারিত IPv6 ঠিকানাগুলি দেখুন (আপনার আউটপুট ভিন্ন হবে):
> ipaddr fd61:2344:9a52:ede0:0:ff:fe00:fc00 fd61:2344:9a52:ede0:0:ff:fe00:5000 fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 fe80:0:0:0:94da:92ea:1353:4f3b Done
নির্দিষ্ট IPv6 ঠিকানার ধরণগুলি লক্ষ্য করুন:
-
fd= mesh-local দিয়ে শুরু হয় -
fe80= লিঙ্ক-স্থানীয় দিয়ে শুরু হয়
মেশ-স্থানীয় ঠিকানার ধরণগুলি আরও শ্রেণীবদ্ধ করা হয়েছে:
-
ff:fe00= রাউটার লোকেটার (RLOC) ধারণ করে -
ff:fe00= এন্ডপয়েন্ট আইডেন্টিফায়ার (EID) নেই
আপনার কনসোল আউটপুটে EID শনাক্ত করুন এবং পরবর্তীতে ব্যবহারের জন্য এটি নোট করুন। উপরের নমুনা আউটপুটে, EID হল:
fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
2. নোড 2 শুরু করুন
একটি নতুন টার্মিনাল খুলুন এবং openthread ডিরেক্টরিতে যান এবং CLI প্রক্রিয়াটি তৈরি করুন। এটি আপনার দ্বিতীয় সিমুলেটেড থ্রেড ডিভাইস:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
দ্রষ্টব্য: এই কমান্ডটি চালানোর পরে যদি আপনি > প্রম্পট দেখতে না পান, তাহলে enter টিপুন।
নোড ১ এর অপারেশনাল ডেটাসেটের মতো একই মান ব্যবহার করে থ্রেড নেটওয়ার্ক কী এবং প্যান আইডি কনফিগার করুন:
> dataset networkkey e4344ca17d1dca2a33f064992f31f786 Done > dataset panid 0xc169 Done
এই ডেটাসেটটিকে সক্রিয় হিসাবে কমিট করুন:
> dataset commit active Done
IPv6 ইন্টারফেসটি আনুন:
> ifconfig up Done
থ্রেড প্রোটোকল অপারেশন শুরু করুন:
> thread start Done
ডিভাইসটি নিজেকে একটি চাইল্ড হিসেবে ইনিশিয়ালাইজ করবে। একটি থ্রেড চাইল্ড একটি এন্ড ডিভাইসের সমতুল্য, যা একটি থ্রেড ডিভাইস যা শুধুমাত্র একটি প্যারেন্ট ডিভাইসের মাধ্যমে ইউনিকাস্ট ট্র্যাফিক প্রেরণ এবং গ্রহণ করে।
> state child Done
২ মিনিটের মধ্যে আপনি child থেকে router স্টেট সুইচ দেখতে পাবেন। একটি থ্রেড রাউটার থ্রেড ডিভাইসের মধ্যে ট্র্যাফিক রাউটিং করতে সক্ষম। এটিকে প্যারেন্টও বলা হয়।
> state router Done
নেটওয়ার্ক যাচাই করুন
মেশ নেটওয়ার্ক যাচাই করার একটি সহজ উপায় হল রাউটার টেবিলটি দেখা।
১. সংযোগ পরীক্ষা করুন
নোড ২-এ, RLOC16 নিন। RLOC16 হল ডিভাইসের RLOC IPv6 ঠিকানার শেষ ১৬ বিট।
> rloc16 5800 Done
নোড ১-এ, নোড ২-এর RLOC16-এর জন্য রাউটার টেবিলটি পরীক্ষা করুন। নিশ্চিত করুন যে নোড ২ প্রথমে রাউটার অবস্থায় স্যুইচ করেছে।
> router table | ID | RLOC16 | Next Hop | Path Cost | LQI In | LQI Out | Age | Extended MAC | +----+--------+----------+----------+-------+---------+-----+------------------+ | 20 | 0x5000 | 63 | 0 | 0 | 0 | 0 | 96da92ea13534f3b | | 22 | 0x5800 | 63 | 0 | 3 | 3 | 23 | 5a4eb647eb6bc66c |
নোড ১ এর 0xa800 এর RLOC টেবিলে পাওয়া গেছে, যা নিশ্চিত করে যে এটি মেশের সাথে সংযুক্ত।
২. নোড ১ থেকে নোড ২ পিং করুন
দুটি সিমুলেটেড থ্রেড ডিভাইসের মধ্যে সংযোগ যাচাই করুন। নোড ২-এ, নোড ১-এ নির্ধারিত EID ping :
> ping fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 > 16 bytes from fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6: icmp_seq=1 hlim=64 time=12ms
> CLI প্রম্পটে ফিরে যেতে enter টিপুন।
নেটওয়ার্ক পরীক্ষা করুন
এখন যেহেতু আপনি দুটি সিমুলেটেড থ্রেড ডিভাইসের মধ্যে সফলভাবে পিং করতে পারেন, তাই একটি নোড অফলাইনে নিয়ে মেশ নেটওয়ার্ক পরীক্ষা করুন।
নোড ১ এ ফিরে যান এবং থ্রেড বন্ধ করুন:
> thread stop Done
নোড ২ এ স্যুইচ করুন এবং অবস্থা পরীক্ষা করুন। দুই মিনিটের মধ্যে, নোড ২ সনাক্ত করে যে লিডার (নোড ১) অফলাইনে আছে, এবং আপনি নোড ২ কে নেটওয়ার্কের leader হিসেবে রূপান্তরিত হতে দেখবেন:
> state router Done ... > state leader Done
একবার নিশ্চিত হয়ে গেলে, থ্রেড বন্ধ করুন এবং নোড ২ থেকে বেরিয়ে আসার আগে ফ্যাক্টরি রিসেট করুন। এই অনুশীলনে ব্যবহৃত থ্রেড নেটওয়ার্ক শংসাপত্রগুলি যাতে পরবর্তী অনুশীলনে স্থানান্তরিত না হয় তা নিশ্চিত করার জন্য একটি ফ্যাক্টরি রিসেট করা হয়।
> thread stop Done > factoryreset > > exit
এছাড়াও ফ্যাক্টরি রিসেট করুন এবং নোড ১ থেকে প্রস্থান করুন:
> factoryreset > > exit
সমস্ত উপলব্ধ CLI কমান্ড অন্বেষণ করতে OpenThread CLI রেফারেন্স দেখুন।
৫. কমিশনিং এর মাধ্যমে নোডগুলি প্রমাণীকরণ করুন
পূর্ববর্তী অনুশীলনে, আপনি দুটি সিমুলেটেড ডিভাইস এবং যাচাইকৃত সংযোগ সহ একটি থ্রেড নেটওয়ার্ক সেট আপ করেছেন। তবে, এটি কেবল অপ্রমাণিত IPv6 লিঙ্ক-স্থানীয় ট্র্যাফিককে ডিভাইসগুলির মধ্যে যেতে দেয়। তাদের মধ্যে (এবং একটি থ্রেড বর্ডার রাউটারের মাধ্যমে ইন্টারনেট) বিশ্বব্যাপী IPv6 ট্র্যাফিক রুট করার জন্য, নোডগুলিকে প্রমাণীকরণ করতে হবে।
প্রমাণীকরণের জন্য, একটি ডিভাইসকে কমিশনার হিসেবে কাজ করতে হবে। কমিশনার হলেন নতুন থ্রেড ডিভাইসের জন্য বর্তমানে নির্বাচিত প্রমাণীকরণ সার্ভার, এবং ডিভাইসগুলিকে নেটওয়ার্কে যুক্ত করার জন্য প্রয়োজনীয় নেটওয়ার্ক শংসাপত্র প্রদানের জন্য অনুমোদিত।
এই অনুশীলনে, আমরা আগের মতো একই দুই-নোড টপোলজি ব্যবহার করব। প্রমাণীকরণের জন্য, থ্রেড লিডার কমিশনার হিসেবে কাজ করবে, থ্রেড রাউটার জয়েনার হিসেবে কাজ করবে।

১. একটি নেটওয়ার্ক তৈরি করুন
যদি আগের অনুশীলন থেকে এগিয়ে যান, তাহলে আপনার দুটি টার্মিনাল উইন্ডো ইতিমধ্যেই খোলা থাকা উচিত। যদি না থাকে, তাহলে নিশ্চিত করুন যে দুটি খোলা আছে এবং ব্যবহারের জন্য প্রস্তুত। একটি নোড ১ হিসেবে কাজ করবে, অন্যটি নোড ২ হিসেবে।
নোড ১-এ, CLI প্রক্রিয়া তৈরি করুন:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
দ্রষ্টব্য: এই কমান্ডটি চালানোর পরে যদি আপনি > প্রম্পট দেখতে না পান, তাহলে enter টিপুন।
একটি নতুন অপারেশনাল ডেটাসেট তৈরি করুন, এটিকে সক্রিয় হিসাবে কমিট করুন এবং থ্রেড শুরু করুন:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 12 Channel Mask: 07fff800 Ext PAN ID: e68d05794bf13052 Mesh Local Prefix: fd7d:ddf7:877b:8756/64 Network Key: a77fe1d03b0e8028a4e13213de38080e Network Name: OpenThread-8f37 PAN ID: 0x8f37 PSKc: f9debbc1532487984b17f92cd55b21fc Security Policy: 0, onrcb Done
এই ডেটাসেটটিকে সক্রিয় হিসাবে কমিট করুন:
> dataset commit active Done
IPv6 ইন্টারফেসটি আনুন:
> ifconfig up Done
থ্রেড প্রোটোকল অপারেশন শুরু করুন:
> thread start Done
কয়েক সেকেন্ড অপেক্ষা করুন এবং যাচাই করুন যে ডিভাইসটি থ্রেড লিডার হয়ে গেছে:
> state leader Done
২. কমিশনারের ভূমিকা শুরু করুন
নোড ১-এ থাকাকালীন, কমিশনারের ভূমিকা শুরু করুন:
> commissioner start Done
J01NME জয়েনার ক্রেডেনশিয়াল সহ যেকোনো জয়েনারকে ( * ওয়াইল্ডকার্ড ব্যবহার করে) নেটওয়ার্কে কমিশন করার অনুমতি দিন। জয়েনার হল এমন একটি ডিভাইস যা একজন মানব প্রশাসক দ্বারা একটি কমিশনপ্রাপ্ত থ্রেড নেটওয়ার্কে যোগ করা হয়।
> commissioner joiner add * J01NME Done
৩. জয়েনার ভূমিকা শুরু করুন
দ্বিতীয় টার্মিনাল উইন্ডোতে, একটি নতুন CLI প্রক্রিয়া তৈরি করুন। এটি নোড 2।
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
নোড ২-এ, J01NME জয়েনার ক্রেডেনশিয়াল ব্যবহার করে জয়েনার ভূমিকা সক্ষম করুন।
> ifconfig up Done > joiner start J01NME Done
... নিশ্চিতকরণের জন্য কয়েক সেকেন্ড অপেক্ষা করুন ...
Join success
একজন জয়েনার হিসেবে, ডিভাইসটি (নোড ২) কমিশনারের (নোড ১) সাথে সফলভাবে নিজেকে প্রমাণীকরণ করেছে এবং থ্রেড নেটওয়ার্ক শংসাপত্র পেয়েছে।
এখন যেহেতু নোড ২ প্রমাণিত হয়েছে, থ্রেড শুরু করুন:
> thread start Done
৪. নেটওয়ার্ক প্রমাণীকরণ যাচাই করুন
নোড ২ এর state পরীক্ষা করে দেখুন, এটি এখন নেটওয়ার্কে যুক্ত হয়েছে কিনা তা যাচাই করুন। দুই মিনিটের মধ্যে, নোড ২ child থেকে router রূপান্তরিত হয়:
> state child Done ... > state router Done
৫. কনফিগারেশন রিসেট করুন
পরবর্তী অনুশীলনের জন্য প্রস্তুত হতে, কনফিগারেশনটি রিসেট করুন। প্রতিটি নোডে, থ্রেড বন্ধ করুন, ফ্যাক্টরি রিসেট করুন এবং সিমুলেটেড থ্রেড ডিভাইস থেকে প্রস্থান করুন:
> thread stop Done > factoryreset > > exit
factoryreset কমান্ডের পরে > প্রম্পটটি ফিরিয়ে আনতে আপনাকে কয়েকবার enter টিপতে হতে পারে।
৬. ওপেনথ্রেড ডেমন দিয়ে নেটওয়ার্ক পরিচালনা করুন
এই অনুশীলনের জন্য, আমরা একটি CLI ইনস্ট্যান্স (একটি একক এমবেডেড SoC থ্রেড ডিভাইস) এবং একটি রেডিও কো-প্রসেসর (RCP) ইনস্ট্যান্স সিমুলেট করব।
ot-daemon হল OpenThread Posix অ্যাপের একটি মোড যা ইনপুট এবং আউটপুট হিসেবে একটি UNIX সকেট ব্যবহার করে, যাতে OpenThread কোর একটি পরিষেবা হিসেবে কাজ করতে পারে। একটি ক্লায়েন্ট OpenThread CLI প্রোটোকল হিসেবে ব্যবহার করে সকেটের সাথে সংযোগ স্থাপন করে এই পরিষেবার সাথে যোগাযোগ করতে পারে।
ot-ctl হল একটি CLI যা ot-daemon দ্বারা RCP পরিচালনা এবং কনফিগার করার জন্য সরবরাহ করা হয়। এটি ব্যবহার করে, আমরা RCP কে Thread ডিভাইস দ্বারা তৈরি নেটওয়ার্কের সাথে সংযুক্ত করব।
ওটি-ডেমন ব্যবহার করুন
এই অনুশীলনে তিনটি টার্মিনাল উইন্ডো ব্যবহার করা হবে, যা নিম্নলিখিতগুলির সাথে সঙ্গতিপূর্ণ:
- সিমুলেটেড থ্রেড ডিভাইসের CLI উদাহরণ (নোড 1)
-
ot-daemonপ্রক্রিয়া -
ot-ctlCLI উদাহরণ
পূর্ববর্তী অনুশীলন থেকে এগিয়ে গেলে, আপনার দুটি টার্মিনাল উইন্ডো ইতিমধ্যেই খোলা থাকা উচিত। এই অনুশীলনের জন্য তিনটি টার্মিনাল উইন্ডো উপলব্ধ আছে কিনা তা নিশ্চিত করতে তৃতীয়টি খুলুন।
১. নোড ১ শুরু করুন
প্রথম টার্মিনাল উইন্ডোতে, আপনার সিমুলেটেড থ্রেড ডিভাইসের জন্য CLI প্রক্রিয়াটি তৈরি করুন:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
দ্রষ্টব্য: এই কমান্ডটি চালানোর পরে যদি আপনি > প্রম্পট দেখতে না পান, তাহলে enter টিপুন।
একটি নতুন অপারেশনাল ডেটাসেট তৈরি করুন, এটিকে সক্রিয় হিসাবে কমিট করুন এবং থ্রেড শুরু করুন:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 13 Channel Mask: 07fff800 Ext PAN ID: 97d584bcd493b824 Mesh Local Prefix: fd55:cf34:dea5:7994/64 Network Key: ba6e886c7af50598df1115fa07658a83 Network Name: OpenThread-34e4 PAN ID: 0x34e4 PSKc: 38d6fd32c866927a4dfcc06d79ae1192 Security Policy: 0, onrcb Done
এই ডেটাসেটটিকে সক্রিয় হিসাবে কমিট করুন:
> dataset commit active Done
IPv6 ইন্টারফেসটি আনুন:
> ifconfig up Done
থ্রেড প্রোটোকল অপারেশন শুরু করুন:
> thread start Done
নোড ১ এর থ্রেড ইন্টারফেসে নির্ধারিত IPv6 ঠিকানাগুলি দেখুন:
> ipaddr fd55:cf34:dea5:7994:0:ff:fe00:fc00 fd55:cf34:dea5:7994:0:ff:fe00:d000 fd55:cf34:dea5:7994:460:872c:e807:c4ab fe80:0:0:0:9cd8:aab6:482f:4cdc Done >
Simulate a Thread network ধাপে ব্যাখ্যা করা হয়েছে, একটি ঠিকানা হল link-local ( fe80 ) এবং তিনটি হল mesh-local ( fd )। EID হল mesh-local ঠিকানা যাতে ঠিকানায় ff:fe00 থাকে না। এই নমুনা আউটপুটে, EID হল fd55:cf34:dea5:7994:460:872c:e807:c4ab ।
আপনার ipaddr আউটপুট থেকে নির্দিষ্ট EID সনাক্ত করুন, যা নোডের সাথে যোগাযোগ করতে ব্যবহৃত হবে।
2. ot-daemon শুরু করুন
দ্বিতীয় টার্মিনাল উইন্ডোতে, openthread ডিরেক্টরিতে যান এবং একটি RCP নোডের জন্য ot-daemon শুরু করুন, যাকে আমরা Node 2 বলব। -v verbose ফ্ল্যাগ ব্যবহার করুন যাতে আপনি লগ আউটপুট দেখতে পারেন এবং নিশ্চিত করতে পারেন যে এটি চলছে, এবং sudo ব্যবহার করতে ভুলবেন না:
$ cd ~/src/openthread
$ sudo ./build/posix/src/posix/ot-daemon -v \
'spinel+hdlc+forkpty://build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=2'
সফল হলে, ভার্বোজ মোডে ot-daemon নিম্নলিখিতগুলির মতো আউটপুট তৈরি করে:
ot-daemon[12463]: Running OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; POSIX; Aug 30 2022 10:55:05 ot-daemon[12463]: Thread version: 4 ot-daemon[12463]: Thread interface: wpan0 ot-daemon[12463]: RCP version: OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; SIMULATION; Aug 30 2022 10:54:10
এই টার্মিনালটি খোলা রেখে ব্যাকগ্রাউন্ডে চালু রাখুন। এতে আর কোনও কমান্ড প্রবেশ করানো হবে না।
৩. নেটওয়ার্কে যোগদানের জন্য ot-ctl ব্যবহার করুন
আমরা এখনও কোনও থ্রেড নেটওয়ার্কে নোড 2 ( ot-daemon RCP) কমিশন করিনি। এখানেই ot-ctl ব্যবহার করা হয়। ot-ctl OpenThread CLI অ্যাপের মতো একই CLI ব্যবহার করে। অতএব, আপনি অন্যান্য সিমুলেটেড থ্রেড ডিভাইসের মতো একই পদ্ধতিতে ot-daemon নোড নিয়ন্ত্রণ করতে পারেন।
তৃতীয় টার্মিনাল উইন্ডোতে, ot-ctl শুরু করুন:
$ sudo ./build/posix/src/posix/ot-ctl >
দ্রষ্টব্য: এই কমান্ডটি চালানোর পরে যদি আপনি > প্রম্পট দেখতে না পান, তাহলে enter টিপুন।
আপনি এই তৃতীয় টার্মিনাল উইন্ডোতে ot-ctl ব্যবহার করে নোড 2 (RCP নোড) পরিচালনা করবেন যা আপনি ot-daemon দিয়ে দ্বিতীয় টার্মিনাল উইন্ডোতে শুরু করেছিলেন। নোড 2 এর state পরীক্ষা করুন:
> state disabled Done
নির্দিষ্ট জয়েনারে সংযোগ সীমাবদ্ধ করতে নোড 2 এর eui64 পান:
> eui64 18b4300000000001 Done
নোড ১ (প্রথম টার্মিনাল উইন্ডো) তে, কমিশনার শুরু করুন এবং শুধুমাত্র eui64 তে যোগদান সীমাবদ্ধ করুন:
> commissioner start Done > commissioner joiner add 18b4300000000001 J01NME Done
নোড ২ (তৃতীয় টার্মিনাল উইন্ডো) তে, নেটওয়ার্ক ইন্টারফেসটি আনুন এবং নেটওয়ার্কে যোগদান করুন:
> ifconfig up Done > joiner start J01NME Done
... নিশ্চিতকরণের জন্য কয়েক সেকেন্ড অপেক্ষা করুন ...
Join success
একজন যোগদানকারী হিসেবে, RCP (নোড 2) কমিশনারের (নোড 1) সাথে সফলভাবে নিজেকে প্রমাণীকরণ করেছে এবং থ্রেড নেটওয়ার্ক শংসাপত্র পেয়েছে।
এখন নোড ২ কে থ্রেড নেটওয়ার্কে যুক্ত করুন:
> thread start Done
৪. নেটওয়ার্ক প্রমাণীকরণ যাচাই করুন
নোড ২ এর state পরীক্ষা করে দেখুন, এটি এখন নেটওয়ার্কে যুক্ত হয়েছে কিনা তা যাচাই করুন। দুই মিনিটের মধ্যে, নোড ২ child থেকে router রূপান্তরিত হয়:
> state child Done ... > state router Done
৫. সংযোগ যাচাই করুন
Ctrl+D অথবা exit কমান্ড ব্যবহার করে ot-ctl বন্ধ করুন, এবং আপনার হোস্ট মেশিনের কমান্ড লাইনে, ping Node 1, এর EID ব্যবহার করে ping6 কমান্ড ব্যবহার করুন। যদি ot-daemon RCP ইনস্ট্যান্সটি সফলভাবে থ্রেড নেটওয়ার্কের সাথে সংযুক্ত হয় এবং যোগাযোগ করে, তাহলে পিং সফল হয়:
$ ping6 -c 4 fd55:cf34:dea5:7994:460:872c:e807:c4ab PING fd55:cf34:dea5:7994:460:872c:e807:c4ab (fd55:cf34:dea5:7994:460:872c:e807:c4ab): 56 data bytes 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=0 ttl=64 time=4.568 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=1 ttl=64 time=6.396 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=2 ttl=64 time=7.594 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=3 ttl=64 time=5.461 ms --- fd55:cf34:dea5:7994:460:872c:e807:c4ab ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 4.568/6.005/7.594/1.122 ms
৭. অভিনন্দন!
আপনি OpenThread ব্যবহার করে আপনার প্রথম থ্রেড নেটওয়ার্ক সফলভাবে সিমুলেট করেছেন। অসাধারণ!
এই কোডল্যাবে আপনি শিখেছেন কিভাবে:
- ওপেনথ্রেড বিল্ড টুলচেইন সেট আপ করুন
- একটি থ্রেড নেটওয়ার্ক সিমুলেট করুন
- থ্রেড নোডগুলি প্রমাণীকরণ করুন
- ওপেনথ্রেড ডেমন দিয়ে একটি থ্রেড নেটওয়ার্ক পরিচালনা করুন
আপনি যদি আরও জানতে চান, তাহলে এই রেফারেন্সগুলি ঘুরে দেখুন: