OpenThread সহ একটি থ্রেড নেটওয়ার্ক অনুকরণ করা

1। পরিচিতি

26b7f4f6b3ea0700.png

Google দ্বারা প্রকাশিত OpenThread হল থ্রেড নেটওয়ার্কিং প্রোটোকলের একটি ওপেন-সোর্স বাস্তবায়ন। গুগল নেস্ট ওপেন থ্রেড প্রকাশ করেছে যাতে নেস্ট পণ্যগুলিতে ব্যবহৃত প্রযুক্তিটি বিকাশকারীদের কাছে বিস্তৃতভাবে উপলব্ধ করা যায় যাতে সংযুক্ত বাড়ির পণ্যগুলির বিকাশকে ত্বরান্বিত করা যায়।

থ্রেড স্পেসিফিকেশন হোম অ্যাপ্লিকেশনের জন্য একটি IPv6-ভিত্তিক নির্ভরযোগ্য, নিরাপদ এবং কম-পাওয়ার ওয়্যারলেস ডিভাইস-টু-ডিভাইস যোগাযোগ প্রোটোকল সংজ্ঞায়িত করে। OpenThread সমস্ত থ্রেড নেটওয়ার্কিং স্তর প্রয়োগ করে যার মধ্যে IPv6, 6LoWPAN, IEEE 802.15.4 MAC নিরাপত্তা, Mesh Link Establishment, এবং Mesh Routing সহ।

এই কোডল্যাব আপনাকে সিমুলেটেড ডিভাইসে একটি থ্রেড নেটওয়ার্ক সিমুলেট করার মাধ্যমে নিয়ে যায়।

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

  • কিভাবে OpenThread বিল্ড টুলচেন সেট আপ করবেন
  • কিভাবে একটি থ্রেড নেটওয়ার্ক অনুকরণ
  • কিভাবে থ্রেড নোড প্রমাণীকরণ
  • কিভাবে OpenThread ডেমনের সাথে একটি থ্রেড নেটওয়ার্ক পরিচালনা করবেন

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

  • গিট
  • লিনাক্সের প্রাথমিক জ্ঞান, নেটওয়ার্ক রাউটিং

2. বিল্ড সিস্টেম সেট আপ করুন

গিট

এই কোডল্যাবটি সম্পূর্ণ করতে গিট প্রয়োজন। চালিয়ে যাওয়ার আগে এটি ডাউনলোড এবং ইনস্টল করুন।

একবার ইনস্টল হয়ে গেলে, OpenThread ডাউনলোড এবং তৈরি করতে আপনার নির্দিষ্ট OS-এর নির্দেশাবলী অনুসরণ করুন।

ম্যাক ওএস এক্স এর জন্য এক্সকোড

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

উইন্ডোজ ব্যবহার করে

আপনি যদি উইন্ডোজ পছন্দ করেন, আমরা এই কোডল্যাবের ডকার সংস্করণ চেষ্টা করার পরামর্শ দিই।

3. OpenThread অ্যাপ্লিকেশন তৈরি করুন

একবার আপনার ইনস্টলেশন সম্পূর্ণ হলে, উদাহরণ OpenThread অ্যাপ্লিকেশন তৈরি করুন। এই কোডল্যাবের জন্য আমরা সিমুলেশন উদাহরণ ব্যবহার করছি।

$ cd ~/src/openthread
$ ./script/cmake-build simulation

এখন OpenThread ডেমন তৈরি করুন:

$ ./script/cmake-build posix -DOT_DAEMON=ON

4. একটি থ্রেড নেটওয়ার্ক অনুকরণ করুন

এই কোডল্যাবের জন্য আপনি যে উদাহরণ অ্যাপ্লিকেশনটি ব্যবহার করবেন তা একটি ন্যূনতম OpenThread অ্যাপ্লিকেশন প্রদর্শন করে যা একটি মৌলিক কমান্ড-লাইন ইন্টারফেসের (CLI) মাধ্যমে OpenThread কনফিগারেশন এবং ব্যবস্থাপনা ইন্টারফেসগুলিকে প্রকাশ করে।

এই অনুশীলনটি আপনাকে অন্য একটি সিমুলেটেড থ্রেড ডিভাইস থেকে একটি সিমুলেটেড থ্রেড ডিভাইসকে পিং করার জন্য প্রয়োজনীয় ন্যূনতম পদক্ষেপগুলির মধ্য দিয়ে নিয়ে যায়।

নীচের চিত্রটি একটি মৌলিক থ্রেড নেটওয়ার্ক টপোলজি বর্ণনা করে। এই অনুশীলনের জন্য, আমরা সবুজ বৃত্তের মধ্যে দুটি নোডকে অনুকরণ করব: একটি থ্রেড লিডার এবং থ্রেড রাউটার তাদের মধ্যে একটি একক সংযোগ সহ।

6e3aa07675f902dc.png

একটি নোড পিং করুন

1. স্টার্ট নোড 1

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 রেডিও এমুলেশন (পোর্ট = 9000 + ফাইল বর্ণনাকারী) এর জন্য একটি UDP পোর্টে বাঁধার সময়ও এই মানটি ব্যবহার করা হয়। এই কোডল্যাবে একটি সিমুলেটেড থ্রেড ডিভাইসের প্রতিটি উদাহরণ একটি ভিন্ন ফাইল বর্ণনাকারী ব্যবহার করবে।

দ্রষ্টব্য: একটি সিমুলেটেড ডিভাইসের জন্য প্রক্রিয়াটি তৈরি করার সময় এই কোডল্যাবে উল্লিখিত হিসাবে শুধুমাত্র 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

নোড 1 এর থ্রেড ইন্টারফেসে নির্ধারিত 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 টিপুন।

থ্রেড নেটওয়ার্ক কী এবং প্যান আইডি কনফিগার করুন, নোড 1 এর অপারেশনাল ডেটাসেটের মতো একই মান ব্যবহার করে:

> dataset networkkey e4344ca17d1dca2a33f064992f31f786
Done
> dataset panid 0xc169
Done

এই ডেটাসেটটিকে সক্রিয় হিসাবে কমিট করুন:

> dataset commit active
Done

IPv6 ইন্টারফেস আনুন:

> ifconfig up
Done

থ্রেড প্রোটোকল অপারেশন শুরু করুন:

> thread start
Done

ডিভাইসটি একটি শিশু হিসাবে নিজেকে শুরু করবে। একটি থ্রেড চাইল্ড একটি এন্ড ডিভাইসের সমতুল্য, এটি একটি থ্রেড ডিভাইস যা শুধুমাত্র একটি অভিভাবক ডিভাইসের সাথে ইউনিকাস্ট ট্র্যাফিক প্রেরণ এবং গ্রহণ করে।

> state
child
Done

2 মিনিটের মধ্যে আপনি child থেকে router স্টেট স্যুইচ দেখতে পাবেন। একটি থ্রেড রাউটার থ্রেড ডিভাইসের মধ্যে ট্রাফিক রাউটিং করতে সক্ষম। এটি একটি অভিভাবক হিসাবেও উল্লেখ করা হয়।

> state
router
Done

নেটওয়ার্ক যাচাই করুন

জাল নেটওয়ার্ক যাচাই করার একটি সহজ উপায় হল রাউটার টেবিলের দিকে তাকান।

1. সংযোগ পরীক্ষা করুন

নোড 2-এ, RLOC16 পান। RLOC16 হল ডিভাইসের RLOC IPv6 ঠিকানার শেষ 16 বিট।

> rloc16
5800
Done

নোড 1 এ, নোড 2 এর RLOC16 এর জন্য রাউটার টেবিলটি পরীক্ষা করুন। নিশ্চিত করুন যে নোড 2 প্রথমে রাউটার অবস্থায় স্যুইচ করেছে।

> 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 |

নোড 1 এর 0xa800 এর RLOC টেবিলে পাওয়া যায়, এটি নিশ্চিত করে যে এটি জালের সাথে সংযুক্ত।

2. নোড 2 থেকে পিং নোড 1

দুটি সিমুলেটেড থ্রেড ডিভাইসের মধ্যে সংযোগ যাচাই করুন। নোড 2-এ, নোড 1-এ বরাদ্দ করা 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 এন্টার টিপুন।

নেটওয়ার্ক পরীক্ষা করুন

এখন আপনি দুটি সিমুলেটেড থ্রেড ডিভাইসের মধ্যে সফলভাবে পিং করতে পারেন, একটি নোড অফলাইনে নিয়ে জাল নেটওয়ার্ক পরীক্ষা করুন।

নোড 1 এ ফিরে যান এবং থ্রেড বন্ধ করুন:

> thread stop
Done

নোড 2 এ স্যুইচ করুন এবং রাজ্যটি পরীক্ষা করুন। দুই মিনিটের মধ্যে, নোড 2 শনাক্ত করে যে নেতা (নোড 1) অফলাইন, এবং নেটওয়ার্কের leader হতে আপনার নোড 2 রূপান্তর দেখতে হবে:

> state
router
Done
...
> state
leader
Done

একবার নিশ্চিত হয়ে গেলে, প্রস্থান করার আগে থ্রেড এবং ফ্যাক্টরি রিসেট নোড 2 বন্ধ করুন। এই অনুশীলনে আমরা যে থ্রেড নেটওয়ার্ক শংসাপত্রগুলি ব্যবহার করেছি তা নিশ্চিত করার জন্য একটি ফ্যাক্টরি রিসেট করা হয় পরবর্তী অনুশীলনে নিয়ে যাওয়া হয় না।

> thread stop
Done
> factoryreset
>
> exit

এছাড়াও ফ্যাক্টরি রিসেট এবং নোড 1 থেকে প্রস্থান করুন:

> factoryreset
>
> exit

সমস্ত উপলব্ধ CLI কমান্ড অন্বেষণ করতে OpenThread CLI রেফারেন্স দেখুন।

5. কমিশনিং সঙ্গে নোড প্রমাণীকরণ

পূর্ববর্তী অনুশীলনে, আপনি দুটি সিমুলেটেড ডিভাইস এবং যাচাইকৃত সংযোগ সহ একটি থ্রেড নেটওয়ার্ক সেট আপ করেছেন। যাইহোক, এটি শুধুমাত্র অপ্রমাণিত IPv6 লিঙ্ক-স্থানীয় ট্র্যাফিককে ডিভাইসগুলির মধ্যে পাস করার অনুমতি দেয়। তাদের মধ্যে বিশ্বব্যাপী IPv6 ট্র্যাফিক রুট করতে (এবং একটি থ্রেড বর্ডার রাউটারের মাধ্যমে ইন্টারনেট), নোডগুলিকে অবশ্যই প্রমাণীকরণ করতে হবে।

প্রমাণীকরণের জন্য, একটি ডিভাইসকে অবশ্যই কমিশনার হিসাবে কাজ করতে হবে। কমিশনার হল নতুন থ্রেড ডিভাইসের জন্য বর্তমানে নির্বাচিত প্রমাণীকরণ সার্ভার, এবং ডিভাইসগুলির নেটওয়ার্কে যোগদানের জন্য প্রয়োজনীয় নেটওয়ার্ক শংসাপত্র প্রদানের জন্য অনুমোদনকারী৷

