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

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

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

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

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

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

Jam की पहचान करने की सुविधा चालू होने पर:

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

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

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

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

0xC248068C416E7FF0

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

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

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

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

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

ओटी जैम का पता लगाना

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

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

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, स्पिनल प्रोटोकॉल या नेटवर्क को-प्रोसेसर (एनसीपी) मैनेजमेंट के लिए wpanctl, wpantund कमांड लाइन टूल की मदद से कॉन्फ़िगर किया जा सकता है. अगर इस सुविधा को कॉन्फ़िगर किए बिना चालू किया जाता है, तो डिफ़ॉल्ट वैल्यू लागू हो जाती हैं.

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

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

एपीआई

OpenThread

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

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

स्पिनल

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

  • सुविधा को चालू और बंद करना
  • रुकावट का पता चलने की स्थिति देखना
  • सभी पैरामीटर मैनेज करना
  • रुकावट का पता लगाने के इतिहास का मौजूदा बिटमैप वापस पाना

सीएलआई

OpenThread

इस सुविधा से जुड़े कोई OpenThread सीएलआई कमांड नहीं हैं.

wpantund

OpenThread NCP कॉन्फ़िगरेशन के लिए, Jam फ़ाइल को मैनेज करने की सुविधा को मैनेज करने के लिए, wpanctl सीएलआई का इस्तेमाल करें. wpantund एनसीपी रीसेट होने पर, गड़बड़ी का पता लगाने के सभी कॉन्फ़िगरेशन को बनाए रखता है.

wpanctl, इन wpantund प्रॉपर्टी का ऐक्सेस देता है:

प्रॉपर्टी
JamDetection:Status
फ़ॉर्मैट
बूलियन
जानकारी
सिर्फ़ पढ़ने के लिए. जैम का पता चलने की स्थिति. इससे पता चलता है कि फ़िलहाल सिग्नल जैम का पता चला है या नहीं.
JamDetection:Enable
फ़ॉर्मैट
बूलियन
जानकारी
रुकावट का पता लगाने की सुविधा को चालू या बंद करें.
JamDetection:RssiThreshold
फ़ॉर्मैट
dBm
जानकारी
डीबीएम में आरएसएसआई थ्रेशोल्ड लेवल तय करता है. इस लेवल से ऊपर होने पर, चैनल को ब्लॉक माना जाता है.
JamDetection:Window
फ़ॉर्मैट
सेकंड
जानकारी
सेकंड में वह विंडो तय करता है जिसमें सिग्नल जैमिंग की जांच की जानी है. रेंज: 1-63.
JamDetection:BusyPeriod
फ़ॉर्मैट
सेकंड
जानकारी
यह JamDetection:Window के अंदर कुल सेकंड की संख्या बताता है, जिसमें जैम डिटेक्शन को ट्रिगर करने के लिए आरएसएसआई JamDetection:RssiThreshold से ज़्यादा होना चाहिए. वैल्यू JamDetection:Window से छोटी होनी चाहिए. रेंज: 1 से 63.
JamDetection:Debug:HistoryBitmap
फ़ॉर्मैट
64-बिट वैल्यू
जानकारी
मॉनिटर करने और डीबग करने के लिए, जाम डिटेक्शन स्टेटस के इतिहास की जानकारी देता है.

उदाहरण के लिए, किसी एनसीपी के लिए, जाम का पता चलने की स्थिति देखने के लिए:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

किसी एनसीपी पर, जाम डिटेक्शन के आरएसएसआई थ्रेशोल्ड को -45 dBm पर सेट करने के लिए:

sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45

wpantund प्रॉपर्टी के बारे में ज़्यादा जानने के लिए, wpantund GitHub रिपॉज़िटरी देखें.