线程和 IPv6

Matter 使用 IPv6 进行操作通信,并分别利用 IPv6 UnicastMulticast 寻址来访问其节点和组。

低电量

一些 Matter 节点是有线的,并且具有能源预算,可以让无线装置持续开启。其他类型的节点(如传感器)需要电池供电多年,使用低功耗网络(如 Thread)运行其无线装置。代理架构以及 Thread Sleepy End Devices 可让全功率节点同时提供网络级和应用级功能,将其子节点与高能耗事务隔离开来。

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 定义。

如需了解详情,请参阅 Thread Primer 中的 IPv6 寻址 (openthread.io)。

边界路由器

那么,节点如何在同一结构中同时在这两种传输媒介上共存? 虽然这两个网络共享应用级 Matter 凭据,但它们并不共享相同的链接技术。在这种情况下,网络需要 Thread 边界路由器 (BR) 来启用连接。BR 是存根 IPv6 路由器。

桩路由器支持桩网络和常规网络之间的连接。桩网络是一种“最后一公里”网络,可为其成员提供外部连接,但不充当其他网络之间的传输网络路径。通常,Matter 桩网络基于 Thread。如需详细了解桩网络,请参阅 RFC 草稿

因此,BR 负责充当存根网络和相邻基础架构网络(本地 Wi-Fi 或以太网)之间的链路。它们仅转发与 Thread 网络相关的数据包。

此过程通过为 Thread 和相邻基础架构网络分配不同的 IPv6 前缀来完成。因此,BR 仅向 Thread IPv6 前缀转发单播或从 IPv6 前缀转发单播。

边界路由器还负责:

  • 自动为 Thread 和相邻基础架构网络配置 IPv6 前缀和路由,以便 Thread 边界路由器两端的主机可以进行通信。
  • 代表 Thread 节点发布 mDNS DNS-SD 发现数据包,以便可以在相邻的基础架构网络上发现这些数据包。

如需了解详情,请参阅 openthread.io 上的边界路由器指南。

IPv6 多播

群组消息也很重要,因为它们允许通过 Multicast 同时控制多个 Matter 节点。为了将此流量路由到 Thread 网络,MatterThread 均实现了 RFC 3306 定义的 Unicast 基于前缀的 IPv6 Multicast 寻址方案

此方法允许根据共享 IPv6 Unicast 前缀选择 Multicast 数据包的目标节点。

例如,Matter Multicast 地址可能如下所示:

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

表 1 详细说明了该地址的构建方式:

表 1:Unicast 基于前缀的 IPv6 地址
说明
12 位 0xFF3
4 位 0x05

范围:网站本地

8 位 0x00

预留

8 位 0x40

表示 64 位长前缀

8 位 0xFD

指定 ULA 前缀

56 位 Fabric ID
8 位 0x00
16 位 群组 ID

如需了解详情,请参阅 Thread Primer 的 Multicast 部分以及 RFC。

构建 IPv6 Multicast 地址后,它们还会包含 Fabric ID 的上 56 位。重要的是,Multicast 的作用域在 Fabric 中,而 Unicast 地址在 Fabric 之间共享。具有许多结构脉络的节点可能有多个 Multicast 地址,用于定义每个结构脉络上的重叠节点组。

端口

Matter 使用端口 5540 进行多播。