0 引言

自2012年蓝牙4.0规范推出之后,全新的蓝牙低功耗(BLE)技术由于其极低的运行和待机功耗、低成本和跨厂商互操作性,3 ms低延迟、AES-128加密等诸多特色,可以用于计步器、心律监视器、传感器物联网等众多领域,大大扩展蓝牙技术的应用范围[1-2]

尽管BLE已经被广泛应用于物联网领域,但是仍然存在着点对点的拓扑结构的限制,以及传输距离短、组网能力差等问题。由于蓝牙4.1规范中说明,一个BLE设备既可以在一个网络中作为主设备,又可以在另一个网络中作为从设备[3]。因此,Mesh网络可以利用BLE的这一特性,就可以在不需要连接的情况下传输数据,同时也可以发起广播。在蓝牙4.1规范中还提到,v4.1是以物联网为目标对v4.0软件升级,硬件上没有任何改动,并且可以通过IPv6建立网络连接,解决了在无WiFi情况下设备上网不易的问题。

本文首先介绍了BLE Mesh网络结构的特点优势,然后综合评述了影响BLE Mesh组网发展的关键因素,并分析了现有BLE Mesh技术的不足之处,在此基础上对BLE Mesh技术的发展方向进行了展望。

1 Mesh的网络结构特点

无线Mesh网络也称为“多跳(multi-hop)”网络,它是一种与传统无线网络完全不同的新型无线网络技术[4]。传统的无线网络主要是点对点或点对多点的星型网络,所有终端节点必须与中心节点交换数据,其拓扑结构如图1。而无线Mesh网络采用对等式的网络拓扑,每个节点与其相邻节点进行通信,并有数据转发的功能,其拓扑结构如图2。无线Mesh网络的可扩展性强,如果需要向网络中新增节点,只需将新增节点安装并进行相应的配置[5-6]。无线Mesh网络的可靠性也极高,如果某个节点上行有线链路出现故障,不会影响整个网络的运行,可以有效避免单点故障。

多点对多点Mesh技术让蓝牙在组网能力上有了巨大的提升,基于BLE标准协议的Mesh网络中数据收发的过程如图3所示。

图3中的BLE逻辑链路控制和适配协议(L2CAP)主要负责节点设备两端的逻辑连接,节点的新增或减少通过BLE的L2CAP控制。扫描管理(Scan Manager)负责广播信道上的广播信息,通过发送扫描信息到BLE的广播监听者,从而传到节点进行节点的传播。同样地,广播管理者(Advertise Manager)负责发送节点的广播的信息到目的节点。

当每个Mesh的节点不在广播数据的状态,就是在接受数据的状态,即在一个广播事件中BLE设备充当Advertiser 角色,也充当着Scanner角色。当Mesh节点需要广播的时候,退出接收数据的状态,正常收发的广播的优先级要比转发数据的优先级高。

2 影响BLE Mesh技术的关键因素

2.1 路由选择算法

2.1.1 CSR Mesh的洪泛式路由算法

基于蓝牙4.0的CSR Mesh组网技术采用的是最简单最可靠的洪泛式路由算法[6]。洪泛式路由算法又称为扩散法,其基本思想是每个节点都是用广播转发收到的数据分组,其节点和节点之间的距离为50 m,通过节点的不断一级一级广播,最终到达目的节点[7]。这种广播式的洪泛路由算法对于动态的节点,进出网络频繁的场景下非常有效,但是,洪泛式的广播会导致网络中充斥着大量重复的数据,占用网络资源,使得节点严重地消耗能量,整个网络的生命周期也会受影响。

针对传统的广播式洪泛算法缺陷,需要作出改进来避免无用的重复转发,提高带宽的利用率。例如: 将路由区域限定在指定区域内,在指定区域内再选择下一节点的路由区域。这种方法可以有效降低网络中节点的无用消耗,同时也可能出现在指定区域内找不到的节点的问题,所以需要更进一步去探讨如何有效地限定区域。

2.1.2 机会路由算法

机会路由算法的基本思想是每次数据包转发给一组节点,从这一组节点中选出最优节点,再从这一最优节点转发到下一组节点中,如此重复到目的节点接收到数据包,可以大大提高数据分组传输成功率[8]。机会路由算法的优劣取决于多个方面的因素,一是后备转发节点集,若后备转发节点过多,会导致数据重复发送的问题,若后备转发节点过少,则不利于提高数据分组的转发率[9]。二是节点组中最优节点的选择,确定最优节点的关键是能够反映节点发送能力的度量参数。度量参数主要包括空时变量、期望传输时间、期望传输次数、跳数、地理距离等。三是后备转发节点间的协调,正确接收到数据包的后备转发节点根据其优先级回复ACK应答帧,最先发送ACK的节点成为实际转发节点[10]

