背景
我们先了解下传统的拓扑网络:
-
最常见最广泛使用的星型结构是以中央节点作为核心,其他节点都连接至中央节点上,这种结构的成本较高、可靠性较低,但是其延迟小、结构简单便于管理。
-
总线型结构则是各个网络设备都挂接在一条总线上,没有明显的中心,优点是结构简单、可扩展性好,但是缺点同样明显,比如维护困难、分支结构故障查找困难。
-
为了在使用中更安全、更高效,目前绝大部分运行中的商用局域网都采用多种网络拓扑模式组合的方式,尽可能发挥局域网的性能并避免阻碍的产生。
目前典型的局域网布置都采用星型结构或者多层星型结构,网络通过主路由器接入,再分配至各个分路由器,最后连接至不同的主机和设备上。这样的布线实现起来比较简单,并且所需的线缆数量也比较少。这样的布置方式和布置思想横跨了有线和无线时代,比如在家庭中,用户会从电信、联通等网络服务商处接入网络,再通过无线路由器转出多路信号或者无线信号供家中的多个有线、无线设备使用,这也是一个典型的星形结构。
随着互联网的大爆发和无线网络的发展,之前的星型网络和总线型网络的问题数据中心暴露的愈发突出,比如数据中心的安全性和可靠性、总线型布置维护难度等。
自2010年 BLE标准颁布以来,其在IOT领域大放异彩,可物有所长,必有其短,在其初级阶段缺乏的一件事是支持多对多拓扑(网状网络),即其中多个BLE设备可以相互手法消息并将消息中继到网络中的其他设备。于是,在2017年7月Bluetooth SIG发布了新的支持方案——Bluetooth mesh standard,而其具有的网状网络结构在处理上诉瓶颈时也更加契合时代发展。
蓝牙mesh网络的目标是增加 BLE 网络的范围的同时,增加更多利用 BLE 技术的工业应用。在蓝牙mesh发布之前,BLE只支持两种拓扑:
- 一对一:当两个 BLE 设备相互连接时。
- 一对多:当 BLE 设备处于广播状态时,例如在 Beacons 中。
借助蓝牙mesh网络,为 BLE 网络引入了一种新的拓扑结构:设备现在可以在多对多拓扑中运行。
Mesh网络有两个主要好处:
- 扩展范围:由于节点可以通过它们之间的节点将消息中继到远处的节点,这
允许网络扩展其范围并扩大设备的覆盖范围。 - Self-healing 自愈能力:自愈是指不存在单点故障的事实。如果一个节点从网状网络掉线,其他节点仍然可以参与并向另一个节点发送消息。然而,这仅适用于蓝牙网状网络,因为它具有不同的网络中的节点类型,其中一些其他节点可能依赖。我们会本章稍后将介绍不同类型的节点。
以下是有关蓝牙网状网络的一些重要说明:
- 蓝牙网状网络支持所有 BLE 版本(即使是原始版本 4.0)并且不需要更改硬件。
但是,它确实需要安装设备的软件更新字段才能支持该标准。 - 蓝牙网状网络是独立于 BLE 的标准,并且有自己的规范文档,可在此链接中找到。
- 蓝牙网状网络 1.0 版不支持 任何蓝牙 5 功能,例如广播扩展和编码的 PHY。
这在未来的版本中很可能会改变。
术语
属于蓝牙网状网络一部分的设备称为 Node / 节点。 不属于网络的设备称为未配置设备。未配置的设备无法发送或接收网格消息;但是,它会向 Provisioners 宣传其存在。
Provisioner 将在其经过身份验证后邀请未配置的设备进入网状网络,将未配置的设备转换为节点。 一旦未配置的设备被配置,它就会加入网络并成为一个节点。
一个节点可能包含多个可以独立控制的部分。 例如,一个灯具可能包含多个可以独立打开/关闭的灯泡。 单个节点的这些不同部分称为 Elements / 元素。
Messages / 消息 在蓝牙网状网络中,网络内的所有通信都是面向消息的,节点发送消息以控制或中继信息,消息是调用节点操作的机制。如果一个节点需要报告它的状态,它也会通过消息发送它。给定的消息类型表示对一个状态或多个状态值集合的操作。
蓝牙mesh中有三种类型的消息,每一种都由一个唯一的操作码(操作码)定义:
- GET 消息:从一个或多个节点请求状态的消息。
- SET 消息:更改给定状态值的消息。
- 状态消息:状态消息用于不同的场景:
- 响应 GET 消息时发送,包含状态值。
- 响应已确认的 SET 消息时发送
- 独立于任何消息发送以报告元素的状态。一个示例是由在发送此消息的元素上运行的计时器触发的消息。某些消息需要原始消息的接收者发送确认消息。
确认消息有两个目的:
- 确认收到消息。
- 返回与接收到的消息相关的数据。
在发送方未收到对消息的响应或收到意外响应的情况下,发送方可以重新发送该消息。一个节点收到的多个确认消息不影响行为(就好像消息收到一次一样) 。
蓝牙网状网络中的消息必须发送到地址或从地址发送。 Address / 地址分为三种类型:
- Unicast Address / 单播地址:唯一标识在provisioning / 配置过程中分配的单个节点的地址。
- Group Address / 组地址:用于标识一组节点的地址。组地址通常反映节点的物理分组,例如特定房间内的所有节点。组地址可以是:
- 由蓝牙 SIG 定义,也称为 SIG 固定组地址。这些包括全代理、全朋友、全中继和全节点组地址。
- 动态组地址,由用户通过配置应用程序定义。
- Virtual Address / 虚拟地址:可以分配给一个或多个元素的地址,跨越一个或多个节点。它充当label / 标签并采用 128 位 UUID 的形式,任何元素都可以与之关联。虚拟地址很可能在制造时预先配置。
在蓝牙网状网络中交换消息的方式是通过发布订阅模式。 来自维基百科关于发布订阅模式的页面:
在软件架构中&