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 详细说明了此地址的构成方式:
位 | 说明 |
12 位 | 0xFF3 |
4 位 | 0x05
范围:本地站点 |
8 位 | 0x00
保留 |
8 位 | 0x40
表示 64 位长的前缀 |
8 位 | 0xFD
指定 ULA 前缀 |
56 位 | 织物 ID |
8 位 | 0x00 |
16 位 | 群组 ID |
如需了解详情,请参阅 Thread 启动器中的 Multicast 部分以及 RFC 本身。
形成 IPv6 Multicast 地址时,它们还包含 Fabric ID 的高 56 位。一个重要的含义是,Multicast 的范围在 Fabric 内,而 Unicast 地址在 Fabric 之间共享。具有多个 Fabric 的节点可能具有多个 Multicast 地址,这些地址定义了以每个 Fabric 为范围的重叠节点组。
端口
Matter 使用端口 5540 进行多播。