এই অনুশীলনে, আমরা আগের মতো একই দুই-নোড টপোলজি ব্যবহার করব। প্রমাণীকরণের জন্য, থ্রেড লিডার কমিশনার হিসাবে কাজ করবে, থ্রেড রাউটার যোগদানকারী হিসাবে কাজ করবে।

d6a67e8a0d0b5dcb.png

1. একটি নেটওয়ার্ক তৈরি করুন

পূর্ববর্তী অনুশীলন থেকে অব্যাহত থাকলে, আপনার ইতিমধ্যে দুটি টার্মিনাল উইন্ডো খোলা থাকা উচিত। যদি না হয়, নিশ্চিত করুন যে দুটি খোলা এবং ব্যবহারের জন্য প্রস্তুত। একটি নোড 1 হিসাবে কাজ করবে, অন্যটি নোড 2 হিসাবে কাজ করবে।

নোড 1-এ, 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

2. কমিশনারের ভূমিকা শুরু করুন

নোড 1 এ থাকাকালীন, কমিশনারের ভূমিকা শুরু করুন:

> commissioner start
Done

J01NME যোগদানকারী শংসাপত্রের সাথে যেকোনো যোগদানকারীকে ( * ওয়াইল্ডকার্ড ব্যবহার করে) নেটওয়ার্কে কমিশন করার অনুমতি দিন। একটি যোগদানকারী এমন একটি ডিভাইস যা একজন মানব প্রশাসক দ্বারা একটি কমিশনড থ্রেড নেটওয়ার্কে যোগ করা হয়।

> commissioner joiner add * J01NME
Done

3. যোগদানকারী ভূমিকা শুরু করুন

একটি দ্বিতীয় টার্মিনাল উইন্ডোতে, একটি নতুন CLI প্রক্রিয়া তৈরি করুন। এটি নোড 2।

$ cd ~/src/openthread
$ ./build/simulation/examples/apps/cli/ot-cli-ftd 2

নোড 2-এ, J01NME জয়নার শংসাপত্র ব্যবহার করে যোগদানকারীর ভূমিকা সক্ষম করুন।

> ifconfig up
Done
> joiner start J01NME
Done

... নিশ্চিতকরণের জন্য কয়েক সেকেন্ড অপেক্ষা করুন ...

Join success

একজন যোগদানকারী হিসেবে, ডিভাইস (নোড 2) সফলভাবে কমিশনারের (নোড 1) সাথে নিজেকে প্রমাণীকরণ করেছে এবং থ্রেড নেটওয়ার্ক শংসাপত্র পেয়েছে।

এখন যে নোড 2 প্রমাণিত হয়েছে, থ্রেড শুরু করুন:

> thread start
Done

4. নেটওয়ার্ক প্রমাণীকরণ যাচাই করুন

এটি এখন নেটওয়ার্কে যোগদান করেছে তা যাচাই করতে নোড 2-এ state পরীক্ষা করুন৷ দুই মিনিটের মধ্যে, child থেকে router নোড 2 রূপান্তর:

> state
child
Done
...
> state
router
Done

5. কনফিগারেশন রিসেট করুন

পরবর্তী অনুশীলনের জন্য প্রস্তুত করতে, কনফিগারেশনটি পুনরায় সেট করুন। প্রতিটি নোডে, থ্রেড বন্ধ করুন, একটি ফ্যাক্টরি রিসেট করুন এবং সিমুলেটেড থ্রেড ডিভাইস থেকে প্রস্থান করুন:

> thread stop
Done
> factoryreset
>
> exit

factoryreset কমান্ডের পরে > প্রম্পট ফিরিয়ে আনতে আপনাকে কয়েকবার এন্টার enter হতে পারে।

6. OpenThread ডেমন দিয়ে নেটওয়ার্ক পরিচালনা করুন

এই অনুশীলনের জন্য, আমরা একটি CLI উদাহরণ (একটি একক এমবেডেড SoC থ্রেড ডিভাইস) এবং একটি রেডিও কো-প্রসেসর (RCP) উদাহরণ অনুকরণ করতে যাচ্ছি।

ot-daemon হল OpenThread Posix অ্যাপের একটি মোড যা ইনপুট এবং আউটপুট হিসাবে একটি UNIX সকেট ব্যবহার করে, যাতে OpenThread কোর একটি পরিষেবা হিসাবে চলতে পারে। একটি ক্লায়েন্ট প্রোটোকল হিসাবে OpenThread CLI ব্যবহার করে সকেটের সাথে সংযোগ করে এই পরিষেবাটির সাথে যোগাযোগ করতে পারে।

ot-ctl হল একটি CLI যা RCP পরিচালনা ও কনফিগার করার জন্য ot-daemon দ্বারা সরবরাহ করা হয়। এটি ব্যবহার করে, আমরা থ্রেড ডিভাইস দ্বারা তৈরি নেটওয়ার্কের সাথে RCP সংযোগ করব।

ওটি-ডেমন ব্যবহার করুন

এই অনুশীলনটি নিম্নলিখিতগুলির সাথে সম্পর্কিত তিনটি টার্মিনাল উইন্ডো ব্যবহার করবে:

  1. সিমুলেটেড থ্রেড ডিভাইসের CLI উদাহরণ (নোড 1)
  2. ot-daemon প্রক্রিয়া
  3. ot-ctl CLI উদাহরণ

পূর্ববর্তী অনুশীলন থেকে অব্যাহত থাকলে আপনার ইতিমধ্যে দুটি টার্মিনাল উইন্ডো খোলা থাকা উচিত। এই অনুশীলনের জন্য আপনার কাছে তিনটি টার্মিনাল উইন্ডো উপলব্ধ রয়েছে তা নিশ্চিত করতে তৃতীয়টি খুলুন।

