BLE Mesh 的基础架构
BLE Mesh的架构一共可以分成8层,如图所示
1.蓝牙低功耗(Bluetooth Low Energy Core Specification)
最底下的 蓝牙低功耗 这一层,我将它标成了浅蓝色与上面几层进行了区分,原因是 蓝牙低功耗 并非仅是mesh架构的其中一层,而是完整的蓝牙低功耗协议栈,是提供基础无线通信功能所必需的组件,这些功能可为位于其上的mesh架构所用,并且 mesh系统 有赖于 蓝牙低功耗协议栈 的可用性,这一点与上面几层不同。
2.承载层(Bearer Layer)
Bearer Layer 定义了Mesh节点怎么传递网络消息的。定义了两种承载方式:广播advertising bearer 和GATT bearer 。
Advertising Bearer(广告承载层)利用的是BLE GAP广播包的advertising 和scanning的功能来传递接收mesh的报文。
The GATT Bearer(通用属性协议承载层)允许不支持Advertising Bearer的设备间接的与mesh节点进行通讯。怎么通讯呢?使用前面讲的Proxy Protocol(代理协议)。Proxy Protocol是封装在GATT里面,当然会用特别定义的GATT characteristics。而支持Proxy Feature的Proxy Node也就是代理节点,因为可以同时支持两种Bearer Layer,因此当然可以作为mesh节点和非mesh节点的中间桥梁。
3.网络层(Network Layer)
网络层定义了几件事情:
1:是定义如何将传输消息寻址到一个或多个元素,以及允许承载层传送传输层PDU的mesh消息格式。
2:决定是否中继/转发消息,接收消息以进行进一步处理,还是拒绝消息。
3:定义如何加密和认证(authentication)网络消息。
4.底层传输层(Lower Transport Layer)
从上层传输层接收PDU,并将其发送到对等设备的底层传输层,如果PDUs太长,将其进行分段(Segmentation)和重组(Reassembly),底层传输层就只有这两个功能。
5.上层传输层(Upper Transport Layer)
上层传输层主要是负责加密,揭秘和应用数据授权,还负责传输控制消息,这些消息内部生成、并发送于不同对等节点的上层传输层之间,包括与友谊和心跳相关的消息(也就是心跳包Heartbeats)
6.访问层(Access Layer)
访问层主要负责的是:
1.定义应用数据的格式
2.定义并控制在上层传输层中执行的应用数据的加密和解密
3.在将数据上传到堆栈之前,对来自上层传输层的数据进行验证,判断其是否适用于该网络和应用
4.定义更高层的应用如何跟上层传输层通讯
7.基础Model层(Foundation Models Layer)
定义配置(访问层的状态,消息)和管理Mesh网络所需的状态,消息和模型。
8.Model层(Models Layer)
定义用于标准化典型用户场景操作的模型,并在蓝牙Mesh模型规范或其他更高层规范中定义(Bluetooth Mesh Model specification)。 高层模型规范的示例包括用于Lighting(照明)和Sensor的模型。