থ্রেড বর্ডার রাউটার - IPv6 মাল্টিকাস্ট,থ্রেড বর্ডার রাউটার - IPv6 মাল্টিকাস্ট

1. ভূমিকা

608c4c35050eb280.png

থ্রেড কি?

থ্রেড হল একটি আইপি-ভিত্তিক লো-পাওয়ার ওয়্যারলেস মেশ নেটওয়ার্কিং প্রোটোকল যা সুরক্ষিত ডিভাইস-টু-ডিভাইস এবং ডিভাইস-টু-ক্লাউড যোগাযোগ সক্ষম করে। থ্রেড নেটওয়ার্ক একক-পয়েন্ট ব্যর্থতা এড়াতে টপোলজি পরিবর্তনের সাথে মানিয়ে নিতে পারে।

OpenThread কি?

Google দ্বারা প্রকাশিত OpenThread হল Thread®-এর একটি ওপেন-সোর্স বাস্তবায়ন।

একটি OpenThread বর্ডার রাউটার কি?

Google দ্বারা প্রকাশিত OpenThread Border Router (OTBR) হল থ্রেড বর্ডার রাউটারের একটি ওপেন-সোর্স বাস্তবায়ন।

IPv6 মাল্টিকাস্ট

থ্রেড একটি ভিন্নধর্মী নেটওয়ার্ক (থ্রেড এবং ওয়াই-ফাই/ইথারনেট নেটওয়ার্ক সেগমেন্ট) জুড়ে মাল্টিকাস্টকে সমর্থন করার জন্য বৈশিষ্ট্যগুলির একটি সিরিজ সংজ্ঞায়িত করে যাতে মাল্টিকাস্ট অ্যাড্রেসের জন্য এলাকা স্থানীয়ের চেয়ে বড় সুযোগ রয়েছে।

একটি থ্রেড বর্ডার রাউটার তার ব্যাকবোন রাউটার (BBR) ডেটাসেট নিবন্ধন করে এবং নির্বাচিত BBR পরিষেবা হল প্রাইমারি ব্যাকবোন রাউটার (PBBR), যা মাল্টিকাস্ট ইনবাউন্ডিং/আউটবাউন্ডিং ফরোয়ার্ডের জন্য দায়ী।

একটি থ্রেড ডিভাইস PBBR-এ মাল্টিকাস্ট ঠিকানা নিবন্ধন করার জন্য একটি CoAP বার্তা পাঠায় (মাল্টিকাস্ট লিসেনার রেজিস্ট্রেশন, সংক্ষেপে এমএলআর) যদি ঠিকানাটি স্থানীয় এলাকা থেকে বড় হয়। PBBR তার বাহ্যিক ইন্টারফেসে MLDv2 ব্যবহার করে বৃহত্তর IPv6 LAN/WAN-এর সাথে যোগাযোগ করতে IPv6 মাল্টিকাস্ট গোষ্ঠীগুলি সম্পর্কে যা শুনতে প্রয়োজন, তার স্থানীয় থ্রেড নেটওয়ার্কের পক্ষে। এবং PBBR শুধুমাত্র থ্রেড নেটওয়ার্কে মাল্টিকাস্ট ট্র্যাফিক ফরোয়ার্ড করে যদি গন্তব্যটি কমপক্ষে একটি থ্রেড ডিভাইস দ্বারা সাবস্ক্রাইব করা হয়।

থ্রেড মিনিমাল এন্ড ডিভাইসের জন্য, তারা মাল্টিকাস্ট ঠিকানা একত্রিত করতে এবং তাদের পক্ষে এমএলআর করতে তাদের পিতামাতার উপর নির্ভর করতে পারে, অথবা যদি তাদের অভিভাবক থ্রেড 1.1 এর হয় তবে নিজেদের নিবন্ধন করতে পারে।

আরো বিস্তারিত জানার জন্য, অনুগ্রহ করে থ্রেড স্পেসিফিকেশন পড়ুন।

যা আপনি নির্মাণ করবেন

এই কোডল্যাবে, আপনি একটি থ্রেড বর্ডার রাউটার এবং দুটি থ্রেড ডিভাইস সেট আপ করতে যাচ্ছেন, তারপর থ্রেড ডিভাইস এবং ওয়াই-ফাই ডিভাইসে মাল্টিকাস্ট বৈশিষ্ট্যগুলি সক্ষম এবং যাচাই করুন৷

যা শিখবেন

  • IPv6 মাল্টিকাস্টের জন্য সমর্থন সহ nRF52840 ফার্মওয়্যার কীভাবে তৈরি করবেন।
  • কিভাবে থ্রেড ডিভাইসে IPv6 মাল্টিকাস্ট ঠিকানায় সদস্যতা নিতে হয়।

আপনি কি প্রয়োজন হবে

  • একটি লিনাক্স ওয়ার্কস্টেশন, একটি থ্রেড আরসিপি তৈরি এবং ফ্ল্যাশ করার জন্য, ওপেন থ্রেড সিএলআই, এবং IPv6 মাল্টিকাস্ট পরীক্ষা করার জন্য।
  • থ্রেড বর্ডার রাউটারের জন্য একটি রাস্পবেরি পাই।
  • 2 নর্ডিক সেমিকন্ডাক্টর nRF52840 USB Dongles (একটি RCP এর জন্য এবং দুটি থ্রেড এন্ড ডিভাইসের জন্য)।

