विज़ुअलाइज़ेशन के साथ Thread नेटवर्क की जांच करना

1. परिचय

5abd22afa2f2ee9a.png

Thread, OpenThread, OTNS, और सिल्क क्या है?

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

Google की ओर से रिलीज़ किया गया OpenThread, Thread का ओपन सोर्स लागू करने की सुविधा है. छोटा कोड साइज़ और मेमोरी फ़ुटप्रिंट होने के बावजूद, OpenThread का इस्तेमाल करें. हालांकि, यह Thread की खास बातों में बताई गई सभी सुविधाओं के साथ काम करता है.

OpenThread Network Simulator (OTNS) का इस्तेमाल, posix प्लैटफ़ॉर्म पर सिम्युलेटेड OpenThread नोड को चलाकर, Thread नेटवर्क को सिम्युलेट करने के लिए किया जा सकता है. OTNS, सिम्युलेटेड Thread नेटवर्क को विज़ुअलाइज़ करने और चलाने के लिए, इस्तेमाल में आसान वेब इंटरफ़ेस (OTNS-वेब) उपलब्ध कराता है.

Silk एक ऐसा प्लैटफ़ॉर्म है जो पूरी तरह से अपने-आप काम करता है. इसकी मदद से, OpenThread फ़ंक्शन, सुविधा, और असल डिवाइसों की मदद से सिस्टम की परफ़ॉर्मेंस की पुष्टि की जाती है.

आप इन चीज़ों के बारे में जानेंगे

  • OpenThread की फ़ंक्शन से पुष्टि करने के लिए इस्तेमाल होने वाला फ़्रेमवर्क: सिल्क
  • उन असली डिवाइसों के लिए OpenThread बनाएं जिनमें ओटीएनएस सुविधा चालू हो
  • Silk टेस्ट केस चलाकर, Thread नेटवर्क की स्थिति को मॉनिटर किया जा सकता है. इसके लिए OTNS-वेब इंटरफ़ेस का इस्तेमाल करें

इस कोडलैब का मकसद, OTNS के साथ Silk का इस्तेमाल करना है. सिल्क और ओटीएनएस की दूसरी सुविधाएं इसमें शामिल नहीं हैं.

आपको इनकी ज़रूरत होगी

हार्डवेयर:

  • 6 नॉर्डिक सेमीकंडक्टर nRF52840 डेव बोर्ड
  • बोर्ड को कनेक्ट करने के लिए 6 यूएसबी से माइक्रो यूएसबी केबल
  • यूएसबी हब

सॉफ़्टवेयर:

ज़रूरी शर्तें:

2. ज़रूरी शर्तें

पहले से मौजूद बेसिक कोडलैब (कोड बनाना सीखना) पूरा करें

पैकेज से जुड़ी ज़रूरी शर्तों की जांच की जा रही है

यह पक्का करते हैं कि सभी ज़रूरी शर्तें पूरी हों.

  1. which otns चलाकर देखें कि एक्ज़ीक्यूटेबल otns को $PATH में खोजा जा सकता है या नहीं.
  2. यह पक्का करने के लिए कि wpantund उपलब्ध है, which wpantund चलाएं.
  3. पक्का करें कि ARM GNU टूलचेन, J-Link, और nrfjprog पैकेज उपलब्ध हैं.

ध्यान दें: सेट अप करने के दिशा-निर्देश के लिए, कृपया लिंक किए गए दस्तावेज़ देखें. ज़रूरी शर्त #1 OTNS का इस्तेमाल करने वाले Thread नेटवर्क को सिम्युलेट करें और अन्य लक्ष्य nRF52840 बोर्ड और OpenThread की मदद से Thread नेटवर्क बनाएं से हैं.

3. सिल्क सेटअप

सिल्क का क्लोन बनाने और एनवायरमेंट सेट अप करने के लिए, अपनी सोर्स डायरेक्ट्री के तहत ये कमांड चलाएं:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

हार्डवेयर कॉन्फ़िगरेशन फ़ाइल तय करें

सिल्क को आपकी मशीन से कनेक्ट किए गए उपलब्ध टेस्ट हार्डवेयर संसाधनों को इकट्ठा करने की अनुमति देने के लिए, hwconfig.ini फ़ाइल को इस फ़ॉर्मैट में तय करें:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

usbinfo नाम का एक टूल सिल्क के हिस्से के तौर पर इंस्टॉल किया गया है. इसका इस्तेमाल करके इंटरफ़ेस के सीरियल नंबर और यूएसबी इंटरफ़ेस नंबर का पता लगाया जा सकता है. DutSerial, चिप पर प्रिंट किया हुआ SN नंबर है या J-Link प्रॉडक्ट के लिए usbinfo की ओर से दिखाया जाता है.

जब डिवाइसों को वेब यूज़र इंटरफ़ेस (यूआई) पर विज़ुअलाइज़ किया जाता है, तब [DEFAULT] सेक्शन में मौजूद LayoutCenter और LayoutRadius फ़ील्ड, लेआउट का आकार तय करते हैं. इन्हें यहां दी गई वैल्यू पर सेट करना, शुरुआत करने का एक अच्छा तरीका हो सकता है.

इसके बाद, यह हर टेस्ट डिवाइस के लिए एक सेक्शन तय करता है और हार्डवेयर से जुड़ी ज़रूरी जानकारी उपलब्ध कराता है.

4. OTNS की सुविधा चालू करके, OpenThread को कंपाइल करें

इमेज बनाना और फ़्लैशिंग

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

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

