期待已久的蓝牙网格(BlueTooth Mesh)网络技术终于可以应用了。 蓝牙技术联盟在2017年6月份正式发布, 在现有的蓝牙网络拓扑(点对点、星形和广播)列表中添加了蓝牙网格这一工业级的安全网络选项。
低耗电蓝牙已广泛应用于以商业为中心的短程个人区域网络,例如电池操作的外围设备和智能手机之间的应用。 蓝牙网格的网络规范使得数百个节点能够在更广泛的网络区域上进行无缝通信, 通过一个从节点到节点的中继机制来扩展通信范围。 令人高兴的是, 蓝牙网格规范并不依赖于最新的蓝牙5.0规范。 事实上, 任何带有蓝牙4.0的智能手机都可以监控网格连接的节点。
图1 | 低耗电蓝牙网络拓扑
低耗电蓝牙技术于2010年在蓝牙核心规范4.0中引入。 与之前的蓝牙标准相比, BLE 被设计成用于控制和监控应用程序的低功耗解决方案。 它从诺基亚以前的无线协议中继承了这个概念, 该协议被定义成一个为个人区域网络(PAN)提供通用无线连接的解决方案, 即将个人设备连接到手机上。 这是一个典型的星状拓扑网络示例, 其中包含一个单一的中心枢纽元素; 手机充当了网络的主人, 与一个或多个从设备相连接。 这是一个一对多的连接, 提供了一个较低功耗的无线连接, 以便与本地个人设备进行短程互动。
BLE在2.4 G赫兹工业科学和医学(ISM)频段中运行, 并定义了40个带有2M赫兹频道间距的无线电频道。 一种自适应跳频方案确保了抗干扰和衰落 / 多径传播问题的鲁棒性和可靠性。 在40个频道中, 有3个用于广告, 而不是连接设备之间的双向通信。 广告频道被用于设备发现、连接建立和广播传输。
如今, 绝大多数手持设备、智能手机和平板电脑支持 BLE 标准以及包括 Windows、 Linux 和 macOS 在内的大多数操作系统。 它让设计师能够快速而轻松地与智能设备建立简便的无线连接。 在过去的几年里, 随着主要功能、改进和灵活性的引入, 这一标准已经发生了很大的变化。
2014年12月开始的重要更新引入了蓝牙4.2核心规范, 并为物联网提供了一种更智能、更快、更理想的无线技术。 新功能包括隐私1.2, 它帮助设备避免被未经授权的人或设备追踪, 并且加入了符合FIPS 的加密技术, 以确保从连接开始(即设备配对)的数据保密。 此外, 4.2规范还包括一个新的数据长度扩展, 以便更快地传输数据和建立新的互联网连接, 如低功耗 IP和蓝牙智能互联网网关。
最近, 在2016年12月, 蓝牙5.0的引入进一步扩展了新应用的应用范围, 这要归功于更快的吞吐量(2X 的数据率)、长距离功能以及8倍的广播信息容量, 这些都改善了位置和导航系统。 因此, 5.0规范将进一步提高整体用户体验,拥有更低的功耗,并促进通过 BLE 成为一个表现出众且安全的 IoT 连接解决方案。
每个网格的基本元素是节点实体。 蓝牙网格节点通过在整个网络中使用数据包(信息)与任何其他节点进行通信。 消息可以是一个命令或报告, 通常不是用于连续的数据流操作。 一种通过类似继电器节点实现的继电器机制, 可以快速地将消息传递给节点, 从而扩展了网络区域的覆盖范围。 网络直径可以达到126跳, 这对于企业照明装置来说就足够了。
为了防止拥塞控制, 可以采用一些机制, 例如, 确定消息中继必须在何时终止。 这样可以最大限度地减少可能的缺点, 同时保持其优点, 如简单性、冗余性和可靠性。
由于继电器节点必须始终保持激活以接收和重传消息, 所以它们无法利用蓝牙本地的低功耗功能。 因此, 继电器节点不适合电池操作的设备。 这就是关联节点和低功耗节点的帮助所在。 关联节点, 通常是电源驱动的, 可以缓冲消息。低功耗节点可以进入一个低功耗状态, 并在预定的时间表中定期恢复消费和处理缓冲消息, 然后返回睡眠状态。
第四个节点类型是代理节点, 它可以让不支持网格的智能手机, 仍然通过标准的通用属性配置(GATT)接口来连接到网络。 这样的向下兼容可以更快地采用网格技术, 特别是在智能建筑和家庭自动化等场景中。
每个节点可以由至少一个或多个元素组成, 这些元素代表网络可寻址实体。 反过来, 元素会使用客户端-服务器模型体系结构相互接触, 并使用发布和订阅机制进行通信。 服务器模型包括元素状态(如灯泡的开 / 关状态)以及与状态本身相关的消息。 而客户机模型(如泛型交换机)是无状态的, 定义了一组用于与服务器状态交互的消息。
需要从网络中监听控制消息(如灯泡)的节点将订阅与相关来源相关的状态转换。 反过来, 控制源(开关)将发布它的状态到特定的灯泡。 因此, 在开关的例子中, 客户端设备(开关)可以发送消息, 当新的命令到达时, 服务器(灯泡)可以被通知。
图2 | 在CS模型体系结构中放置的公共订阅机制
为了增加更多的灵活性, 蓝牙网格提供了定义和处理一组节点的可能性(使用组址而不是单播地址)。 这个功能可以方便地控制属于一个普通物理位置的所有灯泡, 例如房间里的所有灯泡或家庭入口。
图3 | 群组地址允许简单地控制多个节点
配置是将设备作为可寻址节点带入网络的过程。 在网络中可以提供多达32,767个节点。 这通常是通过一个运行在智能手机或平板电脑上的应用程序来完成的, 从而创建了一个数据库, 其中包含了节点。
蓝牙 SIG 非常重视安全问题, 并将工业级安全实践作为蓝牙网格的一个强制特性。 因此, 所有流量都是加密的, 因为非加密信息的提供过程和通信是被禁止的。 消息完整性检查(MIC)应用于跨多个网络层的流量。 通过一个三键机制(设备、网络和应用程序)以及复杂的混淆、端对端加密过程以及密钥刷新、黑名单和消息排序技术,来最大限度地减少安全威胁, 但是要对节点和数据进行身份验证。
图4 | 整个蓝牙网格软件被组织成七个层次
ST 认识到网格标准化对于简化市场部署和加快大规模商业应用中技术采用的重要性。 因此, 从早期开发开始, 它的 BlueNRG-Mesh 跟随着蓝牙 SIG 所定义的网格规范的演变。 参与几个可互操作测试事件(即蓝牙 SIG IOP 会话) , 使公司能够跟上最新的标准进化, 使得公司能够在安全性、可扩展性和新特定功能的总体加入方面迅速采用最严格的要求。 使用管理流量风暴的方法, BlueNRG-Mesh 依赖于数据通信和交换基本信息的广告包。
BlueNRG-mesh 的形式是一个独立的软件开发工具包(SDK) , 包括示例代码、教程、用户手册和快速启动指南, 以快速开始编码用户自己的解决方案, 只需要很少的努力, 也不需要深入的蓝牙网格理解。 为了进一步简化网格软件的采用, 缩短新网格应用商业化的时间到市场, BlueNRG-Mesh 软件包配备了 Android 和 iOS 的互补软件开发工具包。
真希望看到更多能够支持BlueTooth Mesh 的产品和SDK,尤其是来自国产领域。如果哪位朋友有BlueTooth Mesh的开发经验可以留言给我,一起学习讨论一下。
附: 这是一篇来自embeddedcomputing.com 的译文,融入了部分自己的解释。