2. OTBR সেটআপ করুন

একটি OTBR সেট আপ করার দ্রুততম উপায় হল OTBR সেটআপ গাইড অনুসরণ করা৷

OTBR সেটআপ সম্পূর্ণ হওয়ার পরে, OTBR যে সেকেন্ডের মধ্যে প্রাথমিক ব্যাকবোন রাউটারে পরিণত হয়েছে তা যাচাই করতে ot-ctl ব্যবহার করুন।

> bbr state
Primary
Done
> bbr
BBR Primary:
server16: 0xF800
seqno:    21
delay:    5 secs
timeout:  3600 secs
Done

3. তৈরি এবং ফ্ল্যাশ থ্রেড ডিভাইস

মাল্টিকাস্ট দিয়ে থ্রেড CLI অ্যাপ্লিকেশন তৈরি করুন এবং দুটি nRF52840 DK বোর্ড ফ্ল্যাশ করুন।

nRF52840 DK ফার্মওয়্যার তৈরি করুন

প্রকল্পটি ক্লোন করতে এবং nRF52840 ফার্মওয়্যার তৈরি করতে নির্দেশাবলী অনুসরণ করুন।

$ cd ~/src/ot-nrf528xx
$ rm -rf build
$ script/build nrf52840 USB_trans -DOT_MLR=ON

লেখা হিসাবে nRF52840 বোর্ড এবং OpenThread কোডল্যাব সহ একটি থ্রেড নেটওয়ার্ক তৈরি করুন । শেষ ডিভাইসটি CLI চিত্রের সাথে ফ্ল্যাশ হওয়ার পরে, থ্রেড নেটওয়ার্কে থ্রেড ডিভাইস যোগ করতে থ্রেড নেটওয়ার্কে দ্বিতীয় নোডটিতে যোগ দিন । দ্বিতীয় থ্রেড শেষ ডিভাইসের জন্য পুনরাবৃত্তি করুন.

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-এ সদস্যতা নিন:

ল্যাপটপে একটি মাল্টিকাস্ট ঠিকানায় সদস্যতা নিতে আমাদের একটি পাইথন স্ক্রিপ্ট 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.')

Wi-Fi নেটওয়ার্ক ইন্টারফেসে ff05::abcd সাবস্ক্রাইব করতে subscribe6.py চালান (যেমন wlan0):

$ sudo python3 subscribe6.py wlan0 ff05::abcd
Subscribed ff05::abcd on interface wlan0.
Press ENTER to quit.

মাল্টিকাস্ট সাবস্ক্রিপশন সহ চূড়ান্ত নেটওয়ার্ক টপোলজি নীচে দেখানো হয়েছে:

b118448c98b2d583.png

এখন যেহেতু আমরা থ্রেড নেটওয়ার্কে nRF52840 এন্ড ডিভাইস 1 এবং Wi-Fi নেটওয়ার্কের ল্যাপটপ উভয়ের IPv6 মাল্টিকাস্ট ঠিকানা সাবস্ক্রাইব করেছি, আমরা নিম্নলিখিত বিভাগে দ্বি-দিকনির্দেশক IPv6 মাল্টিকাস্ট অ্যাক্সেসযোগ্যতা যাচাই করতে যাচ্ছি।

5. ইনবাউন্ড IPv6 মাল্টিকাস্ট যাচাই করুন

এখন, আমাদের Wi-Fi নেটওয়ার্ক থেকে IPv6 মাল্টিকাস্ট ঠিকানা ff05::abcd ব্যবহার করে থ্রেড নেটওয়ার্কে nRF52840 এন্ড ডিভাইস 1 এবং ল্যাপটপ উভয়েই পৌঁছাতে সক্ষম হওয়া উচিত।

Wi-Fi ইন্টারফেসের মাধ্যমে 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 পিং অনুরোধ মাল্টিকাস্ট প্যাকেট ফরোয়ার্ড করতে পারে।

6. আউটবাউন্ড IPv6 মাল্টিকাস্ট যাচাই করুন

nRF52840 এন্ড ডিভাইস 2-এ পিং 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 এন্ড ডিভাইস 2 nRF52840 এন্ড ডিভাইস 1 এবং ল্যাপটপ উভয় থেকে পিং উত্তর পেতে পারে। এটি দেখায় যে OTBR থ্রেড নেটওয়ার্ক থেকে IPv6 পিং রিপ্লাই মাল্টিকাস্ট প্যাকেজগুলিকে ওয়াই-ফাই নেটওয়ার্কে ফরোয়ার্ড করতে পারে।

7. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে একটি থ্রেড বর্ডার রাউটার সেট আপ করেছেন এবং দ্বি-মুখী IPv6 মাল্টিকাস্ট যাচাই করেছেন!

OpenThread সম্পর্কে আরও জানতে, openthread.io দেখুন।

রেফারেন্স ডক্স: