ที่อยู่ IPv6

ดูแหล่งข้อมูลใน GitHub

มาดูกันว่า Thread ระบุอุปกรณ์แต่ละเครื่องในเครือข่ายอย่างไร และใช้ที่อยู่ประเภทใดในการสื่อสารกัน

ขอบเขต

ขอบเขต OT

เครือข่ายเทรดมีขอบเขต 3 อย่างสำหรับการกำหนดที่อยู่แบบ Unicast ดังนี้

  • Link-Local - อินเทอร์เฟซทั้งหมดที่เข้าถึงได้ด้วยการส่งสัญญาณวิทยุครั้งเดียว
  • Mesh-Local - อินเทอร์เฟซทั้งหมดที่เข้าถึงได้ภายในเครือข่าย Thread เดียวกัน
  • ส่วนกลาง - อินเทอร์เฟซทั้งหมดที่เข้าถึงได้จากภายนอกเครือข่าย Thread

ขอบเขต 2 รายการแรกสอดคล้องกับคำนำหน้าที่กำหนดโดยเครือข่าย Thread Link-Local มีคำนำหน้าเป็น fe80::/16 ส่วน Mesh-Local มีคำนำหน้าเป็น fd00::/8

Unicast

มีที่อยู่ IPv6 แบบ Unicast หลายรายการที่ระบุอุปกรณ์ Thread เครื่องเดียว โดยแต่ละฟังก์ชันจะแตกต่างกันไปตามขอบเขตและกรณีการใช้งาน

ก่อนจะลงรายละเอียดแต่ละประเภท มาดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่ใช้กันทั่วไปที่เรียกว่า Routing Locator (RLOC) กันก่อน RLOC จะระบุอินเทอร์เฟซ Thread ตาม ตำแหน่งในโทโพโลยีเครือข่าย

วิธีสร้างเครื่องมือระบุตำแหน่งการกำหนดเส้นทาง

อุปกรณ์ทั้งหมดจะได้รับรหัสเราเตอร์และรหัสอุปกรณ์ย่อย โดย Parent แต่ละรายการ จะดูแลตารางของ Children ทั้งหมด ซึ่งการรวมกันของตารางเหล่านี้ จะระบุอุปกรณ์ภายในโทโพโลยีได้อย่างไม่ซ้ำกัน ตัวอย่างเช่น พิจารณาโหนดที่ไฮไลต์ในโทโพโลยีต่อไปนี้ ซึ่ง หมายเลขใน Mesh Extender (รูปห้าเหลี่ยม) คือรหัสเราเตอร์ และหมายเลข ในอุปกรณ์ปลายทาง (วงกลม) คือรหัสอุปกรณ์ย่อย

โทโพโลยี RLOC ของ OT

รหัสเราเตอร์ของอุปกรณ์ย่อยแต่ละเครื่องจะสอดคล้องกับอุปกรณ์หลัก (Mesh Extender) เนื่องจาก Mesh Extender ไม่ใช่ไคลเอ็นต์ รหัสไคลเอ็นต์สำหรับ Mesh Extender จึงเป็น 0 เสมอ ค่าเหล่านี้รวมกันจะมีความเฉพาะสำหรับอุปกรณ์แต่ละเครื่องในเครือข่าย Thread และใช้เพื่อสร้าง RLOC16 ซึ่งแสดงถึง 16 บิตสุดท้ายของ RLOC

ตัวอย่างเช่น วิธีคำนวณ RLOC16 สำหรับโหนดด้านซ้ายบน (Router ID = 1 และ Child ID = 1) มีดังนี้

OT RLOC16

RLOC16 เป็นส่วนหนึ่งของตัวระบุอินเทอร์เฟซ (IID) ซึ่งสอดคล้องกับ 64 บิตสุดท้ายของที่อยู่ IPv6 IID บางรายการสามารถใช้เพื่อระบุอินเทอร์เฟซ Thread บางประเภทได้ ตัวอย่างเช่น IID สำหรับ RLOC จะอยู่ในรูปแบบนี้เสมอ

0000:00ff:fe00:RLOC16

IID เมื่อรวมกับคำนำหน้าใน Mesh จะทำให้เกิด RLOC ตัวอย่างเช่น เมื่อใช้คำนำหน้า Mesh-Local เป็น fde5:8dba:82e1:1::/64 RLOC สำหรับโหนดที่ RLOC16 = 0x401 จะเป็น

OT RLOC

