Bluetooth® Mesh网络的核心基础概念

如需要了解更多蓝牙相关知识,请点击下方连接

https://blog.csdn.net/weixin_47456647/article/details/155188246?spm=1011.2415.3001.5331

蓝牙网状网络为 "与环境互动" 创造了新可能 ------ 无论是用智能照明、暖通、安防系统让家庭 / 办公空间更智能,还是提升工业无线传感器网络(WSN)的效率,它都能提供构建大规模设备网络的基础,支持数十、数百甚至数千台无线设备可靠、安全地互通。本文将深入解析这一创新网络拓扑背后的核心基础概念。

节点

想象一个由数千台设备组成的网络,每台设备都通过蓝牙低功耗(LE)短突发无线连接通信 ------ 这些蓝牙网状网络中的设备被称为 "节点"。每个节点都能收发消息,信息可在节点间中继,让消息传输距离突破无线电波的常规限制。这种节点组成的网络(图 1)可覆盖制造工厂、办公楼、购物中心、企业园区等场景。

蓝牙网状网络的节点类型丰富,可在网络中承担多种角色:灯具、机械、安防摄像头、烟雾探测器、环境传感器等,都是节点可承担的角色示例。

元素

有些节点(如传感器)由电池供电,而另一些节点(如灯具、生产机械、安防摄像头)由电网供电;部分节点的处理能力更强,可在网状网络中承担更复杂的任务,同时具备以下四种节点功能中的任意一种:

  • 低功耗功能:功耗受限的节点可通过该功能减少无线电开启时间、节省电量。低功耗节点(LPN)需与友节点配合工作。
  • 友功能:无功耗限制的节点很适合作为友节点,负责暂存发往低功耗节点的消息与安全更新,仅在低功耗节点主动请求时才交付。
  • 中继功能:中继节点接收并重传消息,通过节点间的中继实现更大规模的网络。节点是否承担该功能,取决于其电源与计算能力。
  • 代理功能:代理节点实现 GATT 设备与蓝牙网状网络节点之间的消息收发,承担该角色的节点需要稳定的电源与充足的计算资源。

部分节点结构更复杂,由多个独立的 "元素" 组成:每个节点至少包含一个 "主元素",还可包含额外元素(图 2)。元素由定义节点功能与自身状态的实体构成。以灯泡为例,它包含 1 个元素、2 项功能:

  • Node = Light bulb
  • One Element = Primary Element
  • Functionality of node
    1. On/Off
    2. Brightness
  • Condition/State of Element
    1. On or Off
    2. 0 -- 10 (Brightness Level)

节点内的每个元素都有一个唯一地址,称为 "单播地址",这让每个元素都可以被单独寻址。我们会在蓝牙网状网络系列的后续内容中解释寻址机制。

模型与状态

无论节点是部署在生产车间、酒店、办公楼还是企业园区,节点的基础功能都是由 "模型" 定义并实现的。模型存在于元素内部,每个元素必须包含一个或多个模型(图 3)。模型负责定义并实现节点的功能与行为,而 "状态" 则用于描述元素的当前状态。

用我们的Light bulb示例来说:这个模型的功能是 "开关" 和 "亮度调节",对应的状态分别是 "开 / 关" 和 "0--10(亮度等级)"。

  • Model (functionality of node)

      1. On/Off
      • State -> On or Off
      1. Brightness (0-10)
        1. State -> 0-10

蓝牙网状网络支持 "复合状态"------ 即由两个或多个值组成的状态。变色灯就是一个例子:它的色相可以独立于色彩饱和度或亮度变化。

"绑定状态" 指的是一个状态的变化会触发另一个状态的变化。常见的绑定关系存在于 "亮度状态" 与 "开关状态" 之间:若亮度从 0 变为 1,开关状态也会从 "关" 切换为 "开"。

每个模型都有唯一标识符:蓝牙 SIG 采用的模型是 16 位,而厂商自定义模型是 32 位(包含 16 位蓝牙分配的公司标识符,以及 16 位厂商分配的模型标识符)。这确保了每个模型都能被唯一寻址。

蓝牙网状网络通过 "客户端 - 服务器架构" 实现消息通信:服务器的作用是暴露元素的状态。最简单的状态之一是 "二进制开关"(状态非开即关),而 "通用开关服务器模型" 就是一种简单的服务器模型,它包含代表开关状态的状态值。

客户端通过请求、修改或使用服务器的状态来访问这些状态。"通用开关客户端模型"(对应二进制开关)是简单客户端模型的示例:它通过发送消息来控制通用开关服务器模型,比如通过这种机制实现灯光的开关控制。