1. স্টার্ট নোড 1

প্রথম টার্মিনাল উইন্ডোতে, আপনার সিমুলেটেড থ্রেড ডিভাইসের জন্য 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

নোড 1 এর থ্রেড ইন্টারফেসে নির্ধারিত 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
>

একটি থ্রেড নেটওয়ার্ক সিমুলেট স্টেপে ব্যাখ্যা করা হয়েছে, একটি ঠিকানা লিঙ্ক-স্থানীয় ( fe80 ) এবং তিনটি হল মেশ-লোকাল ( fd )। EID হল জাল-স্থানীয় ঠিকানা যে ঠিকানায় ff:fe00 নেই। এই নমুনা আউটপুটে, EID হল fd55:cf34:dea5:7994:460:872c:e807:c4ab

আপনার ipaddr আউটপুট থেকে নির্দিষ্ট EID সনাক্ত করুন, যা নোডের সাথে যোগাযোগ করতে ব্যবহার করা হবে।

2. ওটি-ডেমন শুরু করুন

দ্বিতীয় টার্মিনাল উইন্ডোতে, openthread ডিরেক্টরিতে নেভিগেট করুন, এবং একটি RCP নোডের জন্য ot-daemon শুরু করুন, যাকে আমরা নোড 2 বলব। -v ভার্বোজ পতাকা ব্যবহার করুন যাতে আপনি লগ আউটপুট দেখতে পারেন এবং নিশ্চিত করতে পারেন যে এটি চলছে, এবং 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

এই টার্মিনালটি খোলা রাখুন এবং পটভূমিতে চলমান রাখুন। আপনি এতে আর কোন কমান্ড লিখবেন না।

3. নেটওয়ার্কে যোগ দিতে ot-ctl ব্যবহার করুন

আমরা এখনও কোনো থ্রেড নেটওয়ার্কে নোড 2 ( ot-daemon আরসিপি) কমিশন করিনি। এখানেই ot-ctl আসে৷ ot-ctl একই CLI ব্যবহার করে OpenThread CLI অ্যাপের মতো৷ অতএব, আপনি অন্যান্য সিমুলেটেড থ্রেড ডিভাইসগুলির মতো একই পদ্ধতিতে ot-daemon নোডগুলি নিয়ন্ত্রণ করতে পারেন।

একটি তৃতীয় টার্মিনাল উইন্ডোতে, ot-ctl শুরু করুন:

$ sudo ./build/posix/src/posix/ot-ctl
>

দ্রষ্টব্য: আপনি যদি এই কমান্ডটি চালানোর পরে > প্রম্পটটি দেখতে না পান তবে enter টিপুন।

আপনি নোড 2 (আরসিপি নোড) পরিচালনা করতে এই তৃতীয় টার্মিনাল উইন্ডোতে ot-ctl ব্যবহার করবেন যা আপনি ot-daemon দিয়ে দ্বিতীয় টার্মিনাল উইন্ডোতে শুরু করেছিলেন। নোড 2 এর state পরীক্ষা করুন:

> state
disabled
Done

নোড 2 এর eui64 পান, নির্দিষ্ট যোগদানকারীর সাথে যোগদান সীমাবদ্ধ করতে:

> eui64
18b4300000000001
Done

নোড 1 (প্রথম টার্মিনাল উইন্ডো) এ, কমিশনার শুরু করুন এবং শুধুমাত্র সেই eui64-এ যোগদান সীমাবদ্ধ করুন:

> commissioner start
Done
> commissioner joiner add 18b4300000000001 J01NME
Done

নোড 2 (তৃতীয় টার্মিনাল উইন্ডো) এ, নেটওয়ার্ক ইন্টারফেস আনুন এবং নেটওয়ার্কে যোগ দিন:

> ifconfig up
Done
> joiner start J01NME
Done

... নিশ্চিতকরণের জন্য কয়েক সেকেন্ড অপেক্ষা করুন ...

Join success

একজন যোগদানকারী হিসেবে, RCP (নোড 2) সফলভাবে কমিশনারের (নোড 1) সাথে নিজেকে প্রমাণীকরণ করেছে এবং থ্রেড নেটওয়ার্ক শংসাপত্র পেয়েছে।

এখন থ্রেড নেটওয়ার্কে নোড 2 এ যোগ দিন:

> thread start
Done

4. নেটওয়ার্ক প্রমাণীকরণ যাচাই করুন

এটি এখন নেটওয়ার্কে যোগদান করেছে তা যাচাই করতে নোড 2-এ state পরীক্ষা করুন৷ দুই মিনিটের মধ্যে, child থেকে router নোড 2 রূপান্তর:

> state
child
Done
...
> state
router
Done

5. সংযোগ যাচাই করুন

Ctrl+D বা exit কমান্ড ব্যবহার করে ot-ctl প্রস্থান করুন এবং আপনার হোস্ট মেশিনের কমান্ড লাইনে, ping Node 1, ping6 কমান্ডের সাথে এর EID ব্যবহার করে। যদি 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

7. অভিনন্দন!

আপনি OpenThread ব্যবহার করে আপনার প্রথম থ্রেড নেটওয়ার্ক সফলভাবে সিমুলেট করেছেন। অসাধারণ!

এই কোডল্যাবে আপনি শিখেছেন কিভাবে:

  • OpenThread বিল্ড টুলচেন সেট আপ করুন
  • একটি থ্রেড নেটওয়ার্ক অনুকরণ করুন
  • থ্রেড নোড প্রমাণীকরণ
  • OpenThread ডেমনের সাথে একটি থ্রেড নেটওয়ার্ক পরিচালনা করুন

আপনি যদি আরও জানতে চান তবে এই রেফারেন্সগুলি অন্বেষণ করুন:

,

1। পরিচিতি

26b7f4f6b3ea0700.png

Google দ্বারা প্রকাশিত OpenThread হল থ্রেড নেটওয়ার্কিং প্রোটোকলের একটি ওপেন-সোর্স বাস্তবায়ন। গুগল নেস্ট ওপেন থ্রেড প্রকাশ করেছে যাতে নেস্ট পণ্যগুলিতে ব্যবহৃত প্রযুক্তিটি বিকাশকারীদের কাছে বিস্তৃতভাবে উপলব্ধ করা যায় যাতে সংযুক্ত বাড়ির পণ্যগুলির বিকাশকে ত্বরান্বিত করা যায়।

থ্রেড স্পেসিফিকেশন হোম অ্যাপ্লিকেশনের জন্য একটি IPv6-ভিত্তিক নির্ভরযোগ্য, নিরাপদ এবং কম-পাওয়ার ওয়্যারলেস ডিভাইস-টু-ডিভাইস যোগাযোগ প্রোটোকল সংজ্ঞায়িত করে। OpenThread সমস্ত থ্রেড নেটওয়ার্কিং স্তর প্রয়োগ করে যার মধ্যে IPv6, 6LoWPAN, IEEE 802.15.4 MAC নিরাপত্তা, Mesh Link Establishment, এবং Mesh Routing সহ।

এই কোডল্যাব আপনাকে সিমুলেটেড ডিভাইসে একটি থ্রেড নেটওয়ার্ক সিমুলেট করার মাধ্যমে নিয়ে যায়।

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

  • কিভাবে OpenThread বিল্ড টুলচেন সেট আপ করবেন
  • কিভাবে একটি থ্রেড নেটওয়ার্ক অনুকরণ
  • কিভাবে থ্রেড নোড প্রমাণীকরণ
  • কিভাবে OpenThread ডেমনের সাথে একটি থ্রেড নেটওয়ার্ক পরিচালনা করবেন

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

  • গিট
  • লিনাক্সের প্রাথমিক জ্ঞান, নেটওয়ার্ক রাউটিং

2. বিল্ড সিস্টেম সেট আপ করুন

গিট

এই কোডল্যাবটি সম্পূর্ণ করতে গিট প্রয়োজন। চালিয়ে যাওয়ার আগে এটি ডাউনলোড এবং ইনস্টল করুন।

একবার ইনস্টল হয়ে গেলে, OpenThread ডাউনলোড এবং তৈরি করতে আপনার নির্দিষ্ট OS-এর নির্দেশাবলী অনুসরণ করুন।

ম্যাক ওএস এক্স এর জন্য এক্সকোড

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

উইন্ডোজ ব্যবহার করে

আপনি যদি উইন্ডোজ পছন্দ করেন, আমরা এই কোডল্যাবের ডকার সংস্করণ চেষ্টা করার পরামর্শ দিই।

3. OpenThread অ্যাপ্লিকেশন তৈরি করুন

একবার আপনার ইনস্টলেশন সম্পূর্ণ হলে, উদাহরণ OpenThread অ্যাপ্লিকেশন তৈরি করুন। এই কোডল্যাবের জন্য আমরা সিমুলেশন উদাহরণ ব্যবহার করছি।

$ cd ~/src/openthread
$ ./script/cmake-build simulation

এখন OpenThread ডেমন তৈরি করুন:

$ ./script/cmake-build posix -DOT_DAEMON=ON

4. একটি থ্রেড নেটওয়ার্ক অনুকরণ করুন

এই কোডল্যাবের জন্য আপনি যে উদাহরণ অ্যাপ্লিকেশনটি ব্যবহার করবেন তা একটি ন্যূনতম OpenThread অ্যাপ্লিকেশন প্রদর্শন করে যা একটি মৌলিক কমান্ড-লাইন ইন্টারফেসের (CLI) মাধ্যমে OpenThread কনফিগারেশন এবং ব্যবস্থাপনা ইন্টারফেসগুলিকে প্রকাশ করে।

এই অনুশীলনটি আপনাকে অন্য একটি সিমুলেটেড থ্রেড ডিভাইস থেকে একটি সিমুলেটেড থ্রেড ডিভাইসকে পিং করার জন্য প্রয়োজনীয় ন্যূনতম পদক্ষেপগুলির মধ্য দিয়ে নিয়ে যায়।

নীচের চিত্রটি একটি মৌলিক থ্রেড নেটওয়ার্ক টপোলজি বর্ণনা করে। এই অনুশীলনের জন্য, আমরা সবুজ বৃত্তের মধ্যে দুটি নোডকে অনুকরণ করব: একটি থ্রেড লিডার এবং থ্রেড রাউটার তাদের মধ্যে একটি একক সংযোগ সহ।

6e3aa07675f902dc.png

একটি নোড পিং করুন

1. স্টার্ট নোড 1

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 রেডিও এমুলেশন (পোর্ট = 9000 + ফাইল বর্ণনাকারী) এর জন্য একটি UDP পোর্টে বাঁধার সময়ও এই মানটি ব্যবহার করা হয়। এই কোডল্যাবে একটি সিমুলেটেড থ্রেড ডিভাইসের প্রতিটি উদাহরণ একটি ভিন্ন ফাইল বর্ণনাকারী ব্যবহার করবে।

দ্রষ্টব্য: একটি সিমুলেটেড ডিভাইসের জন্য প্রক্রিয়াটি তৈরি করার সময় এই কোডল্যাবে উল্লিখিত হিসাবে শুধুমাত্র 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

নোড 1 এর থ্রেড ইন্টারফেসে নির্ধারিত 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 টিপুন।