路由算法设计的优劣直接决定了数据转发的效率,不管是传统的洪泛式路由算法,还是机会路由算法,在节点运动剧烈的情况下,往往得不到较优的网络性能。

2.2 广播信道的局限

蓝牙工作在免许可的2.4 GHz的ISM射频频段。其物理信道分为两组:一组是广播(Advertiser)信道,一组是数据(Data)信道。在连接建立之前,设备之间是通过广播(Advertiser)信道交互数据的,当广播者发送一个广播包之后,它在同一信道上监听连接请求包或者扫描请求包,当正确接收到连接请求包之后,连接开始建立。在连接成功建立之后,数据之间的交互使用的是数据(Data)信道。

传统蓝牙中,使用32个广播信道和79个数据信道,每1 MHz一个频道;而在BLE中,只用了3个广播信道和37个数据信道,每2 MHz一个频道。广播信道的急剧减少是为了实现更低功耗,这意味着BLE扫描其他设备开启的时间远远低于传统蓝牙的开启时间。BLE技术设计的3个广播信道是为了在鲁棒性和低功耗之间取得平衡。在BLE中,如果只设1个广播信道,假设该信道被其他设备阻塞,则设备无法配对或者广播数据,整个系统将无法工作。如果信道设定的过多,该设备将需要花费大量的时间进行广播数据的传输,将与低功耗的初衷背道而驰。

BLE的3个广播信道用于Mesh网络中,则需重新考虑鲁棒性的问题。随着Mesh网络的节点不断增加,所有节点都只能共用3个广播信道,此时,出现信号冲突的概率就大大增加。

2.3 睡眠模式的关闭

BLE有三种工作模式:一是关闭模式,此时没有任何时钟在运行,芯片完全断电,没有任何设备能够进行连接。二是睡眠模式,此时仅有low_power_clk在运行,这种情况下只有达到预定的睡眠时间或者有wake_up唤醒请求,睡眠模式才能转换为正常工作的模式。三是正常工作模式,在这种模式下,可以进行广播、扫描、连接以及实时数据包的处理。主时钟hclk打开,若数据需要进行加密,加密时钟crypt_clk也会打开。

BLE设计采用睡眠模式来替代传统蓝牙的空闲状态,在睡眠模式下,主机长时间处于超低的负载循环状态,只需要在运行的时候由控制器来启动,因为主机比控制器消耗更多的能量。而且在睡眠模式下的数据发送间隔加大,由此,BLE的待机功耗大大减小。但是在BLE的Mesh网络中,一次事件中不仅是单一的广播或者单一的连接,若进入到睡眠模式之后,睡眠时间过短导致射频来不及关闭又必须打开,睡眠时间无效。如图4所示。

如图4(a)中,一次广播事件包括了在(37,38,39)3个广播信道上广播,T1为广播间隔范围为20 ms到10.24 s。广播完成后,BLE进入睡眠模式,直到下一次广播事件的来临。图4(b)中,一次事件中包括了正常的广播事件加上扫描事件。T1为广播间隔时间,广播事件的优先级最高,这个事件不能被打断。T2为扫描事件间隔,当扫描事件EVENTINT中断产生后,如果10 ms内没有新的事件需要处理,会重新开始扫描事件。T3为不可连接的广播事件间隔,当不可连接广播事件EVENTINT中断产生后,如果在一次这个广播事件间隔内没有可连接广播,并且UNCON_ADV_CNT(协议栈记录不可连接广播发送的次数)<5时重新开始这个事件。每产生一次EVENTINT中断,协议栈中的UNCON_ADV_CNT+1。

3 结论

目前,BLE Mesh技术的宣传很火热,BLE Mesh技术的出现对于WiFi和ZigBee等无线传输技术来说,将成为一大挑战。但是能够真正融入人们的日常生活还有很长的一段路要走。值得庆幸的是,在2015年2月,蓝牙技术联盟宣布成立蓝牙智能Mesh工作小组,旨在为BLE建立Mesh网络标准。虽然BLE Mesh目前还存在着许多问题,但是随着BLE Mesh技术的不断进步,相信在不久的将来,BLE Mesh能够纳入蓝牙技术联盟的标准之中,并且能够普及在智能家居和物联网的应用。

