BLE-Mesh技术揭秘

来自谷雨文档中心
Ghostyu讨论 | 贡献2019年11月21日 (四) 18:49的版本 元素(Elements)
跳转至: 导航搜索

蓝牙技术是享誉全球的品牌之一,也是全世界应用最为普遍的无线通信技术之一。从2000年到现在,蓝牙技术已经广泛应用于数十亿台设备。就2016年而言,制造商的蓝牙设备出货量更是超过30亿台

蓝牙的创新步伐从未停止。自面世以来,每一次改进都系统严谨,紧跟市场需求,一直支持和鼓励创新。

蓝牙技术令人惊叹的故事还在继续着,蓝牙mesh网络翻开了最新篇章,150家蓝牙技术联盟会员公司都参与了mesh的创建

1 第一章节:Mesh介绍

这是系列文章中的第一篇,将向您介绍蓝牙mesh网络。我们从两篇概述开始, 后续篇章中将更详细地探讨技术的各个方面。

1.1 风格 OR 特性

对蓝牙技术感兴趣的朋友一定有这样的习惯:定期查看蓝牙技术联盟采用的新版本。

通常,新版本为蓝牙提供附加特性,或者以某种方式改进现有功能。不管怎么说,蓝牙全新的“风格”已经面世;一款风格出众的蓝牙技术变体,将以完全不同的方式利用无线电,并针对一系列广泛的用例设计和应用进行了优化。

蓝牙基础速率/ 增强资料速率(BR / EDR)是蓝牙发布的第一款风格,旨在替代缆线连接,很快就成为无线音频市场的主宰,并推动了新型计算机外设(如无线鼠标和键盘)的发展。

蓝牙基础速率/ 增强资料速率(BR / EDR) 引发无线个人音频变革

随后登场的是低功耗蓝牙(Bluetooth Low Energy)。它经过优化,极大程度地减少了设备功耗,仅使用硬币大小的电池就能实现无线操作和通信,运行数年不在话下。

低功耗蓝牙现已被广泛采用。如今很难找到不支持低功耗蓝牙的智能手机或平板电脑。健康、运动和健身器材,如运动追踪设备、以及智能手表等可穿戴设备,都有赖于低功耗蓝牙技术。这一款蓝牙风格可谓影响深远。

低功耗蓝牙是推动可穿戴设备发展的重要技术

“那么蓝牙mesh网络是蓝牙的全新风格呢?还是新特性呢?”

其实两者都不是。现在就让我们来深入探讨一下这项惊人的、全新的蓝牙技术,同时了解mesh与蓝牙其他形式之间的关系自身工作原理

1.2 三大重要技术

蓝牙BR / EDR和低功耗蓝牙是智能手机等设备上的常用技术,但是它们不会互相依赖对方的服务和功能。针对所有的意图和目的,这两款风格的蓝牙技术都能彼此独立工作。事实上,虽然他们能在同一台设备上很好地共存,但是使用蓝牙BR / EDR的设备与低功耗蓝牙设备之间却无法进行通信。对于它们来说,有彼此相伴固然开心,但彼此之间却没有对话。

相比之下,蓝牙mesh网络使用、并且依赖于低功耗蓝牙。低功耗蓝牙技术是蓝牙mesh使用的无线通信协议栈。

“蓝牙mesh并非无线通信技术,而是一种网络技术。”

下图显示了蓝牙BR / EDR、低功耗蓝牙和蓝牙mesh之间的关系。

蓝牙mesh和低功耗蓝牙之间的关系

1.3 关于拓扑

从最基本的层面来讲,蓝牙BR / EDR能够实现一台设备到另一台设备的连接和通信,建立“一对一”的关系,大多数人所熟悉的“配对”(pairing)一词就是这个意思。一些设备能够与其他设备建立多重“一对一”通信关系,并形成一种称为“微微网”(piconet)的hub/spoke拓扑

蓝牙BR / EDR和一对一拓扑