থ্রেড নেটওয়ার্ক কী এবং প্যান আইডি কনফিগার করুন, নোড 1 এর অপারেশনাল ডেটাসেটের মতো একই মান ব্যবহার করে:

> dataset networkkey e4344ca17d1dca2a33f064992f31f786
Done
> dataset panid 0xc169
Done

এই ডেটাসেটটিকে সক্রিয় হিসাবে কমিট করুন:

> dataset commit active
Done

IPv6 ইন্টারফেস আনুন:

> ifconfig up
Done

থ্রেড প্রোটোকল অপারেশন শুরু করুন:

> thread start
Done

ডিভাইসটি একটি শিশু হিসাবে নিজেকে শুরু করবে। একটি থ্রেড চাইল্ড একটি এন্ড ডিভাইসের সমতুল্য, এটি একটি থ্রেড ডিভাইস যা শুধুমাত্র একটি অভিভাবক ডিভাইসের সাথে ইউনিকাস্ট ট্র্যাফিক প্রেরণ এবং গ্রহণ করে।

> state
child
Done

2 মিনিটের মধ্যে আপনি child থেকে router স্টেট স্যুইচ দেখতে পাবেন। একটি থ্রেড রাউটার থ্রেড ডিভাইসের মধ্যে ট্রাফিক রাউটিং করতে সক্ষম। এটি একটি অভিভাবক হিসাবেও উল্লেখ করা হয়।

> state
router
Done

নেটওয়ার্ক যাচাই করুন

জাল নেটওয়ার্ক যাচাই করার একটি সহজ উপায় হল রাউটার টেবিলের দিকে তাকান।

1. সংযোগ পরীক্ষা করুন

নোড 2-এ, RLOC16 পান। RLOC16 হল ডিভাইসের RLOC IPv6 ঠিকানার শেষ 16 বিট।

> rloc16
5800
Done

নোড 1 এ, নোড 2 এর RLOC16 এর জন্য রাউটার টেবিলটি পরীক্ষা করুন। নিশ্চিত করুন যে নোড 2 প্রথমে রাউটার অবস্থায় স্যুইচ করেছে।

> 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 |

নোড 1 এর 0xa800 এর RLOC টেবিলে পাওয়া যায়, এটি নিশ্চিত করে যে এটি জালের সাথে সংযুক্ত।

2. নোড 2 থেকে পিং নোড 1

দুটি সিমুলেটেড থ্রেড ডিভাইসের মধ্যে সংযোগ যাচাই করুন। নোড 2-এ, নোড 1-এ বরাদ্দ করা 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 এন্টার টিপুন।

নেটওয়ার্ক পরীক্ষা করুন

এখন আপনি দুটি সিমুলেটেড থ্রেড ডিভাইসের মধ্যে সফলভাবে পিং করতে পারেন, একটি নোড অফলাইনে নিয়ে জাল নেটওয়ার্ক পরীক্ষা করুন।

নোড 1 এ ফিরে যান এবং থ্রেড বন্ধ করুন:

> thread stop
Done

নোড 2 এ স্যুইচ করুন এবং রাজ্যটি পরীক্ষা করুন। দুই মিনিটের মধ্যে, নোড 2 শনাক্ত করে যে নেতা (নোড 1) অফলাইন, এবং নেটওয়ার্কের leader হতে আপনার নোড 2 রূপান্তর দেখতে হবে:

> state
router
Done
...
> state
leader
Done

একবার নিশ্চিত হয়ে গেলে, প্রস্থান করার আগে থ্রেড এবং ফ্যাক্টরি রিসেট নোড 2 বন্ধ করুন। এই অনুশীলনে আমরা যে থ্রেড নেটওয়ার্ক শংসাপত্রগুলি ব্যবহার করেছি তা নিশ্চিত করার জন্য একটি ফ্যাক্টরি রিসেট করা হয় পরবর্তী অনুশীলনে নিয়ে যাওয়া হয় না।

> thread stop
Done
> factoryreset
>
> exit

এছাড়াও ফ্যাক্টরি রিসেট এবং নোড 1 থেকে প্রস্থান করুন:

> factoryreset
>
> exit

সমস্ত উপলব্ধ CLI কমান্ড অন্বেষণ করতে OpenThread CLI রেফারেন্স দেখুন।

5. কমিশনিং সঙ্গে নোড প্রমাণীকরণ

পূর্ববর্তী অনুশীলনে, আপনি দুটি সিমুলেটেড ডিভাইস এবং যাচাইকৃত সংযোগ সহ একটি থ্রেড নেটওয়ার্ক সেট আপ করেছেন। যাইহোক, এটি শুধুমাত্র অপ্রমাণিত IPv6 লিঙ্ক-স্থানীয় ট্র্যাফিককে ডিভাইসগুলির মধ্যে পাস করার অনুমতি দেয়। তাদের মধ্যে বিশ্বব্যাপী IPv6 ট্র্যাফিক রুট করতে (এবং একটি থ্রেড বর্ডার রাউটারের মাধ্যমে ইন্টারনেট), নোডগুলিকে অবশ্যই প্রমাণীকরণ করতে হবে।

প্রমাণীকরণের জন্য, একটি ডিভাইসকে অবশ্যই কমিশনার হিসাবে কাজ করতে হবে। কমিশনার হল নতুন থ্রেড ডিভাইসের জন্য বর্তমানে নির্বাচিত প্রমাণীকরণ সার্ভার, এবং ডিভাইসগুলির নেটওয়ার্কে যোগদানের জন্য প্রয়োজনীয় নেটওয়ার্ক শংসাপত্র প্রদানের জন্য অনুমোদনকারী৷