BLE Mesh网络协议综述的更多相关文章

  1. 网络协议 19 - RPC协议综述:远在天边近在眼前

    [前五篇]系列文章传送门: 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - DNS 协议:网络世界的地址簿 网络协议 17 - HT ...

  2. 无线Mesh网络技术基础与应用

    无线Mesh网络主要包含三类节点,构成了Mesh的基本服务集. 1.与有线网络相连的节点(GateWay节点),其主要负责实现无线Mesh网络和有线网络的数据交换. 2.可以进行Mesh组网并拥有Ro ...

  3. nRF5 SDK for Mesh(六) BLE MESH 的 基础概念

    Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile specification developed and published ...

  4. BLE MESH 学习[1] - ESP32 篇

    BLE MESH 学习 BLE MESH 是一种蓝牙(n:m)组网的技术. 本篇先介绍 BLE MESH 到使用 ESP32 的官方示例对其进行学习讲解. 后面会进一步学习 SIG 的 BLE MES ...

  5. 转-nRF5 SDK for Mesh(六) BLE MESH 的 基础概念

    nRF5 SDK for Mesh(六) BLE MESH 的 基础概念 Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile s ...

  6. 使用arm开发板搭建无线mesh网络(二)

    上篇博文介绍了无线mesh网络和adhoc网络的区别,这篇文章将介绍无线mesh网络的骨干网节点的组建过程.首先需要介绍下骨干网节点的设计方案:每个骨干网节点都是由一块友善之臂的tiny6410 ar ...

  7. 网络协议 20 - RPC 协议(上)- 基于XML的SOAP协议

    [前五篇]系列文章传送门: 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - DNS 协议:网络世界的地址簿 网络协议 17 - HTTPDNS:私人定制的 DNS 服务 网络协议 ...

  8. 蓝牙mesh网络技术的亮点

    蓝牙mesh网络技术的亮点 The highlights of Bluetooth mesh networking technology 导言 蓝牙是当今最主要的低功耗无线技术之一,对无线设备用户和开 ...

  9. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

随机推荐

  1. netbeans xdebug

    xdebug配置 装了wamp后,xdebug默认就安装好了,为了能够用netbeans远程调试,配置文件里得加几句 [xdebug] xdebug.remote_enable = on xdebug ...

  2. Space is not allowed after parameter prefix ':'

    问题:在hibernate中执行mysql语句,如果mysql语句中含有@a := 1 之类的变量,回报这个错误 语句类似于“set @rownum=0, @preval=null; select @ ...

  3. Google论文BigTable拜读

    这周少打点dota2,争取把这篇论文读懂并呈现出来,和大家一起分享. 先把论文搞懂,然后再看下和论文搭界的知识,比如hbase,Chubby和Paxos算法. Bigtable: A Distribu ...

  4. 【Selenium+Python Webdriver】报错之:TypeError: user_login() missing 1 required positional argument: 'self'

    先贴一下源码: base.py文件如下: from selenium import webdriver class Page(object): ''' 页面基础类,用于所有页面的继承 ''' rb_u ...

  5. API自动化测试利器——Postman

    自从开始做API开发之后,我就在寻找合适的API测试工具.一开始不是很想用Chrome扩展,用的WizTools的工具,后来试过一次Postman之后就停不下来了,还买了付费的Jetpacks.推出T ...

  6. 九度OJ 1023:EXCEL排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:14605 解决:3307 题目描述:     Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能.     对每个测试用例 ...

  7. mysql系列之9.mysql日志&存储引擎

    mysqlbinlog 是什么? 数据目录下的如下文件: mysql-bin.xxxxxx 作用? 记录数据库内部增删改查对mysql数据库有更新的内容的记录 三种模式? statement leve ...

  8. 360手机助手: App上架(提交资料)注意事项

    提交app资料尤其注意: .keystore和密码?由HBuilder提供公有证书: 签名证书KeyStore证书别名:hbuilder证书密码:123456keystore密码:123456 360 ...

  9. Hadoop实战-Flume之自定义Sink(十九)

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  10. python cookbook第三版学习笔记七:python解析csv,json,xml文件

    CSV文件读取: Csv文件格式如下:分别有2行三列. 访问代码如下: f=open(r'E:\py_prj\test.csv','rb') f_csv=csv.reader(f) for f in ...