किसी भी OpenThread नोड पर सिग्नल जैमिंग का पता लगाने के लिए, कॉन्फ़िगर किया जा सकने वाला तरीका उपलब्ध कराने के लिए, Jam जांच की सुविधा चालू करें.
यह सुविधा, डिवाइस के उन सर्टिफ़िकेट के लिए फ़ायदेमंद है जिनके लिए किसी खास चैनल पर सिग्नल जैमिंग का पता लगाने की ज़रूरत होती है. इसे हर तरह के सर्टिफ़िकेशन की ज़रूरी शर्तों को पूरा करने के लिए कॉन्फ़िगर किया जा सकता है.
यह कैसे काम करता है
जैम डिटेक्शन, तय समयावधि के दौरान किसी नोड के आरएसएसआई (रिसीव्ड सिग्नल स्ट्रेंथ इंडिकेटर) पर नज़र रखता है. इससे यह पता चलता है कि चैनल को जैम किया गया है या नहीं.
Jam की पहचान करने की सुविधा चालू होने पर:
- रुकावट का पता लगाने की स्थिति
false
पर सेट है. - नोड, हर एक सेकंड के अंतराल में आरएसएसआई को कई बार सैंपल करता है.
- अगर उस पूरे एक सेकंड के इंटरवल में आरएसएसआई, हर सैंपल के लिए कॉन्फ़िगर किए गए आरएसएसआई थ्रेशोल्ड से ज़्यादा रहता है, तो उस एक सेकंड के इंटरवल को जैम माना जाता है.
- अगर किसी भी समय, कॉन्फ़िगर की गई जाम का पता लगाने की विंडो के दौरान, एक सेकंड के इंटरवल में जाम होने की कुल संख्या, कॉन्फ़िगर किए गए व्यस्त अवधि के सेकंड की कुल संख्या से ज़्यादा या उसके बराबर है, तो उस समय जाम का पता लगाने की स्थिति
true
पर सेट हो जाती है. - अगर किसी भी समय, एक सेकंड के इंटरवल में जाम होने की कुल संख्या, कॉन्फ़िगर की गई जाम का पता लगाने की विंडो के अंदर कॉन्फ़िगर किए गए व्यस्त अवधि की कुल संख्या से कम है, तो उस समय जाम का पता लगाने की स्थिति
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
कमांड लाइन टूल की मदद से कॉन्फ़िगर किया जा सकता है. अगर इस सुविधा को कॉन्फ़िगर किए बिना चालू किया जाता है, तो डिफ़ॉल्ट वैल्यू लागू हो जाती हैं.
नीचे दिए गए पैरामीटर का इस्तेमाल करके, इस सुविधा को पसंद के मुताबिक बनाएं:
पैरामीटर | |||||
---|---|---|---|---|---|
आरएसएसआई थ्रेशोल्ड |
|
||||
डिटेक्शन विंडो |
|
||||
व्यस्त अवधि |
|
एपीआई
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 |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
उदाहरण के लिए, किसी एनसीपी के लिए, जाम का पता चलने की स्थिति देखने के लिए:
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 रिपॉज़िटरी देखें.