BLE-Mesh技术揭秘
蓝牙技术是享誉全球的品牌之一,也是全世界应用最为普遍的无线通信技术之一。从2000年到现在,蓝牙技术已经广泛应用于数十亿台设备。就2016年而言,制造商的蓝牙设备出货量更是超过30亿台。
蓝牙的创新步伐从未停止。自面世以来,每一次改进都系统严谨,紧跟市场需求,一直支持和鼓励创新。
蓝牙技术令人惊叹的故事还在继续着,蓝牙mesh网络翻开了最新篇章,150家蓝牙技术联盟会员公司都参与了mesh的创建。
目录
1 第一章节:Mesh介绍
这是系列文章中的第一篇,将向您介绍蓝牙mesh网络。我们从两篇概述开始, 后续篇章中将更详细地探讨技术的各个方面。
1.1 风格 OR 特性
对蓝牙技术感兴趣的朋友一定有这样的习惯:定期查看蓝牙技术联盟采用的新版本。
通常,新版本为蓝牙提供附加特性,或者以某种方式改进现有功能。不管怎么说,蓝牙全新的“风格”已经面世;一款风格出众的蓝牙技术变体,将以完全不同的方式利用无线电,并针对一系列广泛的用例设计和应用进行了优化。
蓝牙基础速率/ 增强资料速率(BR / EDR)是蓝牙发布的第一款风格,旨在替代缆线连接,很快就成为无线音频市场的主宰,并推动了新型计算机外设(如无线鼠标和键盘)的发展。
随后登场的是低功耗蓝牙(Bluetooth Low Energy)。它经过优化,极大程度地减少了设备功耗,仅使用硬币大小的电池就能实现无线操作和通信,运行数年不在话下。
低功耗蓝牙现已被广泛采用。如今很难找到不支持低功耗蓝牙的智能手机或平板电脑。健康、运动和健身器材,如运动追踪设备、以及智能手表等可穿戴设备,都有赖于低功耗蓝牙技术。这一款蓝牙风格可谓影响深远。
“那么蓝牙mesh网络是蓝牙的全新风格呢?还是新特性呢?”
其实两者都不是。现在就让我们来深入探讨一下这项惊人的、全新的蓝牙技术,同时了解mesh与蓝牙其他形式之间的关系和自身工作原理。
1.2 三大重要技术
蓝牙BR / EDR和低功耗蓝牙是智能手机等设备上的常用技术,但是它们不会互相依赖对方的服务和功能。针对所有的意图和目的,这两款风格的蓝牙技术都能彼此独立工作。事实上,虽然他们能在同一台设备上很好地共存,但是使用蓝牙BR / EDR的设备与低功耗蓝牙设备之间却无法进行通信。对于它们来说,有彼此相伴固然开心,但彼此之间却没有对话。
相比之下,蓝牙mesh网络使用、并且依赖于低功耗蓝牙。低功耗蓝牙技术是蓝牙mesh使用的无线通信协议栈。
“蓝牙mesh并非无线通信技术,而是一种网络技术。”
下图显示了蓝牙BR / EDR、低功耗蓝牙和蓝牙mesh之间的关系。
1.3 关于拓扑
从最基本的层面来讲,蓝牙BR / EDR能够实现一台设备到另一台设备的连接和通信,建立“一对一”的关系,大多数人所熟悉的“配对”(pairing)一词就是这个意思。一些设备能够与其他设备建立多重“一对一”通信关系,并形成一种称为“微微网”(piconet)的hub/spoke拓扑 。
但是低功耗蓝牙设备还能与其他设备形成“一对一”和hub/spoke关系,以无连接方式进行工作,其广播的数据,位于直接无线电传输围内的任何其他设备都可接收。这是“一对多”(1:m)的拓扑,其中m可以是一个非常大的数量!如果接收广播的设备本身不进行数据传输,那么广播设备的无线电频谱就仅仅是针对自己而言的,同时对于能够接收和利用其广播的其他设备数量没有明确的限制。蓝牙Beacon是这项功能的一个绝佳案例。
蓝牙mesh能让我们建立无线设备之间的“多对多”(m:m)关系。此外,设备能够将数据中继到不在初始设备直接无线电覆盖范围内的其他设备。这样,mesh网络就能够跨越非常大的物理区域,并包含大量设备。
1.4 蓝牙Mesh的初衷
对于满足日益普及的各种通信需求,mesh拓扑结构能提供最佳的方式,因此蓝牙mesh网络应运而生,典型的应用包括楼宇自动化和传感器网络等。这些通信需求包括:
- 覆盖面积广
- 直联互通性
- 监测和控制大量设备的能力
- 经优化的、低功耗的
- 有效利用无线电资源,有可扩展性
- 与当前市场上的智能手机、平板电脑和个人电脑产品兼容
- 符合行业标准,具有政府级安全性
虽然还有其他支持mesh拓扑的低功耗无线通信技术,但很多用户反馈显示,这些技术存在约束和限制,而且对于他们正在尝试解决的各种问题和希望创建的产品类型来说,也并非最佳选择。其他类似技术的问题包括低数据传输速率、在mesh上中继数据时的“跳数”限制、通常由无线电信道使用方式引起的可扩展性限制、以及按步骤更改mesh网络中设备组成的过程中出现的困难和延迟。
通常来说,其他mesh技术无法被标准智能手机、平板电脑和PC设备所支持,这是一个主要的限制因素。
创建符合行业标准的、基于低功耗蓝牙的mesh通信技术,就有可能满足他们的要求,同时没有相关的限制和约束。毕竟,互通性和能效是低功耗蓝牙最突出的特性。
2 第二章节 Mesh网络基本概况
在第一章节中,我们介绍了全新的蓝牙mesh网络技术。如果您还未阅读第一章节,建议先从头阅读,然后再进入第二章节。
本章节将介绍蓝牙mesh网络的基本概况,包括大型mesh网络中的消息传输方式、市场设备支持、安全性和mesh协议栈本身,在后续文章中也将继续探索这一技术方方面面的细节。
2.1 以消息为中心的通信
蓝牙mesh网络使用发布/订阅 (publish/subscribe)消息系统。
设备可以将消息发送至特定地址,这些地址的名称和含义与用户能够理解的高级概念相对应,如“花园灯”(Garden Lights)。这被称为“发布”(publishing)。
设备经配置后,可接收由其他设备发送到特定地址的消息。这被称为“订阅” (subscribing) 。
当设备向特定地址发布消息时,订阅该地址的所有其他设备将收到该地址的副本,对其进行处理,并以某种方式作出回应。
想象一下花园里安装的一套户外灯, 每盏灯都已经过配置,以便其订阅“花园灯”消息。现在,想像一个蓝牙mesh电灯开关向“花园灯”地址发送了“开”的消息。没错,花园里的所有灯都会收到“ON”消息,并做出开灯的回应。
就是这么简单!
2.2 消息和设备状态
“状态” (state) 是蓝牙mesh网络中的一个关键概念。蓝牙mesh网络中的每台设备都具有一组独立的状态值,表示设备的某些状态。在花园灯的示例中,每盏灯都有一个状态值,表示设备当前是处于打开或关闭状态。通过发布一类在定义上意味着能够回应“开”或“关”状态值的消息,来改变状态值,蓝牙mesh电灯开关就能对灯泡进行控制。更改状态值会修改设备本身的物理状况,例如打开或关闭设备。
消息、状态、以及这些和其他概念相关的设备行为已被定义在规格中,称为“模型”(modules)。模型由蓝牙mesh设备实施。
2.3 中继
得益于mesh网络,设备可以在非常广阔的区域中安装,同时彼此之间保持通信。想象一下购物中心、机场或办公大楼的占地空间有多广阔。因为存在墙壁和其他物理上的障碍物,楼宇中的设备可能无法与安装在同一楼宇远侧的设备、或临近楼宇中的设备建立直接的无线连接。而蓝牙mesh网络则能够将网络中的某些设备指定为“中继设备”,进而解决这一难题。
中继设备能够转发从其他设备接收到的消息。在转发消息时,它们能够与位于初始消息发布设备无线范围以外的设备进行通信。消息可多次被中继,每一次中继即为一“跳”,最多可进行127跳,足以在一片广阔的物理区域中进行消息传输。
2.4 管理型网络泛洪(Managed Flooding)
蓝牙mesh网络采用一种称为“网络泛洪(flooding)”的方式来发布和中继消息。这意味着消息不会通过某一进程进行路由, 也不会沿着由一系列特定设备构成的特定路径来进行传输。相反,传输范围内的所有设备都会接收消息,负责中继的设备能将消息转发至其传输范围内的所有其他设备。
“网络泛洪”这项技术在使用中往往是利弊参半。在蓝牙mesh网络的设计中,我们对此进行了针对性的优化,相信能够扬长避短。
2.4.1 网络泛洪的优势
网络泛洪的优势在于无需特定设备专门扮演集中式路由器的角色。集中式路由器一旦发生故障,就可能会导致整个网络无法运行。没有特定的路由也可能对网络造成灾难性的影响,但这种情况也可以通过在mesh网络中采用网络泛洪的方法来避免。
网络泛洪的方式也意味着消息一般能够通过多重路径到达其目的地。这就构建了一个相当可靠的网络。
2.4.2 优化mesh网络
蓝牙mesh网络也采取了一系列措施,支持采用网络泛洪的方式,同时优化每台设备、甚至整体网络的能耗。
所有数据包都包含一个称为TTL的字段,它可用于限制消息中继的跳数。由设备间歇性发送的心跳消息中包含的信息,能够让网络了解其拓扑结构、以及传到其他每台设备之间的跳数。这能够让设备将TTL设置为最佳值,从而避免不必要的中继操作。
每台设备都包含消息缓存,以确定自身是否已经中继过该消息。如果是,则会立即丢弃该消息,从而避免上层堆栈进行不必要的处理。
最有趣的是,功率非常受限的设备(例如由小型电池持续供电多年的传感器)可能被指定为“低功耗节点”。低功耗节点能够与一个或多个被指定为 “friends” 的设备协同工作。Friends并非功率受限,它可以作为低功耗节点,存储寻址到这一低功耗节点的消息,并且只有在低功耗节点需要时才传送消息。低功耗节点和“friends”之间的关系理所当然就称为“friendship”。
2.4.3 “Friendship”具体如何运转?
下面我们从节能的角度来进行解读。
低功耗设备通常将大部分时间用于传输数据,例如传感器。每当温度低于或高于指定阈值时,传感器才会发送温度读数,这种情况也许每天只会发生两次。这种不频繁的传输方案本身就使这类设备保持相当低的能耗。
2.4.4 但如果传感器需要不时地接收数据,又该怎么办呢?
例如,可能它需要确保网络中使用的安全密钥始终处于最新状态。或许需要根据季节修改这些温度阈值,采用不同的值。要使传感器直接接收消息,就需要开启无线电,以便数据接收。但大多数时候它什么都接收不到,但能量却会被消耗。
对设备来说,通过与“friends”的合作, 低功耗节点能够以合理的频率使用无线电来接收消息,但重要的是,相较于始终“聆听”所有消息,它能够以更低的频率工作,同时确保发送来的罕见事件也不会被遗漏。
“Friends” 能帮助低功耗节点完成大量工作。它们能够为所服务的低功耗节点存储消息,并在低功耗节点明确要求的情况下向其提供消息,低功耗节点可按照自身的规划进行操作,从而最有效地利用无线电。
2.5 市场上的蓝牙设备支持
蓝牙mesh网络虽然推出不久,但低功耗蓝牙(Bluetooth Low Energy)却面世已久。
那么市场上数十亿台设备呢?智能手机和平板电脑呢?它们能否访问蓝牙mesh网络?
幸运的是,答案是YES!
蓝牙mesh网络会指定一台设备来扮演代理节点(proxy node)的角色。代理节点包含一项标准:低功耗蓝牙GATT服务,具有两个GATT特性,分别是mesh代理数据输入(Mesh Proxy Data In)和mesh代理数据输出(Mesh Proxy Data Out)。诸如智能手机等低功耗蓝牙设备均可使用这些特性,与mesh网络进行数据收发。
这种mesh规格定义了一种代理协议(proxy protocol),同时通过代理节点的两个GATT特性交换的数据中包含代理协议PDU。
欲知代理节点的作用,请持续关注本系列后续文章~
2.6 安全性
安全性是蓝牙mesh网络设计的核心,并且强制使用。
每个数据包都经过加密和认证。通过合理使用序列号能够防止中继攻击。在重要流程中使用不对称加密技术可防止中间人(Man-in-the-middle)攻击。同时针对利用废弃设备的垃圾桶攻击提供保护。必要时还会刷新安全密钥。
“安全分级考量”(Separation of Concerns)是蓝牙mesh网络安全性中体现的重要原则。网络的安全性,以及诸如照明、供暖、或实体建筑安全等个别应用的安全性彼此独立。可使用不同的安全密钥来保护网络层操作,例如中继、或保护特定应用的消息内容。论其结果,举例来说,由于灯泡和照明开关具有相同的应用密钥,因此灯泡能够全面访问照明开关所发送消息中的数据。但是,尽管相同的灯泡能够将来自蓝牙物理访问令牌的消息中继到前门中的锁,却无法阅读那些消息应用层的内容。
本系列的后续文章中也将详细介绍安全性。我们还将密切关注一个称为 “开通配置” (Provisioning)的安全流程,设备可通过这一流程变身为蓝牙mesh网络的一员。此外,我们还将探讨如何从网络中安全地删除设备,以及如何在有需要时刷新安全密钥。
2.7 协议栈
蓝牙mesh网络引入了全新的协议栈。如之前所述,这一协议栈建立在低功耗蓝牙技术之上。下图描绘了协议栈的层级。
3 Mesh系列文章
蓝牙官方组织在其微信公账号上发布了有关Mesh的系列文章,强烈建议开发者仔细阅读。文章列表如下: