BLE mesh
GAP && GATT
- GAP
设备发现、连接和身份验证等。 - GATT
设备间数据传输和解释。
历史
- Bluetooth SIG 组织于 2017 年发布蓝牙 Mesh 标准。
BLE Mesh 建立于物理层与链路层之上
- [2402~2480Mhz;工作模式:Advertising && Connection][1]
BLE : 广播间隔 = 20ms; 扫描窗口 = 30ms,扫描间隔 = 40ms
BLE Mesh : 广播间隔 = 随机一小段时间;扫描窗口 = 扫描间隔 = 40ms
发布订阅消息系统
- 传统 Mesh : 灯需记住开关,开关需记住灯,灵活性差
- 解决办法 : 引入组,构成发布订阅消息系统;灯换了只需在组那边改订阅者者即可,类似 MQTT
优化泛洪通信
- 设备缓存关键信息,以确定是否收到过此消息避免二次转发
- TTL最大转发数
Mesh 节点特性 : 中继(Relay) 代理(Proxy) 好友(Friend) 低功耗(Low Power)
- 中继 : 通过Mesh广播承载层( Bearer :将 BLE 数据抽象供上层使用;目前定义了广播承载和 GATT 承载,对应 BLE 的 Advertising 和 Connection )接收和转发Mesh消息的能力,以实现更大的网络
- 代理 : 为了兼容不支持蓝牙Mesh的BLE设备如手机平板等,采用 BLE GATT Bearer 的方式在数据信道和 BLE 设备通信,通过广播转发
- 好友 && 低功耗 : 使能低功耗特性的设备睡眠时间较长,期间无法接受消息;使能好友特性的设备为其缓存消息。低功耗设备醒来后查询好友消息
- 一个节点可以使能多个特性,如图中 S 既是中继又是代理
加入 Mesh
- 配网者认证设备创建网络密钥,使其成为未配置的节点
- 配网者绑定应用层网络层密钥,设置模型的发布/订阅
- 成为节点
一个节点包括多个元素(Elements)
- 每个元素分配一个单播地址(Unicast Address:0x0001~0x7FFF)
- 元素订阅组播地址(发布订阅消息系统,Group Address:0xC000~0xFEFF),即可收到发布者发布的消息
模型(Models) = 状态(states) + 消息(Messages) + 行为(Behavior)
- 模型(Models) : 定义基本功能的最小单位;如,设备开关,灯泡亮度
- 状态(States) : 如灯泡中开关/亮度的状态值,不同状态可绑定(Bound State,如灯泡亮度非0为开,为0则关)
- 消息(Messages) : [SET(设置) + GET(请求) + STATUS(发送)]状态值(States)
- 行为(Behavior) : 模型在接收到消息后的行为;
如,灯收到设置ON/OFF状态值(SET States),ON/OFF状态值就要变成设置状态值消息的给定值;
如,灯收到请求状态值(GET States),那就把状态值通过 STATUS 传给询问方
BLE Mesh消息通讯基于服务器/客户端架构
- 服务器 : 对外提供状态访问接口
- 客户端 : 访问服务器状态
服务器模型 客户端模型 控制模型##
- 服务器模型 : 定义了状态,绑定状态和消息的集合
如,灯包括通用开关服务器模型(Generic OnOffServer),灯亮度服务器模型(Light Lightness Server) - 客户端模型 : 定义了一群消息用于改变服务器状态,客户端模型不含有状态
- 控制模型 : 包括以上两种模型
- 具体实例如下图
灯设备节点包含一个元素,元素中包含通用开关服务器模型和灯亮度服务器模型,两者相互绑定;开关模型不含有状态,灯与开关通过消息获知设置服务器元素状态
BLE Mesh的协议栈是层级结构
- BLE 层 : Advertising && Connection 两种数据传输格式
- 承载层(Bearer Layer) :将 BLE 数据抽象供上层使用,目前定义了广播承载和 GATT 承载,对应 BLE 的 Advertising 和 Connection
- 网络层(Network Layer) : 基于地址的消息传输,实现代理中继等特性以及加密行为
- 底层传输层(Lower Transport Layer) : 数据分段以及重组
- 上层传输层(Upper Transport Layer) : 应用层数据加密解密认证,传输节点间传输控制消息,包括朋友特性的应用实现
- 揭露层(Access Layer) : 定义应用数据格式,定义并控制数据在上层传输层加解密过程,确保从下层接收到的数据是准确的并传输到更高层
- 基础模型层(Foundation Model Layer) : 定义了状态 消息 模型 等实现 Mesh 网络的配置
- 模型层(Model Layer) : 标准化用户应用场景的实例,如灯模型,传感器模型等
安全机制
- Mesh Security is Mandatory
- Adding device uses 256-bit elliptic curves and 00B authentication
- All mesh messages are encrypted and authenticated
- Network, application and device security are addressed independently
- Replay attacks are prevented by mandating fresh sequence number
- Security keys can be changed via a Key Retresh procedure
License:
CC BY 4.0