থ্রেড বর্ডার রাউটার - দ্বিমুখী IPv6 সংযোগ এবং DNS-ভিত্তিক পরিষেবা আবিষ্কার

1. ভূমিকা

699d673d05a55535.png

থ্রেড বর্ডার রাউটার কি?

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

একটি থ্রেড বর্ডার রাউটার একটি থ্রেড নেটওয়ার্ককে অন্যান্য IP-ভিত্তিক নেটওয়ার্কের সাথে সংযুক্ত করে, যেমন Wi-Fi বা ইথারনেট। একটি থ্রেড নেটওয়ার্কে অন্যান্য নেটওয়ার্কের সাথে সংযোগ করার জন্য একটি বর্ডার রাউটার প্রয়োজন। একটি থ্রেড বর্ডার রাউটার ন্যূনতমভাবে নিম্নলিখিত ফাংশন সমর্থন করে:

  • থ্রেড এবং ওয়াই-ফাই/ইথারনেট নেটওয়ার্কের মধ্যে দ্বিমুখী আইপি সংযোগ।
  • mDNS (Wi-Fi/ইথারনেট লিঙ্কে) এবং SRP (থ্রেড নেটওয়ার্কে) এর মাধ্যমে দ্বিমুখী পরিষেবা আবিষ্কার।
  • থ্রেড-ওভার-ইনফ্রাস্ট্রাকচার যা আইপি-ভিত্তিক লিঙ্কগুলিতে থ্রেড পার্টিশনগুলিকে একত্রিত করে।
  • বহিরাগত থ্রেড কমিশনিং (উদাহরণস্বরূপ, একটি মোবাইল ফোন) প্রমাণীকরণ এবং একটি থ্রেড নেটওয়ার্কে একটি থ্রেড ডিভাইস যোগদান করার জন্য।

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

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

এই কোডল্যাবে, আপনি একটি থ্রেড বর্ডার রাউটার সেট আপ করতে যাচ্ছেন এবং বর্ডার রাউটারের মাধ্যমে আপনার মোবাইল ফোনটিকে একটি থ্রেড এন্ড ডিভাইসের সাথে সংযুক্ত করতে যাচ্ছেন।

আপনি কি শিখবেন

  • কিভাবে OTBR সেট আপ করবেন
  • কিভাবে OTBR দিয়ে একটি থ্রেড নেটওয়ার্ক গঠন করবেন
  • SRP বৈশিষ্ট্য সহ একটি OpenThread CLI ডিভাইস কীভাবে তৈরি করবেন
  • কিভাবে SRP এর সাথে একটি পরিষেবা নিবন্ধন করবেন
  • কীভাবে একটি থ্রেড এন্ড ডিভাইস আবিষ্কার করবেন এবং পৌঁছাবেন।

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

  • একটি রাস্পবেরি পাই 3/4 ডিভাইস এবং কমপক্ষে 8 জিবি ক্ষমতা সহ একটি SD কার্ড৷
  • 2 নর্ডিক সেমিকন্ডাক্টর nRF52840 ডেভ বোর্ড।
  • IPv6 রাউটার বিজ্ঞাপন গার্ড ছাড়া একটি Wi-Fi AP রাউটারে সক্রিয়।
  • কমপক্ষে iOS 14 সহ একটি iOS ফোন বা কমপক্ষে Android 8.1 সহ Android ফোন।

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

রাস্পবেরি পাই সেটআপ করুন

raspberrypi.org- এর নির্দেশাবলী অনুসরণ করে rpi-imager টুলের সাহায্যে একটি নতুন রাস্পবেরি পাই ডিভাইস সেট আপ করা সহজ (টুলটিতে সর্বশেষ Raspberry Pi OS ব্যবহার করার পরিবর্তে, 2021-05-07-raspios-buster-armhf ডাউনলোড করুন - নিজের দ্বারা লাইট )। এই কোডল্যাবে মোবাইল ফোনের ধাপগুলি সম্পূর্ণ করতে, আপনাকে রাস্পবেরি পাইকে একটি Wi-Fi AP এর সাথে সংযুক্ত করতে হবে৷ বেতার সংযোগ সেট আপ করতে এই নির্দেশিকা অনুসরণ করুন. SSH এর সাথে রাস্পবেরি পাইতে লগ ইন করা সুবিধাজনক, আপনি এখানে নির্দেশাবলী পেতে পারেন।

