Google द्वारा जारी OpenThread थ्रेड नेटवर्किंग प्रोटोकॉल का एक ओपन-सोर्स कार्यान्वयन है। Google Nest ने कनेक्टेड घर के लिए उत्पादों के विकास में तेजी लाने के लिए डेवलपर्स के लिए व्यापक रूप से नेस्ट उत्पादों में उपयोग की जाने वाली तकनीक बनाने के लिए OpenThread जारी किया है।
थ्रेड विनिर्देशन IPv6- आधारित विश्वसनीय, सुरक्षित और कम-शक्ति वाले वायरलेस डिवाइस-टू-डिवाइस संचार प्रोटोकॉल को घरेलू अनुप्रयोगों के लिए परिभाषित करता है। OpenThread IPv6, 6LoWPAN, IEEE 802.15.4 सहित सभी थ्रेड नेटवर्किंग लेयर्स को मैक सिक्योरिटी, मेश लिंक इंस्टालेशन और मेश राउटिंग के साथ लागू करता है।
यह कोडलैब आपको डॉकटर का उपयोग करके उत्सर्जित उपकरणों पर एक थ्रेड नेटवर्क के अनुकरण के माध्यम से चलेगा।
आप क्या सीखेंगे
- OpenThread build toolchain कैसे सेट करें
- थ्रेड नेटवर्क का अनुकरण कैसे करें
- थ्रेड नोड्स को कैसे प्रमाणित करें
- OpenThread Daemon के साथ थ्रेड नेटवर्क का प्रबंधन कैसे करें
आपको किस चीज़ की ज़रूरत पड़ेगी
- डाक में काम करनेवाला मज़दूर
- लिनक्स, नेटवर्क रूटिंग का बुनियादी ज्ञान
यह कोडलैब लिनक्स, मैक ओएस एक्स या विंडोज मशीन पर डॉकर का उपयोग करने के लिए बनाया गया है। लिनक्स अनुशंसित वातावरण है।
डॉकर स्थापित करें
अपनी पसंद के ओएस पर डॉकर स्थापित करें।
डॉकर छवि को खींचो
openthread/codelab_otsim
स्थापित होने के बाद, एक टर्मिनल विंडो खोलें और openthread/codelab_otsim
Docker छवि openthread/codelab_otsim
। इस छवि में OpenThread और OpenThread Daemon पूर्व-निर्मित और इस कोडेलैब के लिए उपयोग करने के लिए तैयार है।
$ docker pull openthread/codelab_otsim:latest
ध्यान दें कि पूरी तरह से डाउनलोड होने में कुछ मिनट लग सकते हैं।
एक टर्मिनल विंडो में, छवि से एक डॉक कंटेनर शुरू करें और इसके bash
शेल से कनेक्ट करें:
$ docker run --name codelab_otsim_ctnr -it --rm \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ --cap-add=net_admin openthread/codelab_otsim bash
झंडे पर ध्यान दें, जो इस कोडलैब के लिए आवश्यक हैं:
-
--sysctl net.ipv6.conf.all.disable_ipv6=0
- यह कंटेनर के भीतर--sysctl net.ipv6.conf.all.disable_ipv6=0
सक्षम करता है -
--cap-add=net_admin
- NET_ADMIN क्षमता को सक्षम करता है, जो आपको नेटवर्क से संबंधित संचालन को निष्पादित करने की अनुमति देता है, जैसे कि आईपी मार्ग जोड़ना
कंटेनर में एक बार, आपके पास इसके समान एक संकेत होना चाहिए:
root@c0f3912a74ff:/#
उपरोक्त उदाहरण में, c0f3912a74ff
कंटेनर आईडी है। डॉकर कंटेनर के आपके उदाहरण के लिए कंटेनर आईडी इस कोडेलैब के लिए संकेतों में दिखाए गए से अलग होगी।
डॉकर का उपयोग करना
यह कोडेलैब मानता है कि आपको डोकर के उपयोग की मूल बातें पता हैं। कोडेलैब की संपूर्णता के लिए आपको डॉकटर कंटेनर में रहना चाहिए।
इस कोडलैब के लिए आपके द्वारा उपयोग किया जाने वाला उदाहरण एप्लिकेशन एक न्यूनतम OpenThread एप्लिकेशन प्रदर्शित करता है जो OpenThread कॉन्फ़िगरेशन और प्रबंधन इंटरफ़ेस को एक बुनियादी कमांड-लाइन इंटरफ़ेस (CLI) के माध्यम से उजागर करता है।
यह अभ्यास आपको एक एमुलेटेड थ्रेड डिवाइस से एक एमुलेटेड थ्रेड डिवाइस को पिंग करने के लिए आवश्यक न्यूनतम चरणों के माध्यम से ले जाता है।
नीचे दी गई आकृति एक बुनियादी थ्रेड नेटवर्क टोपोलॉजी का वर्णन करती है। इस अभ्यास के लिए, हम ग्रीन सर्कल के भीतर दो नोड्स का अनुकरण करेंगे: एक थ्रेड लीडर और उनके बीच एक एकल कनेक्शन के साथ थ्रेड राउटर।
नेटवर्क बनाएं
1. प्रारंभ करें नोड 1
यदि आपने टर्मिनल विंडो में पहले से ऐसा नहीं किया है, तो डॉकर कंटेनर को शुरू करें और उसके bash
शेल से कनेक्ट करें:
$ docker run --name codelab_otsim_ctnr -it --rm \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ --cap-add=net_admin openthread/codelab_otsim bash
openthread
कंटेनर में, openthread
डाइरेक्टरी में जाएँ और ot-cli-ftd
बाइनरी का उपयोग करके एमुलेटेड थ्रेड डिवाइस के लिए सीएलआई प्रक्रिया को स्पॉन करें।
root@c0f3912a74ff:/# cd ~/src/openthread root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 1
यह बाइनरी एक ओपनथ्रेड डिवाइस लागू करता है जो पोसिक्स के शीर्ष पर उत्सर्जित होता है। IEEE 802.15.4 रेडियो ड्राइवर UDP के शीर्ष पर कार्यान्वित किया जाता है (IEEE 802.15.4 फ्रेम UDP पेलोड लोड के भीतर पास किए जाते हैं)।
1
का तर्क एक फाइल डिस्क्रिप्टर है जो एमुलेटेड डिवाइस के लिए "फैक्टरी-असाइन" आईईईई ईयूआई -64 के कम से कम महत्वपूर्ण बिट्स का प्रतिनिधित्व करता है। IEEE 802.15.4 रेडियो इम्यूलेशन (पोर्ट = 9000 + फ़ाइल डिस्क्रिप्टर) के लिए UDP पोर्ट पर बाइंड करते समय भी इस मान का उपयोग किया जाता है। इस कोडेलैब में एक एमुलेटेड थ्रेड डिवाइस का प्रत्येक उदाहरण एक अलग फाइल डिस्क्रिप्टर का उपयोग करेगा।
ध्यान दें: केवल 1
या अधिक के फाइल डिस्क्रिप्टर का उपयोग करें, जैसा कि इस कोडेलैब में नोट किया गया है जब एक उत्सर्जित डिवाइस के लिए प्रक्रिया को स्पैनिंग करते हैं। 0
का एक फाइल डिस्क्रिप्टर अन्य उपयोग के लिए आरक्षित है।
यदि आप नहीं देखते हैं
>
इस कमांड को चलाने के बाद तुरंत दबाएँ
enter
।
एक नया ऑपरेशनल डेटासेट बनाएं और इसे सक्रिय के रूप में प्रतिबद्ध करें। ऑपरेशनल डेटासेट आपके द्वारा बनाए जा रहे थ्रेड नेटवर्क के लिए कॉन्फ़िगरेशन है।
> dataset init new Done > dataset Active Timestamp: 1 Channel: 20 Channel Mask: 07fff800 Ext PAN ID: d6263b6d857647da Mesh Local Prefix: fd61:2344:9a52:ede0/64 Master Key: e4344ca17d1dca2a33f064992f31f786 Network Name: OpenThread-c169 PAN ID: 0xc169 PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4 Security Policy: 0, onrcb Done
इस डेटासेट को सक्रिय के रूप में प्रतिबद्ध करें:
> dataset commit active Done
IPv6 इंटरफ़ेस लाओ:
> ifconfig up Done
थ्रेड प्रोटोकॉल ऑपरेशन शुरू करें:
> thread start Done
कुछ सेकंड प्रतीक्षा करें और सत्यापित करें कि डिवाइस थ्रेड लीडर बन गया है। लीडर राउटर आईडी असाइनमेंट के प्रबंधन के लिए जिम्मेदार उपकरण है।
> state leader Done
नोड 1 के थ्रेड इंटरफ़ेस को निर्दिष्ट IPv6 पते देखें (आपका आउटपुट अलग होगा):
> ipaddr fd61:2344:9a52:ede0:0:ff:fe00:fc00 fd61:2344:9a52:ede0:0:ff:fe00:5000 fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 fe80:0:0:0:94da:92ea:1353:4f3b Done
विशिष्ट IPv6 पता प्रकार नोट करें:
-
fd
= जाल-स्थानीय के साथ शुरू होता है -
fe80
= लिंक-स्थानीय के साथ शुरू होता है
मेष-स्थानीय पता प्रकारों को आगे वर्गीकृत किया गया है:
- इसमें
ff:fe00
शामिल हैff:fe00
= राउटर लोकेटर (ff:fe00
) -
ff:fe00
शामिल नहीं हैff:fe00
= समापन बिंदु पहचानकर्ता (ईआईडी)
अपने कंसोल आउटपुट में ईआईडी को पहचानें बाद में उपयोग के लिए इसे नोट करें। उपरोक्त नमूना आउटपुट में, ईआईडी है:
fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
2. नोड 2 प्रारंभ करें
नया टर्मिनल खोलें और वर्तमान में चल रहे डॉक कंटेनर में नोड 2 के उपयोग के लिए bash
शेल निष्पादित करें।
$ docker exec -it codelab_otsim_ctnr bash
इस नए bash
प्रॉम्प्ट पर, openthread
डायरेक्टरी में जाएँ और CLI प्रोसेस को स्पॉन करें। यह आपका दूसरा उत्सर्जित थ्रेड डिवाइस है:
root@c0f3912a74ff:/# cd ~/src/openthread root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 2
यदि आप नहीं देखते हैं
>
इस कमांड को चलाने के बाद तुरंत दबाएँ
enter
।
नोड 1 के संचालन डेटासेट के समान मानों का उपयोग करके थ्रेड मास्टर कुंजी और पैन आईडी कॉन्फ़िगर करें:
> dataset masterkey e4344ca17d1dca2a33f064992f31f786 Done > dataset panid 0xc169 Done
इस डेटासेट को सक्रिय के रूप में प्रतिबद्ध करें:
> dataset commit active Done
IPv6 इंटरफ़ेस लाओ:
> ifconfig up Done
थ्रेड प्रोटोकॉल ऑपरेशन शुरू करें:
> thread start Done
डिवाइस एक बच्चे के रूप में खुद को इनिशियलाइज़ करेगा। एक थ्रेड चाइल्ड एक एंड डिवाइस के बराबर है, जो एक थ्रेड डिवाइस है जो केवल एक पेरेंट डिवाइस के साथ एकसमान ट्रैफिक को प्रसारित और प्राप्त करता है।
> state child Done
2 मिनट के भीतर आपको child
से router
लिए राज्य स्विच देखना चाहिए। थ्रेड राउटर थ्रेड डिवाइसेस के बीच ट्रैफ़िक को रूट करने में सक्षम है। इसे अभिभावक के रूप में भी जाना जाता है।
नेटवर्क का सत्यापन करें
मेष नेटवर्क को सत्यापित करने का एक आसान तरीका राउटर टेबल है।
1. कनेक्टिविटी की जाँच करें
नोड 2 पर, RLOC16 प्राप्त करें। RLOC16 डिवाइस के RLOC IPv6 पते के अंतिम 16 बिट्स हैं।
> rloc16 5800 Done
नोड 1 पर, नोड 2 के RLOC16 के लिए राउटर टेबल की जांच करें। सुनिश्चित करें कि नोड 2 पहले राउटर स्थिति में बदल गया है।
> router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | +----+--------+----------+-----------+--------+-------+---+--------------------+ | 20 | 0x5000 | 63 | 0 | 0 | 0 | 0 | 96da92ea13534f3b | | 22 | 0x5800 | 63 | 0 | 3 | 3 | 23 | 5a4eb647eb6bc66c |
तालिका में 0x5800
2 का 0x5800
पाया जाता है, यह पुष्टि करता है कि यह मेष से जुड़ा है।
2. नोड 2 से पिंग नोड 1
दो उत्सर्जित थ्रेड डिवाइस के बीच कनेक्टिविटी की जाँच करें। नोड 2 में, ping
ईआईडी नोड 1 करने के लिए आवंटित:
> ping fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 > 16 bytes from fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6: icmp_seq=1 hlim=64 time=12ms
>
CLI प्रॉम्प्ट पर लौटने के लिए enter
दबाएं।
नेटवर्क का परीक्षण करें
अब जब आप दो उत्सर्जित थ्रेड डिवाइसों के बीच सफलतापूर्वक पिंग कर सकते हैं, तो एक नोड को ऑफ़लाइन ले जाकर मेष नेटवर्क का परीक्षण करें।
नोड 1 पर लौटें और थ्रेड रोकें:
> thread stop Done
नोड 2 पर जाएँ और राज्य की जाँच करें। दो मिनट के भीतर, नोड 2 का पता चलता है कि नेता (नोड 1) ऑफ़लाइन है, और आपको नेटवर्क का leader
होने के लिए नोड 2 संक्रमण देखना चाहिए:
> state router Done ... > state leader Done
एक बार पुष्टि हो जाने पर, थ्रेड और फ़ैक्टरी रीसेट करें नोड 2 को डॉकर bash
प्रॉम्प्ट से बाहर निकलने से पहले रीसेट करें। एक फ़ैक्टरी रीसेट यह सुनिश्चित करने के लिए किया जाता है कि इस अभ्यास में हमने जो थ्रेड नेटवर्क क्रेडेंशियल्स का उपयोग किया है, उसे अगले अभ्यास तक नहीं ले जाया जाए।
> thread stop Done > factoryreset > > exit root@c0f3912a74ff:/#
आप प्रेस करना पड़ सकता है enter
लाने के लिए कई बार >
एक के बाद शीघ्र वापस factoryreset
आदेश। डॉकटर कंटेनर से बाहर न निकलें।
फैक्टरी रीसेट और नोड 1 से बाहर निकलें:
> factoryreset > > exit root@c0f3912a74ff:/#
सभी उपलब्ध सीएलआई कमांड का पता लगाने के लिए OpenThread CLI संदर्भ देखें।
पिछले अभ्यास में, आपने दो सिम्युलेटेड डिवाइस और सत्यापित कनेक्टिविटी के साथ थ्रेड नेटवर्क स्थापित किया है। हालाँकि, यह केवल डिवाइसों के बीच असंबद्ध IPv6 लिंक-स्थानीय ट्रैफ़िक को अनुमति देता है। वैश्विक IPv6 ट्रैफ़िक (और थ्रेड बॉर्डर राउटर के माध्यम से इंटरनेट) को रूट करने के लिए, नोड्स को प्रमाणित किया जाना चाहिए।
प्रमाणित करने के लिए, एक उपकरण को आयुक्त के रूप में कार्य करना चाहिए। आयुक्त वर्तमान में नए थ्रेड डिवाइसेस के लिए ऑथेंटिकेशन सर्वर और नेटवर्क से जुड़ने के लिए आवश्यक नेटवर्क क्रेडेंशियल्स प्रदान करने के लिए ऑथराइज़र है।
इस अभ्यास में, हम पहले की तरह ही दो-नोड टोपोलॉजी का उपयोग करेंगे। प्रमाणीकरण के लिए, थ्रेड लीडर आयुक्त के रूप में कार्य करेगा, थ्रेड राउटर एक योजक के रूप में।
डाक में काम करनेवाला मज़दूर
शेष अभ्यास में प्रत्येक नोड (टर्मिनल विंडो) के लिए, सुनिश्चित करें कि आप डॉकटर कंटेनर को ओपनथ्रेड बिल्ड के साथ चला रहे हैं। यदि पिछले अभ्यास से जारी है, तो आपके पास पहले से ही खुले एक ही डॉकर कंटेनर के भीतर दो bash
संकेत होने चाहिए। यदि नहीं, तो Docker समस्या निवारण चरण देखें, या बस थ्रेड नेटवर्क व्यायाम को फिर से बनाएं ।
1. एक नेटवर्क बनाएँ
नोड 1 में, CLI प्रक्रिया स्पॉन करें:
root@c0f3912a74ff:/# cd ~/src/openthread root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 1
यदि आप नहीं देखते हैं
>
इस कमांड को चलाने के बाद तुरंत दबाएँ
enter
।
नया ऑपरेशनल डेटासेट बनाएं, इसे सक्रिय करें और थ्रेड प्रारंभ करें:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 12 Channel Mask: 07fff800 Ext PAN ID: e68d05794bf13052 Mesh Local Prefix: fd7d:ddf7:877b:8756/64 Master Key: a77fe1d03b0e8028a4e13213de38080e Network Name: OpenThread-8f37 PAN ID: 0x8f37 PSKc: f9debbc1532487984b17f92cd55b21fc Security Policy: 0, onrcb Done
इस डेटासेट को सक्रिय के रूप में प्रतिबद्ध करें:
> dataset commit active Done
IPv6 इंटरफ़ेस लाओ:
> ifconfig up Done
थ्रेड प्रोटोकॉल ऑपरेशन शुरू करें:
> thread start Done
कुछ सेकंड प्रतीक्षा करें और सत्यापित करें कि डिवाइस थ्रेड लीडर बन गया है:
> state leader Done
2. आयुक्त की भूमिका शुरू करें
नोड 1 पर अभी भी, आयुक्त की भूमिका शुरू करें:
> commissioner start Done
नेटवर्क पर कमीशन करने के लिए J01NME
Joiner क्रेडेंशियल के साथ किसी भी योजक ( *
वाइल्डकार्ड का उपयोग करके) को अनुमति दें। एक योजक एक उपकरण है जो एक मानव प्रशासक द्वारा एक कमीशन थ्रेड नेटवर्क में जोड़ा जाता है।
> commissioner joiner add * J01NME Done
3. जॉइनर की भूमिका शुरू करें
एक दूसरे टर्मिनल विंडो में, डॉकर कंटेनर में, एक नया सीएलआई प्रक्रिया स्पॉन करें। यह नोड 2 है।
root@c0f3912a74ff:/# cd ~/src/openthread root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 2
नोड 2 पर, J01NME
जॉइनर क्रेडेंशियल का उपयोग करके जॉइनर भूमिका को सक्षम करें।
... पुष्टि के लिए कुछ सेकंड प्रतीक्षा करें ...
Join success
एक योजक के रूप में, डिवाइस (नोड 2) ने आयुक्त (नोड 1) के साथ सफलतापूर्वक प्रमाणित किया और थ्रेड नेटवर्क क्रेडेंशियल्स प्राप्त किया।
अब जब नोड 2 प्रमाणित है, तो थ्रेड प्रारंभ करें:
> thread start Done
4. नेटवर्क प्रमाणीकरण सत्यापित करें
यह सत्यापित करने के लिए कि यह अब नेटवर्क में शामिल हो गया है, यह सत्यापित करने के लिए, नोड 2 पर state
जाँच करें। दो मिनट के भीतर, child
से router
तक नोड 2 संक्रमण:
> state child Done ... > state router Done
5. कॉन्फ़िगरेशन रीसेट करें
अगले अभ्यास की तैयारी के लिए, कॉन्फ़िगरेशन रीसेट करें। प्रत्येक नोड पर, थ्रेड रोकें, फ़ैक्टरी रीसेट करें, और उत्सर्जित थ्रेड डिवाइस से बाहर निकलें:
> thread stop Done > factoryreset > > exit root@c0f3912a74ff:/#
आप प्रेस करना पड़ सकता है enter
लाने के लिए कई बार >
एक के बाद शीघ्र वापस factoryreset
आदेश।
इस अभ्यास के लिए, हम एक सीएलआई उदाहरण (एक एकल एम्बेडेड थ्रेड डिवाइस) और एक रेडियो सह-प्रोसेसर (आरसीपी) उदाहरण का अनुकरण करने जा रहे हैं।
ot-daemon
OpenThread Posix ऐप का एक मोड है, जो इनपुट और आउटपुट के रूप में एक UNIX सॉकेट का उपयोग करता है, ताकि OpenThread कोर सेवा के रूप में चल सके। एक ग्राहक प्रोटोकॉल के रूप में OpenThread CLI का उपयोग करके सॉकेट से कनेक्ट करके इस सेवा के साथ संवाद कर सकता है।
ot-ctl
, RCP को प्रबंधित और कॉन्फ़िगर करने के लिए ot-daemon
द्वारा प्रदान किया गया CLI है। इसका उपयोग करके, हम RCP को थ्रेड डिवाइस द्वारा बनाए गए नेटवर्क से जोड़ेंगे।
डाक में काम करनेवाला मज़दूर
इस अभ्यास में प्रत्येक नोड (टर्मिनल विंडो) के लिए, सुनिश्चित करें कि आप डॉकटर कंटेनर को ओपनथ्रेड बिल्ड के साथ चला रहे हैं। यदि पिछले अभ्यास से जारी है, तो आपके पास पहले से खुले एक ही डॉकर कंटेनर के भीतर दो bash
संकेत होने चाहिए। यदि नहीं, तो डॉकर समस्या निवारण कदम देखें।
ओट-डेमन का उपयोग करें
यह अभ्यास निम्नलिखित के लिए तीन टर्मिनल विंडो का उपयोग करेगा:
- नकली धागा डिवाइस का सीएलआई उदाहरण (नोड 1)
-
ot-daemon
प्रक्रिया -
ot-ctl
सीएलआई उदाहरण
1. प्रारंभ करें नोड 1
पहले टर्मिनल विंडो में, अपने उत्सर्जित थ्रेड डिवाइस के लिए CLI प्रक्रिया स्पॉन करें:
root@c0f3912a74ff:/# cd ~/src/openthread root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 1
यदि आप नहीं देखते हैं
>
इस कमांड को चलाने के बाद तुरंत दबाएँ
enter
।
नया ऑपरेशनल डेटासेट बनाएं, इसे सक्रिय करें और थ्रेड प्रारंभ करें:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 13 Channel Mask: 07fff800 Ext PAN ID: 97d584bcd493b824 Mesh Local Prefix: fd55:cf34:dea5:7994/64 Master Key: ba6e886c7af50598df1115fa07658a83 Network Name: OpenThread-34e4 PAN ID: 0x34e4 PSKc: 38d6fd32c866927a4dfcc06d79ae1192 Security Policy: 0, onrcb Done
इस डेटासेट को सक्रिय के रूप में प्रतिबद्ध करें:
> dataset commit active Done
IPv6 इंटरफ़ेस लाओ:
> ifconfig up Done
थ्रेड प्रोटोकॉल ऑपरेशन शुरू करें:
> thread start Done
नोड 1 के थ्रेड इंटरफ़ेस को निर्दिष्ट IPv6 पते देखें:
> ipaddr fd55:cf34:dea5:7994:0:ff:fe00:fc00 fd55:cf34:dea5:7994:0:ff:fe00:d000 fd55:cf34:dea5:7994:460:872c:e807:c4ab fe80:0:0:0:9cd8:aab6:482f:4cdc Done >
जैसा कि Simulate a Thread network स्टेप में बताया गया है, एक एड्रेस लिंक-लोकल ( fe80
) है और तीन मेश-लोकल ( fd
) हैं। ईआईडी एक जाल-स्थानीय पता है जिसमें ff:fe00
शामिल नहीं है ff:fe00
पते में ff:fe00
। इस नमूना आउटपुट में, ईआईडी fd55:cf34:dea5:7994:460:872c:e807:c4ab
।
अपने ipaddr
आउटपुट से विशिष्ट ईआईडी की पहचान करें, जिसका उपयोग नोड के साथ संवाद करने के लिए किया जाएगा।
2. ओट-डेमन शुरू करो
दूसरे टर्मिनल विंडो में, एक tun
डिवाइस नोड बनाएं और रीड / राइट परमिशन सेट करें:
root@c0f3912a74ff:/# mkdir -p /dev/net && mknod /dev/net/tun c 10 200 root@c0f3912a74ff:/# chmod 600 /dev/net/tun
इस डिवाइस का उपयोग पैकेट ट्रांसमिशन और वर्चुअल डिवाइस में प्राप्ति के लिए किया जाता है। यदि डिवाइस पहले से ही बनाया गया है तो आपको एक त्रुटि मिल सकती है - यह सामान्य है और इसे अनदेखा किया जा सकता है।
openthread
डायरेक्टरी में नेविगेट करें, और आरसीपी नोड के लिए ot-daemon
शुरू करें, जिसे हम नोड 2 कहेंगे। -v
वर्बोज फ्लैग का उपयोग करें ताकि आप लॉग आउटपुट देख सकें और पुष्टि कर सकें कि यह चल रहा है:
root@c0f3912a74ff:/# cd ~/src/openthread root@c0f3912a74ff:/# ./output/posix/bin/ot-daemon -v \ 'spinel+hdlc+forkpty://output/simulation/bin/ot-rcp?forkpty-arg=2'
सफल होने पर, वर्बोज़ मोड में ot-daemon
निम्न के समान आउटपुट उत्पन्न करता है:
ot-daemon[228024]: Running OPENTHREAD/20191113-00831-gfb399104; POSIX; Jun 7 2020 18:05:15 ot-daemon[228024]: Thread version: 2 ot-daemon[228024]: RCP version: OPENTHREAD/20191113-00831-gfb399104; SIMULATION; Jun 7 2020 18:06:08
3. नेटवर्क से जुड़ने के लिए ot-ctl का उपयोग करें
हमने अभी तक किसी भी थ्रेड नेटवर्क को नोड 2 ( ot-daemon
आरसीपी) कमीशन नहीं किया है। यह वह जगह है जहाँ ot-ctl
आता है। ot-ctl
OpenThread CLI ऐप के समान CLI का उपयोग करता है। इसलिए, आप अन्य सिम्युलेटेड थ्रेड डिवाइसों की तरह ही ot-daemon
नोड्स को नियंत्रित कर सकते हैं।
तीसरा टर्मिनल विंडो खोलें और मौजूदा कंटेनर को निष्पादित करें:
$ docker exec -it codelab_otsim_ctnr bash
कंटेनर में एक बार, ot-ctl
शुरू करें:
root@c0f3912a74ff:/# cd ~/src/openthread root@c0f3912a74ff:/# ./output/posix/bin/ot-ctl >
नोड 2 (आरसीपी नोड) की state
की जांच करें जिसे आपने ot-daemon
साथ शुरू किया था:
> state disabled Done
विशिष्ट योजक में शामिल होने को प्रतिबंधित करने के लिए, नोड 2 का eui64
प्राप्त करें:
> eui64 18b4300000000001 Done
नोड 1 पर, कमिश्नर शुरू करें और केवल उस eui64 में शामिल होने को प्रतिबंधित करें:
> commissioner start Done > commissioner joiner add 18b4300000000001 J01NME Doneहै
नोड 2 पर, नेटवर्क इंटरफ़ेस लाएँ और नेटवर्क से जुड़ें:
01cbeaeaab0... पुष्टि के लिए कुछ सेकंड प्रतीक्षा करें ...
Join success
एक योजक के रूप में, आरसीपी (नोड 2) ने सफलतापूर्वक आयुक्त (नोड 1) के साथ प्रमाणित किया और थ्रेड नेटवर्क क्रेडेंशियल्स प्राप्त किया।
अब Node 2 को थ्रेड नेटवर्क में शामिल करें:
> thread start Done
4. नेटवर्क प्रमाणीकरण सत्यापित करें
यह सत्यापित करने के लिए कि यह अब नेटवर्क में शामिल हो गया है, यह सत्यापित करने के लिए, नोड 2 पर state
जाँच करें। दो मिनट के भीतर, child
से router
तक नोड 2 संक्रमण:
> state child Done ... > state router Done
5. कनेक्टिविटी को मान्य करें
छोड़ो ot-ctl
Ctrl + D का उपयोग करके और अपने होस्ट मशीन के कमांड लाइन, पिंग पर नोड 1, के साथ अपने ईआईडी का उपयोग कर ping6
आदेश। यदि ot-daemon
आरसीपी इंस्टेंस सफलतापूर्वक थ्रेड नेटवर्क के साथ जुड़ने और संचार करने में सफल होता है, तो पिंग सफल होता है:
root@c0f3912a74ff:/# ping6 -c 4 fd55:cf34:dea5:7994:460:872c:e807:c4ab PING fd55:cf34:dea5:7994:460:872c:e807:c4ab (fd55:cf34:dea5:7994:460:872c:e807:c4ab): 56 data bytes 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=0 ttl=64 time=4.568 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=1 ttl=64 time=6.396 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=2 ttl=64 time=7.594 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=3 ttl=64 time=5.461 ms --- fd55:cf34:dea5:7994:460:872c:e807:c4ab ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 4.568/6.005/7.594/1.122 ms
यदि आपने डॉकटर कंटेनर को बाहर निकाल दिया है
bash
संकेत देता है , आपको यह जांचने की आवश्यकता हो सकती है कि यह चल रहा है और आवश्यकतानुसार पुन: प्रारंभ / पुनः दर्ज करें।
यह दिखाने के लिए कि कौन से डॉकटर कंटेनर चल रहे हैं:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 505fc57ffc72 codelab_otsim "bash" 10 minutes ago Up 10 minutes codelab_otsim_ctnr
सभी डॉकटर कंटेनर दिखाने के लिए (दोनों चल रहे हैं और बंद हो गए):
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 505fc57ffc72 codelab_otsim "bash" 10 minutes ago Up 10 minutes codelab_otsim_ctnr
यदि आपको कंटेनर codelab_otsim_ctnr
या तो codelab_otsim_ctnr
docker ps
कमांड के आउटपुट में नहीं दिखता है, तो इसे फिर से चलाएँ:
$ docker run --name codelab_otsim_ctnr -it --rm \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ --cap-add=net_admin openthread/codelab_otsim bash
तो कंटेनर बंद कर दिया जाता है (में सूचीबद्ध docker ps -a
नहीं बल्कि docker ps
), उसे पुन: प्रारंभ:
अगर डॉकटर कंटेनर पहले से चल रहा है ( docker ps
में सूचीबद्ध है), प्रत्येक टर्मिनल में कंटेनर को फिर से कनेक्ट करें:
$ docker exec -it codelab_otsim_ctnr bash
आपने सफलतापूर्वक OpenThread का उपयोग करके अपने पहले थ्रेड नेटवर्क का अनुकरण किया है। बहुत बढ़िया!
इस कोडलैब में आपने सीखा कि कैसे:
- OpenThread सिमुलेशन डॉकर कंटेनर को शुरू और प्रबंधित करें
- एक थ्रेड नेटवर्क का अनुकरण करें
- थ्रेड नोड्स को प्रमाणित करें
- OpenThread Daemon के साथ एक थ्रेड नेटवर्क प्रबंधित करें
थ्रेड और ओपनथ्रेड के बारे में अधिक जानने के लिए, इन संदर्भों को देखें:
- थ्रेड प्राइमर openthread.io पर
- धागा विशिष्टता
- ओपनथ्रेड गीथहब भंडार
- OpenThread CLI संदर्भ
- अतिरिक्त OpenThread डॉकर समर्थन
या, डॉकटर कंटेनर में ओपनथ्रेड बॉर्डर राउटर का उपयोग करने का प्रयास करें!