蓝牙技术的前世与今生

来源:物联江湖  作者:王一鸣

公元十世纪,有一名丹麦国王出身海盗家庭,统一了四分五裂的北欧(挪威、瑞典和丹麦),成为维京王国的国王。国王的原名叫Harald Gormsson,爱吃蓝莓的他有个绰号:“Harald Blåtand”,由“斯堪的纳维亚”(北欧地区)的语言翻译成英语就是“Harold Bluetooth(蓝牙)”。

在1994年,爱立信开始着手研究一种新型的短距离无线通信技术,而为了迎接这个即将面市的新技术,爱立信用丹麦国王的外号(Harold Bluetooth)给它命名。蓝牙技术最初的构想,是用无线通信技术替代RS-232标准电缆(串口),让局部空间内的各类设备能够互联互通、协调工作。“蓝牙”国王的事迹正预示着这个短距通信技术的未来。

1998年,多家通信业巨头(IBM、Intel、东芝、诺基亚)加入到蓝牙技术的研发中,并成立了“蓝牙技术联盟(SIG,Bluetooth Special Interest Group)”。蓝牙技术旨在实现消费领域、工业领域中不同设备的组网通信,以建立个人局域网 (PAN)为目标,并于1999年推出了第一个正式发布的技术版本。

(注释:个人局域网(PAN-Personal Area Network):在一个人操作可及的空间范围内,把与此人相关的电子设备(例如便携式电脑等)用无线技术连接起来的网络。)

在2004年,技术联盟推出了蓝牙2.0+EDR(Enhanced data rate),使得蓝牙传输速率达到了2.1Mbps(262.5KB/s)。

在2009年发布了蓝牙3.0+HS(Hight Speed),借用Wi-Fi技术和AMP(Alternative MAC/PHY,交替射频)技术,将数据传输速率提高到了24Mbps(3MB/s)的理论值。

在2010年发布的蓝牙4.0包含三种协议,分别是传统蓝牙(Classic Bluetooth)、低功耗蓝牙(Bluetooth Low Energy)和高速蓝牙技术(Bluetooth High Speed)。其中低功率蓝牙(BLE),芯片模块所需的最低功耗只有0.01-0.5W左右,极大地降低了蓝牙设备的通信电力负担。

2014年,V4.2版的蓝牙支持6LoWPAN(IPv6 over LR-WPAN,基于IPv6的低速无线个域网标准),使得蓝牙设备更易于接入互联网。

2016年,蓝牙5.0针对低功耗设备,进一步提升了通信速率,并且能够结合wifi对室内的设备位置进行辅助定位。

2017年7月19日,蓝牙技术全面支持Mesh网状网络。

纵观蓝牙技术的发展旅程,SIG不断地追求着无线连接的性能:传输速率(EDR-Enhanced Data Rate、AMP)、低功耗(Sniff Subrating、BLE)、网络接入(6LoWPAN、Mesh)和安全配对(SSP),以满足各种应用对近距离通信的需求。

原本,SIG主要是聚焦于“以人为中心的边缘网络”进行技术创新,而如今,蓝牙适用的范围已经逐渐拓展到所有物联网边缘场景:“蓝牙增强速率技术(BR / EDR)”的应用从无线耳机发展到鼠标键盘;“蓝牙低功耗技术”应用于手表、手环,发掘了可穿戴市场;而“蓝牙Mesh组网技术”则瞄准了整个(边缘域)物联网市场,包括消费领域和工业领域。

从最新的组网构架(Mesh组网)中,让我们逐渐地看清了蓝牙技术联盟对物联网通信的预想,以及对边缘网络的理解。

从本质上来讲,蓝牙Mesh技术并非无线通信技术,而是一种网络(组网)的技术,用于构建“多对多通信连接”的网络。而低能耗蓝牙技术(BLE)则为无线通信技术。

所以,蓝牙Mesh是建立在低功耗蓝牙之上的通信网络。目前,蓝牙Mesh网络基于洪泛式(flooding)协议,未来在修订版本中可能会基于路由协议来实现网络连接。