คุณสามารถใช้ตรรกะเดียวกันนี้เพื่อกำหนด RLOC สำหรับโหนดที่ไฮไลต์ทั้งหมดในโทโพโลยีตัวอย่างด้านบนได้

โทโพโลยี OT พร้อมที่อยู่

อย่างไรก็ตาม เนื่องจาก RLOC อิงตามตำแหน่งของโหนดในโทโพโลยี RLOC ของโหนดจึงอาจเปลี่ยนแปลงได้เมื่อโทโพโลยีเปลี่ยนแปลง

เช่น อาจมีการนำโหนด 0x400 ออกจากเครือข่าย Thread โหนด 0x401 และ 0x402 จะสร้างลิงก์ใหม่ไปยัง Mesh Extender อื่นๆ และระบบจะกำหนด RLOC16 และ RLOC ใหม่ให้แต่ละโหนด

โทโพโลยี OT หลังการเปลี่ยนแปลง

ประเภทที่อยู่ Unicast

RLOC เป็นเพียงที่อยู่ IPv6 แบบ Unicast รายการหนึ่งในหลายๆ รายการที่อุปกรณ์ Thread มีได้ ที่อยู่อีกหมวดหมู่หนึ่งเรียกว่าตัวระบุอุปกรณ์ปลายทาง (EID) ซึ่ง ระบุอินเทอร์เฟซ Thread ที่ไม่ซ้ำกันภายในพาร์ติชันเครือข่าย Thread EID จะ ไม่ขึ้นอยู่กับโทโพโลยีเครือข่ายเทรด

ประเภท Unicast ที่พบบ่อยมีรายละเอียดดังนี้

EID ที่ระบุอินเทอร์เฟซ Thread ที่เข้าถึงได้ด้วยการส่งสัญญาณวิทยุเพียงครั้งเดียว
ตัวอย่างfe80::54db:881c:3845:57f4
IIDอิงตามที่อยู่แบบยาว 802.15.4
ขอบเขตลิงก์เฉพาะ
รายละเอียด
  • ใช้เพื่อค้นหาเพื่อนบ้าน กำหนดค่าลิงก์ และแลกเปลี่ยนข้อมูลการกำหนดเส้นทาง
  • ไม่ใช่ที่อยู่ที่กำหนดเส้นทางได้
  • มีคำนำหน้าเป็น fe80::/16 เสมอ

EID ใน Mesh-Local (ML-EID)

EID ที่ระบุอินเทอร์เฟซ Thread โดยไม่ขึ้นอยู่กับโทโพโลยีเครือข่าย ใช้เพื่อเข้าถึงอินเทอร์เฟซ Thread ภายในพาร์ติชัน Thread เดียวกัน หรือที่เรียกว่าที่อยู่เฉพาะในเครือข่ายส่วนตัว (ULA)
ตัวอย่างfde5:8dba:82e1:1:416:993c:8399:35ab
IIDสุ่ม เลือกหลังจากที่การว่าจ้างเสร็จสมบูรณ์
ขอบเขตMesh-Local
รายละเอียด
  • ไม่เปลี่ยนแปลงเมื่อโทโพโลยีเปลี่ยนแปลง
  • แอปพลิเคชันควรใช้
  • มีคำนำหน้า fd00::/8 เสมอ

ตัวระบุตำแหน่งการกำหนดเส้นทาง (RLOC)

ระบุอินเทอร์เฟซ Thread ตามตำแหน่งในโทโพโลยีเครือข่าย
ตัวอย่างfde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
ขอบเขตMesh-Local
รายละเอียด
  • สร้างขึ้นเมื่ออุปกรณ์เชื่อมต่อกับเครือข่าย
  • สำหรับการส่ง Datagram IPv6 ภายในเครือข่าย Thread
  • เปลี่ยนแปลงเมื่อโทโพโลยีเปลี่ยนแปลง
  • โดยทั่วไปแล้วแอปพลิเคชันจะไม่ใช้

ตัวระบุตำแหน่ง Anycast (ALOC)

ระบุอินเทอร์เฟซ Thread ผ่านการค้นหา RLOC เมื่อไม่ทราบ RLOC ของปลายทาง
ตัวอย่างfde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
ขอบเขตMesh-Local
รายละเอียด
  • fcXX = ปลายทาง ALOC ซึ่งจะค้นหา RLOC ที่เหมาะสม
  • โดยทั่วไปแล้วแอปพลิเคชันจะไม่ใช้

ที่อยู่ Global Unicast (GUA)

EID ที่ระบุอินเทอร์เฟซ Thread ในขอบเขตทั่วโลก นอกเหนือจากเครือข่าย Thread
ตัวอย่าง2000::54db:881c:3845:57f4
IID
  • SLAAC - อุปกรณ์กำหนดให้แบบสุ่ม
  • DHCP - กำหนดโดยเซิร์ฟเวอร์ DHCPv6
  • ด้วยตนเอง - กำหนดโดยเลเยอร์ของแอปพลิเคชัน
ขอบเขตทั่วโลก
รายละเอียด
  • ที่อยู่ IPv6 สาธารณะ
  • มีคำนำหน้าเป็น 2000::/3 เสมอ

มัลติแคสต์

มัลติแคสต์ใช้เพื่อสื่อสารข้อมูลไปยังอุปกรณ์หลายเครื่องพร้อมกัน ในเครือข่าย Thread ระบบจะสงวนที่อยู่เฉพาะสำหรับการใช้งานมัลติแคสต์กับกลุ่มอุปกรณ์ต่างๆ โดยขึ้นอยู่กับขอบเขต

ที่อยู่ IPv6 ขอบเขต ส่งถึง
ff02::1 ลิงก์เฉพาะ FTD และ MED ทั้งหมด
ff02::2 ลิงก์เฉพาะ FTD ทั้งหมด
ff03::1 Mesh-Local FTD และ MED ทั้งหมด
ff03::2 Mesh-Local FTD ทั้งหมด

คุณอาจสังเกตเห็นว่าอุปกรณ์ปลายทางที่อยู่ในโหมดสลีป (SED) ไม่ได้รวมอยู่ในตารางการส่งแบบหลายผู้รับด้านบน แต่ Thread จะกำหนดคำนำหน้าแบบ Unicast ที่อิงตาม IPv6 Multicast ที่อยู่ที่มีขอบเขตแบบลิงก์เฉพาะและขอบเขตเฉพาะของ Realm ซึ่งใช้สำหรับโหนด Thread ทั้งหมด รวมถึง SED ที่อยู่มัลติแคสต์เหล่านี้จะแตกต่างกันไปตามเครือข่าย Thread เนื่องจากสร้างขึ้นบนส่วนนำหน้า Mesh-Local แบบ Unicast (ดูรายละเอียดเพิ่มเติมเกี่ยวกับที่อยู่มัลติแคสต์ IPv6 ที่อิงตามส่วนนำหน้าแบบ Unicast ได้ที่ RFC 3306 )

นอกจากนี้ อุปกรณ์ Thread ยังรองรับขอบเขตที่กำหนดเองนอกเหนือจากที่ระบุไว้แล้วด้วย

Anycast

Anycast ใช้เพื่อกำหนดเส้นทางการรับส่งข้อมูลไปยังอินเทอร์เฟซ Thread เมื่อไม่ทราบ RLOC ของปลายทาง Anycast Locator (ALOC) ระบุตำแหน่งของ อินเทอร์เฟซหลายรายการภายในพาร์ติชัน Thread 16 บิตสุดท้ายของ ALOC เรียกว่า ALOC16 อยู่ในรูปแบบ 0xfcXX ซึ่ง แสดงถึงประเภทของ ALOC

เช่น ALOC16 ระหว่าง 0xfc01 กับ 0xfc0f จะสงวนไว้สำหรับตัวแทน DHCPv6 หากไม่ทราบ RLOC ของเอเจนต์ DHCPv6 ที่เฉพาะเจาะจง (อาจเป็นเพราะโทโพโลยีเครือข่ายมีการเปลี่ยนแปลง) คุณจะส่งข้อความไปยัง ALOC ของเอเจนต์ DHCPv6 เพื่อรับ RLOC ได้

Thread กำหนดค่า ALOC16 ต่อไปนี้

ALOC16 ประเภท
0xfc00 ผู้นำ
0xfc01 - 0xfc0f DHCPv6 Agent
0xfc10 - 0xfc2f บริการ
0xfc30 - 0xfc37 ประธานสมาคม
0xfc40 - 0xfc4e Neighbor Discovery Agent
0xfc380xfc3f
0xfc4f0xfcff
จองแล้ว

