Matter 會使用 IPv6 進行運作通訊,並利用 IPv6 Unicast 和 Multicast 位址分別存取節點和群組。
低電量
部分Matter節點採用有線連接,且能源預算充足,可讓無線電持續運作。其他類型的節點 (例如感應器) 必須使用電池供電多年,並在 Thread 等低功耗網路上運作無線電。Proxy 架構和Thread Sleepy End Devices 可讓全功率節點提供網路層級和應用程式層級的功能,避免子節點進行耗電交易。
Matter 的基本特點是可透過高輸送量網路媒介 (例如 Wi-Fi 和乙太網路) 運作,也能透過低延遲、低頻寬的網路 (例如 Thread) 運作。如果將所有來自 Wi-Fi 的封包橋接至 Thread,網路就會負載過重,甚至可能遭到封包淹沒。MulticastThread 的目標是在低功耗、低延遲的網狀網路中啟用 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」入門指南。
邊界路由器
那麼,節點如何在同一個 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 網路,Matter 和 Thread 都必須實作 RFC 3306 定義的Unicast前置字元型 IPv6 Multicast 位址配置方案。
這個方法可根據封包共用的 IPv6 前置字串,選取封包的目的地節點。MulticastUnicast
舉例來說,Matter Multicast 位址可能如下所示:
FF35:0040:FD<Fabric ID>00:<Group ID>
表 1 詳細說明如何建構這個位址:
Bits | 說明 |
12 位元 | 0xFF3 |
4 位元 | 0x05
範圍:網站本機 |
8 位元 | 0x00
預留 |
8 位元 | 0x40
表示 64 位元長前置字串 |
8 位元 | 0xFD
指定 ULA 前置字串 |
56 位元 | Fabric ID |
8 位元 | 0x00 |
16 位元 | 群組 ID |
詳情請參閱MulticastThread入門指南中的章節,以及 RFC 本身。
形成 IPv6 Multicast 位址時,也會包含 Fabric ID 的前 56 位元。重要含意是 Multicast 的範圍位於 Fabric 內,而 Unicast 位址則在 Fabric 之間共用。具有多個 Fabric 的節點可能有多個 Multicast 位址,定義每個 Fabric 範圍內重疊的節點群組。
通訊埠
Matter 使用通訊埠 5540 進行多點播送。