OTBR কোড পান

আপনার রাস্পবেরি পাইতে লগ ইন করুন এবং গিটহাব থেকে ot-br-posix ক্লোন করুন:

$ git clone https://github.com/openthread/ot-br-posix.git --depth 1

OTBR তৈরি এবং ইনস্টল করুন

OTBR এর দুটি স্ক্রিপ্ট রয়েছে যা বুটস্ট্র্যাপ করে এবং থ্রেড বর্ডার রাউটার সেট আপ করে:

$ cd ot-br-posix
$ ./script/bootstrap
$ INFRA_IF_NAME=wlan0 ./script/setup

OTBR একটি থ্রেড ইন্টারফেস এবং অবকাঠামো নেটওয়ার্ক ইন্টারফেস (যেমন Wi-Fi/ইথারনেট) উভয় ক্ষেত্রেই কাজ করে যা INFRA_IF_NAME এর সাথে নির্দিষ্ট করা আছে। থ্রেড ইন্টারফেসটি OTBR নিজেই তৈরি করেছে এবং ডিফল্টরূপে wpan0 নামকরণ করা হয়েছে এবং INFRA_IF_NAME স্পষ্টভাবে উল্লেখ না থাকলে অবকাঠামো ইন্টারফেসের একটি ডিফল্ট মান wlan0 থাকে। যদি আপনার রাস্পবেরি পাই একটি ইথারনেট কেবল দ্বারা সংযুক্ত থাকে, তাহলে ইথারনেট ইন্টারফেসের নাম উল্লেখ করুন (যেমন eth0 ):

$ INFRA_IF_NAME=eth0 ./script/setup

OTBR সফলভাবে ইনস্টল করা হয়েছে কিনা তা পরীক্ষা করুন:

