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

1. परिचय

5abd22afa2f2ee9a.png

Thread, OpenThread, OTNS, और रेशम क्या है?

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

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

ओपन थ्रेड नेटवर्क सिम्युलेटर (OTNS) का इस्तेमाल POS नेटवर्क पर सिम्युलेट किए गए OpenThread नोड को चलाकर थ्रेड नेटवर्क को सिम्युलेट करने के लिए किया जा सकता है. OTNS, सिम्युलेट किए गए थ्रेड नेटवर्क को विज़ुअलाइज़ और चालू करने के लिए, इस्तेमाल करने में आसान वेब इंटरफ़ेस (OTNS-Web) देता है.

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

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

  • OpenThread फ़ंक्शन का पुष्टि फ़्रेमवर्क: रेशम
  • OTNS सुविधा का इस्तेमाल करके, असली डिवाइस के लिए OpenThread बनाएं
  • रेशम परीक्षण केस चलाकर बनाए गए थ्रेड नेटवर्क की स्थिति की निगरानी करने के लिए OTNS-वेब इंटरफ़ेस का उपयोग करें

इस कोडलैब का मकसद OTNS के साथ सिल्क का इस्तेमाल करना है. इसमें सिल्क और ओटीएन के दूसरे फ़ीचर शामिल नहीं हैं.

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

हार्डवेयर:

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

सॉफ़्टवेयर:

  • Linux x86_64.
  • Git.
  • 1.11+ पर जाएं.
  • वेब ब्राउज़र. OTNS-Web सिम्युलेशन दिखाने के लिए वेब ब्राउज़र का इस्तेमाल करता है.

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

2. ज़रूरी बातें

पिछले बेसिक कोडलैब पूरे करें

पैकेज की ज़रूरी शर्तें देखना

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

  1. $PATH में otns एक्ज़ीक्यूटेबल खोज सकती है या नहीं, यह देखने के लिए which otns चलाएं.
  2. wpantund उपलब्ध है, यह पक्का करने के लिए which wpantund चलाएं.
  3. पक्का करें कि ARM GNU टूलचेन, जे-लिंक, और nrfjprog पैकेज उपलब्ध हैं.
  4. पक्का करें कि openthread फ़ोल्डर में make -f examples/Makefile-nrf52840 चलाकर, OpenThread बाइनरी बनाई जा सकती है.

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

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 नंबर है. इसे usbinfo ने J-Link प्रॉडक्ट के लिए दिखाया है.

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

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

4. चालू किए गए OTNS के साथ OpenThread को इकट्ठा करें

इमेज बनाना और फ़्लैश करना

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

$ 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 का इस्तेमाल किया जा सके. उसके बाद, nRF यूएसबी पोर्ट से सभी बोर्ड को होस्ट मशीन से कनेक्ट करें. USB के माइक्रो-यूएसबी केबल के उसी सेट को जे-लिंक पोर्ट से डिसकनेक्ट किया जा सकता है और nRF52840 डेवलपर बोर्ड के nRF यूएसबी पोर्ट से कनेक्ट किया जा सकता है. इस तरह सिर्फ़ छह केबल की मदद से टेस्ट किया जा सकता है. परेशानी से बचने के लिए, 12 केबल का इस्तेमाल करें और दोनों पोर्ट से कनेक्ट करें.

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

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

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

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

4dd5b41bf7e71334.png

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

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

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

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

सिल्क_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. बधाई हो

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

आपने डेवलपमेंट बोर्ड का इस्तेमाल करके रेशम की जांच की है. इसमें कई फ़र्मवेयर हैं, जिन पर OTNS काम करता है. बोर्ड, अपनी स्थिति को रेशम सर्वर पर रिपोर्ट करते हैं, जो उन सभी की निगरानी करता है और उन्हें इकट्ठा करता है, और उन्हें अन्य परीक्षण जानकारी के साथ OTNS सेवा को भेजता है. OTNS, रीयल मोड में चलने से वेब इंटरफ़ेस पर थ्रेड नेटवर्क दिखता है.

आगे क्या है?

रेशम पैकेज में शामिल अन्य OpenThread परीक्षण केस चलाने की कोशिश करें.

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

कई तरह के OpenThread संसाधनों के लिए openthread.io और Silk देखें.

संदर्भ दस्तावेज़