蓝牙是当前最为广泛使用的无线通信协议之一。在日常的生活中,鼠标、耳机、笔记本电脑以及智能手机都支持蓝牙。蓝牙协议自1999年发布第一个Bluetooth1.0版本以来,已经迭代升级到了2017年的Bluethooth MESH,其中经历了Bluetooth1.1(2002年)、Bluetooth1.2(2003年)、Bluetooth2.0(2004年)、Bluetooth2.1(2007年)、Bluetooth3.0(2009年)、Bluetooth4.0(2010年)、Bluetooth4.1(2013年)、Bluetooth4.2(2014年)、Bluetooth5(2016年)。
所谓MESH,它是相对于点对点的传输而言的。在以往的蓝牙协议中,一个蓝牙设备只能跟一个设备进行通讯。而在MESH网络中,多个蓝牙设备可以组成一张对等网络,各个设备之间可以互相通讯。其中,如果两个设备之间距离太远,则需要通过中间的其他设备中继。
蓝牙MESH协议的历史可以从CSR说起,CSR于1998年创建于英国剑桥,主要研发GPS和蓝牙芯片,公司的英文全称是“Cambridge Silicon Radio”。2015年高通斥资24亿美元收购CSR公司,其中高通看重的CSR公司资产是其核心技术---CSRMesh。在高通的支持下,蓝牙联盟2017年推出了蓝牙MESH标准。
蓝牙MESH协议在Bluetooth low energy协议的基础之上,添加了七层协议栈,从下到上分别是Bearer Layer、Network Layer、Lower Transport Layer、Upper Transport Layer、Access Layer、Foundation Model Layer、Model Layer。其中,MESH功能主要是在Network Layer实现。
Bluetooth MESH协议的Network Layer目前采用的是基于flooding协议的MESH网络技术。flooding协议是相对比较简单的MESH网络路由技术。网络层中的数据包以广播的形式发送/转发,在网络中会产生大量重复的数据包,对网络的整体功耗有很大负面影响。目前的flooding路由协议,适合规模较小的网络。
Buletooth MESH协议的flooding路由的关键判断参数为TTL(Time To Live)值、目的地址。当一个MESH网络中的设备收到一个路由报文时,判断如下条件是否满足,(1) TTL值大于等于2,(2) 目的地址不为本节点。在满足的情况下则广播转发该报文,否则不转发。当然,这里只是介绍了flooding路由的基本逻辑,详细的协议内容不止这些,可以参考Bluetooth MESH协议原文。
从2017年BLE MESH协议发布到现在,生态链相关的产品已经比较成熟。已有很多非常便宜的支持BLE MESH的模组(比如,小米、泰凌微),以及支持BLE MESH的嵌入式操作系统(比如AliOS things)。
|