Bluetooth Mesh

About Bluetooth Mesh

Bluetooth SIG组织在2017年7月17日发布了蓝牙Mesh标准。 蓝牙Mesh不同于传统Bluetooth Low Energy(BLE)协议的1对1,1对多的通信方式,它实现了多对多的通信。这使得mesh网络中的各个节点之间可以相互通信。蓝牙Mesh协议建立在BLE的物理层和链路层之上, 也就是说它可以和BLE 4.0及以上版本的蓝牙设备通信。注意这并不意味着它支持所有BLE最新的特性, 譬如低功耗蓝牙的LE Coded PHY及2M PHY,在现有的Bluetooth Mesh规范中并不支持。

 

BLE物理层和链路层

物理层 

BLE工作在2.4GHz ISM频段2402MHz-2480MHz。BLE定义了40个信道, 每个信道2MHz宽度。 其中有3个广播信道, 图中绿色标示的37, 38, 39信道。 它们被用于设备的发现, 广播等功能。 这三个信道所处的频段正好避开了和同样工作在2.4GHz频段的WiFi最常用的第1,6, 11信道 减少正常通信的干扰。其他37个信道用做BLE建立连接后的双向数据传输,叫做数据信道。在打开蓝牙的自适用跳频功能后,设备将会自动侦测干扰来选择合适的工作信道。这两种信道类型正是对应于BLE的两种主要通讯模式Advertising 和 Connection。蓝牙Mesh在网络内部节点间的通信只采用了Advertising的方式。

链路层 

Advertising是指蓝牙广播设备在3个广播信道里以特定的时间间隔发送消息,同时蓝牙扫描设备以特定时间长度的的扫描窗口和间隔,依次扫描3个广播信道来接收广播设备发送过来的信息。 图中三个不同颜色的柱状图表示37,38,39三个广播信道。 广播设备连续在三个信道里发送消息,间隔为20ms。 而扫描设备的扫描窗口时间为30ms, 扫描间隔为40ms, 一次扫描一个信道。 蓝牙Mesh设备在网络内部通信时, 以尽可能接近100%的占空比来扫描广播信道。也就是说扫描窗口时间等于扫描间隔, 以确保信息不会丢失。 蓝牙Mesh设备在发送特定信息的时候并不会像普通BLE广播要等一个广播间隔, 而是延迟一小段随机时间就立即发送出去。

 

BLE系统架构

蓝牙mesh的协议栈是层级结构。

 

  • 最低层就是BLE层, 就像一开始介绍的蓝牙mesh建立在BLE物理层和链路层之上,采用Advertising和Connection两种数据传输方式。
  • 承载层(bearer):承载层定义了如何使用底层LE栈堆传输PDU。目前定义了两种承载,Advertising Bearer和GATT Bearer。
  • 网络层(network):网络层定义了各种消息地址类型和网络消息格式。中继和代理行为由网络层实现。
  • 下层传输层(lower transport):在需要时,下层传输层处理PDU的分段和重组。
  • 上层传输层(upper transport):负责传入和传出接入层的应用数据的加密、解密和认证。它还负责处理称为传输控制消息的特殊消息。这些包括与“友谊”关系相关的心跳和消息。
  • 访问层(access):负责应用程序数据的格式,定义和控制在上层传输层执行的加密和解密过程,并在将数据向上转发到堆栈之前验证从它接收到的数据用于正确的网络和应用程序。
  • 基础模型(foundation models):基础模型层负责实现那些与MESH网络的配置和管理有关的模型。
  • 模型(models):模型层关注模型的实现,因此也关注行为、消息、状态等的实现。

 

节点特性

蓝牙Mesh的节点都具有收发消息的功能, 同时节点可以选配一些特性, 如中继(relay), 代理(Proxy), 好友(Friend)和低功耗(Low Power)。

 

  • 中继特性:那些使能了此特性的节点可以通过Advertising Bearer接收并转发消息给mesh网络其他设备。它只转发不在消息缓存和TTL的值大于1的消息, 转发前会把TTL的值减1。这里的Bearer是指蓝牙Mesh协议中的承载层,它主要是把BLE数据抽象并供上层使用。目前定义了两种承载:广播承载和GATT承载,分别对应BLE的Advertising和Connection方式。
  • 代理特性:为了能够兼容市场上数十亿台不支持蓝牙Mesh的BLE设备如手机, 平板电脑等, 使能这个特性的节点能够采用BLE GATT Bearer的方式在数据信道和BLE设备通信,并且代理节点会把来自手机和平板电脑的消息通过Advertising的方式转发给mesh网络其他设备。
  • 友谊特性:它包含两个子特性, 好友和低功耗特性。对于功耗敏感比如纽扣电池供电设备使能低功耗特性,在大部分时间处于休眠状态, 在较长的时间间隔醒来一次。但是在睡眠期间的传递给它的消息就有很大可能错失掉,于是使能好友特性的设备可以帮助与之组合的低功耗设备缓存消息,低功耗设备从休眠中醒来后向它的好友设备查询消息并作出相应的处理。

 

网络拓扑

图中所示的蓝牙Mesh网络拓扑。 针对使能了不同特性的节点,分别称呼为低功耗节点,好友节点,中继节点。

 

节点之间的连线表示无线信号覆盖范围内的直接连接,对无线信号覆盖范围外的节点之间的通信需要经过中继节点。 如图中的Q,R,S进行消息转发到达目的节点。图中有3个好友节点,其中节点P和O分别有3个和2个低功耗节点组合,好友节点N没有低功耗节点组合。 节点T是BLE设备, 通过GATT Bearer方式和代理中继节点S进行通信,节点S必须转发所有和节点T的消息传输。比如BLE节点T要发送消息给低功耗节点L。首先节点T通过GATT Bearer在数据信道发消息给节点S,然后节点S通过Advertising Bearer方式在广播信道转发消息。节点H,R,O,N都在其无线信号覆盖范围并接收到消息, 节点O作为低功耗节点L的好友会储存收到的消息,在节点L从睡眠中醒来后会查询好友节点O来取得这个发送给它的消息并做相应的处理。