Jam का पता लगाना

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

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

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

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

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

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

  1. Jam की पहचान करने की स्थिति false पर सेट है.
  2. नोड एक-एक सेकंड के अंतराल पर आरएसएसआई को कई बार सैंपल करता है.
  3. अगर उस एक सेकंड के अंतराल पर आरएसएसआई, हर नमूने के लिए कॉन्फ़िगर की गई आरएसएसआई थ्रेशोल्ड से ज़्यादा सेट रहता है, तो उस एक सेकंड के इंटरवल को Jam माना जाता है.
  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 की पहचान करने की सुविधा चालू करने के लिए, Openओपन बनाने से पहले, 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

पैरामीटर

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

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

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

एपीआई

OpenThread

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

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

स्पिनल

स्पिनल प्रोटोकॉल, होस्ट डिवाइस को सीधे NCP से संचार करने देता है. यह प्रोटोकॉल openthread/src/lib/spinel/spinel.h में Jam की पहचान करने वाली प्रॉपर्टी के बारे में बताता है, जो नीचे दिए गए फ़ंक्शन उपलब्ध कराता है:

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

सीएलआई

OpenThread

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

Wanttund

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

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

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

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

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

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

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

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