这种客户端 - 服务器架构衍生出三类模型:

  • 定义模型可收发的消息,以及元素在收到这些消息后的行为

    • 示例:
      • 开关:可暴露开关的状态
      • 传感器:可暴露传感器的状态(比如温度值、传感器的满 / 缺状态)
      • 功率等级:可暴露功率状态(等级 1-10)
  • 客户端模型

    • 定义客户端用于请求、修改或使用服务器对应状态的消息集合
    • 示例:
      • 开关:客户端发送 "开 / 关" 消息
      • 功率等级:定义功率状态(0-10)的消息
  • 控制模型

    • 具备多重功能,可能包含以下一种或多种组件:
      • 客户端模型
      • 服务器模型
      • 控制逻辑(规则与行为):协调与其连接的各模型之间的交互
    • 示例:我们可以为一台给机器循环输送冷却液的泵使用控制模型
      • 场景:温度传感器记录机器温度,当温度超过设定值时,冷却泵启动
      • 组件:
        • 冷却泵的控制模块:包含一个用于温度传感器的客户端(接收温度值)、一个用于开关的服务器(控制泵的启停)
        • 控制逻辑(规则与行为):定义 "当温度传感器数值超过设定值时,启动泵"

模型定义让你可以配置网状网络中节点及其功能。模型定义及其他模型相关概念,会在后续文章中详细介绍。

蓝牙mesh网络架构

蓝牙网状网络运行在蓝牙低功耗(LE)协议栈之上。下图 1 展示了蓝牙网状网络的协议栈,并定义了各层的功能:

协议栈层级 功能描述
模型层 定义模型,进而定义功能。
基础模型层 定义配置与管理网状网络所需的状态、消息与模型。
接入层 定义应用数据的格式,以及高层应用如何使用上层传输层。
上层传输层 对应用数据进行加密、解密与认证。
下层传输层 定义上层传输层消息如何分片、重组为多个下层传输 PDU。
网络层 定义传输层消息如何寻址到一个或多个元素。
承载层 定义网络消息如何在节点间传输。
蓝牙低功耗核心规范 蓝牙低功耗(底层基础)。

地址

蓝牙网状网络包含 4 类地址(其中 3 类用于消息通信):单播地址、虚拟地址、组地址,第 4 类是未分配地址。地址长度为 16 位,编码规则如下(图 2):

数值(二进制) 地址类型
0b0000000000000000 未分配地址
0b0xxxxxxxxxxxxxxx(除上述值) 单播地址
0b10xxxxxxxxxxxxxx 虚拟组地址
0b11xxxxxxxxxxxxxx 组地址
  • 未分配地址:未配置的元素或无指定地址的元素会使用该地址,这类元素无唯一标识,因此不用于消息通信。
  • 单播地址:配置者会为节点中的每个元素分配一个单播地址,有效期与节点在网络中的存续期一致。单播地址可出现在消息的源地址或目的地址字段,发往单播地址的消息仅由一个元素处理。
  • 虚拟地址:是与特定标签 UUID 关联的一组元素,可被发布或订阅。标签 UUID 是 128 位值,关联来自一个或多个节点的多个元素。

对于虚拟地址,其第 15 位和 14 位分别设为 1 和 0(图 2),第 13--0 位是哈希值(提供 16384 个哈希值)。哈希值由标签 UUID 生成 ------ 直接核对 128 位 UUID 效率较低(尤其 UUID 可能跨多个消息分片),哈希值能更高效地确定消息的接收元素。

  • 组地址 :是蓝牙网状网络中的另一种组播地址,代表来自一个或多个节点的多个元素,分为两类:
    • 动态分配:0xC000--0xEFFF
    • 固定地址(由蓝牙 SIG 分配,分为 5 段):
      • 预留未来使用(RFU):0xF000--0xFFFB
      • 所有代理节点:0xFFFC(发往所有启用代理功能的节点)
      • 所有友节点:0xFFFD(发往所有启用友功能的节点)
      • 所有中继节点:0xFFFE(发往所有启用中继功能的节点)
      • 所有节点:0xFFFF(发往所有节点)
    • 发往固定地址的消息,由节点的主元素处理。

消息

蓝牙网状网络通过消息通信,消息分为控制消息接入消息

  • 控制消息:与网状网络运行相关的消息,例如心跳消息、友节点请求消息。
  • 接入消息:允许客户端模型获取 / 设置服务器模型的状态值,或由服务器模型用于上报状态值。

