OTNS का इस्तेमाल करके थ्रेड नेटवर्क को सिम्युलेट करें

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

5abd22afa2f2ee9a.png

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+ वर्शन बनाया जाए.

  1. https://golang.org/DL/ से जाएं
  2. $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 को ठीक से इंस्टॉल किया गया है या नहीं

  1. which otns को चलाकर देखें कि otns एक्ज़ीक्यूटेबल को $PATH. पर खोजा जा सकता है या नहीं
  2. अगर 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):

a0e05178d66929b1.png

अगर आपको सिर्फ़ 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 के अलग-अलग एलिमेंट पर ध्यान दें:

4c5b43509a2ca0d0.png

6. नोड जोड़ें

OTNS-CLI के ज़रिए नोड जोड़ें

राऊटर जोड़ें (300, 100)

> add router x 300 y 100
1
Done

आपको OTNS-Web में बनाया गया नोड दिखेगा. नोड राऊटर के रूप में शुरू होता है और कुछ ही सेकंड में लीडर बन जाता है:

6ca8c2e63ed9818d.png

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 के नोड दिखाई देंगे:

3ee67903c01aa612.png

OTNS-Web तक नोड जोड़ें

OTNS-Web से नोड भी जोड़े जा सकते हैं. Action Bar के New Router बटन पर क्लिक करें. आपको New Router बटन के ठीक ऊपर बनाया गया नोड दिख रहा है. नोड को खींचकर, उस लीडर के पास ले जाएं जिसे आपने OTNS-CLI की मदद से बनाया है. सभी नोड आखिर में एक पार्टीशन में मर्ज हो जाने चाहिए:

420258bb92561146.png

दूसरे तरह के नोड बनाने के लिए, ऐक्शन बार पर FED, MED, और SED बटन पर क्लिक करें. मौजूदा नोड के पास मौजूद पॉइंट को खींचकर, उस थ्रेड के नेटवर्क में जोड़ने के लिए:

fe15d6f9726a099e.png

अब आपने एक हिस्से का 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 पर स्पीड कंट्रोल बटन 9329157c1bd12672.png ढूंढें. इस बटन से, सिम्युलेट करने की मौजूदा स्पीड दिखती है. इस बटन का इस्तेमाल, सिम्युलेशन सिम्युलेशन करने और सिमुलेशन रोकने/फिर शुरू करने के लिए किया जा सकता है.

स्पीड सिम्युलेशन

जब तक रफ़्तार MAX: f5f460b2586d299b.png तक नहीं पहुंच जाती, तब तक 39b88331779277ad.png बटन पर क्लिक करके, सिम्युलेशन को तेज़ किया जा सकता है.

स्लो डाउन सिम्युलेशन

आप 31ca8d5b52fa900.png बटन पर क्लिक करके, सिम्युलेशन को धीमा कर सकते हैं.

सिमुलेशन रोकें

सिम्युलेशन जारी होने पर इसे रोकने के लिए 46cc2088c9aa7ab6.png बटन पर क्लिक करें. बटन ce25eda3496ffcd4.png में बदल जाएगा.

सिम्युलेशन फिर से शुरू करें

सिम्युलेशन बंद होने पर उसे फिर से शुरू करने के लिए, ce25eda3496ffcd4.png बटन पर क्लिक करें. बटन 46cc2088c9aa7ab6.png पर वापस आ जाएगा.

सिम्युलेट करने की रफ़्तार को 10X पर सेट करें

समय बचाने के लिए,

OTNS-CLI सिम्युलेटिंग की स्पीड को घटाने या बढ़ाने के लिए,

10X ताकि हम नेटवर्क में टोपोलॉजी से जुड़े बदलावों पर ज़्यादा तेज़ी से नज़र रख सकें.

> speed 10
Done

8. रेडियो चालू/बंद करें

अब, सिम्युलेशन में दो राऊटर (हेक्सागॉन के आकार) और कई बच्चे होने चाहिए. साथ ही, ये 10X स्पीड पर चलते हैं.

दो राऊटर के मौजूदा लीडर (लाल बॉर्डर) को चुनकर, उसे चुनने के लिए सिर्फ़ एक क्लिक करें:

8c6a2e191cdae0c7.png

रेडियो बंद करें

लीडर नोड के रेडियो को बंद करने के लिए, कार्रवाई बार में मौजूद 7ca085f470491dd4.png बटन पर क्लिक करें:

a3bf58d9d125f95f.png

लीडर, रेडियो बंद करके न तो मैसेज भेज सकेगा और न ही पा सकेगा.

अन्य राऊटर के नए लीडर बनने के लिए करीब 12 सेकंड (सिम्युलेटिंग टाइम में 120 सेकंड) का इंतज़ार करें:

e3d32f85c4a1b990.png

Thread नेटवर्क, नए लीडर के साथ नया पार्टिशन बनाकर, लीडर के काम करने के दौरान अपने-आप काम करना बंद कर देता है. नए विभाजन में एक नया विभाजन रंग भी है.

रेडियो चालू करें

वह लीडर चुनें जिसका रेडियो बंद हो गया था. रेडियो कनेक्टिविटी बहाल करने के लिए Action Bar पर 2d9cecb8612b42aa.png बटन पर क्लिक करें:

7370a7841861aa3a.png

रेडियो कनेक्टिविटी के बहाल होने के बाद, लीडर को नेटवर्क से दोबारा कनेक्ट करना होगा.

9. नोड को एक जगह से दूसरी जगह ले जाना

OTNS का इस्तेमाल करके, उपयोगकर्ता OTNS-CLI या OTNS-Web की मदद से, नोड आसानी से मूव कर सकते हैं.

नोड को OTNS-CLI में ले जाएं

नोड 5 को किसी नई जगह पर ले जाएं:

> move 5 600 300
Done

अब नोड 5 दूसरे राऊटर से बहुत दूर है, इसलिए उन्हें एक-दूसरे से कनेक्टिविटी खत्म हो जानी चाहिए और करीब-करीब 12 सेकंड (सिम्युलेटिंग टाइम में 120 सेकंड) के बाद, दोनों अपने-अपने सेगमेंट के लीडर बन जाते हैं:

c06b4d0a4f183299.png

OTNS-वेब के ज़रिए नोड को ट्रांसफ़र करें

नोड 5 को खींचकर वापस मूल जगह पर ले जाएं. दोनों विभाजनों को फिर से एक विभाजन में मर्ज कर देना चाहिए:

9ba305c4c5a5f892.png

10. नोड मिटाएं

OTNS-CLI से नोड मिटाएं

नोड 8 मिटाएं:

> del 8
Done

नोड 8, सिम्युलेशन से गायब हो जाना चाहिए:

18156770d9f8bf83.png

OTNS-Web से नोड मिटाएं

नोड 5 चुनें और नोड 5 को मिटाने के लिए Action Bar पर 7ff6afd565f4eafc.png बटन पर क्लिक करें:

d4079cceea0105f0.png

Node 1 लीडर बना और Node 7 अलग हो जाना चाहिए, क्योंकि यह किसी भी राऊटर तक नहीं पहुंच सकता.

सिम्युलेशन मिटाएं (सभी नोड मिटाएं)

सिम्युलेशन पूरा करने के लिए, OTNS-Web से सभी नोड मिटाएं.

Action Bar. पर मौजूद 89618191721e79a0.png बटन पर क्लिक करने से, सभी नोड एक साथ गायब हो जाएंगे.

आगे बढ़ने से पहले...

सिम्युलेशन में कुछ नोड खुद जोड़ें, ताकि आप इस ट्यूटोरियल को जारी रख सकें.

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 का इस्तेमाल कैसे कर सकते हैं.

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

इनमें से कुछ कोडलैब देखें...

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