Xử lý IPv6

Xem nguồn trên GitHub

Hãy cùng xem cách Thread xác định từng thiết bị trong mạng và những gì địa chỉ mà chúng sử dụng để liên lạc với nhau.

Phạm vi

Phạm vi OT

Có 3 phạm vi trong mạng Thread phục vụ địa chỉ unicast:

  • Link-Local — tất cả giao diện có thể tiếp cận được qua một lần truyền tín hiệu vô tuyến
  • Mesh-Local – tất cả giao diện có thể truy cập được trong cùng một mạng Thread
  • Toàn cầu – mọi giao diện có thể truy cập được từ bên ngoài mạng Thread

2 phạm vi đầu tiên tương ứng với các tiền tố do mạng Thread chỉ định. Link-Local có tiền tố là fe80::/16, trong khi Mesh-Local có tiền tố là fd00::/8

Unicast

Có nhiều địa chỉ unicast IPv6 xác định một thiết bị Thread. Mỗi cấp độ có một chức năng khác nhau dựa trên phạm vi và trường hợp sử dụng.

Trước khi tìm hiểu chi tiết về từng loại, hãy tìm hiểu thêm về một loại phổ biến, được gọi là Bộ định vị định tuyến (rlOC). rlOC xác định giao diện Thread dựa trên giao diện Thread trong cấu trúc liên kết mạng.

Cách tạo Công cụ định tuyến

Tất cả thiết bị đều được gán một ID bộ định tuyến và một ID con. Mỗi Bộ định tuyến duy trì bảng của tất cả các con, tổ hợp của tất cả các giá trị này xác định duy nhất một thiết bị trong cấu trúc liên kết. Ví dụ: hãy xem xét các nút được đánh dấu trong cấu trúc liên kết sau, trong đó số trong Bộ định tuyến (hình ngũ giác) là Mã bộ định tuyến, và số trong Thiết bị cuối (vòng tròn) là Mã nhận dạng con:

Cấu trúc liên kết OT rlOC

Mỗi Mã bộ định tuyến của nhà xuất bản con tương ứng với Mã bộ định tuyến mẹ (Bộ định tuyến) của chúng. Vì Bộ định tuyến không phải là Phần tử con, thì Mã nhận dạng con của Bộ định tuyến luôn bằng 0. Các giá trị này kết hợp với nhau duy nhất cho từng thiết bị trong mạng Thread và được dùng để tạo rlOC16, đại diện cho 16 bit cuối của rlOC.

Ví dụ: dưới đây là cách tính rlOC16 cho nút phía trên bên trái (Bộ định tuyến) Mã nhận dạng = 1 và Mã nhận dạng con = 1):

Lỗi ngoài mong đợi

rlOC16 là một phần của Mã nhận dạng giao diện (IID), tương ứng với 64 bit cuối cùng của địa chỉ IPv6. Một số IID có thể được dùng để xác định một số loại về giao diện Thread. Ví dụ: IID cho rlOC luôn có dạng sau:

0000:00ff:fe00:RLOC16

IID (kết hợp với Tiền tố Mesh-Local) sẽ dẫn đến rlOC. Ví dụ: sử dụng Tiền tố Mesh-Local của fde5:8dba:82e1:1::/64, rlOC cho nút mà trong đó rlOC16 = 0x401 là:

Ngắt kết nối ngoài phạm vi ngày

Bạn có thể sử dụng cùng logic này để xác định rlOC cho tất cả các nút được đánh dấu trong cấu trúc liên kết mẫu ở trên:

Cấu trúc liên kết OT có địa chỉ

Tuy nhiên, do rlOC dựa trên vị trí của nút trong cấu trúc liên kết, rlOC của một nút có thể thay đổi khi cấu trúc liên kết thay đổi.

Ví dụ: có thể nút 0x400 sẽ bị xoá khỏi mạng Thread. Nút 0x4010x402 thiết lập các đường liên kết mới đến các Bộ định tuyến khác nhau và do đó chúng đều được chỉ định một rlOC16 và rlOC mới:

Cấu trúc liên kết OT sau khi thay đổi

Loại địa chỉ Unicast

rlOC chỉ là một trong nhiều địa chỉ unicast IPv6 mà một thiết bị Thread có thể có. Một danh mục địa chỉ khác được gọi là Giá trị nhận dạng điểm cuối (EID), xác định một giao diện Thread duy nhất trong phân vùng mạng Thread. EID là độc lập với cấu trúc liên kết mạng Thread.

Các loại unicast phổ biến được nêu chi tiết ở bên dưới.