模型定义并实现节点的功能;元素是节点内可唯一寻址的实体,包含一个或多个模型;状态则描述元素的状态。每个状态对应服务器模型支持的一组消息,例如客户端模型请求状态值、请求修改状态,或服务器模型发送状态 / 状态变更消息。

消息通过操作码标识,附带参数。操作码定义消息的操作类型,示例:

  • 通用开关读取:用于标识通用模型的开关状态,无参数。
  • 通用开关设置 :用于设置通用模型的开关状态,参数包括:
    • OnOff:目标值(开 / 关)
    • TID:事务标识符(标识消息是新消息还是重传)
    • Transition Time:元素从一个状态切换到另一个状态的时长
    • Delay:消息执行延迟

接入消息分为两类:确认型非确认型。确认型消息会被每个接收元素传输并确认,响应通常是状态消息;非确认型消息无需响应,蓝牙网状网络的状态消息就是非确认型消息的示例。

消息安全

蓝牙网状网络的每条消息都通过 **NetKey(网络密钥)AppKey(应用密钥)** 进行加密和认证:

  • NetKey:用于网络层通信。若网状网络无子网,网络内所有通信使用同一网络密钥。
  • AppKey:用于应用数据。网络中部分节点可能对应特定应用,这类应用中的敏感数据需要受限访问 ------ 这些节点会使用特定 AppKey,并与特定应用关联。例如安防(楼宇门禁、设备间门禁、CEO 办公室门禁)、照明(生产车间灯、建筑外墙灯、走道灯)、暖通系统等场景,可能使用不同的 AppKey。

中继节点(如灯泡、墙壁开关)通常持有有效的 NetKey,可在网络内中继敏感消息,但无法访问各受限区域(如楼宇控制、暖通系统)的特定 AppKey,因此无法解密这些应用的数据。

消息交换

蓝牙网状网络采用发布 / 订阅模型传输消息:生成消息的节点是 "发布方",希望接收消息的节点会订阅感兴趣的地址。消息可发布到单播、组或虚拟地址。

消息可以是其他消息的响应 ,也可以是主动推送的消息:发送响应消息时,模型会将消息发起方的源地址作为目的地址;发送主动推送消息时,会将模型的发布地址作为目的地址 ------ 节点中的每个模型都有唯一的发布地址。

接收消息时,节点内的每个模型实例(一个节点可能包含多个模型)可订阅一个或多个组地址 / 虚拟地址的消息。

订阅消息的模型通过订阅列表定义可接收消息的有效地址:当模型收到消息时,会检查订阅列表,若列表中的地址是该模型元素的单播地址,或属于该节点的固定组地址,则判定为匹配。图 3 展示了接入消息的有效源地址与目的地址:

地址类型 有效源地址 接入消息的有效目的地址
未分配地址
单播地址
虚拟组地址
组地址

当蓝牙网状网络实体发布各节点的状态时,整个网络中的系统都可订阅这些数据(无论与发送节点的距离远近)。这让网络一端的设备能通过低功耗无线消息,与设施内其他位置的管理员通信,不受距离限制。

了解更多蓝牙网状网络信息

蓝牙网状网络结合了蓝牙技术成熟的全球互操作性与可信生态系统,支持构建工业级设备网络。现在你已了解蓝牙网状网络的基础核心概念,可以进一步探索其拓扑细节。若想深入了解,可下载《蓝牙网状网络技术概述》文档。后续我们还会探讨蓝牙网状网络的安全、配置、代理节点等内容。

相关推荐
一颗青果22 分钟前
HTTP协议详解
linux·网络·网络协议·http
专业开发者3 小时前
物联网传感器:破解设备维护难题
物联网
广州灵眸科技有限公司3 小时前
瑞芯微(EASY EAI)RV1126B CAN使用
linux·网络·单片机·嵌入式硬件
SmartRadio3 小时前
CH584M vs nRF52840 vs 主流BLE SoC全面对比
单片机·嵌入式硬件·mcu·物联网·开源·硬件工程
cici158744 小时前
C#实现三菱PLC通信
java·网络·c#
专业开发者5 小时前
经 Nordic 实测:蓝牙长距离传输
网络·物联网
叁散6 小时前
实验三:基于物联网通信协议的船舶AIS数据传输
物联网
zfj3216 小时前
top 命令中的 wa (IO wait) 指标,理论上几乎完全是由磁盘IO(包括swap)引起的,而不是网络IO
linux·网络·top·iowait
Xの哲學6 小时前
Linux网卡注册流程深度解析: 从硬件探测到网络栈
linux·服务器·网络·算法·边缘计算
专业开发者6 小时前
主流蓝牙 ® 新兴市场的最新发展趋势
物联网