Matter 會使用 IPv6 進行運作通訊,並分別運用 IPv6 Unicast 和 Multicast 位址存取節點和群組。
低耗電
部分 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 網路,Matter 和 Thread 都會實作 RFC 3306 定義的Unicast前置字元型 IPv6 Multicast 位址配置方案。
這個方法可根據封包共用的 IPv6 前置字串,選取封包的目的地節點。MulticastUnicast
舉例來說,Matter Multicast 位址可能如下所示:
FF35:0040:FD<Fabric ID>00:<Group ID>
表 1 詳細說明如何建構這個位址:
位元 | 說明 |
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 進行多點播送。