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 字节,但 中 IPv6 数据包的最大(也是典型)最大传输单元 (MTU) 为 1280 字节。Thread因此,IPv6 数据包通常需要拆分为多个 PHY 帧。 此过程由 RFC4944 定义。
如需了解详情,请参阅 IPv6 寻址 在 Thread 入门指南中 openthread.io。
边界路由器
那么,节点如何在同一网域中同时存在于两种传输介质上? 虽然这两个网络共享应用级 Matter 凭据,但它们不共享相同的链接技术。在这种情况下,网络需要 Thread 边界路由器 (BR) 来启用连接。BR 是 Stub IPv6 路由器。
Stub 路由器 实现了 Stub 网络和常规网络之间的连接。 Stub 网络 是一种“最后一英里”网络,可为其成员提供外部连接,但不能作为其他网络之间的中转网络路径。通常,Matter Stub 网络基于 Thread-。 如需详细了解 Stub 网络,请参阅 RFC 草案 。
因此,BR 负责充当 Stub 网络与 相邻基础架构网络 (即本地 Wi-Fi 或 以太网网络)之间的链接。它们仅转发与 Thread网络相关的数据包。
此过程是通过为 Thread和相邻基础架构网络分配不同的 IPv6 前缀来完成的。因此,BR 仅转发到 Thread IPv6 前缀或从 Thread IPv6 前缀发出的单播。
边界路由器还负责:
- 自动为 Thread 和相邻基础架构网络配置 IPv6 前缀和路由,以便 边界路由器任一侧的 Thread 主机都可以 通信。
- 代表 Thread 节点发布 mDNS DNS-SD 发现数据包,以便可以在相邻 基础架构网络上发现这些节点。
如需了解详情,请参阅 边界路由器 指南(请访问 openthread.io)。
IPv6 多播
群组 消息也很重要,因为它们允许通过 同时控制多个 Matter 节点通过 Multicast。为了将此流量路由到 Thread 网络,both Matter 和 Thread 都实现了 Unicast Prefix-based IPv6 Multicast Addressing Scheme 定义的 RFC 3306。
借助此方法,您可以根据 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 地址时,它们还包含 网域 ID 的高 56 位。重要含义是, Multicast的范围在网域内,而Unicast 地址在网域之间共享。具有多个网域的节点可能会 有多个 Multicast 地址,这些地址定义了以每个网域为范围的重叠节点 群组。
端口
Matter 使用端口 5540 进行多播。