এই অনুশীলনে, আমরা আগের মতো একই দুই-নোড টপোলজি ব্যবহার করব। প্রমাণীকরণের জন্য, থ্রেড লিডার কমিশনার হিসাবে কাজ করবে, থ্রেড রাউটার যোগদানকারী হিসাবে কাজ করবে।

d6a67e8a0d0b5dcb.png

1. একটি নেটওয়ার্ক তৈরি করুন

পূর্ববর্তী অনুশীলন থেকে অব্যাহত থাকলে, আপনার ইতিমধ্যে দুটি টার্মিনাল উইন্ডো খোলা থাকা উচিত। যদি না হয়, নিশ্চিত করুন যে দুটি খোলা এবং ব্যবহারের জন্য প্রস্তুত। একটি নোড 1 হিসাবে কাজ করবে, অন্যটি নোড 2 হিসাবে কাজ করবে।

নোড 1-এ, 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

2. কমিশনারের ভূমিকা শুরু করুন

নোড 1 এ থাকাকালীন, কমিশনারের ভূমিকা শুরু করুন:

> commissioner start
Done

J01NME যোগদানকারী শংসাপত্রের সাথে যেকোনো যোগদানকারীকে ( * ওয়াইল্ডকার্ড ব্যবহার করে) নেটওয়ার্কে কমিশন করার অনুমতি দিন। একটি যোগদানকারী এমন একটি ডিভাইস যা একজন মানব প্রশাসক দ্বারা একটি কমিশনড থ্রেড নেটওয়ার্কে যোগ করা হয়।

> commissioner joiner add * J01NME
Done

3. যোগদানকারী ভূমিকা শুরু করুন

একটি দ্বিতীয় টার্মিনাল উইন্ডোতে, একটি নতুন CLI প্রক্রিয়া তৈরি করুন। এটি নোড 2।

$ cd ~/src/openthread
$ ./build/simulation/examples/apps/cli/ot-cli-ftd 2

নোড 2-এ, J01NME জয়নার শংসাপত্র ব্যবহার করে যোগদানকারীর ভূমিকা সক্ষম করুন।

> ifconfig up
Done
> joiner start J01NME
Done

... নিশ্চিতকরণের জন্য কয়েক সেকেন্ড অপেক্ষা করুন ...

Join success

একজন যোগদানকারী হিসেবে, ডিভাইস (নোড 2) সফলভাবে কমিশনারের (নোড 1) সাথে নিজেকে প্রমাণীকরণ করেছে এবং থ্রেড নেটওয়ার্ক শংসাপত্র পেয়েছে।

এখন যে নোড 2 প্রমাণিত হয়েছে, থ্রেড শুরু করুন:

> thread start
Done

4. নেটওয়ার্ক প্রমাণীকরণ যাচাই করুন

এটি এখন নেটওয়ার্কে যোগদান করেছে তা যাচাই করতে নোড 2-এ state পরীক্ষা করুন৷ দুই মিনিটের মধ্যে, child থেকে router নোড 2 রূপান্তর:

> state
child
Done
...
> state
router
Done

5. কনফিগারেশন রিসেট করুন

পরবর্তী অনুশীলনের জন্য প্রস্তুত করতে, কনফিগারেশনটি পুনরায় সেট করুন। প্রতিটি নোডে, থ্রেড বন্ধ করুন, একটি ফ্যাক্টরি রিসেট করুন এবং সিমুলেটেড থ্রেড ডিভাইস থেকে প্রস্থান করুন:

> thread stop
Done
> factoryreset
>
> exit

factoryreset কমান্ডের পরে > প্রম্পট ফিরিয়ে আনতে আপনাকে কয়েকবার এন্টার enter হতে পারে।

6. OpenThread ডেমন দিয়ে নেটওয়ার্ক পরিচালনা করুন

এই অনুশীলনের জন্য, আমরা একটি CLI উদাহরণ (একটি একক এমবেডেড SoC থ্রেড ডিভাইস) এবং একটি রেডিও কো-প্রসেসর (RCP) উদাহরণ অনুকরণ করতে যাচ্ছি।

ot-daemon হল OpenThread Posix অ্যাপের একটি মোড যা ইনপুট এবং আউটপুট হিসাবে একটি UNIX সকেট ব্যবহার করে, যাতে OpenThread কোর একটি পরিষেবা হিসাবে চলতে পারে। একটি ক্লায়েন্ট প্রোটোকল হিসাবে OpenThread CLI ব্যবহার করে সকেটের সাথে সংযোগ করে এই পরিষেবাটির সাথে যোগাযোগ করতে পারে।

ot-ctl হল একটি CLI যা RCP পরিচালনা ও কনফিগার করার জন্য ot-daemon দ্বারা সরবরাহ করা হয়। এটি ব্যবহার করে, আমরা থ্রেড ডিভাইস দ্বারা তৈরি নেটওয়ার্কের সাথে RCP সংযোগ করব।

ওটি-ডেমন ব্যবহার করুন

এই অনুশীলনটি নিম্নলিখিতগুলির সাথে সম্পর্কিত তিনটি টার্মিনাল উইন্ডো ব্যবহার করবে:

  1. সিমুলেটেড থ্রেড ডিভাইসের CLI উদাহরণ (নোড 1)
  2. ot-daemon প্রক্রিয়া
  3. ot-ctl CLI উদাহরণ

পূর্ববর্তী অনুশীলন থেকে অব্যাহত থাকলে আপনার ইতিমধ্যে দুটি টার্মিনাল উইন্ডো খোলা থাকা উচিত। এই অনুশীলনের জন্য আপনার কাছে তিনটি টার্মিনাল উইন্ডো উপলব্ধ রয়েছে তা নিশ্চিত করতে তৃতীয়টি খুলুন।

1. স্টার্ট নোড 1

