Hãy xem cách Thread xác định từng thiết bị trong mạng và những loại địa chỉ mà các thiết bị này dùng để giao tiếp với nhau.
Phạm vi
Có 3 phạm vi trong mạng Thread để định địa chỉ truyền đơn:
- Link-Local – tất cả các giao diện có thể truy cập bằng một lần truyền sóng vô tuyến
- Mesh-Local – tất cả các giao diện có thể truy cập trong cùng một mạng Thread
- Toàn cầu – tất cả các giao diện có thể truy cập từ bên ngoài mạng Thread
Hai 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, còn Mesh-Local có tiền tố là fd00::/8.
Unicast
Có nhiều địa chỉ truyền đơn IPv6 giúp xác định một thiết bị Thread duy nhất. Mỗi loại có một chức năng riêng dựa trên phạm vi và trường hợp sử dụng.
Trước khi đi vào chi tiết từng loại, hãy tìm hiểu thêm về một loại phổ biến, được gọi là Routing Locator (RLOC). RLOC xác định một giao diện Thread, dựa trên vị trí của giao diện đó trong cấu trúc liên kết mạng.
Cách tạo Bộ định vị định tuyến
Tất cả các thiết bị đều được chỉ định một Mã nhận dạng bộ định tuyến và một Mã nhận dạng thiết bị con. Mỗi phần tử mẹ duy trì một bảng gồm tất cả các phần tử con. Sự kết hợp của các phần tử này sẽ 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 đây, trong đó số trong Bộ mở rộng mạng lưới (ngũ giác) là Mã nhận dạng bộ định tuyến và số trong Thiết bị đầu cuối (hình tròn) là Mã nhận dạng thiết bị con:
Mỗi Mã nhận dạng bộ định tuyến của trẻ tương ứng với Mã nhận dạng bộ định tuyến của cha mẹ (Bộ mở rộng mạng lưới). Vì Mesh Extender không phải là một Child, nên Child ID cho Mesh Extender luôn là 0. Cùng với nhau, các giá trị này là duy nhất cho mỗi thiết bị trong mạng Thread và được dùng để tạo RLOC16, đại diện cho 16 bit cuối cùng của RLOC.
Ví dụ: sau đây là cách tính RLOC16 cho nút trên cùng bên trái (Router ID = 1 và Child ID = 1):
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. Bạn có thể dùng một số IID để xác định một số loại giao diện Luồng. Ví dụ: IID cho RLOC luôn có dạng như sau:
0000:00ff:fe00:RLOC16
IID, kết hợp với Tiền tố cục bộ của mạng lưới, sẽ tạo ra RLOC. Ví dụ: khi sử dụng Tiền tố cục bộ của mạng lưới là fde5:8dba:82e1:1::/64, RLOC cho một nút có RLOC16 = 0x401 là:
Bạn có thể dùng cùng một logic này để xác định RLOC cho tất cả các nút được làm nổi bật trong cấu trúc liên kết mẫu ở trên:
Tuy nhiên, vì RLOC dựa trên vị trí của nút trong cấu trúc liên kết, nên 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 bị xoá khỏi mạng Thread. Các nút 0x401 và 0x402 thiết lập các đường liên kết mới đến các Bộ mở rộng mạng lưới khác nhau, do đó, mỗi nút được chỉ định một RLOC16 và RLOC mới:
Các loại địa chỉ đơn điểm
RLOC chỉ là một trong nhiều địa chỉ truyền đơn IPv6 mà 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), dùng để xác định một giao diện Thread duy nhất trong một phân vùng mạng Thread. EID không phụ thuộc vào cấu trúc mạng Thread.
Các loại truyền đơn hướng phổ biến được trình bày chi tiết bên dưới.
Địa chỉ liên kết cục bộ (LLA) |
|
|---|---|
| Một EID xác định giao diện Thread có thể truy cập bằng một lần truyền sóng vô tuyến. | |
| Ví dụ | fe80::54db:881c:3845:57f4 |
| IID | Dựa trên địa chỉ mở rộng 802.15.4 |
| Phạm vi | Liên kết cục bộ |
| Chi tiết |
|
EID cục bộ dạng lưới (ML-EID) |
|
|---|---|
| Một EID xác định giao diện Thread, độc lập với cấu trúc liên kết mạng. Được dùng để truy cập vào một giao diện Thread trong cùng một phân vùng Thread. Còn được gọi là Địa chỉ cục bộ duy nhất (ULA). | |
| Ví dụ | fde5:8dba:82e1:1:416:993c:8399:35ab |
| IID | Ngẫu nhiên, được chọn sau khi hoàn tất việc uỷ quyền |
| Phạm vi | Mesh-Local |
| Chi tiết |
|
Bộ định vị định tuyến (RLOC) |
|
|---|---|
| Xác định một giao diện Thread, dựa trên 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 |
| IID | 0000:00ff:fe00:RLOC16 |
| Phạm vi | Mesh-Local |
| Chi tiết |
|
Bộ định vị Anycast (ALOC) |
|
|---|---|
| Xác định một giao diện Thread thông qua tra cứu RLOC, khi không biết RLOC của đích đến. | |
| Ví dụ | fde5:8dba:82e1:1::ff:fe00:fc01 |
| IID | 0000:00ff:fe00:fcXX |
| Phạm vi | Mesh-Local |
| Chi tiết |
|
Địa chỉ truyền đơn toàn cầu (GUA) |
|
|---|---|
| EID xác định một giao diện Thread trên phạm vi toàn cầu, ngoài mạng Thread. | |
| Ví dụ | 2000::54db:881c:3845:57f4 |
| IID |
|
| Phạm vi | Toàn cầu |
| Chi tiết |
|
Multicast
Truyền tin đ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ạng Thread, các địa chỉ cụ thể được dành riêng cho việc sử dụng tính năng truyền tin đa hướng với các nhóm thiết bị khác nhau, tuỳ thuộc vào phạm vi.
| Địa chỉ IPv6 | Phạm vi | Người đã nhận tin nhắn |
|---|---|---|
ff02::1 |
Liên kết cục bộ | Tất cả FTD và MED |
ff02::2 |
Liên kết cục bộ | Tất cả FTD |
ff03::1 |
Mesh-Local | Tất cả FTD và MED |
ff03::2 |
Mesh-Local | Tất cả FTD |
Bạn có thể nhận thấy rằng Thiết bị đầu cuối ở chế độ ngủ (SED) không được đưa vào làm người nhận trong bảng truyền tin đa hướng ở trên. Thay vào đó, Thread xác định địa chỉ truyền tin đơn hướng dựa trên tiền tố IPv6 đa hướng có phạm vi cục bộ liên kết và phạm vi cục bộ miền được dùng cho Tất cả các nút Thread, kể cả SED. Các địa chỉ truyền tin đa hướng này khác nhau tuỳ theo mạng Thread, vì mạng này được xây dựng trên tiền tố Mesh-Local đơn hướng (xem RFC 3306 để biết thêm thông tin về địa chỉ truyền tin đa hướng IPv6 dựa trên tiền tố đơn hướng).
Các phạm vi tuỳ ý ngoài những phạm vi đã được liệt kê cũng được hỗ trợ cho các thiết bị Thread.
Anycast
Anycast được dùng để định tuyến lưu lượng truy cập đến một giao diện Thread khi không biết RLOC của đích đến. Anycast Locator (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 (gọi là ALOC16) có định dạng 0xfcXX, biểu thị loại ALOC.
Ví dụ: ALOC16 giữa 0xfc01 và 0xfc0f được dành riêng cho các tác nhân DHCPv6. Nếu không xác định được RLOC của DHCPv6 Agent cụ thể (có thể là do cấu trúc liên kết mạng đã thay đổi), thì bạn có thể gửi một thông báo đến ALOC của DHCPv6 Agent để lấy RLOC.
Luồng xác định các giá trị ALOC16 sau:
| ALOC16 | Loại |
|---|---|
0xfc00 |
Người đứng đầu |
0xfc01 – 0xfc0f |
Tác nhân DHCPv6 |
0xfc10 – 0xfc2f |
Dịch vụ |
0xfc30 – 0xfc37 |
Ủy viên |
0xfc40 – 0xfc4e |
Tác nhân khám phá lân cận |
0xfc38 – 0xfc3f0xfc4f – 0xfcff |
Đã đặ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
- Thiết bị Thread có nhiều địa chỉ IPv6 đơn phương
- RLOC đại diện cho vị trí của thiết bị trong mạng Thread
- ML-EID là mã nhận dạng riêng biệt của một thiết bị Thread trong một phân vùng và nên được các ứng dụng sử dụng
- Thread sử dụng truyền tin đa hướng để chuyển tiếp dữ liệu đến các nhóm nút
- Thread sử dụng địa chỉ truyền đến một nhóm bất kỳ khi không xác định được RLOC của đích đến
Để tìm hiểu thêm về việc định địa chỉ IPv6 của Thread, hãy xem các phần 5.2 và 5.3 của Quy cách của Thread.
Kiểm tra kiến thức của bạn
ff03::2. Thông tin này cho chúng ta biết điều gì về thiết bị?ff03::2. Chúng thực hiện việc này trong phạm vi Mesh-Local.