উন্নত বৈশিষ্ট্য বাস্তবায়ন

GitHub-এ উৎস দেখুন

লক্ষ্য হার্ডওয়্যার প্ল্যাটফর্মে সমর্থিত কিনা তার উপর নির্ভর করে কিছু উন্নত বৈশিষ্ট্য ঐচ্ছিক।

স্বয়ংক্রিয় ফ্রেম মুলতুবি

IEEE 802.15.4 পিতামাতা এবং সন্তানের মধ্যে দুটি ধরণের ডেটা ট্রান্সমিশন পদ্ধতি সংজ্ঞায়িত করে: সরাসরি ট্রান্সমিশন এবং ইনডাইরেক্ট ট্রান্সমিশন। পরেরটি প্রাথমিকভাবে স্লিপি এন্ড ডিভাইস (SEDs) এর জন্য ডিজাইন করা হয়েছে যেগুলি বেশিরভাগ সময় ঘুমায়, পর্যায়ক্রমে সারিবদ্ধ ডেটার জন্য পিতামাতার পোল করার জন্য জেগে থাকে।

  • সরাসরি ট্রান্সমিশন — অভিভাবক সরাসরি শেষ ডিভাইসে একটি ডেটা ফ্রেম পাঠান ডাইরেক্ট ট্রান্সমিশন

  • ইনডাইরেক্ট ট্রান্সমিশন — অভিভাবক তার অভিপ্রেত শেষ ডিভাইস দ্বারা অনুরোধ না করা পর্যন্ত ডেটা ধরে রাখে ডাইরেক্ট ট্রান্সমিশন

পরোক্ষ ক্ষেত্রে, একটি শিশুর শেষ ডিভাইসের জন্য কোনো ডেটা উপলব্ধ আছে কিনা তা নির্ধারণ করতে প্রথমে অভিভাবককে পোল করতে হবে। এটি করার জন্য, শিশু একটি ডেটা অনুরোধ পাঠায়, যা পিতামাতা স্বীকার করেন। তারপর অভিভাবক নির্ধারণ করেন যে এটিতে চাইল্ড ডিভাইসের জন্য কোনো ডেটা আছে কিনা; যদি তাই হয়, এটি চাইল্ড ডিভাইসে একটি ডেটা প্যাকেট পাঠায়, যা ডেটার প্রাপ্তি স্বীকার করে।

যদি রেডিও SED-তে বহির্গামী স্বীকৃতিতে ফ্রেম পেন্ডিং বিট গতিশীলভাবে সেট করা সমর্থন করে, তাহলে এই ক্ষমতা সক্ষম করতে ড্রাইভারদের অবশ্যই উৎস ঠিকানা ম্যাচ API প্রয়োগ করতে হবে। OpenThread এই এপিআই ব্যবহার করে রেডিওকে জানাতে যে কোন SED-এর জন্য ফ্রেম পেন্ডিং বিট সেট করতে হবে।

রেডিও যদি গতিশীলভাবে ফ্রেম পেন্ডিং বিট সেট করা সমর্থন না করে, তাহলে রেডিওটি OT_ERROR_NOT_IMPLEMENTED ফেরত দিতে উৎস ঠিকানার মিল API স্টাব করে দিতে পারে।

রেডিও দিয়ে এনার্জি স্ক্যান/ডিটেক্ট করুন

এনার্জি স্ক্যান/ডিটেক্ট ফিচারের জন্য রেডিও চিপের প্রয়োজন হয় নির্বাচিত চ্যানেলে শক্তির নমুনা দিতে এবং সনাক্ত করা শক্তির মান উপরের স্তরে ফেরত দিতে।

এই বৈশিষ্ট্যটি বাস্তবায়িত না হলে, IEEE 802.15.4 MAC স্তর চ্যানেলে বর্তমান শক্তির মান মূল্যায়ন করার জন্য একটি বীকন অনুরোধ/প্রতিক্রিয়া প্যাকেট পাঠায়/গ্রহণ করে।

যদি রেডিও চিপ এনার্জি স্ক্যান/ডিটেক্ট সমর্থন করে, তাহলে ম্যাক্রো OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 সেট করে সফ্টওয়্যার শক্তি স্ক্যানিং লজিক নিষ্ক্রিয় করতে ভুলবেন না।

mbedTLS-এর জন্য হার্ডওয়্যার ত্বরণ

mbedTLS প্রধান কনফিগারেশন হেডার ফাইলে বেশ কিছু ম্যাক্রো সংজ্ঞায়িত করে, mbedtls-config.h , ব্যবহারকারীদেরকে AES, SHA1, SHA2, এবং অন্যান্য মডিউলগুলির বিকল্প বাস্তবায়ন সক্ষম করার জন্য, সেইসাথে GF-এর উপর উপবৃত্তাকার বক্ররেখা ক্রিপ্টোগ্রাফির (ECC) জন্য পৃথক ফাংশন সক্ষম করতে দেয়। (p) মডিউল। আরও তথ্যের জন্য mbedTLS হার্ডওয়্যার ত্বরণ দেখুন।

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