EID xác định giao diện Thread có thể tiếp cận được bằng một đường truyền vô tuyến đơn lẻ.
Ví dụfe80::54db:881c:3845:57f4
IIDDựa trên địa chỉ mở rộng 802.15.4
Phạm viĐường liên kết cục bộ
Chi tiết
  • Dùng để khám phá các vùng lân cận, định cấu hình đường liên kết và trao đổi thông tin định tuyến
  • Không phải là địa chỉ có thể định tuyến
  • Luôn có tiền tố là fe80::/16

EID lưới-cục bộ (ML-EID)

EID xác định giao diện Thread, không phụ thuộc vào cấu trúc liên kết mạng. Dùng để truy cập giao diện Thread trong cùng một phân vùng Thread. Còn được gọi là Địa chỉ địa phương duy nhất (ULA).
Ví dụfde5:8dba:82e1:1:416:993c:8399:35ab
IIDNgẫu nhiên, được chọn sau khi quá trình vận hành hoàn tất
Phạm viMạng cục bộ
Chi tiết
  • Không thay đổi khi cấu trúc liên kết thay đổi
  • Ứng dụng nên dùng
  • Luôn có tiền tố fd00::/8

Bộ định vị định tuyến (rlOC)

Xác định giao diện Thread, dựa vào vị trí của giao diện đó trong cấu trúc liên kết mạng.
Ví dụfde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
Phạm viMạng cục bộ
Chi tiết
  • Được tạo khi một thiết bị kết nối mạng
  • Để phân phối gói dữ liệu IPv6 trong mạng Thread
  • Những thay đổi khi cấu trúc liên kết thay đổi
  • Các ứng dụng thường không dùng đến

Bộ định vị Anycast (ALOC)

Xác định giao diện Thread thông qua tra cứu rlOC, khi không xác định rlOC của một đích.
Ví dụfde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
Phạm viMạng cục bộ
Chi tiết
  • fcXX = Đích đến ALOC, tra cứu rlOC thích hợp
  • Các ứng dụng thường không dùng đến

Địa chỉ Global Unicast (GUA)

EID xác định giao diện Thread trên phạm vi toàn cầu, bên ngoài mạng Thread.
Ví dụ2000::54db:881c:3845:57f4
IID
  • SLAAC — Do chính thiết bị chỉ định ngẫu nhiên
  • DHCP – Do máy chủ DHCPv6 chỉ định
  • Thủ công — Do lớp ứng dụng gán
Phạm viToàn cầu
Chi tiết
  • Địa chỉ IPv6 công khai
  • Luôn có tiền tố là 2000::/3

Phát đa hướng

Phát đa hướng được dùng để truyền thông tin đến nhiều thiết bị cùng một lúc. Trong một Mạng Thread, các địa chỉ cụ thể được dành riêng để sử dụng cho đa hướng với các nhóm thiết bị, tuỳ thuộc vào phạm vi.

Địa chỉ IPv6 Phạm vi Đã gửi tới
ff02::1 Đường liên kết cục bộ Tất cả FTD và MED
ff02::2 Đường liên kết cục bộ Tất cả FTD
ff03::1 Mạng cục bộ Tất cả FTD và MED
ff03::2 Mạng cục bộ Tất cả FTD

Bạn có thể nhận thấy rằng Thiết bị cuối buồn ngủ (SED) không được đưa vào dưới dạng người nhận trong bảng truyền đa hướng ở trên. Thay vào đó, Thread xác định phạm vi liên kết cục bộ và phạm vi cục bộ đơn hướng dựa trên tiền tố IPv6 đa hướng địa chỉ dùng cho Tất cả các Nút luồng, bao gồm cả SED. Các định dạng này địa chỉ khác nhau tuỳ theo mạng Thread, vì mạng này được xây dựng trên unicast Tiền tố Mesh-Local (xem RFC 3306 để biết thêm chi tiết về địa chỉ đa hướng IPv6 dựa trên tiền tố unicast).

Các phạm vi tuỳ ý ngoài các phạm vi đã liệt kê cũng được hỗ trợ cho Thread thiết bị.

Anycast

Anycast dùng để định tuyến lưu lượng truy cập đến giao diện Thread khi rlOC của một giao diện đích đến chưa xác định. Bộ định vị Anycast (ALOC) xác định vị trí của nhiều giao diện trong một phân vùng Thread. 16 bit cuối cùng của ALOC, có tên là ALOC16, có định dạng 0xfcXX, biểu thị cho loại ALOC.

