蓝牙mesh并不是一个新版本,基于BLE这句话能解释很多问题,蓝牙mesh的设备跟一般BLE4.0、5.0设备都是蓝牙服务和特性,这一点上没区别,只不过是约定了一个固定名称的服务和特性,来传输指定格式的数据。蓝牙mesh只不过是一套人为规定的通信协议。不要把它脱离BLE设备的范畴,这一点非常重要。
mesh设备加入网络的过程,从抽象层面讲,至少包含以下几个方面:
(1)未配网设备需要让配网器知道他的存在
(2)在未配网设备和配网器间建立一个信息桥梁
(3)配网器和未配网设备建立某种安全的传输方式
(4)配网器需要验证未配网设备是否可以加入网络
(5)最后,如果未配网设备可以加入蓝牙mesh网络,则配网器加密传输配网数据给未配网设备。
实际程序中的配网流程也是与此一一对应
(1)通常情况下,未配网设备上电会向外广播。
(2)未配网设备跟配网器建立一个连接。
(3)通过椭圆曲线密钥交换协议(EDCH)安全的建立一个共享密钥,用于传递配网数据。
(4)通过OOB信息认证未配网设备是否可以加入蓝牙mesh网络。
(5)加密传输配网数据。
蓝牙mesh配网协议
蓝牙mesh配网协议的目的是为了更好的完成配网PDU在配网过程中的传输。PDU是用来在配网器与未配网设备之间进行通信的基本单元。目前蓝牙mesh规范定义了10种配网PDU:
1.配置邀请(Provisioning Invite)
2.配置能力(Provisioning Capabilities)
3.配置状态(Provisioning Start)
4.配置公钥(Provisioning Public Key)
5.配置输入完成(Provisioning Input Complete)
6.配置确认(Provisioning Confirmation)
7.配置随机数校验(Provisioning Random)
8.配置数据(Provisioning Data)
9.配置完成(Provisioning Complete)
10.配置失败(Provisioning Failed)
配网过程中所有的数据只有这10种数据,不会有其他。
蓝牙mesh配网流程
未配网设备加入蓝牙mesh网络,需要一个配网器与未配网设备进行配网交互,生成设备密钥并相互认证。配网器将蓝牙mesh网络的参数加密后传递给未配网设备,未配网设备将这些参数解密后,据解密结果决定是否加入这个蓝牙mesh网络。
配网的整个流程分为5个阶段:
1.信标(Beaconing)阶段
2.邀请(Invitation)阶段
3.交换公钥(Exchange Public Key)阶段
4.身份认证(Authentication)阶段
5.分发配网数据(Distribution Of Provisioning Data)阶段
蓝牙mesh配网协议栈
配网协议栈层次架构分为3层
- 承载层:用于基本的数据交互,承载所有需要发送的报文。
- 传输层:用于定义传输层PDU。
- 配网协议层(Provisioning Protocol):用于定义具体的PDU。