প্রথম টার্মিনাল উইন্ডোতে, আপনার সিমুলেটেড থ্রেড ডিভাইসের জন্য 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

নোড 1 এর থ্রেড ইন্টারফেসে নির্ধারিত 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
>

একটি থ্রেড নেটওয়ার্ক সিমুলেট স্টেপে ব্যাখ্যা করা হয়েছে, একটি ঠিকানা লিঙ্ক-স্থানীয় ( fe80 ) এবং তিনটি হল মেশ-লোকাল ( fd )। EID হল জাল-স্থানীয় ঠিকানা যে ঠিকানায় ff:fe00 নেই। এই নমুনা আউটপুটে, EID হল fd55:cf34:dea5:7994:460:872c:e807:c4ab

আপনার ipaddr আউটপুট থেকে নির্দিষ্ট EID সনাক্ত করুন, যা নোডের সাথে যোগাযোগ করতে ব্যবহার করা হবে।

2. ওটি-ডেমন শুরু করুন

দ্বিতীয় টার্মিনাল উইন্ডোতে, openthread ডিরেক্টরিতে নেভিগেট করুন, এবং একটি RCP নোডের জন্য ot-daemon শুরু করুন, যাকে আমরা নোড 2 বলব। -v ভার্বোজ পতাকা ব্যবহার করুন যাতে আপনি লগ আউটপুট দেখতে পারেন এবং নিশ্চিত করতে পারেন যে এটি চলছে, এবং 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

এই টার্মিনালটি খোলা রাখুন এবং পটভূমিতে চলমান রাখুন। আপনি এতে আর কোন কমান্ড লিখবেন না।

3. নেটওয়ার্কে যোগ দিতে ot-ctl ব্যবহার করুন

আমরা এখনও কোনো থ্রেড নেটওয়ার্কে নোড 2 ( ot-daemon আরসিপি) কমিশন করিনি। এখানেই ot-ctl আসে৷ ot-ctl একই CLI ব্যবহার করে OpenThread CLI অ্যাপের মতো৷ অতএব, আপনি অন্যান্য সিমুলেটেড থ্রেড ডিভাইসগুলির মতো একই পদ্ধতিতে ot-daemon নোডগুলি নিয়ন্ত্রণ করতে পারেন।

একটি তৃতীয় টার্মিনাল উইন্ডোতে, ot-ctl শুরু করুন:

$ sudo ./build/posix/src/posix/ot-ctl
>

দ্রষ্টব্য: আপনি যদি এই কমান্ডটি চালানোর পরে > প্রম্পটটি দেখতে না পান তবে enter টিপুন।

আপনি নোড 2 (আরসিপি নোড) পরিচালনা করতে এই তৃতীয় টার্মিনাল উইন্ডোতে ot-ctl ব্যবহার করবেন যা আপনি ot-daemon দিয়ে দ্বিতীয় টার্মিনাল উইন্ডোতে শুরু করেছিলেন। নোড 2 এর state পরীক্ষা করুন:

> state
disabled
Done

নোড 2 এর eui64 পান, নির্দিষ্ট যোগদানকারীর সাথে যোগদান সীমাবদ্ধ করতে:

> eui64
18b4300000000001
Done

নোড 1 (প্রথম টার্মিনাল উইন্ডো) এ, কমিশনার শুরু করুন এবং শুধুমাত্র সেই eui64-এ যোগদান সীমাবদ্ধ করুন:

> commissioner start
Done
> commissioner joiner add 18b4300000000001 J01NME
Done

নোড 2 (তৃতীয় টার্মিনাল উইন্ডো) এ, নেটওয়ার্ক ইন্টারফেস আনুন এবং নেটওয়ার্কে যোগ দিন:

> ifconfig up
Done
> joiner start J01NME
Done

... নিশ্চিতকরণের জন্য কয়েক সেকেন্ড অপেক্ষা করুন ...

Join success

একজন যোগদানকারী হিসেবে, RCP (নোড 2) সফলভাবে কমিশনারের (নোড 1) সাথে নিজেকে প্রমাণীকরণ করেছে এবং থ্রেড নেটওয়ার্ক শংসাপত্র পেয়েছে।

এখন থ্রেড নেটওয়ার্কে নোড 2 এ যোগ দিন:

> thread start
Done

4. নেটওয়ার্ক প্রমাণীকরণ যাচাই করুন

এটি এখন নেটওয়ার্কে যোগদান করেছে তা যাচাই করতে নোড 2-এ state পরীক্ষা করুন৷ দুই মিনিটের মধ্যে, child থেকে router নোড 2 রূপান্তর:

> state
child
Done
...
> state
router
Done

5. সংযোগ যাচাই করুন

Ctrl+D বা exit কমান্ড ব্যবহার করে ot-ctl প্রস্থান করুন এবং আপনার হোস্ট মেশিনের কমান্ড লাইনে, ping Node 1, ping6 কমান্ডের সাথে এর EID ব্যবহার করে। যদি 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

7. অভিনন্দন!

আপনি OpenThread ব্যবহার করে আপনার প্রথম থ্রেড নেটওয়ার্ক সফলভাবে সিমুলেট করেছেন। অসাধারণ!

এই কোডল্যাবে আপনি শিখেছেন কিভাবে:

  • OpenThread বিল্ড টুলচেন সেট আপ করুন
  • একটি থ্রেড নেটওয়ার্ক অনুকরণ করুন
  • থ্রেড নোড প্রমাণীকরণ
  • OpenThread ডেমনের সাথে একটি থ্রেড নেটওয়ার্ক পরিচালনা করুন

আপনি যদি আরও জানতে চান তবে এই রেফারেন্সগুলি অন্বেষণ করুন: