ভিজ্যুয়ালাইজেশন সহ একটি থ্রেড নেটওয়ার্ক পরীক্ষা করা হচ্ছে

1. ভূমিকা

5abd22afa2f2ee9a.png

থ্রেড, ওপেন থ্রেড, ওটিএনএস এবং সিল্ক কি?

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

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

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

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

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

  • OpenThread এর কার্যকারিতা যাচাইকরণ কাঠামো: সিল্ক
  • OTNS বৈশিষ্ট্য সক্ষম করে বাস্তব ডিভাইসের জন্য OpenThread তৈরি করুন
  • সিল্ক টেস্ট কেস চালানোর মাধ্যমে গঠিত থ্রেড নেটওয়ার্কের অবস্থা নিরীক্ষণ করতে OTNS-ওয়েব ইন্টারফেস ব্যবহার করুন

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

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

হার্ডওয়্যার:

  • 6 নর্ডিক সেমিকন্ডাক্টর nRF52840 ডেভ বোর্ড
  • বোর্ড সংযোগ করতে 6 ইউএসবি থেকে মাইক্রো-ইউএসবি কেবল
  • ইউএসবি হাব

সফটওয়্যার:

  • লিনাক্স x86_64।
  • গিট
  • 1.11+ যান
  • ওয়েব ব্রাউজার। OTNS-ওয়েব সিমুলেশন প্রদর্শনের জন্য একটি ওয়েব ব্রাউজার ব্যবহার করে।

পূর্বশর্ত:

2. পূর্বশর্ত

পূর্বের মৌলিক কোডল্যাবগুলি সম্পূর্ণ করুন

প্যাকেজ পূর্বশর্ত পরীক্ষা করা হচ্ছে

আসুন নিশ্চিত করি যে সমস্ত পূর্বশর্ত পূরণ হয়েছে।

  1. $PATHotns এক্সিকিউটেবল অনুসন্ধানযোগ্য কিনা তা পরীক্ষা করতে which otns চালান।
  2. wpantund উপলব্ধ আছে তা নিশ্চিত করতে which wpantund চালান।
  3. নিশ্চিত করুন যে ARM GNU টুলচেইন, J-Link, এবং nrfjprog প্যাকেজগুলি সমস্ত উপলব্ধ।

দ্রষ্টব্য: সেট আপ নির্দেশিকা জন্য লিঙ্ক ডকুমেন্টেশন পড়ুন. পূর্বশর্ত #1 হল OTNS ব্যবহার করে সিমুলেট থ্রেড নেটওয়ার্ক থেকে এবং অন্যগুলি হল nRF52840 বোর্ড এবং OpenThread সহ একটি থ্রেড নেটওয়ার্ক তৈরি করুন

3. সিল্ক সেটআপ

সিল্ক ক্লোন করতে এবং পরিবেশ সেট আপ করতে, আপনার উত্স ডিরেক্টরির অধীনে নিম্নলিখিত কমান্ডগুলি চালান:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

হার্ডওয়্যার কনফিগারেশন ফাইল সংজ্ঞায়িত করুন

সিল্ককে আপনার মেশিনের সাথে সংযুক্ত উপলব্ধ পরীক্ষার হার্ডওয়্যার সংস্থান সংগ্রহ করার অনুমতি দিতে, নিম্নলিখিত বিন্যাসে একটি hwconfig.ini ফাইল সংজ্ঞায়িত করুন:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

usbinfo নামে একটি টুল সিল্কের অংশ হিসাবে ইনস্টল করা হয়েছে যা ইন্টারফেস সিরিয়াল নম্বর এবং ইউএসবি ইন্টারফেস নম্বর খুঁজে বের করতে ব্যবহার করা যেতে পারে। DutSerial হল SN নম্বর চিপে মুদ্রিত বা J-Link পণ্যের জন্য usbinfo দ্বারা প্রদর্শিত।

[DEFAULT] বিভাগে LayoutCenter এবং LayoutRadius ক্ষেত্রগুলি যখন ওয়েব UI-তে ডিভাইসগুলিকে ভিজ্যুয়ালাইজ করা হয় তখন বিন্যাসের আকার নির্ধারণ করে৷ এখানে উপস্থাপিত মানগুলিতে সেগুলি সেট করা একটি ভাল সূচনা পয়েন্ট হতে পারে।

এটি অনুসরণ করে, এটি প্রতিটি পরীক্ষার ডিভাইসের জন্য একটি বিভাগ সংজ্ঞায়িত করে এবং প্রাসঙ্গিক হার্ডওয়্যার তথ্য সরবরাহ করে।

4. OTNS সক্ষম করে OpenThread কম্পাইল করুন

বিল্ডিং ইমেজ এবং ঝলকানি