OpenThread-এর মধ্যে হার্ডওয়্যার ত্বরণ সক্ষম করতে, নিম্নলিখিত mbedTLS কনফিগারেশন হেডার ফাইলগুলি প্ল্যাটফর্মের CMake ফাইলগুলিতে ot-config কম্পাইল সংজ্ঞাগুলিতে যোগ করা উচিত:

  • প্রধান কনফিগারেশন, যা OpenThread-এ ব্যবহৃত সমস্ত প্রয়োজনীয় ম্যাক্রো সংজ্ঞায়িত করে: /openthread/third-party/mbedtls/mbedtls-config.h
  • ব্যবহারকারী-নির্দিষ্ট কনফিগারেশন, যা মডিউল এবং ফাংশনগুলির বিকল্প বাস্তবায়নকে সংজ্ঞায়িত করে: src/ platform-name -mbedtls-config.h

nrf52811.cmake থেকে উদাহরণ:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

mbedtls-config.h এ মন্তব্য করা ম্যাক্রো বাধ্যতামূলক নয়, এবং হার্ডওয়্যার ত্বরণের জন্য ব্যবহারকারী-নির্দিষ্ট কনফিগারেশন হেডার ফাইলে সক্রিয় করা যেতে পারে।

একটি সম্পূর্ণ উদাহরণ ব্যবহারকারী-নির্দিষ্ট কনফিগারেশনের জন্য, ot-efr32mbedtls_config_autogen.h ফাইলটি দেখুন।

AES মডিউল

OpenThread সিকিউরিটি IEEE 802.15.4 বা MLE বার্তাগুলিকে এনক্রিপ্ট/ডিক্রিপ্ট করার জন্য AES CCM (CBC-MAC-এর সাথে কাউন্টার) ক্রিপ্টো প্রয়োগ করে এবং মেসেজ ইন্টিগ্রেশন কোড যাচাই করে৷ হার্ডওয়্যার ত্বরণ অন্তত AES CCM মৌলিক কার্যকরী কলের জন্য মৌলিক AES ECB (ইলেক্ট্রনিক কোডবুক বুক) মোড সমর্থন করবে।

একটি বিকল্প AES মডিউল বাস্তবায়ন ব্যবহার করতে:

  1. ব্যবহারকারী-নির্দিষ্ট mbedTLS কনফিগারেশন হেডার ফাইলে MBEDTLS_AES_ALT ম্যাক্রো সংজ্ঞায়িত করুন
  2. MBEDTLS_CPPFLAGS ভেরিয়েবল ব্যবহার করে aes_alt.h ফাইলের পথ নির্দেশ করুন

SHA256 মডিউল

OpenThread সিকিউরিটি HMAC এবং SHA256 হ্যাশ অ্যালগরিদম প্রয়োগ করে থ্রেড স্পেসিফিকেশন অনুযায়ী নেটওয়ার্ক কী ব্যবস্থাপনা এবং PSKc জেনারেশনের জন্য হ্যাশ মান গণনা করতে।

একটি বিকল্প মৌলিক SHA256 মডিউল বাস্তবায়ন ব্যবহার করতে:

  1. ব্যবহারকারী-নির্দিষ্ট mbedTLS কনফিগারেশন হেডার ফাইলে MBEDTLS_SHA256_ALT ম্যাক্রো সংজ্ঞায়িত করুন
  2. MBEDTLS_CPPFLAGS ভেরিয়েবল ব্যবহার করে sha256_alt.h ফাইলের পথ নির্দেশ করুন

ECC ফাংশন

যেহেতু mbedTLS বর্তমানে শুধুমাত্র ECC ফাংশনের অংশগুলির জন্য হার্ডওয়্যার ত্বরণ সমর্থন করে, সম্পূর্ণ মডিউলের পরিবর্তে, আপনি ECC পয়েন্ট গুণনকে ত্বরান্বিত path-to-mbedtls /library/ecp.c এ সংজ্ঞায়িত কিছু ফাংশন বাস্তবায়ন করতে বেছে নিতে পারেন।

কার্ভ secp256r1 ECJPAKE খসড়ার কী এক্সচেঞ্জ অ্যালগরিদমে ব্যবহৃত হয়। তাই, হার্ডওয়্যার ত্বরণ অন্তত secp256r1 সংক্ষিপ্ত weierstrass কার্ভ অপারেশন সমর্থন করা উচিত. একটি উদাহরণের জন্য mbedTLS-এর জন্য SiLabs CRYPTO হার্ডওয়্যার ত্বরণ দেখুন।

