1. परिचय
Thread &क्या है ओटीएनएस
Thread, आईपी पर आधारित कम क्षमता वाला वायरलेस मेश नेटवर्किंग प्रोटोकॉल है. यह एक डिवाइस से दूसरे डिवाइस और डिवाइस से क्लाउड पर बातचीत करने की सुविधा देता है. किसी एक गड़बड़ी से बचने के लिए, थ्रेड नेटवर्क टोपोलॉजी में होने वाले बदलावों के हिसाब से खुद को बदल सकते हैं.
Google की ओर से रिलीज़ किया गया OpenThread, Thread का ओपन सोर्स लागू करने की सुविधा है. छोटा कोड साइज़ और मेमोरी फ़ुटप्रिंट होने के बावजूद, OpenThread का इस्तेमाल करें. हालांकि, यह Thread की खास बातों में बताई गई सभी सुविधाओं के साथ काम करता है.
OpenThread Network Simulator (OTNS) का इस्तेमाल, posix प्लैटफ़ॉर्म पर सिम्युलेटेड OpenThread नोड को चलाकर, Thread नेटवर्क को सिम्युलेट करने के लिए किया जा सकता है. OTNS, सिम्युलेटेड Thread नेटवर्क को विज़ुअलाइज़ करने और चलाने के लिए, इस्तेमाल में आसान वेब इंटरफ़ेस (OTNS-वेब) उपलब्ध कराता है.
आप इन चीज़ों के बारे में जानेंगे
- OTNS और उसकी डिपेंडेंसी इंस्टॉल करें
- OTNS के लिए OpenThread बनाना
- OTNS-वेब में नोड जोड़ने/ले जाने/मिटाने का तरीका
- नेटवर्क सिम्युलेशन चलाने के लिए, OTNS-Web की अन्य उपयोगी सुविधाओं का इस्तेमाल करें
- OpenThread के काम न करने की एक भी जगह की पुष्टि न करें
यह कोडलैब, OTNS-CLI और OTNS-Web पर फ़ोकस करता है. इसमें OTNS की अन्य सुविधाएं, जैसे कि Python स्क्रिप्टिंग में शामिल नहीं किया गया है.
आपको इनकी ज़रूरत होगी
- Linux x86_64 या Mac OS.
- Git.
- 1.13 या इसके बाद के वर्शन पर जाएं.
- वेब ब्राउज़र. OTNS-Web, सिम्युलेशन दिखाने के लिए वेब ब्राउज़र का इस्तेमाल करता है.
- Thread Primer. इस कोडलैब (कोड बनाना सीखना) में क्या पढ़ाया जाता है, यह समझने के लिए आपको Thread के बुनियादी कॉन्सेप्ट की जानकारी होनी चाहिए.
2. इंस्टॉल करना
Go इंस्टॉल करें
OTNS को बनाने के लिए, Go 1.13 या उसके बाद का वर्शन होना ज़रूरी है.
- https://golang.org/dl/ से Go इंस्टॉल करें
$(go env GOPATH)/bin
(आम तौर पर$HOME/go/bin
) को$PATH
में जोड़ें:
$ 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
पर otns
इंस्टॉल करें:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
आइए, देखते हैं कि otns
ठीक से इंस्टॉल हुआ है या नहीं
which otns
चलाकर देखें कि एक्ज़ीक्यूट किए जा सकने वालेotns
को$PATH.
में खोजा जा सकता है या नहीं- अगर
otns
निर्देश नहीं मिलता है, तो पुष्टि करें कि आपने$PATH.
में$(go env GOPATH)/bin
जोड़ा है
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
OpenThread के एक्ज़ीक्यूटेबल को build
डायरेक्ट्री में देखा जा सकता है:
$ 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-वेब
OTNS-CLI
OTNS-CLI
, OTNS सिम्युलेशन को मैनेज करने के लिए कमांड लाइन इंटरफ़ेस (सीएलआई) उपलब्ध कराता है.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
OTNS-CLI
की मदद से, निर्देश टाइप किए जा सकते हैं. निर्देशों की पूरी सूची के लिए, OTNS सीएलआई का रेफ़रंस देखें. चिंता न करें, इस कोडलैब में इनमें से सिर्फ़ कुछ कमांड इस्तेमाल किए जाएंगे.
OTNS-वेब
OTNS-Web
, OTNS का नेटवर्क विज़ुअलाइज़ेशन और मैनेजमेंट टूल है. यह सिम्युलेट किए गए Thread नेटवर्क के नोड, मैसेज, और लिंक को विज़ुअल तौर पर दिखाता है. 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 नेटवर्क से अटैच कर सकें:
अब आपने एक ऐसे सेगमेंट का 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. रेडियो चालू/बंद करें
अब सिम्युलेशन में 2 राऊटर (हेक्सागॉन के आकार) में और कई बच्चे होने चाहिए और यह 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 सिम्युलेशन पूरा कर लिया है!
आपने OTNS और इसकी डिपेंडेंसी को इंस्टॉल करने का तरीका जान लिया है. आपने OTNS के लिए OpenThread बनाया है और OpenThread सिम्युलेशन इंस्टेंस के साथ OTNS सिम्युलेशन शुरू किया है. आपने OTNS-CLI
और OTNS-Web
, दोनों की मदद से कई तरीकों से सिम्युलेशन में बदलाव करना सीख लिया है.
अब आपको पता है कि OTNS क्या है और OpenThread नेटवर्क को सिम्युलेट करने के लिए, OTNS का इस्तेमाल कैसे किया जा सकता है.
आगे क्या करना है?
इनमें से कुछ कोडलैब देखें...
- OpenThread की मदद से Thread नेटवर्क को सिम्युलेट करना
- Docker में OpenThread का इस्तेमाल करके, Thread नेटवर्क को सिम्युलेट करना
- nRF52840 बोर्ड और OpenThread की मदद से Thread नेटवर्क बनाना