BLE Mesh网络协议综述
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网络协议综述的更多相关文章
- 网络协议 19 - RPC协议综述:远在天边近在眼前
[前五篇]系列文章传送门: 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - DNS 协议:网络世界的地址簿 网络协议 17 - HT ...
- 无线Mesh网络技术基础与应用
无线Mesh网络主要包含三类节点,构成了Mesh的基本服务集. 1.与有线网络相连的节点(GateWay节点),其主要负责实现无线Mesh网络和有线网络的数据交换. 2.可以进行Mesh组网并拥有Ro ...
- nRF5 SDK for Mesh(六) BLE MESH 的 基础概念
Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile specification developed and published ...
- BLE MESH 学习[1] - ESP32 篇
BLE MESH 学习 BLE MESH 是一种蓝牙(n:m)组网的技术. 本篇先介绍 BLE MESH 到使用 ESP32 的官方示例对其进行学习讲解. 后面会进一步学习 SIG 的 BLE MES ...
- 转-nRF5 SDK for Mesh(六) BLE MESH 的 基础概念
nRF5 SDK for Mesh(六) BLE MESH 的 基础概念 Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile s ...
- 使用arm开发板搭建无线mesh网络(二)
上篇博文介绍了无线mesh网络和adhoc网络的区别,这篇文章将介绍无线mesh网络的骨干网节点的组建过程.首先需要介绍下骨干网节点的设计方案:每个骨干网节点都是由一块友善之臂的tiny6410 ar ...
- 网络协议 20 - RPC 协议(上)- 基于XML的SOAP协议
[前五篇]系列文章传送门: 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - DNS 协议:网络世界的地址簿 网络协议 17 - HTTPDNS:私人定制的 DNS 服务 网络协议 ...
- 蓝牙mesh网络技术的亮点
蓝牙mesh网络技术的亮点 The highlights of Bluetooth mesh networking technology 导言 蓝牙是当今最主要的低功耗无线技术之一,对无线设备用户和开 ...
- PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
Python黑帽编程1.5 使用Wireshark练习网络协议分析 1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...
随机推荐
- org hibernate querytimeoutexception
起因 在做Hibernate批量插入时,出现这个错误org.hibernate.QueryTimeoutException: 错误原因是表空间的容量不足,需要加大空间容量:那首先想到的是应该查询其容量 ...
- POJ 1787 Charlie's Change
多重背包 可行性+路径记录 题意是说你要用很多其它的零钱去买咖啡.最后输出你分别要用的 1,5 ,10 .25 的钱的数量. 多重背包二进制分解.然后记录下 这个状态.最后逆向推就可以. #inclu ...
- Docker入门系列4:命令行小结
百度Baidu App Engine(BAE)平台也是以Docker作为其PaaS云基础. 目的就是为了解决以下问题: 1) 环境管理复杂: 从各种OS到各种中间件再到各种App,一款产品能够成功发布 ...
- php字符串中 转义字符 “ ’‘ ” ’ “” ‘ " \’ ' ' \‘ " " \" '' \ " " 使用
<?php echo $str_string1='甲问:"你在哪里学的PHP?"'; echo "<br />"; echo $str_str ...
- 最近两周我们接触到的两种线上抓娃娃机的技术实现方案(一种RTSP/一种RTMP)
线上抓娃娃机需求 最近线上抓娃娃机的项目火爆了,陆陆续续几十款线上抓娃娃机上架,还有一大波正在开发上线中,各大视频云提供商都在蹭热度发布自己的线上抓娃娃机方案,综合了一下,目前线上抓娃娃机的视频需求无 ...
- MaLoc: a practical magnetic fingerprinting approach to indoor localization using smartphones
https://www.indooratlas.com/ MaLoc: a practical magnetic fingerprinting approach to indoor localizat ...
- js实现网页中的"运行代码"功能
<!DOCTYPE html> <html> <head> <meta charset='utf8' /> <title>网页中的运行代码功 ...
- Coin和Token有什么区别
在币圈,经常可以听到“coin”和“token”这些词汇,他们究竟分别代表什么,有什么区别呢?下面本文就和大家一起来扒一扒. 什么是coin? coin (包括山寨coin)是一种数字货币,它通过加密 ...
- nodejs 版本dockerfile 文件制作,和常用命令
Dockerfile 如下 官方的node6.3的版本有点难下载,建议去网易蜂巢 https://c.163.com/hub pull hub.c.163.com/library/node:6.9 ...
- Java中synchronized
原文地址 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种:1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用 ...