蓝牙Mesh技术完整定义了通信协议的各个层次(从无线射频的物理层到应用层),并具有良好的兼容性:保证异厂家设备之间的互操作性。蓝牙Mesh网络旨在满足工业领域严格的可靠性,可扩展性和安全性要求。

蓝牙Mesh整体上可以分成应用层和网络层,这两层都具有鲜明的层次化设计,有利于开发者进行网络部署及应用的开发。

1.应用层模型

在应用层面,SIG对蓝牙设备的功能进行了多层次的封装:节点-元素-模型-状态。

(1)device(设备)和node(节点)

节点的角色(网络角色)

设备是指有蓝牙功能电子终端。而一个设备加入到mesh网络中后,就成为一个节点。设备加入Mesh网络,需要网内的配网节点(Provisioner)的授权。

蓝牙Mesh网络的节点除了实现应用功能以外,还具有网络角色,以实现网络组网、消息传递、网络安全管理等的各种功能。

主要的网络角色有五种:低功耗节点-Low Power Node、亲友节点-Friend Node、中继节点-Relay node、代理节点-Proxy node、非冲击节点-No relay node。

Low Power Node和Friend Node: 低功耗节点和亲友节点。

低功耗节点通常由小型电池供电,需要尽可能的减少通信开销。该节点不会一直在广播信道发送或者监听数据包,但网络有时还是数据传送一些数据给它(比如新的测量阀值)。

所以,低功耗节点会采用一种“代收快递”的方式来实现数据的获取。首先,低功耗节点和网络中的其它节点实现“串联”,形成一种“代理”关系,官方文档中称为“友谊(Friendship)”关系。

而后,当网络中有低功耗节点的数据时,会先发给串联节点进行数据缓存。最后,当低功耗节点发送查询信息(定期的“Poll”消息)的时候,串联的节点会将缓存的数据递交给低功耗节点。这其中的串联节点,即称为Friend node(亲友节点)。

Relay node:中继节点

在Mesh网络中,某些设备被指定为“中继设备”,通过广播承载层来接收和转发蓝牙Mesh的消息,它承担着扩展网络覆盖范围的职责。中继节点使得数据能够通过无线信号的“接力”绕过楼道内的物理障碍物,送达到目的设备。中继节点需要充沛的供电,并具备一定的计算能力。亲友节点(Friend Node)是一种特殊的中继节点。

Proxy node:代理节点

代理节点提供了GATT接口(“Generic Attributes”,一种低功耗蓝牙设备之间的通信协议),以便于蓝牙设备在不具备蓝牙Mesh网络协议栈的情况下,能够通过代理节点接入蓝牙Mesh网络。代理节点同时支持广播承载层和GATT承载层的数据包收发。代理节点(Proxy node)是一种特殊的中继节点。

No relay node:普通节点(非代理节点)

没有中继功能的节点,也称为普通节点。普通节点可以实时地收发消息,但是无法转发其它节点的消息。

节点网络角色的功能,通过元素模型配置(网络地址、消息等)来具体定义,并由网络层、传输层实施具体操作(网络协商)。在具体应用中,节点需要遵循自己的节点角色发送、接收、转发消息。

在蓝牙Mesh网络中,低功耗节点和普通节点通常位于网络边缘,属于信源设备(信息产生、处理的节点);而亲友节点、中继节点和代理节点一般处于较核心的位置,都可以视为“中继”节点(具有信息转发的网络功能)。

(2)Element(元素)

出于节能或便捷部署的需要,一个节点可以关联多个子设备,这每个子设备都是一个“元素”。例如, 一个节点可以包含一个蓝牙通信模块和一个灯组(灯组由多个灯泡组成),所有的灯泡都是通过同一个蓝牙模组接入Mesh网络,在灯组中的每一个灯泡都是一个元素。元素是Mesh网络中最小单位的“实体”,每个元素在网络中都有一个唯一的地址(单播地址,Unicast Address)。

(3) 模型(model)和状态(state)

模型代表了节点中的元素所具备的行为功能。一个元素必须至少有一个模型,既一种功能。每个模型都有唯一的标识符(32位),能够在Mesh网络中被识别出来。

模型具有一种或多种的“状态”。状态是一个或一组特定类型的值。状态的改变,就代表模型执行了某项功能。

例如,灯具有开/关的功能。其中,灯代表“元素”实体,而开/关的功能就是“模型”。开关具有两种特征:“on”、“off”,这便是灯的“状态”。

在应用层面,“节点”就是接入蓝牙Mesh网络的“设备”,它包含了一个或一组“元素”(子设备),每个元素都具有一些“模型”(功能),且每一项功能都配置有一个或一组“状态”参数,来表示此功能所对应的操作。

每当圣诞节来临,圣诞树需要灯饰装点,灯饰一般都是一串彩灯(由许多不同颜色的灯泡组成)。可以将这一串灯视为一个“节点”。为了营造圣诞气氛,可以对灯串中每一种颜色的灯作为“元素(Element)”进行单独控制。

每种颜色的灯都具有发光的功能作为它的“模型”,模型包括两种状态属性:“开/关”状态、亮度状态。这样,蓝牙Mesh网络便有了对装饰灯进行动态控制的基础。

当然,如果需要更多的动态效果,甚至可以将每一个灯泡配置成一个元素。不过,这样做可能会“浪费”掉不少蓝牙Mesh的地址资源(节点中的每个元素都会被分配一个唯一的单播地址)。如何定义和设计应用,完全由开发者根据产品要求自行决定,蓝牙Mesh技术只是提供了节点配置的框架。

2.网络层结构

蓝牙Mesh网络是搭建在蓝牙低功耗技术(BLE)构架之上的,其网络的层次构架与OSI的7层参考模型有一点相似:BLE层-承载层-网络层-传输下层-传输上层-接入层-基础模型层-模型层。

BLE层(Bluetooth Low Energy Layer):低功耗蓝牙连接层,实现节点之间的无线通信连接,是实现Mesh网络的基础。

承载层(Bearer Layer):定义了如何使用底层BLE协议栈传输网络PDU(协议数据单元)。实际的承载方式分为两种:广播承载(advertising bearer)和GATT承载。默认情况下,使用广播承载来封装Mesh的网络数据包。

网络层(Network Layer):定义了各种消息的地址类型、格式,完成数据的网络寻址和转发。节点的中继、代理行为是通过网络层实现的。

传输下层(Lower Transport Layer):主要负责网络中传送的PDU(协议数据单元,Protocol Data Unit)的分段和重组。如果传输层数据包过长,那么该层会将数据包拆分后送给网络层发送;在收到网络层分片的数据包后,该层会进行数据包的重组。

传输上层(Upper Transport Layer):负责对上层应用数据进行加密、解密和认证。该层还定义了“传输控制消息”(transport control messages),用于关联节点间互通消息,例如亲友节点(Friend Node)和低功耗节点(Low Power Node)之间的“心跳状态包(Heartbeats)”。

接入层(Access Layer):定义应用的数据格式,以及如何使用传输层的服务(网络服务)。接入层能够定义、控制在传输层中的数据加密、解密过程。对于传输层送达的数据,接入层能够对其中的网络、应用信息进行验证。

基础模型层(foundation models Layer):实现应用层模型与Mesh网络协议的适配,定义了其中的消息、状态等属性。

模型层(models Layer):处于蓝牙Mesh应用层,实现应用层数据配置、设备操作、消息收发的基本功能单位。同时它也具有控制、管理网络的功能,收发与蓝牙mesh网络操作有关的消息,例如网络心跳(heartbeat)消息。在蓝牙Mesh网络中,模型是实现各类应用功能的基础。


未经允许请勿转载:程序喵 » 蓝牙技术的前世与今生

点  赞 (0) 打  赏
分享到: