线程和 IPv6

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

低功耗

某些 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 字节,但最大(也是典型的)最大传输单元 (MTU) 的 IPv6 数据包在 Thread 为 1280 字节。因此,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 主机可以 通信。
  • 代表 Thread 节点发布 mDNS DNS-SD 发现数据包,以便可以在相邻 基础架构网络上发现它们。

如需了解详情,请参阅 边界路由器 指南(请访问 openthread.io)。

IPv6 多播

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

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

例如,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 位 网域 ID
8 位 0x00
16 位 群组 ID

如需了解详情,请参阅 Thread 入门指南的 Multicast 部分以及 RFC 本身。

形成 IPv6 Multicast 地址时,它们还包含 网域 ID 的高 56 位。重要含义是, Multicast的范围在网域内,而Unicast 地址在网域之间共享。具有多个网域的节点可能会 有多个 Multicast 地址,这些地址定义了以每个网域为范围的重叠节点 群组。

端口

Matter 使用端口 5540 进行多播。