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

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

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

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

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

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

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

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

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

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

उदाहरण के लिए, आप नीचे दिए गए बिट मैप को फिर से पा सकते हैं:

0xC248068C416E7FF0

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

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

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

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

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

OT Jam की पहचान करना

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

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

तय करने के हिसाब से

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

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

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

अगर आप चाहें, तो OpenString बनाएं के तौर पर -DOT_JAM_DETECTION=ON बिल्ड विकल्प का इस्तेमाल कर सकते हैं:

./script/build -DOT_JAM_DETECTION=ON

पैरामीटर

Jam की पहचान करने वाले पैरामीटर, सिर्फ़ OpenThread एपीआई, Spinel प्रोटोकॉल या wpanctl नेटवर्क नेटवर्क (को-प्रोसेसर) (NCP) मैनेजमेंट के लिए wpantund कमांड लाइन टूल के ज़रिए कॉन्फ़िगर किए जा सकते हैं. अगर मान को बाद के कॉन्फ़िगरेशन के बिना चालू किया जाता है, तो डिफ़ॉल्ट मान लागू किए जाते हैं.

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

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

एपीआई

OpenThread

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

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

स्पाइन

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

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

सीएलआई

OpenThread

इस सुविधा से जुड़े कोई OpenThread CLI निर्देश नहीं हैं.

Wpantund

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

wpanctl से इन wpantund प्रॉपर्टी का ऐक्सेस मिलता है:

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

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

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

Jam की पहचान आरएसएसआई थ्रेशोल्ड को एनसीपी पर -45 dBm पर सेट करने के लिए:

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

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