1. परिचय
थ्रेड और ओटीएनएस क्या है
Thread, आईपी पर आधारित कम पावर वाला वायरलेस मेश नेटवर्किंग प्रोटोकॉल है. यह डिवाइस-से-डिवाइस और डिवाइस-से-क्लाउड कम्यूनिकेशन को सुरक्षित बनाता है. थ्रेड नेटवर्क, टोपोलॉजी में होने वाले बदलावों के हिसाब से खुद को अडजस्ट कर सकते हैं, ताकि किसी एक पॉइंट पर गड़बड़ी होने से बचा जा सके.
Google ने OpenThread को रिलीज़ किया है. यह Thread का ओपन-सोर्स वर्शन है. कोड का साइज़ और मेमोरी फ़ुटप्रिंट कम होने के बावजूद, OpenThread, Thread स्पेसिफ़िकेशन में बताई गई सभी सुविधाओं के साथ काम करता है.
OpenThread Network Simulator (OTNS) का इस्तेमाल, Thread नेटवर्क को सिम्युलेट करने के लिए किया जा सकता है. इसके लिए, posix प्लैटफ़ॉर्म पर सिम्युलेट किए गए OpenThread नोड चलाए जाते हैं. OTNS, सिम्युलेट किए गए थ्रेड नेटवर्क को विज़ुअलाइज़ करने और उन्हें ऑपरेट करने के लिए, इस्तेमाल में आसान वेब इंटरफ़ेस (OTNS-Web) उपलब्ध कराता है. Python की मदद से स्क्रिप्ट की गई सिमुलेशन भी किए जा सकते हैं.
आपको क्या सीखने को मिलेगा
- OTNS और इसकी डिपेंडेंसी इंस्टॉल करना
- OTNS-CLI की बुनियादी बातों के बारे में जानें
- OTNS-Web में OpenThread नोड जोड़ने/ले जाने/मिटाने का तरीका
- नेटवर्क सिम्युलेशन को कंट्रोल करने के लिए, OTNS-Web की अन्य काम की सुविधाओं का इस्तेमाल करना
- OpenThread के नो-सिंगल-पॉइंट-ऑफ़-फ़ेल्योर की पुष्टि करना
- Wireshark में OpenThread नोड के बीच डेटा ट्रैफ़िक देखना
इस कोडलैब में, इंटरैक्टिव तरीके से इस्तेमाल करने के लिए OTNS-CLI और OTNS-Web पर फ़ोकस किया गया है. OTNS की अन्य सुविधाएँ, जैसे कि Python स्क्रिप्टिंग, इसमें शामिल नहीं हैं.
आपको किन चीज़ों की ज़रूरत होगी
- थ्रेड प्राइमर. इस कोडलैब में बताई गई बातों को समझने के लिए, आपको Thread के बुनियादी सिद्धांतों के बारे में पता होना चाहिए.
- Linux x86_64 या Mac OS के साथ Homebrew का इस्तेमाल करें. Windows WSL2 में Ubuntu 24 या इसके बाद के वर्शन पर भी यह काम करना चाहिए. हालांकि, इसके लिए आपको सेटिंग में कुछ बदलाव करने पड़ सकते हैं.
- Git.
- वेब ब्राउज़र. OTNS-Web, सिम्युलेशन दिखाने के लिए वेब ब्राउज़र का इस्तेमाल करता है.
- नेटवर्क प्रोटोकॉल ऐनालाइज़र Wireshark (ज़रूरी नहीं).
- Go का 1.23 या इसके बाद का वर्शन हो.
- इंस्टॉलेशन स्क्रिप्ट, इंस्टॉल किए गए Go वर्शन की जाँच करेगी.
- अगर Go इंस्टॉल नहीं है, तो यह पैकेज मैनेजर से उपलब्ध होने पर, >= 1.23 वर्शन इंस्टॉल करेगा.
- अगर पैकेज मैनेजर से उपलब्ध नहीं है, तो इसे मैन्युअल तरीके से इंस्टॉल करना होगा.
- ध्यान दें कि Ubuntu 24.04 या इससे पहले के वर्शन पर, Go 1.23 अपने-आप काम नहीं करता. ज़्यादा जानकारी के लिए, Ubuntu के दस्तावेज़ में Golang के उपलब्ध वर्शन पेज देखें. इसे मैन्युअल तरीके से इंस्टॉल किया जा सकता है. इसके लिए,
snap
या अन्य तरीकों का इस्तेमाल किया जा सकता है.
- Python का 3.9 या इसके बाद का वर्शन.
- इंस्टॉलेशन स्क्रिप्ट, इंस्टॉल किए गए Python वर्शन की जांच करेगी.
- अगर Python 3 अब तक इंस्टॉल नहीं किया गया है, तो पैकेज मैनेजर से उपलब्ध होने पर, यह >= 3.9 वर्शन इंस्टॉल करेगा.
- अगर पैकेज मैनेजर से उपलब्ध नहीं है, तो इसे मैन्युअल तरीके से इंस्टॉल करना होगा.
शब्दावली
"राउटर" शब्द का इस्तेमाल, Thread मेश एक्सटेंडर के लिए तकनीकी शब्द के तौर पर किया जाता है. इसे पहले Thread राउटर कहा जाता था. "नोड" का मतलब, OTNS सिम्युलेशन में किसी भी सिम्युलेट किए गए OpenThread डिवाइस से है.
2. इंस्टॉल करना
ओटीएनएस कोड पाना
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
इस कोडलैब में, कंसोल के सभी बाद के निर्देश otns
डायरेक्ट्री से चलाए जाते हैं.
बूटस्ट्रैप और इंस्टॉल करना
bootstrap
स्क्रिप्ट, ज़रूरी सॉफ़्टवेयर इंस्टॉल करेगी. इसमें Python 3 और Go/Golang शामिल हैं. साथ ही, यह OTNS को भी इंस्टॉल करेगी. ध्यान दें कि अगर स्क्रिप्ट, Python के वर्शन >= 3.9 या Go के वर्शन >= 1.23 जैसी कुछ डिपेंडेंसी अपने-आप इंस्टॉल नहीं कर पाती है, तो स्क्रिप्ट काम करना बंद कर सकती है. अपने-आप इंस्टॉल होने की सुविधा के लिए, यह ज़रूरी है कि पैकेज, ऑपरेटिंग सिस्टम की कॉन्फ़िगर की गई पैकेज रिपॉज़िटरी में मौजूद हों.
यह स्क्रिप्ट, अलग-अलग तरह के ओटी नोड भी बनाती है. इनका इस्तेमाल सीधे तौर पर सिम्युलेशन में किया जा सकता है. साथ ही, यह कुछ बुनियादी टेस्ट भी करती है. नोड बनाने की वजह से, इसमें कुछ मिनट लग सकते हैं.
$ ./script/bootstrap .... .... OTNS installed - use 'otns' to start it. $
स्क्रिप्ट को चलाने के दौरान, आपसे sudo
का पासवर्ड डालने के लिए कहा जा सकता है.
अगर otns
को सही तरीके से इंस्टॉल नहीं किया गया है
स्क्रिप्ट में इस तरह की गड़बड़ी दिख सकती है:
.... OTNS installed - please add ~/go/bin to your PATH variable first, to use it. $
इस मामले में, आपको अपने $PATH
वैरिएबल में $(go env GOPATH)/bin
जोड़ना होगा.
अन्य गड़बड़ियों के मामले में, GitHub समस्या बनाई जा सकती है.
3. पहली बार OTNS चलाना
रन otns
:
$ otns >_ ← OTNS-CLI prompt
सफलतापूर्वक शुरू होने पर, OTNS एक सीएलआई कंसोल (OTNS-CLI
) में चला जाएगा. साथ ही, नेटवर्क विज़ुअलाइज़ेशन और मैनेजमेंट (OTNS-Web
) के लिए एक वेब ब्राउज़र लॉन्च करेगा:
अगर आपको OTNS-Web के लिए सिर्फ़ एक खाली पेज दिखता है, तो हो सकता है कि आपके ब्राउज़र में WebGL चालू न हो. WebGL चालू करने का तरीका जानने के लिए, कृपया https://superuser.com/a/836833 पर जाएं.
यहां दिए गए सेक्शन में, आपको OTNS-CLI
और OTNS-Web
की मदद से, ओटीएनएस सिमुलेशन मैनेज करने के बारे में जानकारी मिलेगी.
4. OTNS-CLI और OTNS-Web के बारे में जानकारी
OTNS-CLI
OTNS-CLI
, OTNS सिमुलेशन को मैनेज करने के लिए कमांड लाइन इंटरफ़ेस (सीएलआई) है.
$ otns >_ ← OTNS-CLI prompt
OTNS-CLI
के ज़रिए निर्देश टाइप किए जा सकते हैं. कमांड की पूरी सूची के लिए, OTNS सीएलआई का रेफ़रंस देखें. चिंता न करें, इस कोडलैब में आपको इनमें से कुछ ही कमांड इस्तेमाल करनी होंगी.
सीएलआई कमांड की खास जानकारी पाने के लिए, help
कमांड टाइप करें. यह सूची, सीएलआई के रेफ़रंस के जैसी ही है.
> help add Add a node to the simulation and get the node ID. .... .... Done >
किसी निर्देश के बारे में ज़्यादा मदद पाने के लिए, निर्देश का नाम इस्तेमाल करें. उदाहरण के लिए:
> help add add Add a node to the simulation and get the node ID. Definition: .... .... >
OTNS-Web
OTNS-Web
, OTNS का नेटवर्क विज़ुअलाइज़ेशन और मैनेजमेंट टूल है. यह सिम्युलेट किए गए थ्रेड नेटवर्क के नोड, मैसेज, और लिंक को विज़ुअल तौर पर दिखाता है. OTNS-Web
के अलग-अलग एलिमेंट पर ध्यान दें:
5. नोड जोड़ना
OTNS-CLI की मदद से नोड जोड़ना
सिमुलेशन में थ्रेड राउटर जोड़ें:
> add router 1 Done
आपको OTNS-Web
में बनाया गया नोड दिखेगा. नोड, राउटर के तौर पर शुरू होता है और कुछ सेकंड में लीडर बन जाता है:
सिमुलेशन को इंटरैक्टिव तरीके से आसानी से शुरू करने के लिए, हर नए OpenThread नोड को डिफ़ॉल्ट रूप से, नेटवर्क पैरामीटर के स्टैंडर्ड सेट के साथ कमीशन किया जाता है.
OTNS-CLI
के ज़रिए ज़्यादा नोड जोड़ना
अब हम अलग-अलग तरह के कुछ नोड जोड़ेंगे.
> add fed 2 Done > add med 3 Done > add sed 4 Done
नोड को एक पार्टीशन में मर्ज होने में कुछ सेकंड लगेंगे. आपको OTNS-Web
में नोड दिखने चाहिए:
इसके अलावा, OTNS-Web
में किसी भी नोड को चुनकर, नोड के बारे में ज़्यादा जानकारी वाला पैनल पाया जा सकता है. उदाहरण के लिए, नीचे दिए गए फ़िगर में नोड 1 को चुना गया है. पैनल में "भूमिका" एंट्री से पुष्टि होती है कि यह लीडर है.
OTNS-Web
के हिसाब से नोड जोड़ना
OTNS-Web
का इस्तेमाल करके भी नोड जोड़े जा सकते हैं. Action Bar
के New Router
बटन पर क्लिक करें. आपको चुने गए नोड के दाईं ओर एक नोड बनता हुआ दिखेगा. नया राऊटर, मौजूदा Thread पार्टीशन से जुड़ना चाहिए:
इसके अलावा, ऐक्शन बार पर मौजूद FED, MED, SSED, और BR बटन पर क्लिक करके, इस तरह के अन्य नोड बनाए जा सकते हैं. अब कुल नौ नोड होने चाहिए. अगर आपको कोई अलग फ़िज़िकल नेटवर्क टोपोलॉजी बनानी है, तो कुछ नोड को खींचकर दूसरी जगहों पर ले जाएं.
अब आपने एक ऐसे पार्टीशन का थ्रेड नेटवर्क बना लिया है जिसमें कई नोड शामिल हैं. अगले सेक्शन में, हम सिम्युलेट करने की स्पीड को अडजस्ट करेंगे, ताकि सिम्युलेशन तेज़ी से चल सके.
6. स्पीड अडजस्ट करना
फ़िलहाल, सिम्युलेशन को 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
7. रेडियो चालू/बंद करना
अब सिम्युलेशन में कम से कम दो राउटर (षट्भुज आकार), एक बॉर्डर राउटर (वर्ग आकार), और कई चाइल्ड होने चाहिए. साथ ही, यह 10 गुना तेज़ी से चलना चाहिए.
दो राऊटर में से मौजूदा लीडर (लाल बॉर्डर) को ढूंढें. इसे चुनने के लिए, इस पर एक बार क्लिक करें:
रेडियो बंद करें
लीडर नोड के रेडियो को बंद करने के लिए, ऐक्शन बार पर मौजूद बटन पर क्लिक करें. रेडियो बंद होने पर, लीडर न तो मैसेज भेज पाएगा और न ही उसे कोई मैसेज मिलेगा.
दूसरे राऊटर या बॉर्डर राऊटर को नया लीडर बनने में करीब 12 सेकंड (सिमुलेशन के समय में 120 सेकंड) लगेंगे:
लीडर नोड के काम न करने पर, थ्रेड नेटवर्क अपने-आप ठीक हो जाता है. इसके लिए, वह एक नया पार्टीशन बनाता है और उसमें एक नया लीडर नोड चुनता है. नए पार्टीशन का रंग भी नया है.
रेडियो चालू करें
उस लीडर को चुनें जिसका रेडियो बंद कर दिया गया था. रेडियो कनेक्टिविटी वापस लाने के लिए, Action Bar
पर मौजूद बटन पर क्लिक करें:
रेडियो कनेक्टिविटी ठीक होने के बाद, लीडर को नेटवर्क से फिर से कनेक्ट करना चाहिए.
8. नोड को दूसरी जगह ले जाना
OTNS की मदद से, उपयोगकर्ता OTNS-CLI
या OTNS-Web
के ज़रिए नोड को आसानी से एक जगह से दूसरी जगह ले जा सकते हैं.
OTNS-CLI
की मदद से नोड को दूसरी जगह ले जाना
बॉर्डर राउटर नोड 9 को नई जगह पर ले जाएं:
> move 9 50 50 Done
OTNS-Web की मदद से नोड को दूसरी जगह ले जाना
नोड 5 को खींचकर सबसे नीचे दाईं ओर ले जाएं. नोड 5 अब अन्य राऊटर की रेडियो कवरेज से बाहर है. इसलिए, यह नए पार्टीशन आईडी के साथ अपना खुद का पार्टीशन बनाता है. नोड पर क्लिक करके, नोड की जानकारी वाले पैनल में जाकर पार्टीशन आईडी देखे जा सकते हैं.
ध्यान दें कि नोड 5 और नोड 9 के बीच अब भी एक हरी लाइन खींची गई है. ऐसा अक्सर बच्चे के बारे में पुरानी जानकारी की वजह से होता है. यह जानकारी, माता-पिता के पुराने खाते की चाइल्ड टेबल में अब भी मौजूद होती है. इसके अलावा, यह नोड 9 और नोड 5 के बीच पहले से मौजूद राउटर-टू-राउटर लिंक के बारे में पुरानी जानकारी भी हो सकती है. (ऐसा हो सकता है कि इस मामले में, रेंडरिंग से जुड़ी कोई गड़बड़ी हो.) आखिरकार, सही टाइम आउट के बाद नोड पर पुरानी जानकारी को हटा दिया जाता है.
9. नोड मिटाएं
OTNS-CLI
की मदद से नोड मिटाना
नोड 5 मिटाएं:
> del 5 Done
सिमुलेशन से नोड 5 गायब हो जाना चाहिए:
OTNS-Web
की मदद से नोड मिटाना
बॉर्डर राउटर नोड 9 को चुनें और नोड 9 को मिटाने के लिए, Action Bar
पर मौजूद बटन पर क्लिक करें:
Node 1
को नए पार्टीशन का लीडर बनना चाहिए. साथ ही, बाकी सभी नोड, नोड 1 से चाइल्ड के तौर पर जुड़ जाएंगे.
10. 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 otns Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:b400 fd00:f00d:cafe:0:2505:8719:3685:ebfb fdde:ad00:beef:0:4fd9:b9ba:44e0:96cb fe80:0:0:0:e86a:e07:ec97:777 Done
किसी दूसरे नोड कॉन्टेक्स्ट पर स्विच करना
node 1> node 2 Done node 2>
नोड के कॉन्टेक्स्ट से बाहर निकलें
node 1> exit Done >
नोड कॉन्टेक्स्ट से बाहर निकलने का दूसरा तरीका, node 0
कमांड है.
11. नोड के लॉग और पैकेट कैप्चर देखना
OpenThread नोड के लॉग
डिफ़ॉल्ट रूप से, OTNS, सिम्युलेट किए गए सभी OpenThread नोड के लिए लॉग फ़ाइलें जनरेट करता है. इन्हें ./tmp
डायरेक्ट्री में देखा जा सकता है. फ़ाइल का नाम 0_
है. उदाहरण के लिए, लॉग फ़ाइल का कुछ हिस्सा यहां दिखाया गया है:
7616488 00:00:06.326 [I] MeshForwarder-: Received IPv6 UDP msg, len:90, chksum:5915, ecn:no, from:ca72650db7b856af, sec:no, prio:net, rss:-58.0
7616488 00:00:06.326 [I] MeshForwarder-: src:[fe80:0:0:0:c872:650d:b7b8:56af]:19788
7616488 00:00:06.326 [I] MeshForwarder-: dst:[ff02:0:0:0:0:0:0:1]:19788
7616488 00:00:06.326 [D] Mle-----------: Receive MLE message
7616488 00:00:06.326 [D] Mac-----------: Idle mode: Radio receiving on channel 11
7657544 00:00:06.367 [D] Mac-----------: ==============================[RX len=063]==============================
7657544 00:00:06.367 [D] Mac-----------: | 41 D8 7F CE FA FF FF 46 | 74 5A 33 9E 76 51 4E 7F | A......FtZ3.vQN. |
7657544 00:00:06.367 [D] Mac-----------: | 3B 02 F0 4D 4C 4D 4C 81 | E6 00 15 03 00 00 00 00 | ;..MLML......... |
7657544 00:00:06.367 [D] Mac-----------: | 00 00 00 01 46 86 7D FE | 06 CC DB 94 86 9C 88 0B | ....F.}......... |
7657544 00:00:06.367 [D] Mac-----------: | 1C 1E 26 9B 8D 21 2E 65 | 53 5A 43 4E A2 59 D6 | ..&..!.eSZCN.Y. |
7657544 00:00:06.367 [D] Mac-----------: ------------------------------------------------------------------------
7657544 00:00:06.367 [I] MeshForwarder-: Received IPv6 UDP msg, len:84, chksum:81e6, ecn:no, from:4e51769e335a7446, sec:no, prio:net, rss:-48.0
7657544 00:00:06.367 [I] MeshForwarder-: src:[fe80:0:0:0:4c51:769e:335a:7446]:19788
7657544 00:00:06.367 [I] MeshForwarder-: dst:[ff02:0:0:0:0:0:0:2]:19788
7657544 00:00:06.367 [D] Mac-----------: Idle mode: Radio receiving on channel 11
7833912 00:00:06.543 [I] Mle-----------: AttachState ParentReq -> Idle
7833912 00:00:06.543 [N] RouterTable---: Allocate router id 12
7833912 00:00:06.543 [N] Mle-----------: RLOC16 fffe -> 3000
7833912 set node RLOC16: fffe -> 3000
7833912 00:00:06.543 [D] SubMac--------: RadioShortAddress: 0x3000
7833912 00:00:06.543 [N] Mle-----------: Role detached -> leader
7833912 00:00:06.543 [N] Mle-----------: Partition ID 0x24c35f10
7833912 00:00:06.543 [I] RouterTable---: Route table
7833912 00:00:06.543 [I] RouterTable---: 12 0x3000 - me - leader
बाईं ओर, सिम्युलेशन का कुल समय माइक्रोसेकंड में दिखाया गया है. hh:mm:ss
टाइमस्टैंप, OpenThread नोड के लॉग का टाइमस्टैंप दिखाता है. यह टाइमस्टैंप, सिम्युलेशन के कुल समय से अलग हो सकता है.
Wireshark पैकेट कैप्चर
डिफ़ॉल्ट रूप से, ट्रांसमिट किए गए सभी IEEE 802.15.4 फ़्रेम, PCAP फ़ाइल current.pcap
में कैप्चर किए जाते हैं. सिमुलेशन के दौरान या बाद में, Wireshark इस फ़ाइल को पढ़ सकता है. Thread के लिंक-लेयर एन्क्रिप्शन की वजह से, OTNS के लिए डिक्रिप्शन कुंजी को सही तरीके से सेट करने के लिए, Wireshark में एक बार कॉन्फ़िगरेशन की कार्रवाई करना ज़रूरी है. डिफ़ॉल्ट रूप से, एक जाने-माने नेटवर्क की का इस्तेमाल किया जाता है, ताकि Wireshark से फ़्रेम को डिक्रिप्ट करना आसान हो.
Wireshark में OpenThread पैकेट की जांच करने का उदाहरण देखने के लिए, नीचे दिया गया स्क्रीनशॉट देखें.
डिक्रिप्शन कुंजी को कॉन्फ़िगर करने के लिए, मेन्यू में बदलाव करें -> प्राथमिकताएं चुनें. इसके बाद, प्राथमिकताओं वाली विंडो में जाकर, प्रोटोकॉल -> IEEE 802.15.4 चुनें. "डिक्रिप्शन कुंजियां" के बगल में मौजूद, बदलाव करें... बटन पर क्लिक करें. नई एंट्री बनाने के लिए, + पर क्लिक करें. इसके बाद, 00112233445566778899aabbccddeeff
(32 वर्ण) कुंजी डालें और "की हैश" फ़ील्ड में "थ्रेड हैश" चुनें. "डिक्रिप्शन कुंजी इंडेक्स" को 0
पर छोड़ा जा सकता है. इसके बाद, ठीक है पर क्लिक करें. इसके बाद, ठीक है पर फिर से क्लिक करें. अब लोड होने पर, OTNS PCAP फ़ाइल सही तरीके से डिक्रिप्ट हो जानी चाहिए.
"समय" कॉलम में दिखाए गए टाइमस्टैंप (सेकंड में), OpenThread नोड के लॉग में दिखाए गए सिम्युलेशन के कुल समय की वैल्यू से मेल खाते हैं. इससे, भेजे गए या मिले रेडियो फ़्रेम के साथ लॉग मैसेज को जोड़ना आसान हो जाता है. हालांकि, वैल्यू आम तौर पर एक माइक्रोसेकंड तक सटीक नहीं होती हैं: सिम्युलेट किया गया IEEE 802.15.4 रेडियो हार्डवेयर, OpenThread स्टैक से रेडियो फ़्रेम भेजने का अनुरोध किए जाने के बाद, कुछ अतिरिक्त देरी जोड़ सकता है.
12. बधाई हो
बधाई हो, आपने पहला OTNS सिम्युलेशन पूरा कर लिया है!
आपने OTNS और इसकी डिपेंडेंसी को इंस्टॉल करने का तरीका जान लिया है. आपने OpenThread के सिम्युलेट किए गए नोड के साथ OTNS सिम्युलेशन शुरू किया है. आपने OTNS-CLI
और OTNS-Web
, दोनों का इस्तेमाल करके, अलग-अलग तरीकों से सिम्युलेशन को मैनेज करने का तरीका सीख लिया है.
अब आपको पता है कि OTNS क्या है और OpenThread नेटवर्क को सिम्युलेट करने के लिए, OTNS का इस्तेमाल कैसे किया जा सकता है.
आगे क्या करना है?
यहां दिए गए कुछ कोडलैब देखें...
- OpenThread की मदद से Thread नेटवर्क को सिम्युलेट करना
- Docker में OpenThread का इस्तेमाल करके, थ्रेड नेटवर्क को सिम्युलेट करना
- nRF52840 बोर्ड और OpenThread की मदद से Thread नेटवर्क बनाना