1. शुरुआती जानकारी
Thread और OTNS क्या हैं
Thread, आईपी-आधारित कम पावर वाला वायरलेस मेश नेटवर्किंग प्रोटोकॉल है. इसकी मदद से, डिवाइस में डिवाइस को और डिवाइस पर क्लाउड पर सुरक्षित बातचीत की सुविधा मिलती है. थ्रेड नेटवर्क, टोपोलॉजी से जुड़े बदलावों के हिसाब से काम कर सकते हैं, ताकि कोई गड़बड़ी न हो.
Google की ओर से रिलीज़ किया गया OpenThread, थ्रेड का एक ओपन-सोर्स लागू करने का तरीका है. कोड का साइज़ छोटा होने और मेमोरी फ़ुटप्रिंट के बावजूद, OpenThread थ्रेड स्पेसिफ़िकेशन में बताई गई सभी सुविधाओं के साथ काम करता है.
OpenThread नेटवर्क सिम्युलेटर (OTNS) का इस्तेमाल, POSix प्लैटफ़ॉर्म पर सिम्युलेट किए गए OpenThread नोड को चलाकर, थ्रेड नेटवर्क को सिम्युलेट करने के लिए किया जा सकता है. OTNS के ज़रिए, इस्तेमाल किए जा सकने वाले वेब इंटरफ़ेस (OTNS-Web) की सुविधा मिलती है. इससे आप सिम्युलेटेड थ्रेड नेटवर्क को विज़ुअलाइज़ कर सकते हैं और उन्हें ऑपरेट कर सकते हैं.
आप इन चीज़ों के बारे में जानेंगे
- OTNS और इसकी डिपेंडेंसी इंस्टॉल करें
- OTNS के लिए OpenThread बनाएं
- OTNS-वेब में नोड जोड़ने/मूव करने/मिटाने का तरीका
- नेटवर्क सिम्युलेशन चलाने के लिए OTNS-Web और #39;s की अन्य उपयोगी सुविधाओं का इस्तेमाल करें
- OpenThread की पुष्टि न करें
यह कोडलैब, OTNS-CLI और OTNS-Web पर फ़ोकस करता है. OTNS's की अन्य सुविधाएं, जैसे कि Python स्क्रिप्टिंग, इनमें शामिल नहीं हैं.
आपको इनकी ज़रूरत होगी
- Linux x86_64 या Mac OS.
- उपहार.
- 1.13+ वर्शन देखें.
- वेब ब्राउज़र. OTNS-Web, सिम्युलेशन दिखाने के लिए वेब ब्राउज़र का इस्तेमाल करता है.
- थ्रेड प्राइमर. इस कोडलैब में क्या पढ़ाया जाता है, यह समझने के लिए आपको थ्रेड के बेसिक कॉन्सेप्ट को जानना होगा.
2. इंस्टॉल करना
Go इंस्टॉल करें
OTNS के लिए ज़रूरी है कि Go 1.13+ वर्शन बनाया जाए.
- https://golang.org/DL/ से जाएं
$PATH
में$(go env GOPATH)/bin
(आम तौर पर$HOME/go/bin
) जोड़ें:
$ export PATH=$PATH:$(go env GOPATH)/bin
OTNS कोड पाएं
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
डिपेंडेंसी इंस्टॉल करना
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
आपसे sudo
के लिए पासवर्ड डालने के लिए कहा जा सकता है.
ओटीएन इंस्टॉल करना
otns
को $GOPATH/bin
पर इंस्टॉल करें:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
आइए देखें कि otns
को ठीक से इंस्टॉल किया गया है या नहीं
which otns
को चलाकर देखें किotns
एक्ज़ीक्यूटेबल को$PATH.
पर खोजा जा सकता है या नहीं- अगर
otns
निर्देश नहीं मिलता है, तो पुष्टि करें कि आपने$(go env GOPATH)/bin
को$PATH.
में जोड़ा है
3. OTNS के लिए OpenThread बनाएं
GitHub से OpenThread कोड पाएं
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
OTNS=1
से OpenThread बनाएं
$ cd ~/src/openthread $ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
आपको build
डायरेक्ट्री में OpenThread एक्ज़ीक्यूटेबल मिल सकता है:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
अब OTNS को चलाने का समय आ गया है...
4. OTNS चलाएं
otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
शुरू होने पर, OTNS एक सीएलआई कंसोल (OTNS-CLI
) में जाएगा और नेटवर्क विज़ुअलाइज़ेशन और मैनेजमेंट के लिए वेब ब्राउज़र लॉन्च करेगा (OTNS-Web
):
अगर आपको सिर्फ़ OTNS-Web के लिए खाली पेज दिख रहा है, तो हो सकता है कि आपके ब्राउज़र में WebGL चालू न हो. कृपया WebGL जोड़ने का तरीका जानने के लिए,https://superuser.com/a/836833 पर जाएं.
नीचे दिए गए सेक्शन में, आप OTNS-CLI
और OTNS-Web
के ज़रिए OTNS सिम्युलेशन मैनेज करने का तरीका जानेंगे.
5. OTNS-CLI और एएमपी के बारे में जानें; OTNS-Web
ओटीएनएस-सीएलआई
OTNS-CLI
, OTNS सिम्युलेशन को मैनेज करने के लिए, कमांड लाइन इंटरफ़ेस (सीएलआई) उपलब्ध कराता है.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
आप OTNS-CLI
में निर्देश दे सकते हैं. निर्देशों की पूरी सूची देखने के लिए, OTNS CLI रेफ़रंस देखें. चिंता न करें, आप इस कोडलैब में इनमें से सिर्फ़ कुछ निर्देशों का इस्तेमाल करने जा रहे हैं.
OTNS-वेब
OTNS-Web
, OTNS's का नेटवर्क विज़ुअलाइज़ेशन और मैनेजमेंट टूल है. यह सिम्युलेट की गई थ्रेड नेटवर्क के नोड, मैसेज, और लिंक के विज़ुअल को दिखाता है. OTNS-Web
के अलग-अलग एलिमेंट पर ध्यान दें:
6. नोड जोड़ें
OTNS-CLI के ज़रिए नोड जोड़ें
राऊटर जोड़ें (300, 100)
> add router x 300 y 100 1 Done
आपको OTNS-Web
में बनाया गया नोड दिखेगा. नोड राऊटर के रूप में शुरू होता है और कुछ ही सेकंड में लीडर बन जाता है:
OTNS-CLI
से ज़्यादा नोड जोड़ें
> add fed x 200 y 100 2 Done > add med x 400 y 100 3 Done > add sed x 300 y 200 4 Done
नोड को एक पार्टीशन में मर्ज करने के लिए कुछ सेकंड इंतज़ार करें. आपको OTNS-WEB
के नोड दिखाई देंगे:
OTNS-Web
तक नोड जोड़ें
OTNS-Web
से नोड भी जोड़े जा सकते हैं. Action Bar
के New Router
बटन पर क्लिक करें. आपको New Router
बटन के ठीक ऊपर बनाया गया नोड दिख रहा है. नोड को खींचकर, उस लीडर के पास ले जाएं जिसे आपने OTNS-CLI
की मदद से बनाया है. सभी नोड आखिर में एक पार्टीशन में मर्ज हो जाने चाहिए:
दूसरे तरह के नोड बनाने के लिए, ऐक्शन बार पर FED, MED, और SED बटन पर क्लिक करें. मौजूदा नोड के पास मौजूद पॉइंट को खींचकर, उस थ्रेड के नेटवर्क में जोड़ने के लिए:
अब आपने एक हिस्से का Thread नेटवर्क बनाया है, जिसमें कई नोड हैं. अगले सेक्शन में, हम सिम्युलेशन को तेज़ी से चलाने के लिए, सिम्युलेटिंग स्पीड में बदलाव करेंगे.
7. स्पीड को कम या ज़्यादा करें
फ़िलहाल, सिम्युलेशन 1X
की स्पीड पर चलना चाहिए. इसका मतलब है कि अब तक सिम्युलेट किया गया कुल समय, असल नोड के बराबर ही है.
स्पीड को OTNS-CLI
से अडजस्ट करें
OTNS-CLI
के ज़रिए सिम्युलेट करने की स्पीड को बदला जा सकता है.
सिम्युलेट करने की रफ़्तार को 100X
पर सेट करें
> speed 100 Done
आप देख सकते हैं कि नोड पहले से कहीं ज़्यादा मैसेज भेजते हैं.
सिम्युलेट करने की रफ़्तार को MAX
पर सेट करें
> speed max Done
अब, OTNS इसे तेज़ी से सिम्युलेट करने की कोशिश कर रहा है. इसलिए, आप बड़ी संख्या में मैसेज भेज सकते हैं.
सिमुलेशन रोकें
> speed 0 Done
सिम्युलेट करने की रफ़्तार को 0
पर सेट करने से सिम्युलेशन रुक जाता है.
सामान्य गति से सिम्युलेशन बहाल करें
> speed 1 Done
सिम्युलेट की स्पीड को 0
से ज़्यादा वैल्यू पर सेट करने पर, सिम्युलेशन फिर से शुरू हो जाएगा.
स्पीड को OTNS-Web
से अडजस्ट करें
स्पीड कंट्रोल बटन
Action Bar
पर स्पीड कंट्रोल बटन ढूंढें. इस बटन से, सिम्युलेट करने की मौजूदा स्पीड दिखती है. इस बटन का इस्तेमाल, सिम्युलेशन सिम्युलेशन करने और सिमुलेशन रोकने/फिर शुरू करने के लिए किया जा सकता है.
स्पीड सिम्युलेशन
जब तक रफ़्तार MAX
: तक नहीं पहुंच जाती, तब तक
बटन पर क्लिक करके, सिम्युलेशन को तेज़ किया जा सकता है.
स्लो डाउन सिम्युलेशन
आप बटन पर क्लिक करके, सिम्युलेशन को धीमा कर सकते हैं.
सिमुलेशन रोकें
सिम्युलेशन जारी होने पर इसे रोकने के लिए बटन पर क्लिक करें. बटन
में बदल जाएगा.
सिम्युलेशन फिर से शुरू करें
सिम्युलेशन बंद होने पर उसे फिर से शुरू करने के लिए, बटन पर क्लिक करें. बटन
पर वापस आ जाएगा.
सिम्युलेट करने की रफ़्तार को 10X
पर सेट करें
समय बचाने के लिए,
OTNS-CLI
सिम्युलेटिंग की स्पीड को घटाने या बढ़ाने के लिए,
10X
ताकि हम नेटवर्क में टोपोलॉजी से जुड़े बदलावों पर ज़्यादा तेज़ी से नज़र रख सकें.
> speed 10 Done
8. रेडियो चालू/बंद करें
अब, सिम्युलेशन में दो राऊटर (हेक्सागॉन के आकार) और कई बच्चे होने चाहिए. साथ ही, ये 10X स्पीड पर चलते हैं.
दो राऊटर के मौजूदा लीडर (लाल बॉर्डर) को चुनकर, उसे चुनने के लिए सिर्फ़ एक क्लिक करें:
रेडियो बंद करें
लीडर नोड के रेडियो को बंद करने के लिए, कार्रवाई बार में मौजूद बटन पर क्लिक करें:
लीडर, रेडियो बंद करके न तो मैसेज भेज सकेगा और न ही पा सकेगा.
अन्य राऊटर के नए लीडर बनने के लिए करीब 12 सेकंड (सिम्युलेटिंग टाइम में 120 सेकंड) का इंतज़ार करें:
Thread नेटवर्क, नए लीडर के साथ नया पार्टिशन बनाकर, लीडर के काम करने के दौरान अपने-आप काम करना बंद कर देता है. नए विभाजन में एक नया विभाजन रंग भी है.
रेडियो चालू करें
वह लीडर चुनें जिसका रेडियो बंद हो गया था. रेडियो कनेक्टिविटी बहाल करने के लिए Action Bar
पर बटन पर क्लिक करें:
रेडियो कनेक्टिविटी के बहाल होने के बाद, लीडर को नेटवर्क से दोबारा कनेक्ट करना होगा.
9. नोड को एक जगह से दूसरी जगह ले जाना
OTNS का इस्तेमाल करके, उपयोगकर्ता OTNS-CLI
या OTNS-Web
की मदद से, नोड आसानी से मूव कर सकते हैं.
नोड को OTNS-CLI
में ले जाएं
नोड 5 को किसी नई जगह पर ले जाएं:
> move 5 600 300 Done
अब नोड 5 दूसरे राऊटर से बहुत दूर है, इसलिए उन्हें एक-दूसरे से कनेक्टिविटी खत्म हो जानी चाहिए और करीब-करीब 12 सेकंड (सिम्युलेटिंग टाइम में 120 सेकंड) के बाद, दोनों अपने-अपने सेगमेंट के लीडर बन जाते हैं:
OTNS-वेब के ज़रिए नोड को ट्रांसफ़र करें
नोड 5 को खींचकर वापस मूल जगह पर ले जाएं. दोनों विभाजनों को फिर से एक विभाजन में मर्ज कर देना चाहिए:
10. नोड मिटाएं
OTNS-CLI
से नोड मिटाएं
नोड 8 मिटाएं:
> del 8 Done
नोड 8, सिम्युलेशन से गायब हो जाना चाहिए:
OTNS-Web
से नोड मिटाएं
नोड 5 चुनें और नोड 5 को मिटाने के लिए Action Bar
पर बटन पर क्लिक करें:
Node 1
लीडर बना और Node 7
अलग हो जाना चाहिए, क्योंकि यह किसी भी राऊटर तक नहीं पहुंच सकता.
सिम्युलेशन मिटाएं (सभी नोड मिटाएं)
सिम्युलेशन पूरा करने के लिए, OTNS-Web
से सभी नोड मिटाएं.
Action Bar.
पर मौजूद बटन पर क्लिक करने से, सभी नोड एक साथ गायब हो जाएंगे.
आगे बढ़ने से पहले...
सिम्युलेशन में कुछ नोड खुद जोड़ें, ताकि आप इस ट्यूटोरियल को जारी रख सकें.
11. OTNS-CLI नोड का संदर्भ
OTNS-CLI
नोड के साथ आसान इंटरैक्शन के लिए नोड संदर्भ मोड उपलब्ध कराता है, ताकि डेवलपर किसी नोड की स्थिति का पता लगा सकें.
नोड का संदर्भ मोड डालें
नोड 1 के नोड का संदर्भ डालें:
> node 1 Done node 1>
सीएलआई प्रॉम्प्ट को node 1>
में बदल दिया गया है. इससे मौजूदा नोड के बारे में पता चलता है. आप नोड पर एक्ज़ीक्यूट करने के लिए, OpenThread CLI कमांड टाइप कर सकते हैं, जैसे कि आप सीधे नोड से कर रहे हों.
नोड के संदर्भ में निर्देश पूरे करें
node 1> state leader Done node 1> channel 11 Done node 1> panid 0xface Done node 1> networkname OpenThread Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:d800 fdde:ad00:beef:0:2175:8a67:1000:6352 fe80:0:0:0:2075:82c2:e9e9:781d Done
दूसरे नोड संदर्भ पर स्विच करें
node 1> node 2 Done node 2>
नोड के संदर्भ से बाहर निकलें
node 1> exit Done >
12. बधाई हो
बधाई हो, आपने अपना पहला OTNS सिम्युलेशन पूरा कर लिया है!
आपने&OT39; OTNS और इसकी डिपेंडेंसी इंस्टॉल करने का तरीका सीखा है. आपने OTNS के लिए OpenThread बनाया है. साथ ही, OpenThread सिम्युलेशन सिम्युलेशन का इस्तेमाल करके, OTNS सिम्युलेशन शुरू किया है. आपने सिम्युलेशन को OTNS-CLI
और OTNS-Web
, दोनों के ज़रिए अलग-अलग तरीके से इस्तेमाल करने का तरीका जाना है.
अब आपको पता है कि OTNS क्या है और आप OpenThread नेटवर्क को सिम्युलेट करने के लिए OTNS का इस्तेमाल कैसे कर सकते हैं.
आगे क्या करना है?
इनमें से कुछ कोडलैब देखें...
- OpenThread से थ्रेड नेटवर्क को सिम्युलेट करना
- Loger में OpenThread का इस्तेमाल करके, किसी थ्रेड नेटवर्क को सिम्युलेट करना
- nRF52840 बोर्ड और OpenThread की मदद से Thread नेटवर्क बनाना