【BLE】Mesh

【BLE】Mesh,第1张

Mesh的架构如下:

从图中可以看出,其实Mesh是建立在BLE上面的一层协议,就是说原有的BLE芯片需要做Mesh的功能并不需要重新设计,只需要在原有的基础上支持Mesh协议就即可。

在Mesh的规范中定义了几个世岁角色:

Unprovisioned device就是没有组网的蓝牙设备,虽然它没有在Mesh的网络中搜银睁,但是它仍然能通过广播的方式告诉Provisioners自己的存在。

Provisioners 可以邀请unprovisioned device加入到Mesh的网络中,但是Unprovisioned device需要经过身份的认证才能加入到Mesh当中。

已经加入到Mesh网络中的设备称为Node,即节点。Node都是由Provisioners邀请Unprovisioned device转化而来的。

Mesh的规范中指出,一个节点可以加搏睁入到多个mesh network中。

BleMesh依赖于低功耗蓝牙 - 低功耗蓝牙技术是蓝牙mesh使用的无线通信协议栈。

蓝牙具有一对一、多对一及多对首返多三种通信方式。

BleMesh采用的是多对多的通信方者卖饥式,Mesh网络中的所有设备都可以互相进行通信。

未加入mesh网络的设备称为"unprovisioned devices(未配网设备)";

已加入mesh网络的设备称为"node(节点)";

未配网设备转换为节点的过程称为"provisioning(配置)";

一个节点具有多个组成部分,每个可以独立进行控制,每个组成部分称为"element(元素)";

一个元素有多种情况,这种情况称为"state(状态)",例如Generic OnOff状态;

Properties(配芦属性)代表具体含义的数据

Message(消息)用来 *** 作状态值,分为三种:GET、SET、STATUS,SET消息又分为有响应式/无响应式。

设备加入mesh网络的过程称为provisioning,用于驱动provisioning过程的设备称为provisioner,provisioning成功后成为node,还需要经过一系列的配置。

配网过程应该遵循配网协议

配网有5个阶段:

NetKey:网络消息加密加密,成为网络的一员。

AppKey(ApplicationKey):处理应用层数据,有AppKey才能实现上层传输层以上的所有功能。

DevKey(DeviceKey):每个节点的devKey唯一,用于配网阶段和配网器进行安全传输用,只有配网器与入网的节点知道DevKey。

垃圾桶攻击(Trashcan Attacks):

重放攻击(Replay Attacks):

通过SEQ Number与Iv Index来保证消息是最新的

每条指令都会携带Seq,当下一个seq小于上一条时则该指令不会执行,provisioner端记录seq变化,同时node也存在记录,当node重置或者Iv Index更新时,seq都会重置。

代理:实现Gatt和蓝牙Mesh节点之间的mesh消息发送与接收。

中继:转发从其他设备接收到的消息,数据包包含TTL字段,用于限制中继的跳数。

低功耗/友好:两个节点互帮互助,由友好节点存储消息,在低功耗节点需要消息时,友好节点才会传送消息,他们关系称为"friendShip",一般低功耗节点受限于功耗,而友好节点相反,功率不受限的节点很适配作为友好节点。

一个network最多支持32767(0x7FFF)个地址

动态分配的地址(Dynamically Assigned) ->0xC000-0xFEFF

固定地址(Fixed Address) – 由蓝牙技术联盟分配,分为五段:

保留供将来使用 (RFU) –>0xFF00-0xFFFB

节点的基本功能都由模型来定义和实施,模型位于元素内,模型能定义并实施节点的功能和行为,而状态能定义元素的状态/条件。

蓝牙Mesh网络通过客户端-服务器架构进行通信

服务器模型(Server Model):暴露元素的状态,定义模型能够发送/接收消息,并根据这些消息定义元素的行为。

客户端模型(Client Model):对状态进行访问,请求、更改或使用服务器的状态

控制模型(Control Model):具有多种功能,可能同时含有一个或多个客户端模型、服务器模型

表示mesh网设备的配置,该model只有主元素支持,该model定义了多种状态

该模型表示该元素可以控制节点的配置

主要的作用是设备上述Configuration Server Model所拥有的状态。

Config Model App Bind 该消息作用将appKey bind to Model,将appKey绑定至model如何理解?

当一个元素收到一个模型与AppKey绑定的消息并成功执行后,它应该将AppKey索引对应的AppKey绑定到特定的模型上,并给模型返回AppKey状态消息。

每个server Model都有一组绑定到它的appKey,这些key值就负责加密、认证有这些model处理的消息。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12411208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存