बेहतर सुविधाएं लागू करना

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

GitHub पर स्रोत देखें

कुछ बेहतर सुविधाएं वैकल्पिक हैं, जो इस बात पर निर्भर करती हैं कि टारगेट हार्डवेयर प्लैटफ़ॉर्म पर वे काम करते हैं या नहीं.

ऑटो फ़्रेम की मंज़ूरी बाकी है

IEEE 802.15.4 में, माता-पिता और बच्चे के बीच दो तरह के डेटा ट्रांसमिशन के तरीकों के बारे में बताया गया है: डायरेक्ट ट्रांसमिशन और इनडायरेक्ट ट्रांसमिशन. बाद में, ज़्यादातर का इस्तेमाल नींद के एंड डिवाइस (एसईडी) के लिए किया जाता है, जो ज़्यादातर समय सोए रहते हैं. साथ ही, समय-समय पर यह सूची में शामिल डेटा के लिए माता-पिता की राय लेते हैं.

  • डायरेक्ट ट्रांसमिशन — पैरंट, डेटा फ़्रेम को सीधे एंड डिवाइस पर भेजता है डायरेक्ट ट्रांसमिशन

  • इनडायरेक्ट ट्रांसमिशन — पैरंट तब तक डेटा को होल्ड करता है, जब तक उसे इसके असली डिवाइस के अनुरोध पर ऐक्सेस नहीं किया जाता डायरेक्ट ट्रांसमिशन

सीधे तौर पर नहीं मिलने वाले मामले में, किसी चाइल्ड एंड डिवाइस को सबसे पहले अभिभावक की मदद करके यह तय करना होगा कि इसके लिए कोई डेटा उपलब्ध है या नहीं. ऐसा करने के लिए, बच्चे को डेटा का अनुरोध भेजा जाता है, जिसे अभिभावक स्वीकार करते हैं. इसके बाद, पैरंट यह तय करता है कि क्या चाइल्ड डिवाइस के लिए कोई डेटा उपलब्ध है. अगर ऐसा है, तो वह चाइल्ड डिवाइस पर एक डेटा पैकेट भेजता है, जो डेटा की रसीद को स्वीकार करता है.

अगर रेडियो एसईडी पर आउटगोइंग डिलीवरेशन में 'फ़्रेम की मंज़ूरी बाकी है' बिट को डाइनैमिक तौर पर सेट करता है, तो ड्राइवर को यह सुविधा चालू करने के लिए, स्रोत पते का मैच एपीआई लागू करना होगा. Openthread इस एपीआई का इस्तेमाल करके रेडियो को बताता है कि फ़्रेम रेंडर होने के लिए बिट को सेट करने के लिए किन SEDs को सेट करना है.

अगर रेडियो की मदद से, 'फ़्रेम रेंडर होने की मंज़ूरी बाकी है' बिट को डाइनैमिक तरीके से सेट नहीं किया जा सकता है, तो हो सकता है कि रेडियो वापस आने के लिए स्रोत पते के मैच एपीआई का इस्तेमाल करे OT_ERROR_NOT_IMPLEMENTED.

रेडियो के साथ एनर्जी स्कैन/पता लगाएं

ऊर्जा स्कैन/पता लगाने की सुविधा के लिए रेडियो चिप का इस्तेमाल करना ज़रूरी है. इससे, चुने गए चैनल पर दिखने वाली ऊर्जा का पता लगाया जा सकता है. साथ ही, पता लगाई गई ऊर्जा की वैल्यू को ऊपर वाली लेयर पर लौटाया जा सकता है.

अगर इस सुविधा का इस्तेमाल नहीं किया जाता, तो IEEE 802.15.4 MAC लेयर, चैनल पर मौजूदा एनर्जी वैल्यू का आकलन करने के लिए, बीकन अनुरोध/रिस्पॉन्स पैकेट भेजता है/मिलता है.

अगर रेडियो चिप, एनर्जी स्कैन/पहचानने की सुविधा के साथ काम करती है, तो पक्का करें कि मैक्रो OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 सेट करके, ऊर्जा ऊर्जा स्कैन करने की सुविधा बंद कर दी जाए.

mbedTLS के लिए हार्डवेयर से तेज़ी लाना

mbedTLS में मुख्य कॉन्फ़िगरेशन हेडर फ़ाइल mbedtls-config.h में कई मैक्रो के बारे में बताया गया है. इससे उपयोगकर्ता AES, SHA1, SHA2, और दूसरे मॉड्यूल के वैकल्पिक लागू करने की सुविधा चालू कर सकेंगे. साथ ही, GF (p) मॉड्यूल के लिए एलिप्सिक कर्व क्रिप्टोग्राफ़ी(ECC) के लिए अलग-अलग फ़ंक्शन भी चालू कर पाएंगे. ज़्यादा जानकारी के लिए mbedTLS हार्डवेयर से तेज़ी पाना देखें.

