1. शुरुआती जानकारी
Thread और OTNS क्या है
Thread, आईपी पर आधारित कम पावर वाला वायरलेस मेश नेटवर्किंग प्रोटोकॉल है. इसकी मदद से, एक डिवाइस से दूसरे डिवाइस पर सुरक्षित तरीके से और एक से दूसरे डिवाइस पर सुरक्षित तरीके से बातचीत की जा सकती है. थ्रेड नेटवर्क, टोपोलॉजी से जुड़े बदलावों के हिसाब से काम कर सकते हैं, ताकि किसी एक पॉइंट के फ़ेल होने की स्थिति से बचा जा सके.
Google की ओर से रिलीज़ किया गया OpenThread, थ्रेड का एक ओपन-सोर्स लागू करने का तरीका है. छोटे थ्रेड के साइज़ और मेमोरी फ़ुटप्रिंट के बावजूद, OpenThread में थ्रेड की खास बातों में बताई गई सभी सुविधाएं काम करती हैं.
OpenThread नेटवर्क सिम्युलेटर (OTNS) का इस्तेमाल, posix प्लैटफ़ॉर्म पर सिम्युलेट किए गए OpenThread नोड की मदद से, Thread नेटवर्क की नकल करने के लिए किया जा सकता है. OTNS, सिम्युलेट किए गए थ्रेड नेटवर्क को विज़ुअलाइज़ करने और काम करने के लिए, इस्तेमाल में आसान वेब इंटरफ़ेस (OTNS-Web) उपलब्ध कराता है.
आप इन चीज़ों के बारे में जानेंगे
- OTNS और इसकी डिपेंडेंसी इंस्टॉल करें
- OTNS के लिए OpenThread बनाएं
- OTNS-वेब में नोड को जोड़ने/ले जाने/मिटाने का तरीका
- नेटवर्क सिम्युलेशन चलाने के लिए, OTNS-Web की अन्य ज़रूरी सुविधाओं का इस्तेमाल करें
- OpenThread के 'एक-एक-पॉइंट-पर-फ़ेल' की पुष्टि करें
यह कोडलैब, OTNS-CLI और OTNS-Web पर फ़ोकस करता है. OTNS की दूसरी सुविधाएं, जैसे कि Python स्क्रिप्टिंग में शामिल नहीं हैं.
आपको इनकी ज़रूरत होगी
- Linux x86_64 या Mac OS.
- उपहार.
- 1.13+ जाएं.
- वेब ब्राउज़र. OTNS-Web, सिम्युलेशन के लिए वेब ब्राउज़र का इस्तेमाल करता है.
- थ्रेड प्राइमर. कोडलैब में क्या पढ़ाया जाता है, यह समझने के लिए, आपको थ्रेड के बुनियादी सिद्धांतों के बारे में जानना होगा.
2. इंस्टॉल करना
Go इंस्टॉल करें
OTNS को बनाने के लिए, 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-CLI
) में जाएगा और नेटवर्क विज़ुअलाइज़ेशन और मैनेजमेंट (OTNS-Web
) के लिए, वेब ब्राउज़र लॉन्च करेगा:
अगर आपको OTNS-Web के लिए कोई खाली पेज दिखता है, तो हो सकता है कि आपके ब्राउज़र में WebGL चालू न हो. WebGL को चालू करने का तरीका जानने के लिए, कृपयाhttps://superuser.com/a/836833 पर जाएं.
नीचे दिए गए सेक्शन में, आपको OTNS-CLI
और OTNS-Web
के ज़रिए OTNS सिम्युलेशन को मैनेज करने का तरीका बताया जाएगा.
5. OTNS-CLI और OTNS-Web के बारे में जानें
ओटीएनएस-सीएलआई
OTNS सिम्युलेशन को मैनेज करने के लिए, OTNS-CLI
में कमांड लाइन इंटरफ़ेस (सीएलआई) होता है.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
OTNS-CLI
की मदद से, निर्देश टाइप किए जा सकते हैं. निर्देशों की पूरी सूची देखने के लिए, OTNS सीएलआई रेफ़रंस पर जाएं. चिंता न करें, आप इस कोडलैब में इन निर्देशों में से केवल कुछ का उपयोग करने वाले हैं.
OTNS-वेब
OTNS-Web
, OTNS का नेटवर्क विज़ुअलाइज़ेशन और मैनेजमेंट टूल है. यह, सिम्युलेट की गई थ्रेड नेटवर्क के नोड, मैसेज, और लिंक को विज़ुअल के तौर पर दिखाता है. 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
अब, ओटीएन को जितना हो सके उतनी तेज़ी से सिम्युलेट करने की कोशिश की जा रही है. इसलिए, आपको बहुत बड़ी संख्या में मैसेज भेजने वाले नोड दिखने चाहिए.
सिमुलेशन रोकें
> speed 0 Done
सिम्युलेट करने की स्पीड को 0
पर सेट करने से, सिम्युलेशन रुक जाता है.
सिम्युलेशन सामान्य गति पर बहाल करें
> speed 1 Done
0
से ज़्यादा की वैल्यू को सिम्युलेट करने की रफ़्तार सेट करने पर, सिम्युलेशन फिर से शुरू हो जाता है.
OTNS-Web
के लिए स्पीड को कम या ज़्यादा करें
स्पीड कंट्रोल बटन
Action Bar
पर गति नियंत्रण बटन देखें. इस बटन पर, सिम्युलेट करने की मौजूदा स्पीड दिखती है. साथ ही, सिम्युलेट करने की रफ़्तार को कम या ज़्यादा करने या रोकने के लिए, इन बटन का इस्तेमाल किया जा सकता है.
स्पीड सिम्युलेशन
जब तक रफ़्तार MAX
: पर नहीं पहुंच जाती, तब तक बटन पर क्लिक करके सिम्युलेशन पूरा किया जा सकता है.
रफ़्तार कम करने का सिम्युलेशन
बटन पर क्लिक करके, सिम्युलेशन को धीमा किया जा सकता है.
सिमुलेशन रोकें
चल रहे सिम्युलेशन को रोकने के लिए बटन पर क्लिक करें. बटन में बदल जाएगा.
सिम्युलेशन फिर से शुरू करें
रोके जाने पर सिम्युलेशन फिर से शुरू करने के लिए बटन पर क्लिक करें. बटन वापस में बदल जाएगा.
सिम्युलेट करने की स्पीड को 10X
पर सेट करें
समय बचाने के लिए,
OTNS-CLI
सिम्युलेटिंग स्पीड को के हिसाब से सेट करने के लिए
10X
ताकि हम नेटवर्क में टोपोलॉजी से जुड़े बदलावों को बेहतर ढंग से देख सकें.
> speed 10 Done
8. रेडियो चालू/बंद करें
अब सिम्युलेशन में 2 राऊटर (हेक्सागन आकार) और कई बच्चे होने चाहिए और ये 10X स्पीड पर चलते हैं.
दो राऊटर के मौजूदा लीडर (लाल बॉर्डर) को चुनने के लिए, उस पर एक बार क्लिक करें:
रेडियो बंद करें
लीडर नोड के रेडियो को बंद करने के लिए, ऐक्शन बार पर मौजूद बटन पर क्लिक करें:
लीडर रेडियो बंद होने पर न तो मैसेज भेज सकेगा और न ही पा सकेगा.
अन्य राऊटर के नए लीडर बनने के लिए करीब 12 सेकंड (सिम्युलेटिंग टाइम में सिम्युलेट करने का समय) तक इंतज़ार करें:
Thread नेटवर्क, नए लीडर के साथ एक नया पार्टीशन बनाकर, लीडर की फ़ेलियर से अपने-आप रिकवर करती है. नए पार्टीशन में एक नया पार्टीशन कलर भी है.
रेडियो चालू करें
वह लीडर चुनें जिसका रेडियो बंद कर दिया गया था. रेडियो कनेक्टिविटी वापस लाने के लिए, Action Bar
पर बटन पर क्लिक करें:
रेडियो कनेक्टिविटी बहाल होने के बाद, लीडर को नेटवर्क से दोबारा जोड़ना होगा.
9. नोड को दूसरी जगह पर ले जाएं
OTNS की मदद से, उपयोगकर्ता OTNS-CLI
या OTNS-Web
की मदद से, नोड को आसानी से मूव कर सकते हैं.
नोड को OTNS-CLI
तक ले जाएं
नोड 5 को किसी नई जगह पर ले जाएं:
> move 5 600 300 Done
अब नोड 5 दूसरे राऊटर से बहुत दूर है, इसलिए उन्हें एक-दूसरे से कनेक्टिविटी खोनी चाहिए, और करीब 12 सेकंड (सिम्युलेटिंग टाइम में 120 सेकंड) के बाद, दोनों अपने-अपने लीडर बन जाते हैं:
OTNS-Web की मदद से नोड को ट्रांसफ़र करें
नोड 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 को थ्रेड नेटवर्क में सिम्युलेट करना
- डॉकर में OpenThread का इस्तेमाल करके, थ्रेड नेटवर्क को सिम्युलेट करना
- nRF52840 बोर्ड और OpenThread की मदद से, थ्रेड नेटवर्क बनाना