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

1. परिचय

5abd22afa2f2ee9a.png

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 या उसके बाद का वर्शन होना ज़रूरी है.

  1. https://golang.org/dl/ से Go इंस्टॉल करें
  2. $(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 ठीक से इंस्टॉल हुआ है या नहीं

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

a0e05178d66929b1.png

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

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 बटन पर क्लिक करें. थ्रेड को मौजूदा नोड के पास की पोज़िशन पर खींचें और छोड़ें, ताकि आप उन्हें उस Thread नेटवर्क से अटैच कर सकें:

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

तेज़ सिम्युलेशन गेम

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

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

31cca8d5b52fa900.png बटन पर क्लिक करके, सिम्युलेशन की स्पीड कम की जा सकती है.

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

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

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

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

सिम्युलेशन स्पीड को 10X पर सेट करें

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

OTNS-CLI सिम्युलेट करने की स्पीड को अडजस्ट करने के लिए,

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

> speed 10
Done

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

अब सिम्युलेशन में 2 राऊटर (हेक्सागॉन के आकार) में और कई बच्चे होने चाहिए और यह 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 के 7ff6afd565f4e सामान.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 सिम्युलेशन पूरा कर लिया है!

आपने OTNS और इसकी डिपेंडेंसी को इंस्टॉल करने का तरीका जान लिया है. आपने OTNS के लिए OpenThread बनाया है और OpenThread सिम्युलेशन इंस्टेंस के साथ OTNS सिम्युलेशन शुरू किया है. आपने OTNS-CLI और OTNS-Web, दोनों की मदद से कई तरीकों से सिम्युलेशन में बदलाव करना सीख लिया है.

अब आपको पता है कि OTNS क्या है और OpenThread नेटवर्क को सिम्युलेट करने के लिए, OTNS का इस्तेमाल कैसे किया जा सकता है.

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

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

रेफ़रंस के लिए दस्तावेज़