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网络的可靠性也极高,如果某个节点上行有线链路出现故障,不会影响整个网络的运行,可以有效避免单点故障。

安卓 BLE Mesh协议栈 ble mesh原理_数据

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

安卓 BLE Mesh协议栈 ble mesh原理_安卓 BLE Mesh协议栈_02

    图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所示。

安卓 BLE Mesh协议栈 ble mesh原理_物联网_03

    如图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能够纳入蓝牙技术联盟的标准之中,并且能够普及在智能家居和物联网的应用。