IPv6 位址

前往 GitHub 查看原始碼

現在來看看 Thread 如何識別網路中的每部裝置 電子郵件地址類型

範圍

OT 範圍

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:

OT RLOC 拓撲

每個子項的路由器 ID 都會對應至其父項 (路由器)。因為路由器是 非子項,則路由器的子 ID 一律為 0。這些值加總後 各個裝置在 Thread 網路中是不重複的,可用來建立 RLOC16 代表 RLOC 的最後 16 位元

以下是針對左上方節點 (Router) 計算 RLOC16 的方式 ID = 1,子 ID = 1):

延長賽 RLOC16

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:

執行地址的 OT 拓撲

不過,由於 RLOC 是以拓撲中節點的位置為準, 節點的 RLOC 會隨拓撲變更而變更。

舉例來說,假設節點 0x400 已從 Thread 網路中移除。節點 0x4010x402 會為不同的路由器建立新連結, 並且會分別指派一個新的 RLOC16 和 RLOC:

變更後的 OT 拓撲

Unicast 位址類型

RLOC 只是 Thread 裝置可用的 IPv6 單點傳播位址之一。 另一個類別的地址稱為端點識別碼 (EID), 在 Thread 網路分區中識別一個不重複的 Thread 介面。EID 為 不受 Thread 網路拓撲影響

以下詳細說明常見的單點傳播類型。

這個 EID 可識別可透過單一無線電傳輸存取的 Thread 介面。
範例fe80::54db:881c:3845:57f4
IID根據 802.15.4 擴充地址
範圍店面連結
詳細資料
  • 用於探索鄰點、設定連結及交換轉送資訊
  • 非可路由的位址
  • 一律加上 fe80::/16 前置字串

網格本機 EID (ML-EID)

可識別 Thread 介面的 EID,不受網路拓撲影響。用於連線至相同 Thread 分區內的 Thread 介面。又稱為專屬當地地址 (ULA)。
範例fde5:8dba:82e1:1:416:993c:8399:35ab
IID佣金作業完成後隨機選擇
範圍網格本機
詳細資料
  • 不會隨著拓撲變更而改變
  • 應由應用程式使用
  • 一律加上前置字串 fd00::/8

轉送搜尋器 (RLOC)

依據 Thread 介面在網路拓撲中的位置來識別。
範例fde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
範圍網格本機
詳細資料
  • 在裝置連接到網路後產生
  • 用於在 Thread 網路內傳送 IPv6 資料元
  • 隨著拓撲變更而變更
  • 通常不會供應用程式使用

Anycast 定位器 (ALOC)

當目的地的 RLOC 不明時,可透過 RLOC 查詢識別 Thread 介面。
範例fde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
範圍網格本機
詳細資料
  • fcXX = ALOC 目的地,會查詢適當的 RLOC
  • 通常不會供應用程式使用

全域單點傳播位址 (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 網格本機 所有 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 的類型

舉例來說,0xfc010xfc0f 之間的 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 定址功能,請參閱 執行緒規格

隨堂測驗

哪三個範圍可用於 Thread 網路中的單點傳播位址?
私人
答錯了。
本機介面
答錯了。
店面連結
答對了。
本機網站
答錯了。
網格本機
答對了。
全球
答對了。
如果裝置兒童 ID 為 0,代表什麼意思?
這部裝置是兒童。
答錯了。
裝置為 REED。
很接近,但答錯了。
該裝置是路由器。
沒錯。路由器的子項 ID 一律為 0。
攝影機是 Thread 網路中的節點,會收到新的 RLOC16 和 RLOC請問可能原因為下列哪些事件?
有人從遠端下載了相機中的相片。
答錯了。這個事件在 Thread 不會有任何影響 更是如此
路由器已中斷網路連線。
沒錯。路由器停止運作時,系統會透過網路 因此,拓撲可能會改變裝置本身 取得新的 RLOC 版本
攝影機進入睡眠模式,此模式變更了網路拓撲。
答錯了。進入睡眠模式不一定會導致裝置產生 接收新的網路位址
Thread 網路中的裝置會訂閱 ff03::2 多點傳播位址這項數據代表裝置有何意義?
它是極簡風裝置 (MED)。
答錯了。
它是完整的裝置 (FED)。
答錯了。(提示:不一定是 FED)。
這是一款極簡 Thread 裝置 (MTD)。
答錯了。
它是 Full Thread 裝置 (FTD)。
沒錯。只有全 Thread 裝置會訂閱 ff03::2 多點傳播位址。並在網格本機環境下進行上述操作 範圍。
Thread 會使用哪種類型的位址和轉送功能將資料轉送給 節點和路由器群組呢?
單點傳播
答錯了。
任意傳播
答錯了。
多點傳播
答對了。
廣播訊息
答錯了。
Thread 裝置會在 收件者的郵件收件者 RLOC 不明?
單點傳播
答錯了。
任意傳播
沒錯。Anycast 允許裝置連線至未發生 RLOC 的節點 解決裝置的 ALOC 問題
多點傳播
答錯了。
廣播訊息
答錯了。