Ví dụ: ALOC16 từ 0xfc01 đến 0xfc0f được dành riêng cho DHCPv6 Nhân viên hỗ trợ. Nếu Tác nhân DHCPv6 cụ thể không xác định (có lẽ vì cấu trúc liên kết mạng đã thay đổi), hệ thống có thể gửi thông báo tới ALOC Nhân viên hỗ trợ DHCPv6 để lấy rlOC.

Luồng xác định các giá trị ALOC16 sau đây:

ALOC16 Loại
0xfc00 Người đứng đầu
0xfc010xfc0f Tác nhân DHCPv6
0xfc100xfc2f Dịch vụ
0xfc300xfc37 Ủy viên
0xfc400xfc4e Nhân viên hỗ trợ khám phá lân cận
0xfc380xfc3f
0xfc4f0xfcff
Đã đặt trước

Tóm tắt

Kiến thức bạn học được:

  • Mạng Thread bao gồm 3 phạm vi: Link-Local, Mesh-Local và Global
  • Một thiết bị Thread có nhiều địa chỉ IPv6 unicast
    • rlOC biểu thị vị trí của một thiết bị trong mạng Thread
    • ML-EID là mã duy nhất dành cho thiết bị Thread trong một phân vùng và nên được các ứng dụng dùng
  • Luồng sử dụng chế độ phát đa hướng để chuyển tiếp dữ liệu tới các nhóm nút và bộ định tuyến
  • Luồng sử dụng bất kỳ hướng nào khi không xác định được rlOC của một đích đến

Để tìm hiểu thêm về địa chỉ IPv6 của Thread, xem phần 5.2 và 5.3 của Thông số kỹ thuật của luồng.

Kiểm tra kiến thức

3 phạm vi nào được dùng cho địa chỉ unicast trong mạng Thread?
Riêng tư
Sai.
Giao diện cục bộ
Sai.
Đường liên kết cục bộ
Chính xác.
Địa phương
Sai.
Mạng cục bộ
Chính xác.
Toàn cầu
Chính xác.
Khi một thiết bị có Mã nhận dạng trẻ em là 0, điều đó có nghĩa là gì?
Thiết bị là Trẻ em.
Sai.
Thiết bị này là REED.
Gần đúng, nhưng không chính xác.
Thiết bị là một Bộ định tuyến.
Chính xác. Bộ định tuyến luôn có Mã con bằng 0.
Một máy ảnh (là một nút trên mạng Thread) nhận được rlOC16 mới và rlOC. Sự kiện nào sau đây có thể là nguyên nhân gây ra tình trạng này?
Có người đã tải ảnh xuống từ máy ảnh.
Sai. Sự kiện này sẽ không ảnh hưởng đến Thread mạng.
Bộ định tuyến bị mất mạng.
Chính xác. Khi bộ định tuyến bị ngắt mạng, mạng những thay đổi về cấu trúc liên kết, có thể dẫn đến việc thiết bị tự quảng bá bộ định tuyến và nhận rlOC mới.
Camera đã chuyển sang chế độ ngủ, việc này đã thay đổi cấu trúc liên kết mạng.
Sai. Việc chuyển sang chế độ ngủ không nhất thiết khiến thiết bị để nhận địa chỉ mạng mới.
Một thiết bị trên mạng Thread đăng ký ff03::2 địa chỉ multicast này. Thông tin này cho chúng tôi biết điều gì về thiết bị?
Đây là một thiết bị tối thiểu (MED).
Sai.
Đó là một Thiết bị đầu cuối (FED).
Sai. (Gợi ý: Có thể mã này là hoặc không phải là FED.)
Đó là một Thiết bị luồng tối thiểu (MTD).
Sai.
Đó là thiết bị Full Thread (FTD).
Chính xác. Chỉ các Thiết bị luồng đầy đủ mới đăng ký Địa chỉ phát đa hướng ff03::2. Họ làm như vậy trong Mesh-Local phạm vi.
Thread sử dụng loại địa chỉ và định tuyến nào để chuyển tiếp dữ liệu đến nhóm nút và bộ định tuyến?
đơn hướng
Sai.
bất kỳ
Sai.
phát đa hướng
Chính xác.
truyền tin
Sai.
Thiết bị Thread sử dụng loại địa chỉ và định tuyến nào khi Không xác định được rlOC của người nhận tin nhắn dự định?
đơn hướng
Sai.
bất kỳ
Chính xác. Anycast cho phép thiết bị kết nối với một nút có rlOC không đã biết, bằng cách đề cập đến ALOC của thiết bị.
phát đa hướng
Sai.
truyền tin
Sai.