現在來看看 Thread 如何識別網路中的每部裝置 電子郵件地址類型
範圍
Thread 網路中有三個用於單點傳播定址的範圍:
- Link-Local:所有可透過單一無線電傳輸訊號存取的介面
- Mesh-Local - 可在相同 Thread 網路中連上的所有介面
- 全域:可從 Thread 網路外連上的所有介面
前兩個範圍會對應至 Thread 網路指定的前置字串。
Link-Local 的前置字串為 fe80::/16
, Mesh-Local 的前置字串為
fd00::/8
。
Unicast
用於識別單一 Thread 裝置時,會有多個 IPv6 單點傳播位址。 每個類別根據範圍和用途各有不同的函式。
在詳細介紹每種類型之前,讓我們先來進一步瞭解常見原因,也就是 轉送定位器 (RLOC)。RLOC 會根據 Thread 介面 託管在網路拓撲中的位置
轉送定位器如何產生
系統會為所有裝置指派路由器 ID 和子 ID。每個路由器都會 這類資料表,其能明確識別 也能在拓撲中管理裝置比如說 下列拓撲,其中路由器的號碼 (pentagon) 為路由器 ID 而結束裝置 (圓形) 中的數字就是子 ID:
每個子項的路由器 ID 都會對應至其父項 (路由器)。因為路由器是 非子項,則路由器的子 ID 一律為 0。這些值加總後 各個裝置在 Thread 網路中是不重複的,可用來建立 RLOC16 代表 RLOC 的最後 16 位元
以下是針對左上方節點 (Router) 計算 RLOC16 的方式 ID = 1,子 ID = 1):
RLOC16 是介面識別碼 (IID) 的一部分,對應 也就是 IPv6 位址的最後 64 位元某些 IID 可用來識別某些類型 Thread 介面例如,RLOC 的 IID 一律採用以下格式:
0000:00ff:fe00:RLOC16
IID 加上 Mesh-Local 前置字元,就會產生 RLOC。例如:
使用 fde5:8dba:82e1:1::/64
的 Mesh-Local 前置字串,也就是節點的 RLOC,
RLOC16 = 0x401
是:
這種邏輯可用於決定上述範例拓撲中所有醒目顯示節點的 RLOC:
不過,由於 RLOC 是以拓撲中節點的位置為準, 節點的 RLOC 會隨拓撲變更而變更。
舉例來說,假設節點 0x400
已從 Thread 網路中移除。節點
0x401
和 0x402
會為不同的路由器建立新連結,
並且會分別指派一個新的 RLOC16 和 RLOC:
Unicast 位址類型
RLOC 只是 Thread 裝置可用的 IPv6 單點傳播位址之一。 另一個類別的地址稱為端點識別碼 (EID), 在 Thread 網路分區中識別一個不重複的 Thread 介面。EID 為 不受 Thread 網路拓撲影響
以下詳細說明常見的單點傳播類型。
連結本機位址 (LLA) |
|
---|---|
這個 EID 可識別可透過單一無線電傳輸存取的 Thread 介面。 | |
範例 | fe80::54db:881c:3845:57f4 |
IID | 根據 802.15.4 擴充地址 |
範圍 | 店面連結 |
詳細資料 |
|
網格本機 EID (ML-EID) |
|
---|---|
可識別 Thread 介面的 EID,不受網路拓撲影響。用於連線至相同 Thread 分區內的 Thread 介面。又稱為專屬當地地址 (ULA)。 | |
範例 | fde5:8dba:82e1:1:416:993c:8399:35ab |
IID | 佣金作業完成後隨機選擇 |
範圍 | 網格本機 |
詳細資料 |
|
轉送搜尋器 (RLOC) |
|
---|---|
依據 Thread 介面在網路拓撲中的位置來識別。 | |
範例 | fde5:8dba:82e1:1::ff:fe00:1001 |
IID | 0000:00ff:fe00:RLOC16 |
範圍 | 網格本機 |
詳細資料 |
|
Anycast 定位器 (ALOC) |
|
---|---|
當目的地的 RLOC 不明時,可透過 RLOC 查詢識別 Thread 介面。 | |
範例 | fde5:8dba:82e1:1::ff:fe00:fc01 |
IID | 0000:00ff:fe00:fcXX |
範圍 | 網格本機 |
詳細資料 |
|
全域單點傳播位址 (GUA) |
|
---|---|
一個 EID,用於識別全域範圍 (除了 Thread 網路外) 的 Thread 介面。 | |
範例 | 2000::54db:881c:3845:57f4 |
IID |
|
範圍 | 全球 |
詳細資料 |
|
多點傳播
多點傳播功能可以一次將資訊傳送給多部裝置。在 Thread 網路,特定位址僅供不同的多點傳播使用 裝置群組 (視範圍而定)。
IPv6 位址 | 範圍 | 運送地址: |
---|---|---|
ff02::1 |
店面連結 | 所有 FTD 和 MED |
ff02::2 |
店面連結 | 所有 FTD |
ff03::1 |
網格本機 | 所有 FTD 和 MED |
ff03::2 |
網格本機 | 所有 FTD |
您可能會注意到,睡眠終端裝置 (SED) 並未包含在 列於上方多點傳播表中但 Thread 則是 連結本機和領域本機範圍單點傳播 (以前置碼為基準) IPv6 多點傳送 位址,用於所有 Thread 節點,包括 SED。這些多點傳播 位址是依據 Thread 網路建構而成 Mesh-Local 前置字元 (請參閱 RFC 3306) 進一步瞭解以單點傳播前置字元為基準的 IPv6 多點傳播位址。
Thread 也支援超出上述範圍的任意範圍 裝置。
Anycast
當 RLOC 的 RLOC 執行該元件時,Anycast 會將流量轉送至 Thread 介面
目的地未知。Anycast 定位器 (ALOC) 可識別
執行緒分區中有多個介面。ALOC 的後 16 位元
採用 0xfcXX
格式,也就是 ALOC16
代表 ALOC 的類型
舉例來說,0xfc01
和 0xfc0f
之間的 ALOC16 會保留給 DHCPv6
服務專員。如果特定 DHCPv6 代理程式 RLOC 不明 (可能因為
網路拓撲變更),可以傳送訊息給 DHCPv6 代理程式 ALOC,
取得 RLOC。
Thread 定義下列 ALOC16 值:
ALOC16 | 類型 |
---|---|
0xfc00 |
領先 |
0xfc01 - 0xfc0f |
DHCPv6 代理程式 |
0xfc10 - 0xfc2f |
服務 |
0xfc30 - 0xfc37 |
主席 |
0xfc40 - 0xfc4e |
鄰近探索代理 |
0xfc38 - 0xfc3f 0xfc4f - 0xfcff |
預留 |
重點回顧
涵蓋內容:
- Thread 網路包含三個範圍:Link-Local、 Mesh-Local 和 Global
- Thread 裝置有多個單點傳播 IPv6 位址
- RLOC 代表裝置在 Thread 網路中的位置
- ML-EID 是分區中 Thread 裝置的專屬 ID,應由應用程式使用
- Thread 會使用多點傳播技術,將資料轉送至多個節點和路由器群組
- 當目的地的 RLOC 不明時,Thread 會使用 Anycast
如要進一步瞭解 Thread 的 IPv6 定址功能,請參閱 執行緒規格:
隨堂測驗
ff03::2
多點傳播位址這項數據代表裝置有何意義?ff03::2
多點傳播位址。並在網格本機環境下進行上述操作
範圍。