Jam की पहचान करें

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

किसी भी OpenThread नोड पर सिग्नल जैमिंग का पता लगाने के लिए, कॉन्फ़िगर किए जा सकने वाले मैकेनिज़्म को उपलब्ध कराने के लिए, जैमिंग का पता लगाने की सुविधा चालू करें.

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

यह कैसे काम करता है

फ़्रीक्वेंसी जैमिंग का पता लगाने की सुविधा, तय किए गए समय के दौरान किसी नोड के आरएसएसआई (सिग्नल क्षमता का संकेतक मिला) की निगरानी करती है. इससे यह पता चलता है कि चैनल जैम हुआ है या नहीं.

फ़्रीक्वेंसी जैम होने का पता लगाने की सुविधा चालू होने पर:

  1. जाम का पता लगाने की सुविधा false पर सेट है.
  2. नोड, हर एक सेकंड के इंटरवल में आरएसएसआई को कई बार सैंपल करता है.
  3. अगर एक सेकंड के पूरे इंटरवल के दौरान आरएसएसआई, हर सैंपल के लिए कॉन्फ़िगर किए गए आरएसएसआई थ्रेशोल्ड से ऊपर रहता है, तो उस एक सेकंड के इंटरवल को जैम्ड माना जाता है.
  4. अगर किसी भी समय, एक सेकंड के ऐसे इंटरवल की कुल संख्या ज़्यादा या बराबर होती है जो पिछले कॉन्फ़िगर किए गए डिटेक्शन विंडो सेकंड में, कॉन्फ़िगर किए गए बिज़ी पीरियड सेकंड की कुल संख्या के बराबर होती है, तो उस समय जैम का पता लगाने की स्थिति को true पर सेट किया जाता है.
  5. अगर एक सेकंड के लिए रुकने की कुल संख्या, कॉन्फ़िगर किए गए बिज़ी पीरियड के कुल सेकंड से कम है, तो किसी भी समय, कॉन्फ़िगर किए गए डिटेक्शन विंडो के पिछले सेकंड में, उस समय जैम का पता लगाने की स्थिति को false पर सेट किया जाता है.

इतिहास का बिट मैप

OpenThread API में, पिछले 63 सेकंड का बिटमैप वापस पाया जा सकता है. इस बिटमैप से पता चलता है कि पिछले 63 सेकंड में, हर सेकंड कॉन्फ़िगर किया गया आरएसएसआई थ्रेशोल्ड पार हुआ है या नहीं.

उदाहरण के लिए, आपको यह बिटमैप मिल सकता है:

0xC248068C416E7FF0

बाइनरी में बदलने पर, हर इंस्टेंस में यह पता चलता है कि पिछले 63 सेकंड के दौरान, आरएसएसआई कॉन्फ़िगर किए गए आरएसएसआई थ्रेशोल्ड से ज़्यादा था:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

अगर जाम का पता लगाने की अवधि 16 सेकंड पर सेट है और व्यस्त अवधि 8 सेकंड पर सेट है, तो जाम का पता लगाने की स्थिति 51 सेकंड पर true हो जाती है. ऐसा इसलिए होता है, क्योंकि यह पहला ऐसा उदाहरण है जहां पिछले 16 सेकंड में, आरएसएसआई थ्रेशोल्ड कम से कम 8 सेकंड तक पार हो गया था. इस उदाहरण में, जाम का पता चलने की स्थिति अगले 13 सेकंड तक true बनी रहती है.

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
                                      [00001 01101110 011] = 8 in 16

अगर कॉन्फ़िगर किया गया आरएसएसआई थ्रेशोल्ड -45 dBm था, तो इस बिटमैप को इस ग्राफ़ से दिखाया जा सकता है:

ओटी जैम का पता लगाने की सुविधा

चालू करने का तरीका

यह सुविधा डिफ़ॉल्ट रूप से बंद होती है.

By define

जैमर का पता लगाने की सुविधा चालू करने के लिए, OpenThread बनाने से पहले, openthread/src/core/config/openthread-core-default-config.h फ़ाइल में OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE को 1 के तौर पर तय करें:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

विकल्प के हिसाब से

इसके अलावा, OpenThread को बिल्ड करते समय -DOT_JAM_DETECTION=ON बिल्ड विकल्प का इस्तेमाल करें:

./script/build -DOT_JAM_DETECTION=ON

पैरामीटर

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

इन पैरामीटर का इस्तेमाल करके, इस सुविधा को अपनी पसंद के मुताबिक बनाएं:

पैरामीटर
आरएसआई थ्रेशोल्ड
डिफ़ॉल्ट वैल्यू
0 dBm
ब्यौरा
यह dBm में आरएसएसआई के थ्रेशोल्ड लेवल के बारे में बताता है. इससे ऊपर के लेवल पर, चैनल को जैम माना जाता है.
पहचान करने की विंडो
डिफ़ॉल्ट वैल्यू
63 सेकंड
ब्यौरा
इससे, यह तय होता है कि सिग्नल जैमिंग की जांच कितने सेकंड में करनी है. रेंज: 1 से 63.
व्यस्त अवधि
डिफ़ॉल्ट वैल्यू
63 सेकंड
ब्यौरा
इससे पता चलता है कि आरएसएसआई थ्रेशोल्ड से ऊपर आरएसएसआई को कितने सेकंड तक रहना चाहिए, ताकि जैमिंग का पता लगाने की सुविधा चालू हो सके. यह समय, डिटेक्शन विंडो के अंदर होना चाहिए. यह, पहचान करने की अवधि से कम होना चाहिए. रेंज: 1 से 63.

एपीआई

OpenThread

Jam Detection API का इस्तेमाल करके, सीधे अपने OpenThread ऐप्लिकेशन में Jam Detection सुविधा को मैनेज करें. OpenThread API में ये सुविधाएं मिलती हैं:

  • इस सुविधा को शुरू और बंद करना
  • पेपर फंसने की स्थिति देखना
  • सभी पैरामीटर मैनेज करना
  • यह कुकी, आवाज़ रुकने का पता लगाने से जुड़ी मौजूदा हिस्ट्री बिटमैप को वापस पाने के लिए इस्तेमाल की जाती है
  • जाम का पता चलने पर, कॉलबैक फ़ंक्शन रजिस्टर करें

स्पाइनल

Spinel प्रोटोकॉल की मदद से, होस्ट डिवाइस सीधे तौर पर एनसीपी से कम्यूनिकेट कर सकता है. यह प्रोटोकॉल, openthread/src/lib/spinel/spinel.h में जैम का पता लगाने वाली प्रॉपर्टी दिखाता है. इससे ये काम किए जा सकते हैं:

  • इस सुविधा को शुरू और बंद करना
  • पेपर फंसने की स्थिति देखना
  • सभी पैरामीटर मैनेज करना
  • यह कुकी, आवाज़ रुकने का पता लगाने से जुड़ी मौजूदा हिस्ट्री बिटमैप को वापस पाने के लिए इस्तेमाल की जाती है

सीएलआई

OpenThread

इस सुविधा से जुड़ी कोई भी OpenThread CLI कमांड उपलब्ध नहीं है.