但是低功耗蓝牙设备还能与其他设备形成“一对一”和hub/spoke关系,以无连接方式进行工作,其广播的数据,位于直接无线电传输围内的任何其他设备都可接收。这是“一对多”(1:m)的拓扑,其中m可以是一个非常大的数量!如果接收广播的设备本身不进行数据传输,那么广播设备的无线电频谱就仅仅是针对自己而言的,同时对于能够接收和利用其广播的其他设备数量没有明确的限制。蓝牙Beacon是这项功能的一个绝佳案例

低功耗蓝牙的广播应用

蓝牙mesh能让我们建立无线设备之间的“多对多”(m:m)关系。此外,设备能够将数据中继到不在初始设备直接无线电覆盖范围内的其他设备。这样,mesh网络就能够跨越非常大的物理区域,并包含大量设备。

BleMesh-蓝牙Mesh多对多网络拓扑

1.4 蓝牙Mesh的初衷

对于满足日益普及的各种通信需求,mesh拓扑结构能提供最佳的方式,因此蓝牙mesh网络应运而生典型的应用包括楼宇自动化和传感器网络等。这些通信需求包括:

  1. 覆盖面积广
  2. 直联互通性
  3. 监测和控制大量设备的能力
  4. 经优化的、低功耗的
  5. 有效利用无线电资源,有可扩展性
  6. 与当前市场上的智能手机、平板电脑和个人电脑产品兼容
  7. 符合行业标准,具有政府级安全性

虽然还有其他支持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跳,足以在一片广阔的物理区域中进行消息传输。

蓝牙 mesh网络在节点之间中继消息

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网络?

低功耗蓝牙设备和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网络设计的核心,并且强制使用。

蓝牙mesh网络中强制性使用安全性

每个数据包都经过加密和认证。通过合理使用序列号能够防止中继攻击。在重要流程中使用不对称加密技术可防止中间人(Man-in-the-middle)攻击。同时针对利用废弃设备的垃圾桶攻击提供保护。必要时还会刷新安全密钥。

“安全分级考量”(Separation of Concerns)是蓝牙mesh网络安全性中体现的重要原则。网络的安全性,以及诸如照明、供暖、或实体建筑安全等个别应用的安全性彼此独立。可使用不同的安全密钥来保护网络层操作,例如中继、或保护特定应用的消息内容。论其结果,举例来说,由于灯泡和照明开关具有相同的应用密钥,因此灯泡能够全面访问照明开关所发送消息中的数据。但是,尽管相同的灯泡能够将来自蓝牙物理访问令牌的消息中继到前门中的锁,却无法阅读那些消息应用层的内容。

本系列的后续文章中也将详细介绍安全性。我们还将密切关注一个称为 “开通配置” (Provisioning)的安全流程,设备可通过这一流程变身为蓝牙mesh网络的一员。此外,我们还将探讨如何从网络中安全地删除设备,以及如何在有需要时刷新安全密钥。

2.7 协议栈

蓝牙mesh网络引入了全新的协议栈。如之前所述,这一协议栈建立在低功耗蓝牙技术之上。下图描绘了协议栈的层级

蓝牙mesh网络协议栈

该规格是深入了解各层责任的最佳方式。为帮助您更好地了解其工作原理,以下列出了协议栈各层负责的工作:

  • 承载层(bearer layer):承载层定义了如何使用底层低功耗堆栈传输PDU。目前定义了两个承载层:广播承载层(Advertising Bearer)和GATT承载层。
  • 网络层(network layer):网络层定义了各种消息地址类型和网络消息格式。中继和代理行为通过网络层实施。
  • 底层传输层(lower transport layer):在需要之时,底层传输层能够处理PDU的分段和重组。
  • 上层传输层(upper transport layer):负责对接入层进出的应用数据进行加密、解密和认证。它还负责称为“传输控制消息”(transport control messages)这一特殊的消息,包括与“friendship”相关的心跳和消息。
  • 接入层(access layer):负责应用数据的格式、定义并控制上层传输层中执行的加密和解密过程,并在将数据转发到协议栈之前,验证接收到的数据是否适用于正确的网络和应用。
  • 基础模型(foundation models):基础模型层负责实现与mesh网络配置和管理相关的模型。
  • 模型(models):模型层与模型等的实施、以及诸如行为、消息、状态等的实施有关。

2.8 蓝牙mesh网络的未来

我们期待蓝牙mesh网络广泛应用于各行各业和各种应用,预计最初会从楼宇自动化、商业照明和传感器网络等应用开始。尤其令人兴奋的是蓝牙mesh网络在商业照明方面的应用。试想一下,有了正确的固件,照明系统能实现的就不仅是无线灯光控制,还能够成为楼宇中各种蓝牙服务的平台,如物资跟踪和定位服务!

3 第三章节:Mesh网络基本概念1

无论您想采用智能照明、温控和安全系统让家庭和办公室变得更加智能,还是想提高工业无线传感器网络(IWSN)的效率,蓝牙mesh网络都能为您与环境的交互开启全新的机遇。

蓝牙mesh网络为创建大型设备网络奠定了基础,让成千上万的无线设备彼此之间可靠安全地进行通信。本文将深入探究这一创新网络拓扑背后的基本概念。

3.1 节点(Node)

想象一下由数千台设备组成的网络,每台设备均通过低功耗蓝牙(LE)无线连接进行通信。蓝牙mesh网络中的这些设备被称为节点 (node) 。每个节点都能发送和接收消息。信息能够在节点之间被中继,从而让消息传输至比无线电波正常传输距离更远的位置。这样的节点网络可以被分布在制造工厂、办公楼、购物中心、商业园区以及更多环境中。

mesh网络中的节点

蓝牙mesh节点非常多样化,有助于在mesh网络中实现多重功能。照明器具、机械设备、安防摄像机、烟雾探测器和环境传感器仅仅是节点能实现的几个例子。

3.2 元素(Elements)

一些节点(如传感器)的电池有可能会被耗尽,而其他节点(如照明设备、制造机械和安防摄像机)则会通过主电网来获取电力。一些节点的处理能力会高于其他节点。这些节点在mesh网络中可承担更为复杂的任务,扮演不同的角色,表现出以下四个节点特征(Features)

  1. 低功耗 (Low-Power) 特性,功率受限的节点可能会利用低功耗特性来减少无线电接通时间并节省功耗。同时低功耗节点(LPN)可以与friend节点协同工作。
  2. Friend 特性,功率不受限的节点很适合作为friend节点。Friend 节点能够存储发往低功耗节点(LPN)的消息和安全更新;当低功耗节点需要时再将存储的信息传输至低功耗节点。
  3. 中继 (Relay) 特性,中继节点能够接收和转发消息,通过消息在节点之间的中继,实现更大规模的网络。节点是否能够具备这一特性取决于其电源和计算能力。
  4. 代理 (Proxy) 特性,代理节点能够实现GATT和蓝牙mesh节点之间的mesh消息发送与接收。承担这一角色的节点需要固定的电源和计算资源。

一些节点的复杂性高于其他节点,由多个称为元素(Element)的独立部分组成。每个节点至少拥有一个元素,称为主元素(Primary Element),同时还可能包含其他多个元素。元素由定义节点功能和元素条件的实体组成。例如,一个灯泡内有一个元素, 并具有两种功能:

节点 = 灯泡
一个元素 = 主元素
节点功能
    - 开/关
    - 亮度
元素条件/状态
    - “开”或“关”
    - 010 (亮度等级)
节点必须至少有一个元素,也可能包含多个元素

节点中的每个元素都有一个唯一的地址,称为单播地址(unicast address),使每个元素都有址可寻。我们将在后续的解密蓝牙mesh系列文章中进一步解释“寻址”。

3.3 模型 (Model) 和状态 (State)

无论节点位于制造厂房、酒店、办公楼、还是商业园区的网络中,节点的基本功能都由模型 (Model) 来定义和实施。模型位于元素内,元素必须具有至少一个模型。模型能够定义并实施节点的功能和行为,而状态 (State) 能够定义元素的条件

节点、元素、模型以及状态之间的关系

以灯泡为例,该模型的功能是开关和调节亮度。相关的状态分别为“开”/ “关”和0-10:

模型 (节点功能)
    1. 开/关
        状态 -> “开”或“关”
    2. 亮度 (0-10)
        状态 -> 0-10

蓝牙mesh支持复合状态,即由两个或多个值组成的状态。变色灯就是这样的一个例子,色调可以不受颜色饱和度或亮度的局限而改变。

