概述
名词解释
名词 | 释义 |
---|---|
Thread | 一种低功耗,低传输速率的网络协议 |
Border Router | 边界路由器用于将Thread (IEEE802.5.14)网络连接到其他IP-based 网络,例如Wi-Fi(IEEE 802.11) 或Ethernet(以太网)。 Thread 网络至少需要一个边界路由器才能连接到其他网络。 |
Leader Router | 主路由器,负责管理Thread网络中所有的路由器,选举而来,且不会一成不变 |
PAI | Product Attestation Intermediate,产品证明中间证书 |
Ipv6 | 互联网下一代协议,旨在取代Ipv4 |
Flooding | 泛洪,数据逐级传递的一种方式 |
Routing | 路由,数据自动最短寻址传递 |
SRP | Service Registry Protocol |
OTBR | OpenThread开源协议下的边缘路由器,即Open Thread Border Router |
Thread协议
传统的 BLE 和 ZigBee 等协议的物理层是 IEEE 802.15.4。一句话概括 Thread 协议:在 IEEE 802.15.4 物理层上运行 IPv6,让传统互联网协议(如 TCP 和 UDP)能无缝衔接到支持 Thread 协议的物联网设备上,彻底捅破互联网和物联网之间的窗户纸。这样,我们每台物联网设备都有了一个 IPv6 地址。举个直观的例子,在同一个局域网中,电脑可以 ping 通支持 Thread 的物联网设备。
Thread
协议是用来干嘛
Thread 几乎可以说是为Matter量身打造的:它同样基于 IEEE 802.15.4,但在传输层实现了 IPv6 支持,彻底解放了设备互联的限制,还允许低功耗设备直接接入互联网。产品开发人员和消费者可以轻松地通过Thread安全地将250多个设备组成一个低功耗无线网状网络(mesh),而且该网络中的每个设备都可以连接Internet,访问云服务。它还比 Zigbee 支持更强的安全标准。不过,Thread 没有定义顶层的应用协议,而是需要承载其它顶层协议,例如 HAP(HomeKit Accessory Protocol)、Matter 等公开协议,或者由厂商自行设计的私有协议。这也就意味着它无法直接替代 Zigbee 这类完整的解决方案。但是本篇文章的讨论范围仅限Matter下的Thread协议。
OpenThread协议
OpenThread 是 Google 对 Thread 协议的开源实现,简单理解就是Thread是协议规范,OpenThread即Thread实现SDK,根据官网的描述,该项目实现了 Thread 协议网络层以及 Thread 规范定义的设备角色(device role)包含边界路由器在内的所有功能。目前涂鸦Thread设备均基于OpenThread SDK开发
Thread与涂鸦当前的协议对比
当前涂鸦配网类型中,与之相近的大约是BLE Mesh和Zigbee协议
三种协议都可以简单地分为三层:应用层、网络层和射频层(物理层)。为了方便没有网络基础的读者朋友正确理解这三层,我们可以继续使用上一篇文章中的那个寄快递的例子:
物理层,定义的是快递运送的方式,一个包裹可能是由自行车、汽车运送的,也可能是由飞机、火车运送的。
而网络层,就是负责运输包裹的快递公司,不同的公司对于快件的处理和方式都不一样,寄送不同大小的包裹效率上也有区别。其他的快递公司也不知道这个快递公司的快递单号是怎么处理的,但不同的快递公司也可以使用相同的运送方式(物理层),比如上图中的 Zigbee 和 Thread 物理层是一样的。
应用层,则是包裹信件里面所用的语言,不同的语言也需要相应的使用者才能读得懂。
和蓝牙 Mesh 与 Zigbee 相比,Thread 并没有定义自己的应用层;换个说法就是 Thread 更加自由,开发者可以通过 Thread 来传输自己的应用协议,matter 就是其中的一种。
此外,Thread 并不止局限于 matter 作为应用层,其他比如 HomeKit 或者 Google Home 现在也在使用 Thread 来传输自己的应用层。而相比之下 Zigbee 和蓝牙 Mesh 定义了应用层之后,简化了开发的过程但是也限制了其使用范围。
BLE MESH消息传递方式
手机 --> 路由器 --> 云端(处理信息) --> 路由器 --> 蓝牙Mesh 网关 --> 蓝牙 Mesh Flooding.......(泛洪) --> 灯(蓝牙 Mesh)
Zigbee消息发送方式
手机 --> ZigBee 网关(处理信息) --> Zigbee Routing --> 灯(Zigbee)
Thread mesh消息发送方式
手机 --> Thread Border Router --> Thread Routing --> 灯(Thread)
什么是边界路由器,以及边界路由器的作用
边界路由器就是联通不同物理层的桥梁,Thread和WIFI基于不同的物理层,边界路由器能够打通壁垒,成为两边友谊的桥梁。
或者再往上层看一点,更直白的讲,Thread网络仅有ipv6地址,而一般的云服务器或者家庭路由器都是ipv4地址,如何让Thread网络中的设备与纯IPv4地址通信?要想将数据包通过家里的WiFi网卡发送出去,必须将源地址(ipv6)通过NAT转化为家里局域网同网段的地址(ipv4)。这里需要引入一个边界路由器的概念,如图:
Matter与Thread网络的关系
Thread网络是什么,为什么会出现在Matter中?再次不得不强调Matter有一个基础特性,基于IP网络。
Matter 是基于互联网协议 (Internet Protocol, IP) 定义的通用应用层。因此,无论底层采用何种 IP 网络协议,Matter 应用层都能够保证设备间的互操作性。在目前1.1版本的Matter协议中,它首先支持了以太网、Wi-Fi 和 Thread 网络协议。
设计
Matter拓扑结构
在局域网中实现设备的端到端通信是 Matter 的关键特点之一。它支持设备跨以太网、Wi-Fi 和 Thread 网络进行通信。例如,一个 Thread Matter 开关可以控制一个 Wi-Fi Matter 灯泡;同理,一个 Wi-Fi Matter 开关也可以控制一个 Thread Matter 灯泡,而且这些过程均无需借助手机 App、云或其他特别操作。
Thread网络双向连接
Thread 边界路由器负责在 Wi-Fi 和 Thread 网络之间转发 IP 帧。与网关/桥接设备不同的是,Thread 边界路由器仅需专注于处理 IP 层的通信,而无需考虑应用层的数据内容,或处理应用层交互。简单的说为什么他叫路由器,但他可能是个网卡,可能是个网关,甚至可能是个音响,因为他的作用就是数据交换。
Thread网络的服务发现
Matter 采用标准的基于 DNS 的服务发现 (DNS-Based Service Discovery, DNS-SD) 协议,进行服务广播和发现。在 Wi-Fi 和以太网络中,DNS-SD 协议使用多播 DNS (mDNS) 方式。
然而,多播和广播在 Thread 等低功耗 mesh 网络中的效率并不高。因此 Thread 特别引入了服务注册协议 (Service Registry Protocol, SRP),通过单播进行服务发现。
通常情况下,Thread 边界路由器充当 SRP 服务器和代理 (Advertising Proxy):Thread 设备向 Thread 边界路由器注册自己的服务,接着 Thread 边界路由器通过多播 DNS 向 Wi-Fi 网络广播所有 Thread 设备的服务信息。
Thread 边界路由器还实现了 DNS-SD 发现代理 (Discovery Proxy),这样 Thread 设备也可以发现 Wi-Fi 网络中的服务。
常见的边界路由器
苹果的HomePod,AppleTV网线版本,谷歌音箱,Alexa音箱都是常见的边界路由器设备。