3. 测试环境搭建
Matter 的互操作测试不是“把设备连上手机”这么简单。一次可信的测试,需要同时具备被验证对象、控制端、底层承载网络、IPv6 转发能力,以及可回溯的抓包与日志证据链。本节围绕这五类要素,说明如何把它们部署成一张可复现、可观测、可排障的测试网络。
一、先明确各角色在测试中的定位
DUT(Device Under Test)是被测设备,通常是一台待认证或待验证的 Matter 终端,例如智能灯、插座、传感器或门锁。控制器(Controller)是发起配网、订阅、读写属性的实体,常见形态是手机 App、树莓派上的 chip-tool,或基于 Python/Java 的 Matter SDK 控制器。Thread 边界路由器(Thread Border Router,TBR)负责把 Thread 802.15.4 网状网络与 IPv6 主干网打通,是 Thread 设备接入 Matter 的关键枢纽。Wi-Fi AP 为 Wi-Fi 类 Matter 设备提供 2.4GHz 接入,并承载 IPv6 前缀下发。IPv6 网络是 Matter 的“通用语言”,所有节点必须获得全局或 ULA 地址并具备端到端可达性。抓包与日志工具则提供证据:无线侧看 802.15.4 或 Wi-Fi 帧,IP 侧看 ICMPv6、UDP、mDNS,应用侧看 Matter 交互模型报文。
二、推荐组网拓扑
建议采用“双承载并行、单主干汇聚”的结构:一台支持 IPv6 的交换机或路由器作为主干,Wi-Fi AP 与 Thread 边界路由器都上联到主干;控制器接在同一主干上,保证与两类设备处于同一 IPv6 可达域。这样做的目的是让 Wi-Fi 设备与 Thread 设备共享同一 Matter Fabric,控制器无需跨网段即可发现和操作它们。
三、IPv6 与地址规划
Matter 依赖 IPv6,因此第一步是确认主干网络能下发可路由前缀。Wi-Fi AP 通常通过 RA(Router Advertisement)向 Wi-Fi 设备下发前缀,设备用 SLAAC 生成地址。Thread 侧则由边界路由器通过 DHCPv6-PD 或手动配置获得前缀,再通过 Thread 网络数据(Network Data)把前缀分发给 Thread 节点。测试前建议固定前缀,例如使用 ULA 前缀 fd00:1234:5678::/64,避免每次重启后地址漂移导致控制器找不到设备。
验证方法:在控制器主机上执行 ping6 fd00:1234:5678::1 或对 DUT 地址执行 ping6,确认 ICMPv6 可达;再用 ip -6 neigh 查看邻居表,确认 DUT 的链路层地址已解析。若 ping 不通,优先检查 AP 是否开启 IPv6、是否隔离了客户端,以及边界路由器是否把前缀正确注入 Thread 网络。
四、控制器与 Fabric 准备
控制器建议使用 Linux 主机运行 chip-tool,便于脚本化。首次使用需初始化 Fabric 与控制器节点 ID:
# 初始化控制器 Fabric
./chip-tool pairing code 0x1234 20202021
# 读取 DUT 的 OnOff 属性
./chip-tool onoff read on-off 0x1234 1
# 订阅属性变化
./chip-tool onoff subscribe on-off 1 10 0x1234 1
其中 0x1234 是节点 ID,20202021 是示例配网码,1 是端点号。配网成功后,控制器与 DUT 处于同一 Fabric,后续读写、订阅、场景控制都基于该 Fabric 的 CASE 会话。若使用手机 App 作为控制器,则需确保手机与 DUT 在同一 IPv6 可达域,并关闭可能干扰 mDNS 的客户端隔离功能。
五、抓包与日志部署
抓包要覆盖三个层面。无线侧:Thread 使用 nRF 52840 Dongle 配合 nRF Sniffer 抓 802.15.4 帧,Wi-Fi 使用支持监听模式的网卡抓 802.11 帧。IP 侧:在主干交换机镜像口或控制器主机上抓 ICMPv6、UDP 5540(Matter 端口)、mDNS 5353。应用侧:chip-tool 开启 --trace 输出交互模型报文,边界路由器开启 ot-br-posix 日志。
建议把时间同步作为部署的一部分:所有抓包主机与 DUT 通过 NTP 对齐时钟,否则多份日志无法按时间轴拼接。抓包文件按“日期-场景-设备”命名,例如 20240612_thread_commission.pcapng,便于复盘时快速定位。
六、组网后的连通性检查清单
| 检查项 | 命令/方法 | 预期结果 |
|---|---|---|
| IPv6 前缀下发 | 控制器执行 ip -6 addr | 获得全局或 ULA 地址 |
| DUT 可达 | ping6 <DUT地址> | ICMPv6 回显正常 |
| mDNS 发现 | avahi-browse -r _matter._tcp | 能看到 DUT 服务实例 |
| Thread 网络数据 | 边界路由器 ot-ctl netdata show | 包含 DUT 前缀与路由 |
| 抓包可见性 | Wireshark 过滤 udp.port==5540 | 能看到 Matter 交互报文 |
完成以上部署后,测试环境应达到三个标准:控制器能发现并配网 DUT;DUT 在 Wi-Fi 与 Thread 两种承载下都能获得 IPv6 地址并响应;抓包与日志能完整记录配网、订阅、控制三类关键交互。只有环境本身可复现、可观测,后续的互操作测试结论才具备可信度。