1. परिचय
थ्रेड क्या है?
Thread, आईपी पर आधारित कम-पावर वाला वायरलेस मेश नेटवर्किंग प्रोटोकॉल है. इससे डिवाइस-टू-डिवाइस और डिवाइस-टू-क्लाउड कम्यूनिकेशन को सुरक्षित तरीके से किया जा सकता है. थ्रेड नेटवर्क, टोपोलॉजी में होने वाले बदलावों के हिसाब से ढल सकते हैं, ताकि किसी एक बिंदु पर होने वाली गड़बड़ी से बचा जा सके.
OpenThread क्या है?
Google की ओर से रिलीज़ किया गया OpenThread, Thread® का ओपन-सोर्स वर्शन है.
OpenThread बॉर्डर राऊटर क्या है?
Google ने OpenThread Border Router (OTBR) रिलीज़ किया है. यह Thread Border Router का ओपन-सोर्स वर्शन है.
IPv6 मल्टीकास्ट
Thread, अलग-अलग तरह के नेटवर्क (Thread और वाई-फ़ाई/इथरनेट नेटवर्क सेगमेंट) पर मल्टीकास्ट की सुविधा देने के लिए, कई सुविधाओं की जानकारी देता है. ये सुविधाएं, मल्टीकास्ट पतों के लिए हैं, जिनका दायरा रीयलम लोकल से ज़्यादा होता है.
थ्रेड बॉर्डर राउटर, अपना बैकबोन राउटर (बीबीआर) डेटासेट रजिस्टर करता है. चुनी गई बीबीआर सेवा, प्राइमरी बैकबोन राउटर (पीबीबीआर) होती है. यह मल्टीकास्ट इनबाउंड/आउटबाउंड फ़ॉरवर्ड के लिए ज़िम्मेदार होता है.
अगर पता, रीएल्म लोकल से बड़ा है, तो Thread डिवाइस, मल्टीकास्ट पते को PBBR (मल्टीकास्ट लिसनर रजिस्ट्रेशन, छोटा नाम MLR) में रजिस्टर करने के लिए CoAP मैसेज भेजता है. PBBR, अपने बाहरी इंटरफ़ेस पर MLDv2 का इस्तेमाल करता है, ताकि वह अपने लोकल थ्रेड नेटवर्क की ओर से, बड़े IPv6 LAN/WAN से उन IPv6 मल्टीकास्ट ग्रुप के बारे में बातचीत कर सके जिन्हें उसे सुनना है. साथ ही, PBBR सिर्फ़ तब थ्रेड नेटवर्क में मल्टीकास्ट ट्रैफ़िक फ़ॉरवर्ड करता है, जब डेस्टिनेशन की सदस्यता कम से कम एक थ्रेड डिवाइस ने ली हो.
Thread के कम से कम एंड डिवाइसों के लिए, मल्टीकास्ट पता इकट्ठा करने और उनकी ओर से एमएलआर करने के लिए, वे अपने पैरंट पर निर्भर हो सकते हैं. इसके अलावा, अगर उनके पैरंट का डिवाइस Thread 1.1 वर्शन पर है, तो वे खुद को रजिस्टर कर सकते हैं.
ज़्यादा जानकारी के लिए, कृपया थ्रेड की स्पेसिफ़िकेशन देखें.
आपको क्या बनाना है
इस कोडलैब में, आपको एक Thread बॉर्डर राऊटर और दो Thread डिवाइस सेट अप करने हैं. इसके बाद, Thread डिवाइसों और वाई-फ़ाई डिवाइसों पर मल्टीकास्ट की सुविधाएं चालू करनी हैं और उनकी पुष्टि करनी है.
आपको क्या सीखने को मिलेगा
- IPv6 मल्टीकास्ट के साथ काम करने वाला nRF52840 फ़र्मवेयर बनाने का तरीका.
- Thread डिवाइसों पर आईपीवी6 मल्टीकास्ट पतों की सदस्यता लेने का तरीका.
आपको इन चीज़ों की ज़रूरत होगी
- Thread आरसीपी, OpenThread सीएलआई को बनाने और फ़्लैश करने के लिए, Linux वर्कस्टेशन. साथ ही, IPv6 मल्टीकास्ट की जांच करने के लिए भी.
- Thread बॉर्डर राऊटर के लिए Raspberry Pi.
- दो Nordic Semiconductor nRF52840 यूएसबी डोंगल (आरसीपी के लिए एक और Thread एंड डिवाइसों के लिए दो).
2. ओटीबीआर सेटअप करना
OTBR सेटअप करने की गाइड में दिया गया तरीका अपनाकर, OTBR को सबसे तेज़ी से सेट अप किया जा सकता है.
ओटीबीआर का सेटअप पूरा होने के बाद, ot-ctl
का इस्तेमाल करके पुष्टि करें कि ओटीबीआर कुछ ही सेकंड में प्राइमरी बैकबोन राऊटर बन गया है.
> bbr state Primary Done > bbr BBR Primary: server16: 0xF800 seqno: 21 delay: 5 secs timeout: 3600 secs Done
3. Thread डिवाइसों को बिल्ड और फ़्लैश करना
मल्टीकास्ट की मदद से Thread सीएलआई ऐप्लिकेशन बनाएं और दो nRF52840 DK बोर्ड फ़्लैश करें.
nRF52840 DK फ़र्मवेयर बनाना
प्रोजेक्ट को क्लोन करने और nRF52840 फ़र्मवेयर बनाने के लिए, निर्देशों का पालन करें.
$ cd ~/src/ot-nrf528xx $ rm -rf build $ script/build nrf52840 USB_trans -DOT_MLR=ON
nRF52840 बोर्ड और OpenThread कोडलैब की मदद से Thread नेटवर्क बनाना लेख में बताए गए तरीके से जारी रखें. सीएलआई इमेज से एंड डिवाइस को फ़्लैश करने के बाद, Thread डिवाइस को Thread नेटवर्क में जोड़ने के लिए, Thread नेटवर्क में दूसरे नोड को जोड़ें लेख पढ़ें. दूसरे Thread एंड डिवाइस के लिए भी यह तरीका दोहराएं.
4. IPv6 मल्टिकास्ट पते की सदस्यता लेना
nRF52840 वाले एंड डिवाइस 1 पर ff05::abcd की सदस्यता लें:
> ipmaddr add ff05::abcd Done
पुष्टि करें कि ff05::abcd
की सदस्यता ले ली गई है:
> ipmaddr ff05:0:0:0:0:0:0:abcd <--- ff05::abcd subscribed ff33:40:fdde:ad00:beef:0:0:1 ff32:40:fdde:ad00:beef:0:0:1 ff02:0:0:0:0:0:0:2 ff03:0:0:0:0:0:0:2 ff02:0:0:0:0:0:0:1 ff03:0:0:0:0:0:0:1 ff03:0:0:0:0:0:0:fc Done
लैपटॉप पर ff05::abcd की सदस्यता लेने के लिए:
लैपटॉप पर मल्टीकास्ट पते की सदस्यता लेने के लिए, हमें Python स्क्रिप्ट subscribe6.py
की ज़रूरत है.
नीचे दिया गया कोड कॉपी करें और इसे subscribe6.py
के तौर पर सेव करें:
import ctypes
import ctypes.util
import socket
import struct
import sys
libc = ctypes.CDLL(ctypes.util.find_library('c'))
ifname, group = sys.argv[1:]
addrinfo = socket.getaddrinfo(group, None)[0]
assert addrinfo[0] == socket.AF_INET6
s = socket.socket(addrinfo[0], socket.SOCK_DGRAM)
group_bin = socket.inet_pton(addrinfo[0], addrinfo[4][0])
interface_index = libc.if_nametoindex(ifname.encode('ascii'))
mreq = group_bin + struct.pack('@I', interface_index)
s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq)
print("Subscribed %s on interface %s." % (group, ifname))
input('Press ENTER to quit.')
वाई-फ़ाई नेटवर्क इंटरफ़ेस (उदाहरण के लिए, wlan0) पर ff05::abcd
की सदस्यता लेने के लिए, subscribe6.py
चलाएं:
$ sudo python3 subscribe6.py wlan0 ff05::abcd Subscribed ff05::abcd on interface wlan0. Press ENTER to quit.
मल्टीकास्ट सदस्यताओं वाली फ़ाइनल नेटवर्क टोपोलॉजी यहां दिखाई गई है:
अब हमने Thread नेटवर्क में nRF52840 वाले एंड डिवाइस 1 और वाई-फ़ाई नेटवर्क में लैपटॉप, दोनों पर आईपीवी6 मल्टीकास्ट पते की सदस्यता ली है. अब हम नीचे दिए गए सेक्शन में, आईपीवी6 मल्टीकास्ट के दोनों दिशाओं में रीच की पुष्टि करेंगे.
5. इनबाउंड आईपीवी6 मल्टीकास्ट की पुष्टि करना
अब, वाई-फ़ाई नेटवर्क से IPv6 मल्टीकास्ट पते ff05::abcd
का इस्तेमाल करके, Thread नेटवर्क में मौजूद nRF52840 एंड डिवाइस 1 और लैपटॉप, दोनों तक पहुंचा जा सकता है.
वाई-फ़ाई इंटरफ़ेस की मदद से, OTBR पर ff05::abcd को पिंग करें:
$ ping -6 -b -t 5 -I wlan0 ff05::abcd PING ff05::abcd(ff05::abcd) from 2401:fa00:41:801:83c1:a67:ae22:5346 wlan0: 56 data bytes 64 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=1 ttl=64 time=57.4 ms 64 bytes from 2401:fa00:41:801:8c09:1765:4ba8:48e8: icmp_seq=1 ttl=64 time=84.9 ms (DUP!) 64 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=2 ttl=64 time=54.8 ms 64 bytes from 2401:fa00:41:801:8c09:1765:4ba8:48e8: icmp_seq=2 ttl=64 time=319 ms (DUP!) 64 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=3 ttl=64 time=57.5 ms 64 bytes from 2401:fa00:41:801:8c09:1765:4ba8:48e8: icmp_seq=3 ttl=64 time=239 ms (DUP!) # If using MacOS, use this command. The interface is typically not "wlan0" for Mac. $ ping6 -h 5 -I wlan0 ff05::abcd
हम देख सकते हैं कि OTBR को nRF52840 एंड डिवाइस 1 और लैपटॉप, दोनों से दो पिंग रिस्पॉन्स मिल सकते हैं, क्योंकि दोनों ने ff05::abcd
की सदस्यता ली है. इससे पता चलता है कि OTBR, IPv6 पिंग अनुरोध के मल्टीकास्ट पैकेट को वाई-फ़ाई नेटवर्क से Thread नेटवर्क पर फ़ॉरवर्ड कर सकता है.
6. आउटबाउंड आईपीवी6 मल्टीकास्ट की पुष्टि करना
nRF52840 वाले दूसरे एंड डिवाइस पर ff05::abcd को पिंग करें:
> ping ff05::abcd 100 10 1 108 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=12 hlim=64 time=297ms 108 bytes from 2401:fa00:41:801:64cb:6305:7c3a:d704: icmp_seq=12 hlim=63 time=432ms 108 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=13 hlim=64 time=193ms 108 bytes from 2401:fa00:41:801:64cb:6305:7c3a:d704: icmp_seq=13 hlim=63 time=306ms 108 bytes from fdb5:8d36:6af9:7669:e43b:8e1b:6f2a:b8fa: icmp_seq=14 hlim=64 time=230ms 108 bytes from 2401:fa00:41:801:64cb:6305:7c3a:d704: icmp_seq=14 hlim=63 time=279ms
nRF52840 वाले दूसरे आखिरी डिवाइस को, nRF52840 वाले पहले आखिरी डिवाइस और लैपटॉप, दोनों से पिंग रिप्लाई मिल सकते हैं. इससे पता चलता है कि OTBR, Thread नेटवर्क से वाई-फ़ाई नेटवर्क पर आईपीवी6 पिंग रिप्लाई मल्टीकास्ट पैकेज फ़ॉरवर्ड कर सकता है.
7. बधाई हो
बधाई हो, आपने Thread बॉर्डर राऊटर सेट अप कर लिया है और दोतरफ़ा IPv6 मल्टीकास्ट की पुष्टि कर ली है!
OpenThread के बारे में ज़्यादा जानने के लिए, openthread.io पर जाएं.
रेफ़रंस दस्तावेज़: