搜索
查看: 525|回复: 0

[分享] 蓝牙Mesh协议高级架构

[复制链接]

120

主题

121

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
发表于 2024-1-11 10:51:26 | 显示全部楼层 |阅读模式
在蓝牙mesh模型里,消息通信基于客户端-服务器的架构,对外提供状态访问接口的叫做服务器(Server),而访问服务器状态的叫做客户端,模型分为三种。
服务器模型:服务器模型包含了一个或多个元素上的一种或多种状态,比如灯泡上包含有通用开关服务器模型(Generic OfOff Server)和灯泡亮度服务器模型(Light Lightneww Server)
客户端模型:客户端模型定义了一系列的消息,用于客户端去请求、设置服务端的状态,比如开关中含有通用开关客户端模型(Generic OnOff Client)以及灯亮度客户端模型(Light Lightness Client),客户端模型不含有状态
控制模型:控制模型可以包含一个或多个客户端模型,用来和其他节点的服务端模型通信;也可以包含一个或多个服务端模型,用于响应其他节点客户端模型发来的消息


发布和订阅
节点可以向单播地址、组播地址、虚拟地址发布(publish)消息,其他节点也可以通过订阅(subscribe)这些地址来获得这些消息;如客厅中的灯具可以订阅客厅的组播地址


网络安全
mesh对传输的数据进行分层次加密,网络层数据通过网络密钥加密;应用密钥用于加密接入层数据;配置模型的数据则采用设备密钥进行加密。
蓝牙mesh的安全是强制性的,设备加网的过程是采用了256 bit椭圆曲线加密和带外数据认证的方式,所有mesh的消息都经过128 bit AES-CCM加密和认证,加密和认证在网络层和应用层都得以实现,重发攻击被消息里包含强制更新序列号的方式所阻止,在mesh网络中通过刷新密钥来防止垃圾桶攻击。


网络拓扑
Mesh网络中有4种功能节点,每个Mesh设备可以有选择的支持,分别为
中继功能(Relay):那些使能了此特性的节点可以通过Advertising Bearer接收并转发消息给mesh网络其他设备,它只转发不在消息缓存和TTL的值大于1的消息,转发前会把TTL的值减1。支持中继功能的节点称为中继节点
代理功能(Proxy):为了兼容不支持蓝牙Mesh的BLE设备(比如手机),能够采用BLE GATT Bearer的方式和BLE设备通信,实现mesh广播数据包和GATT通信数据包的转换,支持代理功能的节点称为代理节点
低功耗功能(Low Power):主要是应用在低功耗设备上,减少设备工作时间,大部分时间处于休眠状态,需要配合朋友节点,支持低功耗功能的节点称为低功耗节点
朋友功能(Friend):帮助低功耗功能节点缓存消息,便于低功耗节点唤醒后向其查询消息,支持朋友功能的节点称为朋友节点。


蓝牙协议栈属于层级结构
BLE层: 蓝牙mesh建立在BLE物理层和链路层之上,采用Advertising和Connection两种数据传输方式
承载层(Bearer Layer) :把BLE层的数据抽象并供上层使用, 目前定义了两种承载,广播承载和GATT承载, 分别对应BLE的Advertising和Connection方式
网络层(Network Layer) :定义了PDU的格式,负责基于地址的消息传输,实现对承载层的消息报文进行加解密和认证行为
底层传输层(Lower Transport Layer):负责将数据分段和重组,保证数据的完整
上层传输层(Upper Transport Layer): 负责应用层信息数据的加密,解密和认证;它还定义了节点间传输控制信息,包括了朋友特性的应用实现
接入层(Access Layer):定义应用数据的格式,定义并控制应用数据在上层传输层的加密解密的过程;它确保从下层接收到的数据是正确的并传输到更高层的应用(指定到Model)
基础模型层(Foundation Model Layer):定义了配置和管理Mesh网络所需的访问层的状态、消息、 模型等, 实现mesh网络的配置


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|RF技术社区

GMT+8, 2024-4-28 22:36 , Processed in 0.077693 second(s), 9 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表