OpenThread उन मैक्रो को सक्षम नहीं करता है, इसलिए सममित क्रिप्टोग्राफ़िक एल्गोरिदम, हैश एल्गोरिदम और ECC, डिफ़ॉल्ट रूप से सॉफ़्टवेयर कार्यान्वयन का उपयोग करते हैं. इन्हें लागू करने के लिए, बड़ी मेमोरी और कंप्यूटेशनल रिसॉर्स की ज़रूरत होती है. बेहतरीन परफ़ॉर्मेंस और उपयोगकर्ता के लिए बेहतर अनुभव के लिए, हम सॉफ़्टवेयर को चालू करने के बजाय हार्डवेयर से तेज़ी लाने की सुविधा चालू करने का सुझाव देते हैं.

OpenThread में हार्डवेयर से तेज़ी लाने के लिए, mbedTLS के कॉन्फ़िगरेशन की हेडर फ़ाइलों को ot-config कंपाइल करें में प्लैटफ़ॉर्म कंपाइल की परिभाषाएं जोड़ें. इस फ़ाइल में #39;s CMake फ़ाइलें होनी चाहिए:

  • मुख्य कॉन्फ़िगरेशन, जो 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-efr32 में mbedtls_config_autogen.h फ़ाइल देखें.

AES मॉड्यूल

OpenThread सुरक्षा, IEEE 802.15.4 या MLE मैसेज को एन्क्रिप्ट/डिक्रिप्ट करने के लिए, AES CCM (CBC-MAC के साथ काउंटर) लागू करती है. साथ ही, मैसेज इंटिग्रेशन कोड की पुष्टि करती है. हार्डवेयर से तेज़ी लाने के लिए, कम से कम बुनियादी AES ECB (इलेक्ट्रॉनिक कोडबुक बुक) मोड का, AES CCM का बुनियादी फ़ंक्शन वाला कॉल इस्तेमाल करना चाहिए.

दूसरे AES मॉड्यूल इंप्लीमेंटेशन का इस्तेमाल करने के लिए:

  1. उपयोगकर्ता के हिसाब से बनी mbedTLS के कॉन्फ़िगरेशन हेडर की फ़ाइल में MBEDTLS_AES_ALT मैक्रो तय करें
  2. MBEDTLS_CPPFLAGS वैरिएबल का इस्तेमाल करके aes_alt.h फ़ाइल के पाथ की जानकारी दें

SHA256 मॉड्यूल

OpenThread सुरक्षा, थ्रेड कुंजी की विशेषता के अनुसार नेटवर्क कुंजी प्रबंधन और PSKc जनरेशन के लिए हैश मान की गणना करने के लिए HMAC और SHA256 हैश एल्गोरिदम लागू करती है.

किसी दूसरे बुनियादी SHA256 मॉड्यूल को लागू करने का इस्तेमाल करने के लिए:

  1. उपयोगकर्ता के हिसाब से बनी mbedTLS के कॉन्फ़िगरेशन हेडर की फ़ाइल में MBEDTLS_SHA256_ALT मैक्रो तय करें
  2. MBEDTLS_CPPFLAGS वैरिएबल का इस्तेमाल करके sha256_alt.h फ़ाइल के पाथ की जानकारी दें

ECC फ़ंक्शन

फ़िलहाल, mbedTLS में पूरे मॉड्यूल के बजाय, सिर्फ़ ECC फ़ंक्शन के कुछ हिस्सों के लिए हार्डवेयर से तेज़ी लाने की सुविधा मौजूद है. इसलिए, ECC पॉइंट गुणा को बढ़ाने के लिए, path-to-mbedtls/library/ecp.c में बताए गए कुछ फ़ंक्शन लागू किए जा सकते हैं.

Curve secp256r1 का इस्तेमाल ECJPAKE ड्राफ़्ट के खास एक्सचेंज एल्गोरिदम में किया जाता है. इसलिए, हार्डवेयर से तेज़ी लाने की सुविधा के लिए, कम से कम secp256r1 के छोटे-छोटे ड्रैस के साथ काम करना ज़रूरी है. उदाहरण के लिए, mbedTLS के लिए CiLabs CRYPTO हार्डवेयर एक्सेलेरेशन देखें.