Matter 使用 IPv6 进行操作通信,并利用 IPv6 Unicast 和 Multicast 寻址来分别访问其节点和群组。
低功率
某些 Matter 节点采用有线连接,并且具有允许其无线装置持续开启的能耗预算。其他类型的节点(例如传感器)需要依靠电池运行数年,并在 Thread 等低功耗网络上运行其无线装置。代理架构与 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 低几个数量级。
IEEE 802.15.4 PHY 上的帧为 127 字节,但 Thread 中 IPv6 数据包的最大(也是典型)最大传输单元 (MTU) 为 1280 字节。因此,IPv6 数据包通常需要拆分为多个 PHY 帧。 此过程由 RFC4944 定义。
如需了解详情,请参阅 openthread.io 上的 Thread 基础知识中的 IPv6 寻址。
边界路由器
那么,节点如何在同一网络结构中同时存在于这两种传输介质上? 虽然这两个网络共享应用级 Matter 凭据,但它们不共享相同的链路技术。在此场景中,网络需要 Thread 边界路由器 (BR) 来实现连接。BR 是 Stub IPv6 路由器。
桩路由器可在桩网络和常规网络之间建立连接。桩网络是一种“最后一英里”网络,可为其成员提供外部连接,但不能作为其他网络之间的传输网络路径。通常,Matter桩网络基于 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 定义的基于前缀的 IPv6 Unicast 寻址方案。Multicast
此方法允许根据 Multicast 数据包的共享 IPv6 Unicast 前缀来选择其目标节点。
例如,Matter Multicast 地址可能如下所示:
FF35:0040:FD<Fabric ID>00:<Group ID>
表 1 详细说明了此地址的构成方式:
Bits | 说明 |
12 位 | 0xFF3 |
4 位 | 0x05
范围:本地站点 |
8 位 | 0x00
reserved |
8 位 | 0x40
表示 64 位长前缀 |
8 位 | 0xFD
指定 ULA 前缀 |
56 位 | Fabric ID |
8 位 | 0x00 |
16 位 | 群组 ID |
如需了解详情,请参阅 Thread 启动器中的 Multicast 部分以及 RFC 本身。
形成 IPv6 Multicast 地址时,它们还包含 Fabric ID 的高 56 位。一个重要的含义是,Multicast 的范围在 Fabric 内,而 Unicast 地址在 Fabric 之间共享。具有多个光纤网络的节点可能具有多个 Multicast 地址,这些地址定义了以每个光纤网络为范围的重叠节点组。
端口
Matter 使用端口 5540 进行多播。