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