“绑定状态” (Bound State) 这一术语的定义源自一种状态的变化导致另一状态变化的情况。级别状态和开/关状态通常就相互绑定。如果级别从0变为1,则“开/关”的状态也从“关”变为“开”。

每个模型都有唯一的标识符。蓝牙技术联盟采用16位的模型,而供应商采用32位(其中包含蓝牙技术联盟指定的16位公司标识符以及16位供应商指定的模型标识符)。这确保了每个模型的地址都独一无二并且能确定被寻址到。

蓝牙mesh网络可借助消息,通过客户端 - 服务器架构进行通信。服务器的功能是暴露元素的状态。最简单的状态之一是二进制开关,其中状态为“开”或“关”。简单的服务器模型是通用开/关服务器模型 (Generic On/Off Server Model) ,其中包含表示开关开启或关闭的状态。

客户端可对状态进行访问,请求、更改或使用服务器的状态。举例来说,一个简单的客户端模型就是通用开/关客户端模型(Generic On/Off Client Model)(二进制开关)。通用开/关客户端模型通过发送消息来控制通用开/关服务器模型。例如,客户端可利用这一机制开启或关闭指示灯。

这种客户端 - 服务器架构产生了三种类型的模型:

  1. 服务器模型 (Server Model)
    • 由至少一个或多个状态跨越一个或多个元素的状态组成
    • 定义模型能够发送/接收的消息,并根据这些消息定义元素的行为
    • 实例:
      • 🔶开/关切换——客户端发送打开或关闭的消息
      • 🔶 传感器——可以暴露传感器的状态(可能为温度值或传感器测量的“满”、“待充”或“空”的结果)
      • 🔶 功率级别——可以暴露电源状态(等级1-10)
  2. 客户端模型(Client Model)
    • 定义客户端为请求、更改或使用服务器相应状态所使用的消息。
    • 实例:
      • 🔶 开/关切换——客户端发送打开或关闭的消息
      • 🔶 电源级别——定义电源状态的消息(0-10)
  3. 控制模型 (Control Model)
    • 控制模型具有多种功能,同时可能包含一个或多个:
      • 🔶 客户端模型 (Server Model)
      • 🔶 服务器模型 (Client Model)
      • 🔶 控制逻辑(规则和行为)用于协调与其相连模型之间的交互。
    • 实例:控制模型可用在支持机器周围循环的液体冷却剂水泵上。
      • 🔶 应用场景——温度传感器会记录机器的温度。如果机器超过设定的温度,冷却泵则会被打开。
      • 🔶 冷却泵的控制模块 (Control Module)
        • ▷ 与温度传感器相连的客户端(用于接受温度值)
        • ▷ 连接到开/关切换的服务器(用于打开或关闭水泵)
        • ▷ 控制逻辑(规则和行为)— 负责定义如果温度传感器超过设定值,则打开水泵。

模型的定义能让您在mesh网络中对节点及其功能进行配置。模型定义以及其他模型的概念将会在后续文章中进一步详细介绍。

蓝牙mesh网络凭借行业认可、全球互通性、成熟且可信赖的生态系统来创建工业级设备网络。现在您已经初步了解蓝牙mesh背后的一些基本概念,下一章节将介绍有关蓝牙mesh网络基础知识的概述,包括寻址、发布/订阅、消息、列表、以及如何结合这些知识共同创建蓝牙mesh网络。

4 第四章节:Mesh网络基本概念2

5 Mesh系列文章

蓝牙官方组织在其微信公账号上发布了有关Mesh的系列文章,强烈建议开发者仔细阅读。文章列表如下:

  1. 解密蓝牙mesh|第三篇
  2. 解密蓝牙mesh|第四篇
  3. 解密蓝牙mesh|第五篇
  4. 解密蓝牙mesh|第六篇
  5. 解密蓝牙mesh|第七篇
  6. 解密蓝牙mesh|第八篇
  7. 解密蓝牙mesh|第九篇
  8. 解密蓝牙mesh|第十篇

本PDF由谷雨文档中心自动生成,点击下方链接阅读最新内容。

取自“http://doc.iotxx.com/index.php?title=BLE-Mesh技术揭秘&oldid=2386