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

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

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

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

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

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

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

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

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

अगर रेडियो में फ़्रेम के बाकी बचे बिट को डाइनैमिक तरीके से सेट करने की सुविधा नहीं मिलती है, तो रेडियो से मिलते-जुलते सोर्स पते के एपीआई को बाहर ला सकता है 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 में हार्डवेयर से तेज़ी लाने की सुविधा चालू करने के लिए, प्लैटफ़ॉर्म की CMake फ़ाइल में ot-config कंपाइल वाली परिभाषाओं में, इन mbedTLS कॉन्फ़िगरेशन की हेडर फ़ाइलों को जोड़ा जाना चाहिए:

  • मुख्य कॉन्फ़िगरेशन, जो 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 Security, 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 छोटे-से वीयस्ट्रस कर्व का इस्तेमाल करना ज़रूरी है. उदाहरण के लिए, mbdTLS के लिए SibLabs CryPTO हार्डवेयर एक्सेलेरेशन देखें.