Thread 和 IPv6

Matter 會使用 IPv6 進行作業通訊,並分別利用 IPv6 UnicastMulticast 位址存取節點和群組。

低耗電

部分 Matter 節點是連線的,且有能源預算,可讓無線電持續開啟。其他類型的節點 (例如感應器) 需要使用電池運作多年,並在 Thread 等低耗電網路上運作無線電。代理程式架構搭配 Thread 睡眠終端裝置,可讓全功能的節點提供網路層和應用程式層功能,將子節點與耗電量高的交易隔離。

Matter 的基本特性是,它可在高吞吐量網路介質 (例如 Wi-Fi 和乙太網路) 上運作,也能在低延遲、低頻寬的網路上運作,例如 Thread。如果所有來自 Wi-Fi 的 Multicast 封包都橋接至 Thread,網路就會過載,甚至可能會發生網路壅塞。Thread 的目標是在低功耗、低延遲的網狀網路中啟用 IPv6,而非高頻寬資料傳輸。雖然 Thread 在本機網路中的 ICMPv6 連線偵測通常會產生低於幾十毫秒的 RTT,但其總頻寬會受限於 IEEE 802.15.4 PHY 的 250 kbps。考量封包重傳和額外負載,典型的最大頻寬約為 125 kbps。換句話說,比 Wi-Fi 慢好幾十倍。

IEEE 802.15.4 PHY 上的訊框為 127 位元組,但 Thread 中 IPv6 封包的最大傳輸單位 (MTU) 為 1280 位元組。因此,IPv6 封包通常需要分割成多個 PHY 資料框。這項程序由 RFC4944 定義。

如需更多資訊,請參閱 openthread.io 上的 Thread Primer 中的「IPv6 位址」

邊界路由器

那麼,在同一個 Fabric 中,節點如何在兩種傳輸媒介上共存?雖然兩個網路共用應用程式層級的 Matter 憑證,但並未使用相同的連結技術。在這種情況下,網路需要Thread 邊界路由器 (BR) 才能啟用連線功能。BR 是 Stub IPv6 路由器。

Stub Routers 可讓 Stub 網路和一般網路之間連線。Stub Network 是「最後一哩」網路,可為其成員提供外部連線,但不會做為其他網路之間的轉接網路路徑。通常,Matter Stub 網路是以 Thread 為基礎。如要進一步瞭解 Stub 網路,請參閱 RFC 草稿

因此,BR 負責連結 Stub 網路和相鄰基礎設施網路 (也就是本機 Wi-Fi 或乙太網路)。只會轉送與 Thread 網路相關的封包。

這項程序是透過將不同的 IPv6 前置碼指派給 Thread 和相鄰基礎架構網路來完成。因此,BR 只會將單播轉送至 Thread IPv6 前置字元,或從該前置字元轉送。

邊界路由器還負責:

  • 自動為 Thread 和相鄰基礎架構網路設定 IPv6 前置字串和路徑,讓 Thread 邊界路由器兩側的主機能夠通訊。
  • 代表 Thread 節點發布 mDNS DNS-SD 探索封包,以便在相鄰基礎架構網路中進行探索。

詳情請參閱 openthread.io 上的邊界路由器指南。

IPv6 多播

群組訊息也很重要,因為這類訊息可透過 Multicast 同時控制多個 Matter 節點。為了將這項流量路由至 Thread 網路,MatterThread 都會實作 RFC 3306 定義的 Unicast Prefix-based IPv6 Multicast 位址設定方案

這個方法可讓您根據共用的 IPv6 Unicast 前置字串,選取 Multicast 封包的目的節點。

舉例來說,Matter Multicast 位址可能如下所示:

FF35:0040:FD<Fabric ID>00:<Group ID>

表格 1 詳細說明這個地址的建構方式:

表 1:Unicast 以前置碼為準的 IPv6 位址
位元 說明
12 位元 0xFF3
4 位元 0x05

範圍:網站專用

8 位元 0x00

保留

8 位元 0x40

表示 64 位元長的前置字串

8 位元 0xFD

指定 ULA 前置字串

56 位元 布料 ID
8 位元 0x00
16 位元 群組 ID

如需進一步瞭解相關資訊,請參閱 Thread Primer 的 Multicast 專區,以及 RFC 本身。

形成 IPv6 Multicast 位址時,也會納入 Fabric ID 的上半部 56 位元。重要的含意是,Multicast 的範圍在 Fabric 內,而 Unicast 位址則在 Fabric 之間共用。擁有多個結構體的節點可能會有多個 Multicast 位址,定義在每個結構體中重疊的節點群組。

通訊埠

Matter 會使用 5540 連接埠進行多播。