文章来源:https://blog.csdn.net/espressif/article/details/122746248
今天,让我们回到 Matter 的一个基础特性:基于 IP 网络。
Matter 是基于互联网协议 (Internet Protocol, IP) 定义的通用应用层。因此,无论底层采用何种 IP 网络协议,Matter 应用层都能够保证设备间的互操作性。在即将发布的第一版 Matter 协议中,它将首先支持以太网、Wi-Fi 和 Thread 网络协议。
Matter 的协议层结构
以太网和 Wi-Fi 都是众所周知的网络协议,而 Thread 则是一个比较新的概念。
简单来说,Thread 是一套基于 IPv6 的低功耗 mesh 网络协议,常用于物联网产品。Thread 协议是基于 IEEE 802.15.4 技术,因此 Thread 网络中的设备无法直接与 Wi-Fi 或以太网设备通信。为了使 Thread 设备与其他网络中的设备互联,我们需要在 Matter 的拓扑结构中增加一个特殊设备:Thread 边界路由器。
下图展示了典型的 Matter 协议拓扑结构:
Matter 拓扑结构
在本地网络中实现设备的端到端通信是 Matter 的关键特点之一。它支持设备跨以太网、Wi-Fi 和 Thread 网络进行通信。例如,一个 Thread Matter 开关可以控制一个 Wi-Fi Matter 灯泡;同理,一个 Wi-Fi Matter 开关也可以控制一个 Thread Matter 灯泡,而且这些过程均无需借助手机 App、云或其他特别操作。
接下来,我们将通过一个由 Thread 边界路由器连接 Wi-Fi 和 Thread 设备的例子,介绍 Thread 边界路由器如何支持 Matter 协议中的 (a) 双向连接和 (b) 服务发现功能。
双向连接
Thread 边界路由器负责在 Wi-Fi 和 Thread 网络之间转发 IP 帧。与网关/桥接设备不同的是,Thread 边界路由器仅需专注于处理 IP 层的通信,而无需考虑应用层的数据内容,或处理应用层交互。
Thread 网络的单播寻址有三个作用域:
Thread 边界路由器为其所在 Thread 网络配置 OMR (Off-Mesh Routable) Prefix,每个 Thread 设备相应添加一个 OMR 地址作为全局单播地址。Thread 边界路由器通过向 Wi-Fi 网络发送包含 IPv6 Route Information Option (RIO) 的 Router Advertisement (RA) 数据帧,来宣布此 OMR Prefix 可抵达 Thread 网络。
同理,Thread 边界路由器也会通知 Thread 网络设备,通往 Wi-Fi 网络的路由信息。这个过程中,路由信息是通过 Thread Network Data 在 Thread 网络中传播,而非使用 IPv6 Neighbor Discovery 协议。
Thread 边界路由器的双向连接
此时,Thread 和 Wi-Fi 网络中的设备都已经知道可以通过 Thread 边界路由器转发, 并通往对方网络的路由信息。
服务发现
Matter 采用标准的基于 DNS 的服务发现 (DNS-Based Service Discovery, DNS-SD) 协议,进行服务广播和发现。在 Wi-Fi 和以太网络中,DNS-SD 协议使用多播 DNS (mDNS) 方式。
然而,多播和广播在 Thread 等低功耗 mesh 网络中的效率并不高。因此 Thread 特别引入了服务注册协议 (Service Registry Protocol, SRP),通过单播进行服务发现。
Thread 边界路由器的服务发现
通常情况下,Thread 边界路由器充当 SRP 服务器和代理 (Advertising Proxy):Thread 设备向 Thread 边界路由器注册自己的服务,接着 Thread 边界路由器通过多播 DNS 向 Wi-Fi 网络广播所有 Thread 设备的服务信息。
Thread 边界路由器还实现了 DNS-SD 发现代理 (Discovery Proxy),这样 Thread 设备也可以发现 Wi-Fi 网络中的服务。
|