เราเตอร์ Border Border - การเชื่อมต่อ IPv6 แบบ 2 ทิศทางและ DNS Service Discovery

1. ข้อมูลเบื้องต้น

699d673d05a55535.png

เราเตอร์ Thread Border คืออะไร

เทรดคือโปรโตคอลเครือข่ายที่ทํางานร่วมกันแบบไร้สายและมี IP เป็น IP ที่ทําให้การสื่อสารระหว่างอุปกรณ์กับอุปกรณ์กับระบบคลาวด์ปลอดภัย เครือข่ายชุดข้อความสามารถปรับให้เข้ากับการเปลี่ยนแปลงโทโพโลยีเพื่อหลีกเลี่ยงความล้มเหลวในแต่ละครั้ง

เราเตอร์ Thread Border เชื่อมต่อเครือข่ายเทรดกับเครือข่ายอื่นๆ ที่ใช้ IP เช่น Wi-Fi หรืออีเทอร์เน็ต เครือข่ายเทรดต้องการเราเตอร์ Border เพื่อเชื่อมต่อกับเครือข่ายอื่นๆ Thread Border Router รองรับฟังก์ชันต่อไปนี้น้อยที่สุด

  • การเชื่อมต่อ IP แบบ 2 ทิศทางระหว่างเครือข่ายเทรดและเครือข่าย Wi-Fi/อีเทอร์เน็ต
  • การค้นหาบริการแบบ 2 ทิศทางผ่าน mDNS (ในลิงก์ Wi-Fi/อีเทอร์เน็ต) และ SRP (ในเครือข่ายเทรด)
  • ชุดข้อความก่อนโครงสร้างพื้นฐานที่ผสานรวมพาร์ติชันชุดข้อความผ่านลิงก์แบบ IP
  • การว่าจ้างชุดข้อความภายนอก (เช่น โทรศัพท์มือถือ) เพื่อตรวจสอบสิทธิ์และเข้าร่วมอุปกรณ์ชุดข้อความในเครือข่ายชุดข้อความ

เราเตอร์ Thread Border (OTBR) ที่ Google ออกให้นั้นเป็นการใช้งาน Thread Border Router แบบโอเพนซอร์ส

สิ่งที่คุณจะสร้าง

ใน Codelab นี้ คุณจะต้องตั้งค่า Thread Border Router และเชื่อมต่อโทรศัพท์มือถือเข้ากับ Thread End Device ผ่าน Border Router

สิ่งที่คุณจะได้เรียนรู้

  • วิธีตั้งค่า OTBR
  • วิธีสร้างเครือข่ายเทรดด้วย OTBR
  • วิธีสร้างอุปกรณ์ OpenThread CLI ที่มีฟีเจอร์ SRP
  • วิธีลงทะเบียนบริการกับ SRP
  • วิธีค้นหาและเข้าถึงอุปกรณ์เทรด

สิ่งที่ต้องมี

  • อุปกรณ์ Raspberry Pi 3/4 และการ์ด SD ความจุอย่างน้อย 8 GB
  • 2 บอร์ดนักพัฒนาซอฟต์แวร์แบบนอร์ดิก nRF52840
  • AP ของ Wi-Fi ที่ไม่มีIP โฆษณาเราเตอร์ IPv6 ที่เปิดใช้งานบนเราเตอร์
  • โทรศัพท์ iOS ที่ใช้ iOS 14 ขึ้นไปหรือโทรศัพท์ Android ที่มี Android 8.1 เป็นอย่างต่ํา

2. ตั้งค่า OTBR

ตั้งค่า Raspberry Pi

คุณตั้งค่าอุปกรณ์ Raspberry Pi ใหม่ด้วยเครื่องมือ rpi-imager ได้ง่ายๆ เพียงทําตามวิธีการใน raspberrypi.org (แทนที่จะดาวน์โหลด Raspberry Pi OS เวอร์ชันล่าสุดในเครื่องมือ ให้ดาวน์โหลด 2021-05-07-raspios-buster-armhf-lite ด้วยตนเอง) ในการทําให้ขั้นตอนสําหรับโทรศัพท์มือถือใน Codelab นี้เสร็จสมบูรณ์ คุณจะต้องเชื่อมต่อ Raspberry Pi กับ AP ของ Wi-Fi ทําตามคําแนะนํานี้เพื่อตั้งค่าการเชื่อมต่อแบบไร้สาย การลงชื่อเข้าสู่ระบบด้วย Raspberry Pi ด้วย SSH นั้นง่ายมาก ลองดูวิธีการได้ที่นี่

รับรหัส OTBR

ลงชื่อเข้าสู่ระบบ Raspberry Pi และโคลน ot-br-posix จาก GitHub:

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

สร้างและติดตั้ง OTBR

OTBR มีสคริปต์ 2 รายการที่เปิดเครื่องและตั้งค่า Thread Border Router ดังนี้

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

OTBR ใช้งานได้ทั้งในอินเทอร์เฟซชุดข้อความและอินเทอร์เฟซเครือข่ายโครงสร้างพื้นฐาน (เช่น Wi-Fi/อีเทอร์เน็ต) ซึ่งระบุด้วย INFRA_IF_NAME อินเทอร์เฟซชุดข้อความจะสร้างโดย OTBR และตั้งชื่อว่า wpan0 โดยค่าเริ่มต้น และอินเทอร์เฟซโครงสร้างพื้นฐานจะมีค่าเริ่มต้นเป็น wlan0 หากไม่ได้ระบุ INFRA_IF_NAME ไว้อย่างชัดแจ้ง หาก Raspberry Pi เชื่อมต่อด้วยสายอีเทอร์เน็ต ให้ระบุชื่ออินเทอร์เฟซอีเทอร์เน็ต (เช่น 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 ในการทํางาน

รีบูต Raspberry Pi เพื่อทําการเปลี่ยนแปลง

สร้างและแฟลชเฟิร์มแวร์ RCP

OTBR สนับสนุนชิปวิทยุ 15.4 ในโหมดตัวประมวลผลร่วมวิทยุ (RCP) ในโหมดนี้ กลุ่ม OpenThread จะทํางานที่ฝั่งโฮสต์และส่ง/รับเฟรมผ่านตัวรับส่งสัญญาณ IEEE802.15.4

ทําตามขั้นตอนที่ 4 ของสร้างเครือข่ายชุดข้อความด้วยบอร์ด nRF52840 และ OpenThread codelab เพื่อสร้างและแฟลชอุปกรณ์ nRF52840 RCP

$ script/build nrf52840 USB_trans

เริ่ม OTBR และยืนยันสถานะ

เชื่อมต่อบอร์ด nRF52840 กับ Raspberry Pi และเริ่มต้นบริการ 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

รอสัก 2-3 วินาที คุณน่าจะเห็น 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

ทําตามขั้นตอนที่ 5 ของสร้างเครือข่ายเทรดด้วยบอร์ด nRF52840 และ OpenThread Codelab เพื่อสร้างและ Flash อุปกรณ์ปิดท้าย nRF52840 CLI

แต่แทนที่จะเปิดใช้ 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

กลับไปที่เซสชันหน้าจอของไคลเอ็นต์ SRP และตั้งค่าชุดข้อมูลที่ใช้งานอยู่

> 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 เราสามารถใช้คําสั่ง ping กับที่อยู่ OMR ของ OTBR:

> 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 บน link-local แต่ข้อความมัลติแคสต์จะใช้แบนด์วิดท์มากเกินไป และจะใช้พลังงานแบตเตอรี่สําหรับอุปกรณ์ที่ใช้พลังงานต่ําอย่างรวดเร็ว เทรดใช้โปรโตคอล SRP แบบ unicast เพื่อลงทะเบียนบริการกับ Border Router และใช้ Border Router เพื่อโฆษณาบริการบน Wi-Fi หรือลิงก์อีเทอร์เน็ต

เราลงทะเบียนบริการด้วยคําสั่ง srp client ได้

ไปที่เซสชันหน้าจอโหนดไคลเอ็นต์ SRP แล้วเริ่มไคลเอ็นต์ SRP โดยอัตโนมัติ

> 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 ด้วยโทรศัพท์ Android และยังมีแอปที่เทียบเท่าสําหรับอุปกรณ์เคลื่อนที่ iOS อีกด้วย เปิดแอปและบริการ _ipps._tcp ควรจะปรากฏขึ้น

ค้นหาบริการด้วยโฮสต์ Linux

หากต้องการหาบริการจากโฮสต์ Linux อื่น คุณสามารถใช้คําสั่ง 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

คุณใช้ dns-sd ใน macOS เพื่อแก้ไขบริการได้ดังนี้

$ 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. ใช้คําสั่ง Ping กับอุปกรณ์ปลายทาง

ใช้คําสั่ง ping จากโทรศัพท์มือถือ

โปรดดูตัวอย่างโทรศัพท์ OMR ที่เราค้นหาที่อยู่ OMR ของบริการที่ลงทะเบียนไว้ก่อนหน้านี้ "ot-service" ในหน้ารายละเอียดของอินสแตนซ์บริการในแอปเบราว์เซอร์บริการ

bb992962e68d250b.png 888daa1df1e1a9bf.png

เราสามารถใช้คําสั่ง ping กับที่อยู่ OMR กับแอป Network Analyzer อื่น

ขออภัย แอป Network Analyzer เวอร์ชัน Android ไม่รองรับการค้นหา mDNS สําหรับยูทิลิตีคําสั่ง ping และเราใช้คําสั่ง ping กับชื่อโฮสต์ ot-host.local โดยตรงไม่ได้ (เราใช้คําสั่ง ping กับชื่อโฮสต์ด้วยแอปเวอร์ชัน iOS ได้)

ใช้คําสั่ง ping จากโฮสต์ของ Linux/macOS

เราเตอร์ Border Border ส่งโฆษณาเราเตอร์ ICMPv6 (RA) เพื่อโฆษณาคํานําหน้า (ผ่านตัวเลือกข้อมูลคํานําหน้า) และเส้นทาง (ผ่านตัวเลือกข้อมูลเส้นทาง) ในลิงก์ Wi-Fi/อีเทอร์เน็ต

เตรียมโฮสต์ Linux

ตรวจสอบให้แน่ใจว่าคุณเปิดใช้ RA และ RIO บนโฮสต์ของคุณ

  1. net.ipv6.conf.wlan0.accept_ra ควรมีค่าอย่างน้อย 1 หากไม่ได้เปิดใช้การส่งต่อ IP และในอีก 2 วัน
  2. net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen ไม่ควรเล็กกว่า 64

accept_ra จะมีค่าเริ่มต้นเป็น 1 สําหรับการกระจายส่วนใหญ่ แต่อาจมี Daemon อื่นๆ ของเครือข่ายที่จะลบล้างตัวเลือกนี้ (ตัวอย่างเช่น dhcpcd ใน Raspberry Pi จะลบล้าง accept_ra เป็น 0) คุณตรวจสอบค่า accept_ra ได้ด้วยวิธีต่อไปนี้

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

และกําหนดค่าเป็น 1 (หรือ 2 ในกรณีที่เปิดใช้การส่งต่อ IP) ดังนี้

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

ตัวเลือก accept_ra_rt_info_max_plen ใน Linux ส่วนใหญ่จะมีค่าเริ่มต้นเป็น 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

การเปลี่ยนแปลงจะสูญหายหลังจากรีบูตโฮสต์ ตัวอย่างเช่น เพิ่มคําสั่งด้านล่างต่อท้าย /etc/sysctl.conf เพื่อเปิดใช้ RIO อย่างถาวร

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

สายเกินไปที่จะเปลี่ยนการกําหนดค่าดังกล่าว เนื่องจาก OTBR เคยส่งข้อความ RA แล้ว และช่วงเวลาระหว่างข้อความ RA ที่ไม่พึงประสงค์ 2 ข้อความอาจใช้เวลาหลายหลายวินาที วิธีหนึ่งคือยกเลิกการเชื่อมต่อและเชื่อมต่อกับ Wi-Fi AP อีกครั้งเพื่อส่งข้อความชักชวนเราเตอร์เพื่อให้ OTBR ตอบกลับด้วย RA ที่มีการชักชวน อีกทางเลือกหนึ่งคือการรีสตาร์ทฟังก์ชันการกําหนดเส้นทาง Border บน Border Router:

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

หากคุณพยายามเชื่อมต่อ Wi-Fi หรือรีสตาร์ทอินเทอร์เฟซอีเทอร์เน็ต โปรดตรวจสอบว่าไม่ได้ใช้ dhcpcd ในการจัดการเครือข่าย IPv6/อีเทอร์เน็ต IPv6 เนื่องจาก dhcpcd จะลบล้างตัวเลือก accept_ra เสมอทุกครั้งที่รีสตาร์ทอินเทอร์เฟซและการกําหนดค่า accept_ra จะหายไป ต่อท้ายบรรทัดต่อไปนี้ในไฟล์การกําหนดค่า dhcpcd (เช่น /etc/dhcpcd.conf) เพื่อปิดใช้ IPv6 ใน dhcpcd อย่างชัดแจ้ง:

noipv6
noipv6rs

คุณต้องรีบูตเพื่อให้การเปลี่ยนแปลงมีผล

เตรียมโฮสต์ macOS

ตัวเลือก accept_ra* จะเปิดใช้โดยค่าเริ่มต้น แต่คุณต้องอัปเกรดระบบไปใช้ macOS Big Sur เป็นอย่างน้อย

ใช้คําสั่ง ping กับชื่อโฮสต์หรือที่อยู่ IPv6

เราสามารถใช้คําสั่ง ping กับชื่อโฮสต์ ot-host.local ด้วยคําสั่ง ping -6 (ping6 สําหรับ macOS) ดังต่อไปนี้

$ 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
...

คําสั่งนี้อาจล้มเหลวในโฮสต์ของ Linux ที่มีข้อผิดพลาด "Name or service not known" นั่นเป็นเพราะคําสั่ง ping ไม่ได้แปลค่าชื่อ ot-host.local. ด้วยคําค้นหา mDNS เปิด /etc/nsswitch.conf และเพิ่ม mdns6_minimal ในบรรทัดที่ขึ้นต้นด้วย hosts:

hosts:          files mdns4_minimal mdns6_minimal dns

คุณสามารถใช้คําสั่ง ping ไปยังที่อยู่ 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 เป็น Thread Border Router เพื่อเชื่อมต่อ IP แบบ 2 ทิศทางและ Service Discovery สําหรับอุปกรณ์ปลายทางของชุดข้อความเรียบร้อยแล้ว

ขั้นตอนถัดไป

ลองดู Codelab ต่อไปนี้...

เอกสารอ้างอิง