$ sudo service otbr-agent status
● otbr-agent.service - Border Router Agent
   Loaded: loaded (/lib/systemd/system/otbr-agent.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Mon 2021-03-01 05:43:38 GMT; 2s ago
  Process: 2444 ExecStart=/usr/sbin/otbr-agent $OTBR_AGENT_OPTS (code=exited, status=2)
 Main PID: 2444 (code=exited, status=2)

এটি প্রত্যাশিত যে otbr-agent পরিষেবা সক্রিয় নয়, কারণ এটি চালানোর জন্য একটি RCP চিপ প্রয়োজন৷

পরিবর্তনগুলি কার্যকর করতে রাস্পবেরি পাই পুনরায় বুট করুন।

RCP ফার্মওয়্যার তৈরি এবং ফ্ল্যাশ করুন

OTBR রেডিও কো-প্রসেসর (RCP) মোডে একটি 15.4 রেডিও চিপ সমর্থন করে। এই মোডে, OpenThread স্ট্যাক হোস্ট সাইডে চলছে এবং IEEE802.15.4 ট্রান্সসিভারের উপর ফ্রেম প্রেরণ/গ্রহণ করে।

একটি nRF52840 RCP ডিভাইস তৈরি এবং ফ্ল্যাশ করতে nRF52840 বোর্ড এবং OpenThread কোডল্যাব সহ একটি থ্রেড নেটওয়ার্ক তৈরি করুন এর ধাপ 4 অনুসরণ করুন:

$ script/build nrf52840 USB_trans

OTBR শুরু করুন এবং স্থিতি যাচাই করুন

আপনার রাস্পবেরি পাইতে nRF52840 বোর্ড সংযুক্ত করুন এবং otbr-agent পরিষেবা শুরু করুন:

$ sudo service otbr-agent restart

যাচাই করুন যে otbr-agent পরিষেবা সক্রিয় আছে:

$ sudo service otbr-agent status
● otbr-agent.service - Border Router Agent
   Loaded: loaded (/lib/systemd/system/otbr-agent.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-03-01 05:46:26 GMT; 2s ago
 Main PID: 2997 (otbr-agent)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/otbr-agent.service
           └─2997 /usr/sbin/otbr-agent -I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyACM0

Mar 01 05:46:26 raspberrypi otbr-agent[2997]: Stop publishing service
Mar 01 05:46:26 raspberrypi otbr-agent[2997]: [adproxy] Stopped
Mar 01 05:46:26 raspberrypi otbr-agent[2997]: PSKc is not initialized
Mar 01 05:46:26 raspberrypi otbr-agent[2997]: Check if PSKc is initialized: OK
Mar 01 05:46:26 raspberrypi otbr-agent[2997]: Initialize OpenThread Border Router Agent: OK
Mar 01 05:46:26 raspberrypi otbr-agent[2997]: Border router agent started.
Mar 01 05:46:26 raspberrypi otbr-agent[2997]: [INFO]-CORE----: Notifier: StateChanged (0x00038200) [NetData PanId NetName ExtPanId]
Mar 01 05:46:26 raspberrypi otbr-agent[2997]: [INFO]-PLAT----: Host netif is down

3. একটি থ্রেড নেটওয়ার্ক গঠন করুন

একটি ot-ctl কমান্ড আছে যা otbr-agent পরিষেবা নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে। ot-ctl সমস্ত OpenThread CLI কমান্ড গ্রহণ করে, আরও বিস্তারিত জানার জন্য OpenThread CLI গাইড দেখুন।

OTBR এর সাথে একটি থ্রেড নেটওয়ার্ক গঠন করুন:

$ sudo ot-ctl dataset init new
Done
$ sudo ot-ctl dataset commit active
Done
$ sudo ot-ctl ifconfig up
Done
$ sudo ot-ctl thread start
Done

কয়েক সেকেন্ড অপেক্ষা করুন, আমরা দেখতে পাব যে OTBR থ্রেড leader হিসেবে কাজ করছে এবং থ্রেড নেটওয়ার্ক ডেটাতে একটি off-mesh-routable (OMR) উপসর্গ রয়েছে:

$ sudo ot-ctl state
leader
Done
$ sudo ot-ctl netdata show
Prefixes:
Prefixes:
fd76:a5d1:fcb0:1707::/64 paos med 4000
Routes:
fd49:7770:7fc5:0::/64 s med 4000
Services:
44970 5d c000 s 4000
44970 01 9a04b000000e10 s 4000
Done
$ sudo ot-ctl ipaddr      
fda8:5ce9:df1e:6620:0:ff:fe00:fc11
fda8:5ce9:df1e:6620:0:0:0:fc38
fda8:5ce9:df1e:6620:0:ff:fe00:fc10
fd76:a5d1:fcb0:1707:f3c7:d88c:efd1:24a9
fda8:5ce9:df1e:6620:0:ff:fe00:fc00
fda8:5ce9:df1e:6620:0:ff:fe00:4000
fda8:5ce9:df1e:6620:3593:acfc:10db:1a8d
fe80:0:0:0:a6:301c:3e9f:2f5b
Done

4. SRP ক্লায়েন্ট এন্ড ডিভাইস সেট আপ করুন

OT CLI তৈরি এবং ফ্ল্যাশ করুন

একটি nRF52840 CLI শেষ ডিভাইস তৈরি এবং ফ্ল্যাশ করতে nRF52840 বোর্ড এবং OpenThread কোডল্যাব সহ একটি থ্রেড নেটওয়ার্ক তৈরি করুন এর ধাপ 5 অনুসরণ করুন।

কিন্তু OT_COMMISSIONER এবং OT_JOINER সক্ষম করার পরিবর্তে, CLI নোডের জন্য OT_SRP_CLIENT এবং OT_ECDSA বৈশিষ্ট্য প্রয়োজন৷

সুতরাং সম্পূর্ণ বিল্ড আমন্ত্রণটি এইরকম হওয়া উচিত:

$ script/build nrf52840 USB_trans -DOT_SRP_CLIENT=ON -DOT_ECDSA=ON

OTBR নেটওয়ার্কে যোগ দিন

otbr-agent পরিষেবা দ্বারা তৈরি থ্রেড নেটওয়ার্কে যোগ দিতে, আমাদের OTBR ডিভাইস থেকে সক্রিয় অপারেশনাল ডেটাসেট পেতে হবে। আসুন otbr-agent কমান্ড লাইনে ফিরে যাই এবং সক্রিয় ডেটাসেট পাই:

$ sudo ot-ctl dataset active -x
0e080000000000010000000300001235060004001fffe002083d3818dc1c8db63f0708fda85ce9df1e662005101d81689e4c0a32f3b4aa112994d29692030f4f70656e5468726561642d35326532010252e204103f23f6b8875d4b05541eeb4f9718d2f40c0302a0ff
Done

এসআরপি ক্লায়েন্ট নোড স্ক্রীন সেশনে ফিরে যান এবং সক্রিয় ডেটাসেট সেট করুন:

> dataset set active 0e080000000000010000000300001235060004001fffe002083d3818dc1c8db63f0708fda85ce9df1e662005101d81689e4c0a32f3b4aa112994d29692030f4f70656e5468726561642d35326532010252e204103f23f6b8875d4b05541eeb4f9718d2f40c0302a0ff
Done

তারপর, থ্রেড ইন্টারফেস শুরু করুন:

> ifconfig up
Done
> thread start
Done

কয়েক সেকেন্ড অপেক্ষা করুন এবং থ্রেড নেটওয়ার্কে যোগদান সফল হয়েছে কিনা তা যাচাই করুন:

> state
child
Done
> netdata show
Prefixes:
fd76:a5d1:fcb0:1707::/64 paos med 4000
Routes:
fd49:7770:7fc5:0::/64 s med 4000
Services:
44970 5d c000 s 4000
44970 01 9a04b000000e10 s 4000
Done
> ipaddr
fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927
fda8:5ce9:df1e:6620:0:ff:fe00:4001
fda8:5ce9:df1e:6620:ed74:123:cc5d:74ba
fe80:0:0:0:d4a9:39a0:abce:b02e
Done

নিশ্চিত করুন যে নেটওয়ার্ক ডেটা OTBR-এ মুদ্রিত ডেটার সাথে মেলে৷ আমরা এখন OTBR এর OMR ঠিকানা পিং করতে পারি:

> ping fd76:a5d1:fcb0:1707:f3c7:d88c:efd1:24a9
Done
> 16 bytes from fd76:a5d1:fcb0:1707:f3c7:d88c:efd1:24a9: icmp_seq=1 hlim=64 time=49ms

5. শেষ ডিভাইসে পরিষেবাটি প্রকাশ করুন৷

mDNS ব্যাপকভাবে লিংক-লোকালে DNS-SD পরিষেবা প্রকাশের জন্য ব্যবহৃত হয়েছে। কিন্তু মাল্টিকাস্ট বার্তাগুলি খুব বেশি ব্যান্ডউইথ ব্যবহার করে এবং কম পাওয়ার ডিভাইসগুলির জন্য দ্রুত ব্যাটারি নিঃশেষ করে দেয়। থ্রেড ইউনিকাস্ট এসআরপি প্রোটোকল ব্যবহার করে বর্ডার রাউটারের সাথে তাদের পরিষেবা নিবন্ধন করে এবং ওয়াই-ফাই বা ইথারনেট লিঙ্কে পরিষেবার বিজ্ঞাপন দেওয়ার জন্য বর্ডার রাউটারের উপর নির্ভর করে।

আমরা srp client কমান্ড দিয়ে একটি পরিষেবা নিবন্ধন করতে পারি।

এসআরপি ক্লায়েন্ট নোড স্ক্রিন সেশনে যান এবং এসআরপি ক্লায়েন্টটি স্বয়ংক্রিয়ভাবে শুরু করুন:

> srp client autostart enable
Done

Wi-Fi/ইথারনেট লিঙ্কে বিজ্ঞাপন দেওয়া হোস্টনাম সেট করুন:

> srp client host name ot-host
Done

Wi-Fi/ইথারনেট লিঙ্কে থাকা একটি ডিভাইসের জন্য একটি থ্রেড এন্ড ডিভাইসে পৌঁছানোর জন্য, শেষ ডিভাইসের OMR ঠিকানার বিজ্ঞাপন দিতে হবে:

> srp client host address fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927
Done

শেষে, একটি জাল _ipps._tcp পরিষেবা নিবন্ধন করুন:

> srp client service add ot-service _ipps._tcp 12345
Done

কয়েক সেকেন্ড অপেক্ষা করুন এবং আমরা নিবন্ধিত পরিষেবা দেখতে সক্ষম হব:

> srp client service
instance:"ot-service", name:"_ipps._tcp", state:Registered, port:12345, priority:0, weight:0
Done

আমরা সমস্ত সেটআপের কাজ সম্পন্ন করেছি এবং _ipps._tcp পরিষেবাটি Wi-Fi/ইথারনেট লিঙ্কে বিজ্ঞাপন দেওয়া উচিত ছিল৷ এটি এখনই শেষ ডিভাইসটি আবিষ্কার করার এবং পৌঁছানোর সময়!

6. পরিষেবাটি আবিষ্কার করুন

একটি মোবাইল ফোন দিয়ে পরিষেবাটি আবিষ্কার করুন

54a136a8940897cc.png

আমরা অ্যান্ড্রয়েড ফোনের সাথে mDNS পরিষেবাগুলি আবিষ্কার করতে পরিষেবা ব্রাউজার অ্যাপ ব্যবহার করি, iOS মোবাইল ডিভাইসগুলির জন্য একটি সমতুল্য অ্যাপও পাওয়া যেতে পারে। অ্যাপটি খুলুন এবং পরিষেবাটি _ipps._tcp দেখা উচিত।

একটি লিনাক্স হোস্টের সাথে পরিষেবাটি আবিষ্কার করুন

আপনি যদি অন্য লিনাক্স হোস্ট থেকে পরিষেবাটি আবিষ্কার করতে চান তবে আপনি avahi-browse কমান্ডটি ব্যবহার করতে পারেন।

avahi-daemon এবং avahi-utils ইনস্টল করুন:

$ sudo apt-get install -y avahi-daemon avahi-utils

পরিষেবাটি সমাধান করুন:

$ sudo service avahi-daemon start # Ensure the avahi daemon is started.
$ avahi-browse -r _ipps._tcp
+ wlan0 IPv6 ot-service                                    Secure Internet Printer local
= wlan0 IPv6 ot-service                                    Secure Internet Printer local
   hostname = [ot-host.local]
   address = [fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927]
   port = [12345]
   txt = []
...

একটি macOS হোস্টের সাথে পরিষেবাটি আবিষ্কার করুন৷

আপনি পরিষেবাটি সমাধান করতে macOS-এ dns-sd ব্যবহার করতে পারেন:

$ dns-sd -Z _ipps._tcp local.
Browsing for _ipps._tcp.local.
DATE: ---Sun 14 Mar 2021---
21:31:42.125  ...STARTING...

; To direct clients to browse a different domain, substitute that domain in place of '@'
lb._dns-sd._udp                                 PTR     @

; In the list of services below, the SRV records will typically reference dot-local Multicast DNS names.
; When transferring this zone file data to your unicast DNS server, you'll need to replace those dot-local
; names with the correct fully-qualified (unicast) domain name of the target host offering the service.

_ipps._tcp                                      PTR     ot-service._ipps._tcp
ot-service._ipps._tcp                           SRV     0 0 12345 ot-host.local. ; Replace with unicast FQDN of target host
ot-service._ipps._tcp                           TXT     ""
...

7. শেষ ডিভাইসটি পিং করুন

মোবাইল ফোন থেকে পিং

উদাহরণ হিসাবে পিক্সেল ফোনটি ধরুন, আমরা পরিষেবা ব্রাউজার অ্যাপে পরিষেবার উদাহরণের বিশদ পৃষ্ঠায় পূর্বে নিবন্ধিত পরিষেবা "ot-service" এর OMR ঠিকানা খুঁজে পেতে পারি।

bb992962e68d250b.png888daa1df1e1a9bf.png

আমরা এখন অন্য নেটওয়ার্ক বিশ্লেষক অ্যাপ দিয়ে OMR ঠিকানাটি পিং করতে পারি।

দুর্ভাগ্যবশত, নেটওয়ার্ক বিশ্লেষক অ্যাপের অ্যান্ড্রয়েড সংস্করণ পিং ইউটিলিটির জন্য mDNS প্রশ্ন সমর্থন করে না এবং আমরা সরাসরি হোস্টনাম ot-host.local পিং করতে পারি না (আমরা অ্যাপের iOS সংস্করণের সাথে হোস্টনামটি পিং করতে পারি)।

একটি Linux/macOS হোস্ট থেকে পিং করুন

থ্রেড বর্ডার রাউটার Wi-Fi/ইথারনেট লিঙ্কে প্রিফিক্স (প্রিফিক্স ইনফরমেশন অপশনের মাধ্যমে) এবং রুট (রুট ইনফরমেশন অপশনের মাধ্যমে) বিজ্ঞাপনের জন্য ICMPv6 রাউটার বিজ্ঞাপন (RA) পাঠায়।

লিনাক্স হোস্ট প্রস্তুত করুন

আপনার হোস্টে RA এবং RIO সক্রিয় আছে তা নিশ্চিত করা গুরুত্বপূর্ণ:

  1. net.ipv6.conf.wlan0.accept_ra ip ফরওয়ার্ডিং সক্ষম না থাকলে কমপক্ষে 1 এবং অন্যথায় 2 হওয়া উচিত।
  2. net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen 64 এর চেয়ে ছোট হওয়া উচিত নয়।

বেশিরভাগ ডিস্ট্রিবিউশনের জন্য accept_ra 1 এ ডিফল্ট করা হয়েছে। কিন্তু অন্যান্য নেটওয়ার্ক ডেমন থাকতে পারে যা এই বিকল্পটিকে ওভাররাইড করবে (উদাহরণস্বরূপ, রাস্পবেরি পাইতে dhcpcd 0 তে accept_ra ওভাররাইড করবে)। আপনি এর সাথে accept_ra মান পরীক্ষা করতে পারেন:

$ sudo sysctl -n net.ipv6.conf.wlan0.accept_ra
0

এবং এর সাথে মান 1 (অথবা 2 ক্ষেত্রে আইপি ফরওয়ার্ডিং সক্ষম করা থাকলে) সেট করুন:

$ sudo sysctl -w net.ipv6.conf.wlan0.accept_ra=1
Net.ipv6.conf.wlan0.accept_ra = 1

বেশিরভাগ লিনাক্স ডিস্ট্রিবিউশনে accept_ra_rt_info_max_plen বিকল্পটি ডিফল্ট 0 , এটির সাথে 64 এ সেট করুন:

$ sudo sysctl -w net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen=64
net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen = 64

হোস্ট রিবুট করার পরে পরিবর্তনটি হারিয়ে যাবে। উদাহরণস্বরূপ, স্থায়ীভাবে RIO সক্ষম করতে /etc/sysctl.conf এ নীচের কমান্ডগুলি যুক্ত করুন:

$ net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen = 64

এই কনফিগারেশনগুলি পরিবর্তন করতে অনেক দেরি হতে পারে কারণ OTBR ইতিমধ্যেই RA বার্তা পাঠাচ্ছে এবং দুটি অযাচিত RA বার্তাগুলির মধ্যে ব্যবধান কয়েকশ সেকেন্ড হতে পারে। একটি উপায় হল রাউটার সলিসিটেশন বার্তা পাঠানোর জন্য Wi-Fi AP এর সাথে সংযোগ বিচ্ছিন্ন করা এবং পুনরায় সংযোগ করা যাতে OTBR অনুরোধকৃত RA এর সাথে প্রতিক্রিয়া জানায়। আরেকটি বিকল্প হল বর্ডার রাউটারে বর্ডার রাউটিং ফাংশন পুনরায় চালু করা:

$ sudo ot-ctl br disable
Done
$ sudo ot-ctl br enable
Done

আপনি যদি Wi-Fi পুনরায় সংযোগ করার বা ইথারনেট ইন্টারফেস পুনরায় চালু করার চেষ্টা করেন তবে নিশ্চিত করুন যে আপনার WiFi-/ইথারনেট IPv6 নেটওয়ার্ক পরিচালনার জন্য dhcpcd ব্যবহার করা হচ্ছে না। কারণ ইন্টারফেস পুনরায় চালু করার সময় dhcpcd সর্বদা accept_ra বিকল্পটিকে ওভাররাইড করে এবং আপনার accept_ra কনফিগারেশন হারিয়ে যাবে। dhcpcd কনফিগারেশন ফাইলে (যেমন /etc/dhcpcd.conf ) নীচের লাইনগুলিকে স্পষ্টভাবে dhcpcd-এ IPv6 অক্ষম করুন:

noipv6
noipv6rs

পরিবর্তনটি কার্যকর করতে আপনাকে রিবুট করতে হবে।

macOS হোস্ট প্রস্তুত করুন

উভয় accept_ra* বিকল্পগুলি ডিফল্টরূপে সক্রিয় থাকে, তবে আপনাকে আপনার সিস্টেমকে কমপক্ষে macOS বিগ সুরে আপগ্রেড করতে হবে।

হোস্টনেম বা IPv6 ঠিকানাটি পিং করুন

আমরা এখন ping -6 ( macOS এর জন্য ping6 ) কমান্ড দিয়ে হোস্টনাম ot-host.local পিং করতে পারি:

$ ping -6 ot-host.local.
PING ot-host.local.(fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927)) 56 data bytes
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=1 ttl=63 time=170 ms
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=2 ttl=63 time=64.2 ms
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=3 ttl=63 time=22.8 ms
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=4 ttl=63 time=37.7 ms
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=5 ttl=63 time=28.7 ms
...

এই কমান্ডটি "Name or service not known" ত্রুটি সহ Linux হোস্টে ব্যর্থ হতে পারে। কারণ ping কমান্ডটি ot-host.local. mDNS প্রশ্ন সহ নাম। /etc/nsswitch.conf খুলুন এবং hosts দিয়ে শুরু হওয়া লাইনে mdns6_minimal যোগ করুন:

hosts:          files mdns4_minimal mdns6_minimal dns

অবশ্যই, আপনি সর্বদা সরাসরি IPv6 ঠিকানাটি পিং করতে পারেন:

$ ping -6 fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927
PING fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927(fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927) 56 data bytes
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=1 ttl=63 time=32.9 ms
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=2 ttl=63 time=27.8 ms
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=3 ttl=63 time=29.9 ms
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=4 ttl=63 time=73.5 ms
64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=5 ttl=63 time=26.4 ms
...

8. ডিভাইসটি বন্ধ করুন পরিষেবাটি প্রকাশ করুন

SRP ক্লায়েন্ট নোড থেকে নিবন্ধিত ঠিকানা এবং পরিষেবা সরাতে:

> srp client host remove
Done

আপনি এখন _ipps._tcp পরিষেবাটি আবিষ্কার করতে সক্ষম হবেন না

9. অভিনন্দন

অভিনন্দন, আপনি থ্রেড এন্ড ডিভাইসের জন্য দ্বিমুখী আইপি সংযোগ এবং পরিষেবা আবিষ্কারের জন্য একটি থ্রেড বর্ডার রাউটার হিসাবে সফলভাবে OTBR সেট আপ করেছেন।

এরপর কি?

এই কোডল্যাবগুলির কিছু পরীক্ষা করে দেখুন...

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