Thread 和 IPv6

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

低電量

部分 Matter 節點為有線節點,且具有能源預算,可讓節點持續開啟無線電。其他類型的節點 (例如感應器) 要求以電池效能多年執行,且在 Thread 等低功率網路上操作無線電。採用 Proxy 架構以及 Thread 休眠終端裝置,可讓功能完整的節點提供網路層級和應用程式層級功能,進而區隔子節點與耗用大量能源的交易。

Matter 的基本優點是,它可以同時在高處理量的網路媒介 (例如 Wi-Fi 和乙太網路),但也支援低延遲、低頻寬,例如 Thread。如果所有來自 Wi-Fi 的 Multicast 封包都橋接到 Thread,系統就會超載該網路,因此可能會使該封包洪水。Thread 的目標是在低功率低延遲網狀網路 (而非高頻寬資料傳輸) 中啟用 IPv6。雖然 Thread 在本機網路中的 ICMPv6 連線偵測 (ping) 通常在數十毫秒的 RTT 下,但在 IEEE 802.15.4 PHY 時,其總頻寬上限為 250 kbps。封包重新傳輸和負荷時,一般的最大頻寬約為 125 kbps。換句話說,使用 Wi-Fi 時的規模大小都比 Wi-Fi 來得少。

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

如要瞭解詳情,請前往 openthread.io,參閱 Thread Primer 中的 IPv6 定址

邊界路由器

那麼,兩個傳輸媒介中的節點要如何共存,使用同一種織料呢? 雖然兩個網路共用應用程式層級的 Matter 憑證,但彼此的連結技術並不一樣。在這種情境下,網路需要 Thread 邊界路由器 (BR) 才能啟用連線。BR 是存根 IPv6 路由器。

虛設常式路由器可讓虛設常式網路與一般網路互相連線。Stub 網路是「最後一里」網路,可為成員提供外部連線,但不提供其他網路之間的傳輸網路路徑。一般而言,Matter Stub 網路以 Thread 為基礎。 如要進一步瞭解虛設常式網路,請參閱 RFC 草稿

因此,BR 必須負責「虛設網路」與相鄰基礎架構網路 (區域 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 前置字串型 IPv6 Multicast 位址配置

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

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

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

表 1 詳細說明此位址的建構方式:

表 1:Unicast 前置字串型 IPv6 位址
Bits 說明
12 位元 0xFF3
4 位元 0x05

範圍:site-local

8 位元 0x00

預留

8 位元 0x40

表示長度為 64 位元的前置字串

8 位元 0xFD

指定 ULA 前置字串

56 位元 Fabric ID
8 位元 0x00
16 位元 群組 ID

詳情請參閱 Thread Primer 的 Multicast 部分和 RFC 本身。

形成 IPv6 Multicast 位址時,會一併包含 56 位元的 Fabric ID。重點在於 Multicast 的範圍位於 Fabric 內,而 Unicast 位址可在 Fabrics 之間共用。具有許多布料的節點可能具有多個 Multicast 位址,用於定義在每個架構範圍內重疊的節點群組。

通訊埠

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