,

GitHub-এ উৎস দেখুন

লক্ষ্য হার্ডওয়্যার প্ল্যাটফর্মে সমর্থিত কিনা তার উপর নির্ভর করে কিছু উন্নত বৈশিষ্ট্য ঐচ্ছিক।

স্বয়ংক্রিয় ফ্রেম মুলতুবি

IEEE 802.15.4 পিতামাতা এবং সন্তানের মধ্যে দুটি ধরণের ডেটা ট্রান্সমিশন পদ্ধতি সংজ্ঞায়িত করে: সরাসরি ট্রান্সমিশন এবং ইনডাইরেক্ট ট্রান্সমিশন। পরেরটি প্রাথমিকভাবে স্লিপি এন্ড ডিভাইস (SEDs) এর জন্য ডিজাইন করা হয়েছে যেগুলি বেশিরভাগ সময় ঘুমায়, পর্যায়ক্রমে সারিবদ্ধ ডেটার জন্য পিতামাতার পোল করার জন্য জেগে থাকে।

  • সরাসরি ট্রান্সমিশন — অভিভাবক সরাসরি শেষ ডিভাইসে একটি ডেটা ফ্রেম পাঠান ডাইরেক্ট ট্রান্সমিশন

  • ইনডাইরেক্ট ট্রান্সমিশন — অভিভাবক তার অভিপ্রেত শেষ ডিভাইস দ্বারা অনুরোধ না করা পর্যন্ত ডেটা ধরে রাখে ডাইরেক্ট ট্রান্সমিশন

পরোক্ষ ক্ষেত্রে, একটি শিশুর শেষ ডিভাইসের জন্য কোনো ডেটা উপলব্ধ আছে কিনা তা নির্ধারণ করতে প্রথমে অভিভাবককে পোল করতে হবে। এটি করার জন্য, শিশু একটি ডেটা অনুরোধ পাঠায়, যা পিতামাতা স্বীকার করেন। তারপর অভিভাবক নির্ধারণ করেন যে এটিতে চাইল্ড ডিভাইসের জন্য কোনো ডেটা আছে কিনা; যদি তাই হয়, এটি চাইল্ড ডিভাইসে একটি ডেটা প্যাকেট পাঠায়, যা ডেটার প্রাপ্তি স্বীকার করে।

যদি রেডিও SED-তে বহির্গামী স্বীকৃতিতে ফ্রেম পেন্ডিং বিট গতিশীলভাবে সেট করা সমর্থন করে, তাহলে এই ক্ষমতা সক্ষম করতে ড্রাইভারদের অবশ্যই উৎস ঠিকানা ম্যাচ API প্রয়োগ করতে হবে। OpenThread এই এপিআই ব্যবহার করে রেডিওকে জানাতে যে কোন SED-এর জন্য ফ্রেম পেন্ডিং বিট সেট করতে হবে।

রেডিও যদি গতিশীলভাবে ফ্রেম পেন্ডিং বিট সেট করা সমর্থন না করে, তাহলে রেডিওটি OT_ERROR_NOT_IMPLEMENTED ফেরত দিতে উৎস ঠিকানার মিল API স্টাব করে দিতে পারে।

রেডিও দিয়ে এনার্জি স্ক্যান/ডিটেক্ট করুন

এনার্জি স্ক্যান/ডিটেক্ট ফিচারের জন্য রেডিও চিপের প্রয়োজন হয় নির্বাচিত চ্যানেলে শক্তির নমুনা দিতে এবং সনাক্ত করা শক্তির মান উপরের স্তরে ফেরত দিতে।

এই বৈশিষ্ট্যটি বাস্তবায়িত না হলে, IEEE 802.15.4 MAC স্তর চ্যানেলে বর্তমান শক্তির মান মূল্যায়ন করার জন্য একটি বীকন অনুরোধ/প্রতিক্রিয়া প্যাকেট পাঠায়/গ্রহণ করে।

যদি রেডিও চিপ এনার্জি স্ক্যান/ডিটেক্ট সমর্থন করে, তাহলে ম্যাক্রো OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 সেট করে সফ্টওয়্যার শক্তি স্ক্যানিং লজিক নিষ্ক্রিয় করতে ভুলবেন না।

mbedTLS-এর জন্য হার্ডওয়্যার ত্বরণ

mbedTLS প্রধান কনফিগারেশন হেডার ফাইলে বেশ কিছু ম্যাক্রো সংজ্ঞায়িত করে, mbedtls-config.h , ব্যবহারকারীদেরকে AES, SHA1, SHA2, এবং অন্যান্য মডিউলগুলির বিকল্প বাস্তবায়ন সক্ষম করার জন্য, সেইসাথে GF-এর উপর উপবৃত্তাকার বক্ররেখা ক্রিপ্টোগ্রাফির (ECC) জন্য পৃথক ফাংশন সক্ষম করতে দেয়। (p) মডিউল। আরও তথ্যের জন্য mbedTLS হার্ডওয়্যার ত্বরণ দেখুন।

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