สรุป

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

  • เครือข่าย Thread ประกอบด้วย 3 ขอบเขต ได้แก่ Link-Local, Mesh-Local และ Global
  • อุปกรณ์ Thread มีที่อยู่ IPv6 แบบ Unicast หลายรายการ
    • RLOC แสดงตำแหน่งของอุปกรณ์ในเครือข่าย Thread
    • ML-EID จะไม่ซ้ำกันสำหรับอุปกรณ์ Thread ภายในพาร์ติชัน และแอปพลิเคชันควรใช้ ML-EID
  • Thread ใช้การส่งแบบหลายผู้รับเพื่อส่งต่อข้อมูลไปยังกลุ่มโหนด
  • Thread จะใช้ Anycast เมื่อไม่ทราบ RLOC ของปลายทาง

ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดที่อยู่ IPv6 ของ Thread ได้ที่ส่วน 5.2 และ 5.3 ของข้อกำหนดของ Thread

ทดสอบความเข้าใจ

ขอบเขต 3 รายการใดบ้างที่ใช้สำหรับการกำหนดที่อยู่แบบ Unicast ในเครือข่าย Thread
ส่วนตัว
ผิด
Interface-Local
ผิด
ลิงก์เฉพาะ
ถูกต้อง
เฉพาะเว็บไซต์
ผิด
Mesh-Local
ถูกต้อง
ทั่วโลก
ถูกต้อง
การที่อุปกรณ์มีรหัสบุตรหลานเป็น 0 หมายความว่าอย่างไร
อุปกรณ์เป็นของเด็ก
ผิด
อุปกรณ์เป็นอุปกรณ์ที่ใช้ตัวขยายได้
ใกล้เคียง แต่ไม่ถูกต้อง
อุปกรณ์เป็นตัวขยายสัญญาณ Mesh
ถูกต้อง Mesh Extender จะมีรหัสย่อยเป็น 0 เสมอ
กล้องซึ่งเป็นโหนดในเครือข่าย Thread จะได้รับ RLOC16 และ RLOC ใหม่ เหตุการณ์ใดต่อไปนี้ที่อาจเป็นสาเหตุของปัญหานี้
มีคนดาวน์โหลดรูปภาพจากกล้องของคุณจากระยะไกล
ผิด เหตุการณ์นี้จะไม่มีผลต่อเครือข่าย Thread
Mesh Extender หลุดออกจากเครือข่าย
ถูกต้อง เมื่อ Mesh Extender หลุดออกจากเครือข่าย โทโพโลยีของเครือข่ายจะเปลี่ยนไป ซึ่งอาจส่งผลให้อุปกรณ์เลื่อนตัวเองเป็น Mesh Extender และรับ RLOC ใหม่
กล้องเข้าสู่โหมดสลีป ซึ่งเปลี่ยนโทโพโลยีเครือข่าย
ผิด การเข้าสู่โหมดสลีปไม่ได้ทำให้อุปกรณ์ ได้รับที่อยู่เครือข่ายใหม่เสมอไป
อุปกรณ์ในเครือข่าย Thread จะสมัครใช้ที่อยู่ff03::2 มัลติแคสต์ ข้อมูลนี้บอกอะไรเราเกี่ยวกับอุปกรณ์
ซึ่งเป็นอุปกรณ์ปลายทางขั้นต่ำ (Minimal End Device หรือ MED)
ผิด
เป็นอุปกรณ์ปลายทางแบบเต็ม (FED)
ผิด (คำใบ้: อาจเป็นหรือไม่เป็น FED ก็ได้)
โดยเป็นอุปกรณ์ Thread แบบมินิมอล (MTD)
ผิด
เป็นอุปกรณ์ Thread แบบเต็ม (FTD)
ถูกต้อง เฉพาะอุปกรณ์ Thread แบบเต็มเท่านั้นที่จะสมัครใช้ที่อยู่มัลติแคสต์ของ ff03::2 โดยจะดำเนินการในขอบเขต Mesh-Local
Thread ใช้การกำหนดแอดเดรสและการกำหนดเส้นทางประเภทใดเพื่อส่งต่อข้อมูลไปยัง กลุ่มโหนด
Unicast
ผิด
Anycast
ผิด
มัลติแคสต์
ถูกต้อง
ประกาศ
ผิด
อุปกรณ์ Thread ใช้การกำหนดที่อยู่และการกำหนดเส้นทางประเภทใดเมื่อ RLOC ของผู้รับข้อความที่ต้องการไม่รู้จัก
Unicast
ผิด
Anycast
ถูกต้อง Anycast ช่วยให้อุปกรณ์เข้าถึงโหนดที่ไม่รู้จัก RLOC ได้โดยการระบุ ALOC ของอุปกรณ์
มัลติแคสต์
ผิด
ประกาศ
ผิด