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

1. शुरुआती जानकारी

5abd22afa2f2ee9a.png

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

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

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

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

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

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

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

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

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

हार्डवेयर:

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

सॉफ़्टवेयर:

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

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

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

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

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

यह पक्का करें कि सभी शर्तें पूरी हुई हों.

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

ध्यान दें: सेट अप करने के लिए, कृपया लिंक किए गए दस्तावेज़ देखें. ज़रूरी शर्त #1, OTNS का इस्तेमाल करने वाले थ्रेड नेटवर्क को सिम्युलेट करने के लिए है और अन्य सेवाएं, 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 नंबर है या J-Link प्रॉडक्ट के लिए usbinfo से दिखाया जाता है.

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

इसके बाद, यह जांचे गए हर डिवाइस के लिए एक सेक्शन तय करता है. साथ ही, काम की हार्डवेयर की जानकारी भी देता है.

4. ओटीएनएस चालू करके OpenThread को कंपाइल करें

इमारत की इमेज और फ़्लैशिंग

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

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

5. OTNS सर्वर को रीयल मोड में इस्तेमाल किया जा रहा है

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

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

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

4dd5b41bf7e71334.png

6. OTNS सुविधा के साथ, सिल्क टेस्ट के केस चल रहे हैं

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

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

उदाहरण के लिए, कोई व्यक्ति silk_run_test.py फ़ाइल में, इन बदलावों का इस्तेमाल करके ot_test_form_network.py नाम की जांच कर सकता है. /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

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

5c38e2c72519e620.png

7. बधाई हो

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

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

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

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

आगे पढ़ना

OpenThread के अलग-अलग संसाधनों के लिए, openthread.io और सिल्क देखें.

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