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

1. परिचय

5abd22afa2f2ee9a.png

थ्रेड और 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+ की ज़रूरत है.

  1. https://golang.org/dl/ से Go इंस्टॉल करें
  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 का पासवर्ड डालने के लिए कहा जा सकता है.

ots इंस्टॉल करें

otns को $GOPATH/bin में इंस्टॉल करें:

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

देखें कि otns ठीक तरह से इंस्टॉल हुआ है या नहीं

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

a0e05178d66929b1.png

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

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

अब आपने एक विभाजन का थ्रेड नेटवर्क बना लिया है, जिसमें कई नोड हैं. अगले सेक्शन में, हम सिम्युलेशन को तेज़ी से चलाने के लिए सिम्युलेशन की रफ़्तार को बढ़ाने वाले हैं.

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. रेडियो चालू/बंद करें

अब, सिम्युलेशन में दो रूटिंग (षट्भुज आकार) और कई बच्चे होने चाहिए, और 10X गति पर चलता है.

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

8c6a2e191cdae0c7.png

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

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

a3bf58d9d125f95f.png

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

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

e3d32f85c4a1b990.png

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

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

उस लीडर को चुनें जिसका रेडियो बंद था. रेडियो कनेक्टिविटी को बहाल करने के लिए 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 पर 7ff6afd565f4efb.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 का इस्तेमाल कैसे कर सकते हैं.

आगे क्या है?

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

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