在 Matter 协议的架构中,Thread 边界路由器(Thread Border Router, TBR)扮演着极其关键的角色。它不仅是物理意义上的“网关”,更是网络层(L3)的透明桥梁。
很多开发者会好奇:Wi-Fi 走的是标准的以太网 IPv6,而 Thread 走的是 802.15.4 上的 6LoWPAN,这两者链路层完全不同,TBR 是如何通过邻居发现协议(ND)让它们看起来像在一个局域网里的?
要理解这个过程,我们需要拆解 TBR 在处理 ICMPv6 ND 协议时的三个核心机制。
1. 从标准 ND 到 6LoWPAN ND 的“翻译”
在 Wi-Fi 或以太网段,IPv6 邻居发现(RFC 4861)依赖于组播(Multicast)来寻找邻居(NS/NA报文)。但在低功耗的 Thread 网络中,频繁的组播会迅速耗尽电池寿命。
因此,Thread 采用了 6LoWPAN ND (RFC 6775/8505)。
- 注册机制而非发现机制:Thread 设备(Child)在获取 IPv6 地址后,会通过单播的方式向其父节点及 TBR 发送“地址注册”(Address Registration)。
- TBR 的角色:TBR 维护着一张邻居缓存表(Neighbor Cache),记录了 Thread 网络内所有设备的 IPv6 地址与链路层地址(MAC)的映射。
当 Wi-Fi 侧的手机想要访问 Thread 设备时,它会发出一个邻居请求(NS)。此时,TBR 会充当代理(Proxy),它查表发现该地址在 Thread 侧,便会直接代为回复邻居通告(NA),告诉 Wi-Fi 侧:“这个地址在我这里,请把包发给我”。
2. 邻居发现代理(ND Proxy, RFC 4389)
TBR 实现了 RFC 4389 定义的 ND Proxy 功能。这是实现“透传”的灵魂。
在传统的路由跳转中,包的 TTL 会减 1,且需要经过复杂的路由寻址。但 Matter 要求极简的互操作性。TBR 通过以下步骤实现链路层的伪透明:
- 前缀通告(RA):TBR 会在 Wi-Fi 链路上发布路由通告(Router Advertisement),声明自己拥有通往 Thread 网络前缀(Prefix)的路径。
- 重复地址检测(DAD)的跨介质延伸:当一个新的 Thread 设备上线并尝试生成 Link-local 地址时,TBR 会把这个 DAD 请求映射到 Wi-Fi 链路。如果 Wi-Fi 上已经有人用了这个地址,TBR 会阻止 Thread 设备使用,从而保证整个大局域网(Infrastructure + Thread)的 IP 唯一性。
3. BBR(骨干路由器)与多链路透明度
在 Thread 1.2 及之后的版本中,引入了 Backbone Router (BBR) 的概念。TBR 通常就运行着 BBR 任务。
BBR 的核心任务是处理多播(Multicast)的透传。Matter 的发现机制高度依赖 mDNS(组播 DNS)。
- 组播代理:当 Wi-Fi 侧发起 mDNS 查询(发现 Matter 设备)时,TBR 会监听这些组播包,并将其转化为单播或受控的组播发送到 Thread 网络。
- 代理应答:为了节省 Thread 设备的功耗,TBR 往往会缓存 Thread 设备的 mDNS 记录。当有人询问时,TBR 直接在 Wi-Fi 侧“秒回”,而不需要去唤醒深睡眠中的 Thread 终端设备。
4. 关键数据流向示例
想象一下,你的手机(Wi-Fi)要控制一个 Thread 灯泡:
- 地址解析:手机发起 NS 请求询问灯泡的 MAC。
- TBR 拦截:TBR 收到 NS,查表确认灯泡在 Thread 侧,向手机回复自己的 Wi-Fi MAC 地址。
- 封装转发:手机将 IPv6 报文发给 TBR。TBR 剥离以太网帧头,根据 6LoWPAN 压缩规则重新封装,并将其转换为 802.15.4 帧。
- Mesh 路由:报文在 Thread Mesh 网络内路由,最终到达灯泡。
总结
TBR 之所以能实现“透传”,本质上是它在两个不同的世界里**“说谎”**:
- 对 Wi-Fi 侧,它假装自己就是那些 Thread 设备。
- 对 Thread 侧,它通过 6LoWPAN ND 维护了一个高效的地址名录,消灭了低效的广播。
这种基于 ND Proxy 和 BBR 机制的架构,正是 Matter 能够实现跨介质“即插即用”的技术底座。对于开发者而言,理解这一点,能极大地帮助排查 Matter 设备离线或搜索不到的复杂网络问题。