蓝牙mesh基本概念
分类:
文章
•
2022-10-07 18:29:28
蓝牙Mesh
是由蓝牙SIG
开发和发布的配置文件规范。这里介绍蓝牙Mesh的基本概念,概述了配置文件的操作和功能,并解释了Mesh设备的生命周期。
1、蓝牙Mesh
与BLE
的关系
蓝牙Mesh
基于蓝牙4.0
规范的蓝牙低功耗
部分,并与该协议共享最底层。在广播中,蓝牙Mesh物理表示与现有的BLE
兼容,因为Mesh消息包含在蓝牙低功耗广播分组的有效载荷内。但是,蓝牙Mesh指定了一个全新的主机层,虽然共享了一些概念,但蓝牙Mesh与蓝牙低功耗主机层不兼容。
蓝牙Mesh
和蓝牙低功耗
规范之间的关系:
2、应用领域
蓝牙Mesh
主要针对简单的控制
和监控应用
,如光控或传感器数据采集。数据包格式针对小型控制数据包
进行了优化,发出单个命令
或报告
,不适用于数据流
或其他高带宽
应用程序。
使用蓝牙Mesh
会导致比传统蓝牙低功耗
应用更高的功耗
。这主要是因为需要保持接收不断运行。因此,与蓝牙低功耗
不同,主动Mesh设备
不能长时间地使用纽扣电池。
蓝牙Mesh在网络中最多支持32767
个设备,最大网络直径为126
跳。
3、网络拓扑和中继
蓝牙Mesh
是一种基于广播
的网络协议,网络中的每个节点
都向所有节点发送和接收所有的消息。Mesh网络
中没有连接
的概念。Mesh中的任何设备
可以中继
来自任何其他节点的消息,这使得Mesh节点可以通过让一个或多个其他节点将消息中继到目的地
来向无线电范围之外的设备发送消息。此属性还允许设备随时移动和进出网络。
4、Mesh传输
蓝牙Mesh
利用BLE
广告客户和扫描仪角色,通过BLE
广告数据包进行通信。广告包
由附近的Mesh节点拾取并像其他BLE
广告包一样处理。Mesh数据包
用唯一的AD
类型表示,并添加到广告数据包有效负载
中。
BLE
设备以规则的广告间隔
发送广告包
,Mesh包也不例外。然而,与传统广告商不同,Mesh设备将在每次传输时改变其广告有效载荷,当它们在堆栈中排队时广播新的Mesh分组。每个蓝牙Mesh广告仅针对每个设备传输一次,并且如果Mesh中没有流量,则设备保持静默。
5、中继实现
蓝牙Mesh
通过中继消息
扩展网络范围。任何Mesh设备都可以配置为充当中继
,并且不需要专用的中继设备来构建网络。作为中继
的每个设备都会减少
接收消息中的生存时间
(TTL
)值,如果TTL
为2
或更高
,则转发它们。这种无向中继
被称为消息泛洪
,并确保消息传递的高概率
,而不需要任何关于网络拓扑
的信息。Mesh配置文件规范不提供任何路由
机制,所有消息都由所有中继
转发,直到TTL
值达到0
。为了避免消息被反复转发
,所有Mesh节点
都维护消息缓存
。此缓存用于过滤
节点已处理的数据包
。
基于洪泛
的消息中继
方法可能导致大量空中流量
,这可能会影响网络的吞吐量
和可靠性
。因此,强烈建议限制网络
中的中继
数量以限制此影响。网络中的中继节点
的速率
是消息路由冗余
和可靠性
之间的折衷。应根据网络密度
,流量
,网络布局
以及可靠性
和响应性
要求进行调整。
6、降低能量消耗
为了实现基于广播的通信,节点必须持续保持其无线
处于收听模式
,导致功耗显着高于典型的蓝牙低功耗设备。为了使低功耗节点能够参与Mesh网络,蓝牙Mesh网络包含低功耗朋友功能。该协议允许低功耗节点与常规Mesh节点建立关系,然后将定期缓存
并将消息转发到低功耗设备。这使得低功耗设备不必继续监听传入的消息。
7、GATT代理
为了支持不支持接收Mesh数据包的传统蓝牙低功耗设备,蓝牙Mesh网定义了一个单独的协议,用于通过蓝牙低功耗GATT协议隧道化Mesh消息。为此,Mesh配置文件规范定义了GATT承载和相应的GATT代理协议。该协议允许传统蓝牙低功耗设备通过建立与启用了代理功能的网状设备的GATT连接来参与Mesh网络。
为旧设备分配一个地址和必要的**,以成为网络的正式成员。设备通过常规配置过程或通过一些带外机制接收安全凭证。
8、解决
蓝牙Mesh寻址方案不同于蓝牙低功耗寻址方案。它有三种类型的地址:
(1)单播地址:每个设备都是唯一的
(2)组地址:允许形成一组设备并一次解决所有设备
(3)虚拟地址:具有大地址空间的未跟踪的基于UUID的地址
将设备添加到网络时,会为其分配一系列代表它的单播地址。设备的单播地址无法更改,并且始终是顺序的。单播地址空间支持在单个网状网络中具有32767个单播地址。任何应用程序都可以使用单播地址直接向设备发送消息。
组地址作为网络配置过程的一部分进行分配和分配。组地址可以表示任意数量的设备,并且设备可以是任意数量的组的一部分。网状网络中最多可以有16127个通用组地址。
虚拟地址可以被认为是组地址的特殊形式,并且可以用于表示任意数量的设备。每个虚拟地址都是从文本标签生成的128位UUID。虚拟地址不必由网络配置设备跟踪,并且以这种方式,用户可以在部署之前生成虚拟地址,或者可以在网络中的设备之间临时生成地址。
9、模型和元素(Model / Element)
为了标准化来自不同供应商的设备之间的通信,网状配置文件规范定义了一个接入层,该接入层在设备中的各种模型之间路由网格消息。模型表示特定的行为或服务,并定义一组状态和消息,这些状态和消息作用于这些状态。网格配置文件规范和网格模型规范各自定义了一组模型,以涵盖典型的使用场景,如设备配置,传感器读数和灯光控制。除此之外,供应商可以*定义自己的模型,并附带消息和状态。
设备中的模型属于元素。每个设备都有一个或多个元素,每个元素都充当网格中的虚拟实体,具有自己唯一的单播地址。每个传入消息都由元素中的模型实例处理。为了能够唯一地解决消息的处理方式,每个元素只有一个模型实例可以为特定的消息操作码实现处理程序。如果设备具有相同模型的多个实例,则必须将每个实例分配给单独的元素。同样,如果两个模型为同一个消息实现处理程序,则这些模型必须位于不同的元素中。
为了表示具有最小消息和状态重复的复杂行为,模型可以由其他模型组成,可能跨越多个元素。这些模型称为扩展模型。纯粹自包含的模型称为根模型。
模型通过发布和订阅系统相互通信。每个模型都可以订阅一组组和虚拟地址,模型只处理发布到其订阅地址之一或包含元素的单播地址的消息。任何模型都可以维护发布消息的发布地址。此发布地址可以是任何类型。
访问层
结构:
10、配置(Provision)
在设备可以参与正常网格操作之前,必须先进行配置。在配置期间,设备被添加到网络并被分配单播地址,网络**和设备**。供应由供应商完成,供应商是可信设备,可访问网络中的完整设备列表及其地址。在配置新设备之后,预计配置器将使用新设备的设备**来建立安全通道来配置它。
11、配置网络
蓝牙网格将网络配置留给*网络配置器。设备不应自行进行任何类型的服务发现。为了控制其他设备,必须通过用户交互或通过从数据库加载预定配置,由配置器配置诸如灯开关之类的设备。每个设备必须在其第一个元素中实现强制配置服务器模型,该元素用于配置其余模型。
配置完成后,配置程序将使用其Configuration Client模型的实例为新设备提供一组应用程序**和地址。除非重新配置,否则设备将在网络上的生命周期内使用这些**和地址。
12、示例场景:灯泡和开关
配置新的灯开关后,配置器中的配置客户端模型会读出新设备的模型和元素的列表,并将其呈现给用户。用户在设备的模型列表中找到灯开关模型,并为其提供“灯光控制”应用程序键。接下来,用户将模型的发布地址设置为“厨房区域”组地址,厨房中的所有灯泡都订阅该地址。下次按下新的灯开关时,厨房中的所有灯泡都会亮起。
13、安全
蓝牙Mesh采用多种安全措施来防止第三方干扰和监控。
14、认证
设备身份验证是配置过程的一部分,并允许用户确认添加到网络中的设备确实是他们认为的设备。网状配置文件规范定义了一系列带外认证方法,例如灯光闪烁,密码输出和输入,以及针对预共享**的静态认证。为了确保供应过程,使用椭圆曲线Diffie-Helman(ECDH)公钥密码术。设置完设备后,它就是网络的一部分,其所有消息都被认为是经过身份验证的。
15、邮件加密
Bluetooth Mesh具有两级AES-CCM加密功能,128位**可用于通过网络传输的所有消息。
最低层,网络加密,保护网状网络中的所有消息不被不属于网络的设备读取。加密是使用网络加***完成的,任何网络都可能包含多达4096个不同的子网,每个子网都有自己的网络**。共享网络**的所有设备都被视为网络的一部分,可以通过它发送和中继消息。通过使用多个网络**,网络管理员可以有效地将其网络划分为多个子网,因为网状中继仅转发使用已知网络**加密的消息。
第二加密层是传输加密。此加密层通过使用应用程序或设备**加密应用程序有效负载来限制哪些设备可以在网络中执行哪些操作。例如,考虑部署在酒店的网状网络,希望限制一些功能由工作人员控制(如配置**卡或访问存储区域)和一些可供客人使用的功能(如控制房间照明或空调)。为此,我们可以为访客提供一个应用程序**,为员工提供一个应用程序**,允许消息在同一网络中进行中继,同时防止访客和工作人员阅读彼此的消息。
虽然应用程序**用于将访问权限分离到网络中的不同应用程序,但设备**用于管理网络中的设备。每个设备都有一个唯一的设备**,只有供应商和设备本身才知道。除了设置其他特定于设备的参数之外,在使用新加***(网络或应用程序**)或地址配置设备时使用设备**。它还可用于通过将新**传输到网络中的所有其他设备(在传输**时使用其各自的设备**)从网络中驱逐恶意设备。此过程称为**刷新过程。
每个加密层都包含一个消息完整性检查值,用于验证消息内容是否使用指示的加***加密。
16、隐私
所有网状消息有效负载都是完全加密的。诸如源地址和消息***之类的消息元数据使用从网络**导出的隐私**进行模糊处理,即使对于公共报头字段也提供有限的隐私。
17、重播保护
为了防止恶意设备重放先前的消息,每个设备都保留一个正在运行的***,用于出站消息。使用唯一的***和源地址对发送每个网格消息。当接收消息时,接收设备存储***并确保它比从相同源地址接收的最后***更新。