OpenThread-এর মধ্যে হার্ডওয়্যার ত্বরণ সক্ষম করতে, নিম্নলিখিত mbedTLS কনফিগারেশন হেডার ফাইলগুলি প্ল্যাটফর্মের CMake ফাইলগুলিতে ot-config কম্পাইল সংজ্ঞাগুলিতে যোগ করা উচিত:

  • প্রধান কনফিগারেশন, যা OpenThread-এ ব্যবহৃত সমস্ত প্রয়োজনীয় ম্যাক্রো সংজ্ঞায়িত করে: /openthread/third-party/mbedtls/mbedtls-config.h
  • ব্যবহারকারী-নির্দিষ্ট কনফিগারেশন, যা মডিউল এবং ফাংশনগুলির বিকল্প বাস্তবায়নকে সংজ্ঞায়িত করে: src/ platform-name -mbedtls-config.h

nrf52811.cmake থেকে উদাহরণ:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

mbedtls-config.h এ মন্তব্য করা ম্যাক্রো বাধ্যতামূলক নয়, এবং হার্ডওয়্যার ত্বরণের জন্য ব্যবহারকারী-নির্দিষ্ট কনফিগারেশন হেডার ফাইলে সক্রিয় করা যেতে পারে।

একটি সম্পূর্ণ উদাহরণ ব্যবহারকারী-নির্দিষ্ট কনফিগারেশনের জন্য, ot-efr32mbedtls_config_autogen.h ফাইলটি দেখুন।

AES মডিউল

OpenThread সিকিউরিটি IEEE 802.15.4 বা MLE বার্তাগুলিকে এনক্রিপ্ট/ডিক্রিপ্ট করার জন্য AES CCM (CBC-MAC-এর সাথে কাউন্টার) ক্রিপ্টো প্রয়োগ করে এবং মেসেজ ইন্টিগ্রেশন কোড যাচাই করে৷ হার্ডওয়্যার ত্বরণ অন্তত AES CCM মৌলিক কার্যকরী কলের জন্য মৌলিক AES ECB (ইলেক্ট্রনিক কোডবুক বুক) মোড সমর্থন করবে।

একটি বিকল্প AES মডিউল বাস্তবায়ন ব্যবহার করতে:

  1. ব্যবহারকারী-নির্দিষ্ট mbedTLS কনফিগারেশন হেডার ফাইলে MBEDTLS_AES_ALT ম্যাক্রো সংজ্ঞায়িত করুন
  2. MBEDTLS_CPPFLAGS ভেরিয়েবল ব্যবহার করে aes_alt.h ফাইলের পথ নির্দেশ করুন

SHA256 মডিউল

OpenThread সিকিউরিটি HMAC এবং SHA256 হ্যাশ অ্যালগরিদম প্রয়োগ করে থ্রেড স্পেসিফিকেশন অনুযায়ী নেটওয়ার্ক কী ব্যবস্থাপনা এবং PSKc জেনারেশনের জন্য হ্যাশ মান গণনা করতে।

একটি বিকল্প মৌলিক SHA256 মডিউল বাস্তবায়ন ব্যবহার করতে:

  1. ব্যবহারকারী-নির্দিষ্ট mbedTLS কনফিগারেশন হেডার ফাইলে MBEDTLS_SHA256_ALT ম্যাক্রো সংজ্ঞায়িত করুন
  2. MBEDTLS_CPPFLAGS ভেরিয়েবল ব্যবহার করে sha256_alt.h ফাইলের পথ নির্দেশ করুন

ECC ফাংশন

যেহেতু mbedTLS বর্তমানে শুধুমাত্র ECC ফাংশনের অংশগুলির জন্য হার্ডওয়্যার ত্বরণ সমর্থন করে, সম্পূর্ণ মডিউলের পরিবর্তে, আপনি ECC পয়েন্ট গুণনকে ত্বরান্বিত path-to-mbedtls /library/ecp.c এ সংজ্ঞায়িত কিছু ফাংশন বাস্তবায়ন করতে বেছে নিতে পারেন।

কার্ভ secp256r1 ECJPAKE খসড়ার কী এক্সচেঞ্জ অ্যালগরিদমে ব্যবহৃত হয়। তাই, হার্ডওয়্যার ত্বরণ অন্তত secp256r1 সংক্ষিপ্ত weierstrass কার্ভ অপারেশন সমর্থন করা উচিত. একটি উদাহরণের জন্য mbedTLS-এর জন্য SiLabs CRYPTO হার্ডওয়্যার ত্বরণ দেখুন।