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

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

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

ऑटो-फ़्रेम बाकी है

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

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

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

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

अगर रेडियो, एसईडी (ऊर्जा के असरदार इस्तेमाल की जांच) में फ़्रेम को रेंडर करने की बिट को डाइनैमिक तरीके से सेट करने की सुविधा देता है, तो इस सुविधा को चालू करने के लिए, ड्राइवर को स्रोत का पता मिलान एपीआई लागू करनी होगी. OpenThread इस API का इस्तेमाल करके रेडियो को यह बताता है कि 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 उन मैक्रो को चालू नहीं करता है, इसलिए सिमेट्रिक क्रिप्टोग्राफ़ी, एल्गोरिद्म, और एल्गोरिद्म की मदद से इस्तेमाल किए जाने वाले सभी फ़ंक्शन, सॉफ़्टवेयर को लागू करने का डिफ़ॉल्ट तरीका इस्तेमाल करते हैं. इन तरीकों का इस्तेमाल करने के लिए, बड़ी मेमोरी और कंप्यूटेशनल रिसॉर्स की ज़रूरत होती है. बेहतर परफ़ॉर्मेंस और उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, हम ऊपर दी गई कार्रवाइयों को लागू करने के लिए, सॉफ़्टवेयर के बजाय हार्डवेयर से तेज़ी लाने की सुविधा चालू करने का सुझाव देते हैं.

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-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 Security, नेटवर्क कुंजी प्रबंधन और PSKc पीढ़ी के लिए हैश मान की गणना करने के लिए HMAC और SHA256 हैश एल्गोरिदम को थ्रेड की विशेषता के मुताबिक लागू करती है.

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

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

ECC फ़ंक्शन

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

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