Bluetooth Mesh简介
Bluetooth Mesh简介
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
开通配置
开通配置是指:将某台设备加入到mesh网络中,从而变成一个节点的过程,主要分为五个步骤。
第一步:发送beacon信号
未开通配置的设备,如需要加入mesh网络的灯,可以发出mesh beacon广播数据包,声明自己是未开通配置的设备,可以被配置。
第二步:邀请
启动配置设备(如手机)向需要加入mesh网络的设备(如灯)发送邀请,发送的内容是:开通配置邀请PDU(特定格式的数据包)。需开通配置的设备(如灯)收到后会返回一定的数据包,即:开通配置能力PDU。
第三步:交换公共密钥
启动配置设备(如手机)和需要开通配置的设备(如灯)交换公钥。公钥可以是固定的或者暂时生成的。可以通过蓝牙传输交换,也可以使用带外数据(OOB)交换。
第四步:认证
在认证过程中,新设备会输出一个或多个随机数。用户在启动设备上输入该随机数,整个认证的过程就全部完成了。
第五步:启动配置数据分发
认证完成后,会根据两台设备的私钥和交换的对等密钥生成一个会话密钥。之后利用会话密钥来加密后续的数据分发,完成剩余的开通配置过程:生成网络密钥(NetKey)和设备唯一地址(单播地址Unicast Address)。至此,这台新设备就正式成为节点。
NetKey:IV索引,mesh安全参数。
Unicast Address:启动配置设备分配的单播地址。
特性
四种特性:中继(relay)、代理(proxy)、友(friend)、低功耗(low power)。
每个节点都可以同时支持、取消一种或多种特性。
中继
支持中继的节点称为中继节点,它可以重发接收到的消息。通过中继,消息可以进行多次跳跃,从而传输到整个mesh网络。
mesh网络PDU的TTL(time to live)字段,用来规定每条消息在网络中可被中继跳跃的次数。
低功耗与友
低功耗节点:如纽扣电池供电的温度传感器。
低功耗节点会同另一个节点配合工作,这个节点对功耗没有要求,称为友节点。
低功耗节点会对友节点进行低频率的轮询,查看是否有新消息。轮询时,友节点会将消息发送给低功耗节点。
正是这种关系,才使得低功耗节点能够在蓝牙mesh网络中正常接收消息,在正常工作的同时保持较低功耗。
代理
代理节点:实现没有集成蓝牙mesh协议的BLE设备与mesh网络中的任何节点进行通信。
如:GATT设备可以通过代理节点读写代理协议PDU。
节点配置
通过“配置服务器状态(如SET、GET、STATUS)”来指明某个节点是代理节点,中继节点还是其他节点。
mesh系统架构
BLE
蓝牙mesh正是利用BLE进行实际上的信息通信的。
承载层
作用:定义如何使用底层BLE协议栈传输网络PDU。
1、广播承载层
广播承载层利用BLE GAP广播和扫描特性,发送和接收mesh PDU。
2、GATT承载层
GATT承载层通过代理协议与mesh网络中的节点进行通信。
mesh代理节点实现特定的GATT特性,来支持两种承载层,这样就可以在承载层间转换和中继消息。
网络层
作用:定义多种消息地址类型和网络消息格式。协助传输层的PDU通过承载层传输。还可以实现代理和中继。
底层传输层
传输PDU,还可以对PDU进行分段和重组。
上层传输层
对接入层的应用数据进行加解密和认证。在不同节点之间,对“传输控制消息”生成和发送。
接入层
定义如何使用上层传输层,如:
定义应用数据格式,控制数据加解密,验证。
基础模型层
实现mesh网络配置和管理的基础模型
模型层
定义模型的实现以及模型规范中定义的行为、消息、状态、绑定等的实现。
安全性
BLE中,允许profile设计者采用不同的安全机制,安全可选。
mesh中,安全防护强制执行,不可认为修改。
基本原则
1、所有mesh消息都要加密、认证。
2、网络、应用、设备,三者安全性相互独立。
3、可通过密钥刷新程序来更新节点的安全密钥。
4、消息模糊化,隐私保护机制,防止外界跟踪节点的活动。
5、保护网络免受中继攻击。
6、设备添加到mesh称为节点的过程,本身就是安全的过程。
7、节点可以从网络中安全的移除。
三种密钥
网络密钥(NetKey)
每个节点都有一个相同的网络密钥,使节点成为网络的一员。
应用密钥(AppKey)
解密相应的应用数据。
如:灯拥有灯应用的AppKey,但是没有热力系统的AppKey。
设备密钥(DevKey)
每个节点都有一个独一无二的设备密钥。
用于开通配置过程中,启动配置设备(如手机)与节点间的安全通讯。
消息的传递
发布与传递
WIFI基于中央网络节点工作,如路由器,所有的网络传输都是通过路由器,路由器出现故障,整个网络都会瘫痪。
蓝牙mesh使用管理型网络泛洪的技术进行消息传递。当某个节点发布消息后,如果配置合适,所有节点都会收到消息,还可以中继到更远的地方。
多路径传递
通过管理型网络泛洪技术,消息可以通过多种途径到达目的地。
管理型网络泛洪
心跳
周期性的向其他节点发送心跳消息,告知该节点处于活动状态。
TTL
设置TTL可以控制消息中继跳跃次数。
心跳消息可以用来确定最适合的TTL值。
消息缓存
每个节点缓存最近接受的全部消息,如果新来的消息已存在缓存中,则已被处理,将其立即丢弃。
友谊
友节点可以保存消息,为低功耗节点服务,使低功耗正常运行。
协议栈中消息传递
PDU的网络ID区域,识别NetKey。应用标识符(AID),识别Appkey。若不能识别,则将这条PDU丢弃。
PDU的消息完整性检查(MIC)区域,不通过则将消息丢弃。