1. परिचय
थ्रेड और OTNS क्या है
थ्रेड, आईपी-आधारित कम-पावर वाला वायरलेस मेश नेटवर्किंग प्रोटोकॉल है, जो डिवाइस-से-डिवाइस और डिवाइस-से-क्लाउड संचार को सुरक्षित रूप से सक्षम करता है. किसी एक खराबी की वजह से थ्रेड नेटवर्क, टोपोलॉजी में किए गए बदलाव के मुताबिक हो सकते हैं.
Google की ओर से रिलीज़ किया गया OpenThread, Thread का ओपन-सोर्स लागू करने का तरीका है. ओपन कोड साइज़ और मेमोरी के बावजूद, ओपन थ्रेड, थ्रेड की खास बातों में दी गई सभी सुविधाओं के साथ काम करता है.
ओपन थ्रेड नेटवर्क सिम्युलेटर (OTNS) का इस्तेमाल POS नेटवर्क पर सिम्युलेट किए गए OpenThread नोड को चलाकर थ्रेड नेटवर्क को सिम्युलेट करने के लिए किया जा सकता है. OTNS, सिम्युलेट किए गए थ्रेड नेटवर्क को विज़ुअलाइज़ और चालू करने के लिए, इस्तेमाल करने में आसान वेब इंटरफ़ेस (OTNS-Web) देता है.
आप इन चीज़ों के बारे में जानेंगे
- OTNS और इसकी डिपेंडेंसी इंस्टॉल करें
- OTNS के लिए OpenThread बनाएं
- OTNS-Web में नोड जोड़ने/ले जाने/मिटाने का तरीका
- नेटवर्क सिम्युलेशन को चलाने के लिए, OTNS-Web की अन्य उपयोगी सुविधाओं का इस्तेमाल करें
- OpenThread की 'एक-बिंदु-की-बिंदु-फ़ेल' की पुष्टि करें
इस कोडलैब का फ़ोकस OTNS-CLI और OTNS-Web पर है. OTNS की अन्य सुविधाएं, जैसे कि Python स्क्रिप्टिंग शामिल नहीं की जाती हैं.
आपको इनकी ज़रूरत होगी
- Linux x86_64 या Mac OS पर.
- Git.
- 1.11+ पर जाएं.
- वेब ब्राउज़र. OTNS-Web सिम्युलेशन दिखाने के लिए वेब ब्राउज़र का इस्तेमाल करता है.
- थ्रेड Primer. आपको Thread के बुनियादी सिद्धांतों को जानना होगा, ताकि आप यह जान सकें कि इस कोडलैब में क्या सिखाया गया है.
2. इंस्टॉल करने की सुविधा
Go इंस्टॉल करें
OTNS को बनाने के लिए Go 1.11+ की ज़रूरत है.
- https://golang.org/dl/ से Go इंस्टॉल करें
$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
का पासवर्ड डालने के लिए कहा जा सकता है.
ots इंस्टॉल करें
otns
को $GOPATH/bin
में इंस्टॉल करें:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
देखें कि otns
ठीक तरह से इंस्टॉल हुआ है या नहीं
$PATH.
मेंotns
एक्ज़ीक्यूटेबल खोजा जा सकता है या नहीं, यह जानने के लिएwhich otns
चलाएं- अगर
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/bootstrap $ ./bootstrap $ make -f examples/Makefile-simulation OTNS=1
आप ओपन डायरेक्ट्री के एक्ज़ीक्यूटेबल को output
डायरेक्ट्री में देख सकते हैं:
Linux
$ ls ~/src/openthread/output/simulation/bin ot-cli-ftd ot-cli-mtd ot-ncp-ftd ot-ncp-mtd ot-rcp
macOS
$ ls ~/src/openthread/output/simulation/bin ot-cli-ftd ot-cli-mtd ot-ncp-ftd ot-ncp-mtd ot-rcp
अब OTNS चलाने का समय हो गया है...
4. OTNS चलाएं
otns
चलाएं:
$ cd ~/src/openthread/output/simulation/bin $ otns > ← OTNS-CLI prompt
शुरू होने के बाद, OTNS एक CLI कंसोल (OTNS-CLI
) में आ जाएगा और नेटवर्क विज़ुअलाइज़ेशन और प्रबंधन (OTNS-Web
) के लिए एक वेब ब्राउज़र लॉन्च करेगा:
अगर आपको OTNS-वेब के लिए सिर्फ़ एक खाली पेज दिखाई देता है, तो हो सकता है कि WebGL आपके ब्राउज़र में चालू न हो. कृपया इनका संदर्भ लेंhttps://superuser.com/a/836833 देखें.
नीचे दिए गए सेक्शन में, आप OTNS-CLI
और OTNS-Web
के ज़रिए OTNS के सिम्युलेशन प्रबंधित करने का तरीका जानेंगे.
5. OTNS-CLI और OTNS-Web को जानें
ओटीएसएन-सीएलआई
OTNS सिम्युलेशन को मैनेज करने के लिए, OTNS-CLI
एक कमांड लाइन इंटरफ़ेस (सीएलआई) उपलब्ध कराता है.
$ cd ~/src/openthread/output/simulation/bin $ otns > ← OTNS-CLI prompt
आप OTNS-CLI
के ज़रिए निर्देश लिख सकते हैं. निर्देशों की पूरी सूची देखने के लिए, OTNS CLI रेफ़रंस देखें. चिंता न करें, आप इस कोडलैब में इनमें से कुछ निर्देशों का इस्तेमाल करने जा रहे हैं.
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 बटन पर भी क्लिक करें. उन्हें मौजूदा नोड के पास वाली जगहों पर खींचकर ऐसे थ्रेड नेटवर्क में भेज सकते हैं:
अब आपने एक विभाजन का थ्रेड नेटवर्क बना लिया है, जिसमें कई नोड हैं. अगले सेक्शन में, हम सिम्युलेशन को तेज़ी से चलाने के लिए सिम्युलेशन की रफ़्तार को बढ़ाने वाले हैं.
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 गति पर चलता है.
2 राऊटर के मौजूदा लीडर (लाल बॉर्डर) को ढूंढें, उसे चुनने के लिए सिर्फ़ एक क्लिक करें:
रेडियो बंद करें
लीडर नोड का रेडियो बंद करने के लिए, कार्रवाई बार पर बटन पर क्लिक करें:
लीडर रेडियो बंद होने पर मैसेज भेज या पा नहीं सकेगा.
दूसरे राऊटर के नए लीडर बनने के लिए करीब 12 सेकंड (सिम्युलेटिंग समय में 120 सेकंड) का इंतज़ार करें:
लीडर, नए लीडर के साथ एक नया सेगमेंटेशन बनाकर, लीडर के फ़ेल होने पर थ्रेड को अपने-आप वापस पा लेता है. नए विभाजन में भी एक नया विभाजन रंग है.
रेडियो चालू करें
उस लीडर को चुनें जिसका रेडियो बंद था. रेडियो कनेक्टिविटी को बहाल करने के लिए 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 के साथ थ्रेड नेटवर्क को सिम्युलेट करना
- डॉकर में OpenThread का इस्तेमाल करके, थ्रेड नेटवर्क को सिम्युलेट करना
- nRF52840 बोर्ड और OpenThread से थ्रेड नेटवर्क बनाना