ডিফল্টরূপে, OpenThread ডিভাইস OTNS সম্পর্কিত বার্তা নির্গত করে না। OTNS ভিজ্যুয়ালাইজেশনের জন্য প্রয়োজনীয় ইন্টারফেসগুলিতে লগ করার জন্য ডেভ বোর্ডগুলিকে স্ট্যাটাস বার্তা নির্গত করার অনুমতি দিতে, একটি FTD ইমেজ তৈরি করতে OpenThread সোর্স ডিরেক্টরির অধীনে নিম্নলিখিত কমান্ডটি চালান এবং এটিকে হেক্স ফর্ম্যাটে রূপান্তর করুন।

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

বোর্ডগুলি ফ্ল্যাশ করতে, nrfjprog ব্যবহার করতে থ্রেড নেটওয়ার্ক তৈরি করুন কোডল্যাবের ধাপ 4-এর নির্দেশাবলী অনুসরণ করুন। এর পরে, হোস্ট মেশিনে nRF USB পোর্টের মাধ্যমে সমস্ত বোর্ড সংযুক্ত করুন। ইউএসবি থেকে মাইক্রো-ইউএসবি তারের একই সেট J-লিঙ্ক পোর্ট থেকে সংযোগ বিচ্ছিন্ন করা যেতে পারে এবং nRF52840 ডেভ বোর্ডের nRF USB পোর্টগুলির সাথে সংযুক্ত করা যেতে পারে। এইভাবে শুধুমাত্র এই 6 তারের পরীক্ষা নির্বাহ করা যেতে পারে. ঝামেলা এড়াতে, 12টি কেবল ব্যবহার করুন এবং উভয় পোর্টের সাথে সংযোগ করুন।

5. বাস্তব মোড সহ OTNS সার্ভার চালানো

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

otns -raw -real -ot-cli otns-silk-proxy

এই যুক্তিগুলি OTNS কে gRPC এবং UDP বার্তাগুলি আশা করতে বলে যা বর্ণনা করে যে কীভাবে থ্রেড নেটওয়ার্ককে কল্পনা করা উচিত, নেটওয়ার্ককে অনুকরণ করার জন্য একাধিক ot-cli প্রক্রিয়া চালানোর পরিবর্তে। আপনার ব্রাউজারটি স্বয়ংক্রিয়ভাবে একটি খালি ক্যানভাস সহ ভিজ্যুয়ালাইজেশন পৃষ্ঠাটি খুলতে হবে।

4dd5b41bf7e71334.png

6. OTNS সমর্থন সহ সিল্ক টেস্ট কেস চালানো

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

silk/unit_tests এ অবস্থিত silk_run_test.py ফাইলটি আপনাকে একটি হেডস্টার্ট দেয়। টেস্ট কেস চালানোর সময় সিল্ক OTNS সমর্থন প্রদান করে। যেহেতু OTNS রিয়েল মোড পরিষেবা ইতিমধ্যেই স্থানীয়ভাবে চলছে, তাই আমাদেরকে একটি আউটপুট লগ ফাইল, ইনপুট টেস্ট স্ক্রিপ্ট এবং hwconfig.ini ফাইলের জন্য পছন্দসই অবস্থান সহ silk_run_test.py ফাইলটি পরিবর্তন করতে হবে। -s localhost আর্গুমেন্ট সিল্ককে localhost OTNS বার্তা পাঠাতে বলে।

উদাহরণস্বরূপ, কেউ silk_run_test.py ফাইলে নিম্নলিখিত পরিবর্তনগুলি ব্যবহার করে ot_test_form_network.py নামে পরীক্ষা চালাতে পারে। /opt/openthread_test/ হল ডিফল্ট পাথ সিল্ক লগ আউটপুট এবং কনফিগার ফাইলের জন্য ব্যবহার করে, কিন্তু আপনি যেকোনো পাথ ব্যবহার করতে পারেন।

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

গঠিত নেটওয়ার্কের টপোলজি ভিজ্যুয়ালাইজেশন OTNS ওয়েব UI-তে প্রদর্শিত হবে।

ee443b66e0a6620b.png

উপরের বাম কোণে ভিজ্যুয়ালাইজেশন পরিসংখ্যান, OT সংস্করণ এবং পরীক্ষার শিরোনাম দেখায়। নীচের বাম কোণে লগ উইন্ডোর নিয়ন্ত্রণ রয়েছে, যা ডানদিকে দেখানো হয়েছে। প্রাথমিকভাবে, নোড যোগ করা হয় কিন্তু কোন নেটওয়ার্ক গঠিত হয় না। পরীক্ষার অগ্রগতির সাথে সাথে প্রতিটি নোডের মোড এবং ভূমিকা পরিবর্তিত হয় এবং লিঙ্কগুলি তৈরি হয়।

5c38e2c72519e620.png

7. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে ভৌত থ্রেড ডিভাইসে একটি সিল্ক পরীক্ষা চালিয়েছেন এবং এটি OTNS ব্যবহার করে কল্পনা করেছেন!

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

এরপর কি?

সিল্ক প্যাকেজে অন্তর্ভুক্ত অন্যান্য OpenThread পরীক্ষার ক্ষেত্রে চালানোর চেষ্টা করুন।

আরও পড়া

বিভিন্ন OpenThread সম্পদের জন্য openthread.io এবং সিল্ক দেখুন।

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