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

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

5abd22afa2f2ee9a.png

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+ वर्शन की ज़रूरत होती है.

  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-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 सिम्युलेशन को मैनेज करने के लिए, OTNS-CLI में कमांड लाइन इंटरफ़ेस (सीएलआई) होता है.

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

OTNS-CLI की मदद से, निर्देश टाइप किए जा सकते हैं. निर्देशों की पूरी सूची देखने के लिए, OTNS सीएलआई रेफ़रंस पर जाएं. चिंता न करें, आप इस कोडलैब में इन निर्देशों में से केवल कुछ का उपयोग करने वाले हैं.

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

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

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

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

रफ़्तार कम करने का सिम्युलेशन

31kk8d5b52fa900.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 सेकंड (सिम्युलेटिंग टाइम में सिम्युलेट करने का समय) तक इंतज़ार करें:

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-Web की मदद से नोड को ट्रांसफ़र करें

नोड 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 सिम्युलेशन पूरा कर लिया है!

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

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

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

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

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