Thread 和 IPv6

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

低耗電

部分 Matter 節點採用有線連接,且具備能源預算,可讓無線電持續運作。其他類型的節點 (例如感應器) 必須使用電池供電多年,並在 Thread 等低功耗網路上運作無線電。Proxy 架構和Thread休眠終端裝置可讓全功率節點提供網路層級和應用程式層級的功能,避免子節點進行耗電交易。

Matter 的基本特點是可透過高輸送量網路媒介 (例如 Wi-Fi 和乙太網路) 運作,也能透過低延遲、低頻寬的網路 (例如 Thread) 運作。如果將所有 Wi-Fi 封包橋接至 Multicast Thread,網路就會過載,甚至可能遭到大量封包攻擊。Thread 的目標是在低功耗、低延遲的網狀網路中啟用 IPv6,而非高頻寬資料傳輸。雖然區域網路中的 ICMPv6 ping 通常在幾十毫秒的 RTT 內,但 IEEE 802.15.4 PHY 的總頻寬限制為 250 kbps。Thread考量封包重傳和額外負荷,一般最大頻寬約為 125 kbps。換句話說,比 Wi-Fi 少好幾個數量級。

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

詳情請參閱 Thread openthread.io openthread.io的「IPv6 Addressing」(IPv6 定址) 入門指南。

邊界路由器

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

存根路由器可讓存根網路與一般網路連線。存根網路是「最後一哩」網路,可為成員提供外部連線,但不會做為其他網路之間的傳遞網路路徑。通常,MatterStub 網路Thread是以如要進一步瞭解存根網路,請參閱 RFC 草案

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

方法是為 Thread 和相鄰基礎架構網路指派不同的 IPv6 前置碼。因此,BR 只會將單點播送轉送至 Thread IPv6 前置字元,或從該前置字元轉送。

邊界路由器也負責:

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

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

IPv6 多點傳播

群組訊息也很重要,因為這類訊息可透過 Multicast 同時控制多個 Matter 節點。如要將這項流量導向 Thread 網路,MatterThread 都會實作 RFC 3306 定義的Unicast前置字元型 IPv6 Multicast 位址配置方案

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

舉例來說,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 位元 Fabric ID
8 位元 0x00
16 位元 群組 ID

詳情請參閱 Thread 基礎概念的 Multicast 一節,以及 RFC 本身。

形成 IPv6 Multicast 位址時,也會包含 Fabric ID 的前 56 位元。重要含意是  的範圍位於 Fabric 內,而  位址則在 Fabric 之間共用。MulticastUnicast具有多個 Fabric 的節點可能有多個 Multicast 位址,定義每個 Fabric 範圍內重疊的節點群組。

通訊埠

Matter 使用通訊埠 5540 進行多點播送。