बोर्ड को फ़्लैश करने के लिए, nrfjprog का इस्तेमाल करने के लिए, Thread नेटवर्क कोडलैब बनाएं के चौथे चरण में दिए गए निर्देशों का पालन करें. इसके बाद, nRF यूएसबी पोर्ट की मदद से सभी बोर्ड को होस्ट मशीन से कनेक्ट करें. यूएसबी से माइक्रो यूएसबी केबल के एक ही सेट को J-Link पोर्ट से डिसकनेक्ट करके, nRF52840 डेव बोर्ड के nRF यूएसबी पोर्ट से कनेक्ट किया जा सकता है. इसलिए, सिर्फ़ इन छह केबलों की मदद से, जांच की जा सकती है. समस्या से बचने के लिए, 12 केबल का इस्तेमाल करें और दोनों पोर्ट से कनेक्ट करें.

5. रीयल मोड में OTNS सर्वर चलाया जा रहा है

डिफ़ॉल्ट पैरामीटर के साथ OTNS चलाने से, उपयोगकर्ता Thread नेटवर्क को सिम्युलेट कर सकते हैं. किसी असल नेटवर्क के लिए विज़ुअलाइज़ेशन टूल के तौर पर इसका इस्तेमाल करने के लिए, इसे इनके साथ चलाएं:

otns -raw -real -ot-cli otns-silk-proxy

ये आर्ग्युमेंट, OTNS को ऐसे gRPC और UDP मैसेज की उम्मीद करते हैं जो Thread नेटवर्क को विज़ुअलाइज़ करने के तरीके के बारे में बताते हैं. इसके लिए, नेटवर्क को सिम्युलेट करने के लिए कई ot-cli प्रोसेस नहीं चलाई जाती हैं. आपका ब्राउज़र, बिना किसी खाली कैनवस के विज़ुअलाइज़ेशन पेज को अपने-आप खोलेगा.

4dd5b41bf7e71334.png

6. OTNS सहायता के साथ सिल्क टेस्ट केस चलाना

Silk एक पूरी तरह से ऑटोमेटेड टेस्ट प्लैटफ़ॉर्म है. इसकी मदद से, वास्तविक डिवाइसों के साथ OpenThread फ़ंक्शन, सुविधा, और सिस्टम परफ़ॉर्मेंस की पुष्टि की जा सकती है. प्रोजेक्ट README में दिए गए निर्देशों में, इसके इस्तेमाल का तरीका बताया गया है.

silk/unit_tests पर मौजूद silk_run_test.py फ़ाइल आपको एक हेडस्टार्ट देती है. टेस्ट केस चलाते समय, Silk OTNS से जुड़ी सहायता उपलब्ध कराता है. OTNS रीयल मोड सेवा पहले से ही स्थानीय रूप से चल रही है, इसलिए हमें बस आउटपुट लॉग फ़ाइल, इनपुट टेस्ट स्क्रिप्ट, और hwconfig.ini फ़ाइल के लिए, silk_run_test.py फ़ाइल में बदलाव करना है. -s localhost आर्ग्युमेंट में, सिल्क को localhost को OTNS मैसेज भेजने के लिए कहा जाता है.

उदाहरण के लिए, silk_run_test.py फ़ाइल में किए गए इन बदलावों का इस्तेमाल करके, ot_test_form_network.py नाम की जांच की जा सकती है. लॉग आउटपुट और कॉन्फ़िगरेशन फ़ाइल के लिए, Silk डिफ़ॉल्ट पाथ /opt/openthread_test/ का इस्तेमाल करता है. हालांकि, आप किसी भी पाथ का इस्तेमाल कर सकते हैं.

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

बनाए गए नेटवर्क का टोपोलॉजी विज़ुअलाइज़ेशन, OTNS वेब यूज़र इंटरफ़ेस (यूआई) पर दिखेगा.

ee443b66e0a6620b.png

सबसे ऊपर बाएं कोने में विज़ुअलाइज़ेशन के आंकड़े, ओटी वर्शन, और जांच का टाइटल दिखता है. नीचे बाएं कोने में लॉग विंडो के नियंत्रण होते हैं, जो दाईं ओर दिखाई देते हैं. शुरुआत में, नोड जोड़े जाते हैं, लेकिन कोई नेटवर्क नहीं बनता है. जैसे-जैसे जांच आगे बढ़ती है, वैसे-वैसे हर नोड के मोड और भूमिकाएं बदलती हैं. साथ ही, लिंक बनते हैं.

5c38e2c72519e620.png

7. बधाई हो

बधाई हो, आपने Thread डिवाइसों पर सिल्क टेस्ट पूरा कर लिया है और OTNS का इस्तेमाल करके, इसे विज़ुअलाइज़ कर लिया है!

आपने ऐसे डेवलपमेंट बोर्ड का इस्तेमाल करके सिल्क टेस्ट किया है जिसमें ओटीएनएस काम करने वाले फ़र्मवेयर फ़्लैश हैं. बोर्ड अपनी स्थिति की जानकारी एक सिल्क सर्वर पर देते हैं, जो उन सभी को मॉनिटर और एग्रीगेट करता है. इसके बाद, बोर्ड टेस्ट की अन्य जानकारी के साथ उन्हें OTNS सेवा को भेजता है. रीयल मोड में चलने वाला OTNS, वेब इंटरफ़ेस पर Thread नेटवर्क को विज़ुअलाइज़ करता है.

आगे क्या करना है?

Silk पैकेज में शामिल अन्य OpenThread टेस्ट केस चलाकर देखें.

इसके बारे में और पढ़ें

OpenThread के अलग-अलग संसाधनों के बारे में जानने के लिए, openthread.io और Silk पर जाएं.

रेफ़रंस के लिए दस्तावेज़