蓝牙™ 网状网络初级读本
1.修订历史
| 版本 | 日期 | 作者 | 变化 |
|---|---|---|---|
| 1.0.0 | 2019 年 1 月 19 日 | Martin Woolley,蓝牙技术联盟 | 初始版本 |
| 1.1.0 | 2024 年 5 月 16 日 | Martin Woolley,蓝牙技术联盟 | 已更新,包含 Bluetooth Mesh 1.1 和 Bluetooth网络化照明控制 (NLC) 的主要功能 |
2.关于本文
蓝牙™ 网状网络入门》旨在帮助产品 设计师和开发人员等技术专业人士在查阅正式技术规范和深入研究该主题之前,快速了解蓝牙网状网络技术。
本文的目的不是复制或涵盖与正式规范相同的内容或深度。在有必要的情况下,本文可能会时不时地摘录一些规范内容。您应将本文视为介绍和解释重要蓝牙网状网络概念的指南,指出其他资源和规范的方向,并希望使学习曲线不那么陡峭。
3.导言
3.1Bluetooth 技术的演变
蓝牙技术早在 2000 年就已问世。蓝牙技术最初是为了让两台设备无需任何其他中间网络设备即可进行无线数据交换,它很快就在无线鼠标和汽车免提套件等产品中发挥了作用。蓝牙技术的第一个版本被正式称为蓝牙 BR(基本速率),在物理层的工作速率为每秒 100 万比特[1](Mb/s)。随后,同一技术的更快版本将比特率提高了一倍,达到 2 Mb/s,称为Bluetooth BR/EDR ,其中 EDR 代表增强数据速率。
Bluetooth LE 首次出现于蓝牙核心 4.0[2]。这是蓝牙技术的一个新版本,它并没有取代其前身Bluetooth BR/EDR,而是作为一种替代技术与Bluetooth BR/EDR 并驾齐驱,它的能力和品质使其成为新一代产品的完美选择,并能满足新的、具有挑战性的技术和功能要求。
Bluetooth LE 支持两个设备之间点对点通信以外的拓扑结构,其广播模式允许一个设备同时向数量不限的接收器传输数据。
Bluetooth LE 也是蓝牙网状网络的基础,它允许创建由数以万计的设备组成的网络,每个设备都能与网络中的任何其他设备通信。
3.2Bluetooth Mesh 联网
蓝牙网状网络的创立旨在提供一种安全、可扩展和标准化的无线通信技术,以解决商业楼宇的问题和机遇。
网络化照明控制 (NLC) 是蓝牙网状网络的关键应用 ,可实现对大型物理空间的手动和自动照明控制。 在一次网络操作中,可对单个或一组灯光进行控制。
以下是基于蓝牙网状网络化照明控制 实现的一些关键功能。
- 它们可以开关。
- 它们的亮度(更准确地说是亮度)可以按照一个感知统一的尺度进行控制,以补偿人眼对光的不同敏感度。
- 色温、色调和饱和度均可修改。
- 传感器或多或少都能将房间内任何可测量属性 信息传递给相关灯光,从而根据环境条件自动调整灯光状态 。请注意,蓝牙网状网络不需要中央路由器来在传感器和灯之间交换信息。
- 可定义特定状态 的任意集合(称为场景),只需一次请求,灯光就能从一个场景切换到另一个场景。
- 影响灯组的场景变化可安排在特定时间点自动进行。
- 允许根据房间占用情况自动触发场景,并在没有人时自动过渡到待机状态 。这有助于节约能源。
- 支持为改变灯光状态设置预定义时间表的功能。
- 支持供应商模式概念,允许制造商在需要时为其设备添加额外功能。
对网络中灯光的控制不受直接无线通信范围的限制。像开关或传感器这样的设备可以控制位于大楼远处(可能是几十层楼以上)的灯光。
蓝牙网状网络技术从一开始就设计了安全性,可解决潜在的问题和威胁,包括
- 保护信息的机密性
- 通过设备和网络隐私机制防止设备被追踪
- 防止篡改网络控制信息
- 将设备的行动限制在网络的特定区域内
- 防止重放攻击
- 确保通过安全的程序将设备添加到网络中
- 确保设备可以安全地从网络中移除,而不会出现被丢弃的设备日后被用于未经授权访问的风险
- 提供提供和撤销访客访问网络相关功能的能力,同时不影响大型网络的安全性。
配备蓝牙网状网络和网络化照明控制 建筑可享受一系列好处。
- 它们变得更加节能,传感器可提供有关环境光照度和房间占用率的数据,这些数据可用于自动调节照明度。
- 只需轻触开关或智能手机应用 用户界面(UI),就能重新配置照明,以优化房间的当前用途,无论是演示还是大型公司圆桌会议。
- 支持蓝牙网状网络的设备可提供使用情况和设备健康数据,这为主动维护提供了便利。
- 更容易改变建筑物的布局和照明要求。它是无线的!
- 蓝牙网状网络技术由一系列标准规范定义,这些规范涵盖了整个协议栈 以及设备的行为、功能和接口。这意味着任何制造商生产的符合标准的产品都具有互操作性。蓝牙网状网络技术的采用者不会被锁定在单一制造商或封闭的小团体中。
4.主要特点和概念
要理解蓝牙网状网络拓扑结构,读者需要了解一系列基本特性、技术术语和概念,而这些特性、术语和概念在Bluetooth LE世界里是找不到的。在本节中,我们将探讨其中最基本的功能、术语和概念。
4.1 蓝牙运行模式
Bluetooth LE 定义了许多不同的设备通信方式。它们在蓝牙核心规范 中被正式定义,在本文中被非正式地称为 "运行模式"。
各种运行模式有许多不同之处,包括设备形成的拓扑结构、可能的通信方向以及模式的基本技术细节,例如是面向连接的模式还是无连接模式。
在面向连接的通信中,设备首先交换信息,以便就后续通信的重要方面(如发送和接收定时参数)达成一致。而在无连接通信中,这种情况不会发生,发送和接收定时也不会以同样的方式预先商定。在Bluetooth LE 中,面向连接的通信总是发生在两个设备之间,而无连接通信可由一个发送设备与多个接收设备进行通信,无论是否预先商定了某种程度的参数信息。
拓扑结构与通信设备之间可能形成的关系的复杂程度有关。目前有三种不同的拓扑结构:
- 一对一(1:1)
- 一对多(1:m)
- 多对多(m:n)
有些运行模式只允许单向应用 数据通信,而有些则允许双向通信。
有些模式使用精确的固定时间表来传输数据包,有些则不规则。
目前定义了七种运行模式。它们如下
- LE 异步面向连接的逻辑传输(LE ACL)
- LE 广播(ADVB)
- 周期性广播 (PADVB)
- 带响应的周期性广播
- 连接异步流 (CIS)
- 广播等时流(BIS)
- 信道探测 (CS)
蓝牙核心规范 详细定义了每种模式。
表 1 总结了七种运行模式的主要属性,以便进行比较。请注意,"信道探测 "(CS)是一种特殊模式,仅用于支持两个设备之间距离的安全计算,不用于应用 数据的传输。
| 运行模式 | 面向连接还是无连接 | 拓扑结构 | 传输时间表 | 应用 数据的方向 |
| LE ACL | 面向连接 | 点对点 | 正常 | 双向 |
| ADVB | 无连接 | 一对多 | 非正规 | 单方向 |
| PADVB | 无连接 | 一对多 | 正常 | 单方向 |
| 带响应的周期性广播 | 无连接 | 一对多 | 正常 | 双向 |
| 独联体 | 面向连接 | 点对点 | 正常 | 双向 |
| 统计研究所 | 无连接 | 一对多 | 正常 | 单方向 |
| CS | 不适用 | 一对一 | 正常 | 不适用 |
表 1 -Bluetooth 运行模式的属性
蓝牙网状网络技术不是一种操作模式。它是一种协议,具有一系列定义的程序、标准应用行为和其他功能,使Bluetooth LE 成为一种无线网络技术成为可能。它以Bluetooth LE 的核心功能为基础,包括几种运行模式,因此有时它以无连接方式运行,有时则使用面向连接的通信。原则上,蓝牙网状网络形成的拓扑结构是多对多的,因为任何设备都有可能与任何其他设备进行通信,应用 数据的通信可以在两个方向上进行。
通信是通过Bluetooth LE 以适当的方式传输信息,这种传输方式被称为承载(bearer),它基于一种运行模式。设备可以向整个网络中的其他设备转发信息,因此端到端的通信范围远远超出了每个网状设备的无线电范围。
4.2 设备和节点
属于网状网络的设备称为节点,不属于网状网络的设备称为未配置设备。
将未配置的设备转变为节点的过程称为配置。
配置是一个过程,它能使未配置的设备拥有一系列安全密钥,为其分配一个单播地址,并在称为启动配置设备上的数据库中列出。启动配置设备通常是平板电脑或智能手机。
4.3 要素
有些节点有多个组成部件,每个部件都可以独立控制。在蓝牙网状网络术语中,这些部分被称为元素。图 1 显示的是一个 LED 照明产品 ,如果将其添加到蓝牙网状网络中,就会形成一个包含三个元件的节点,每个元件用于控制一个 LED 灯。

图 1 - 由三个元素组成的照明节点
4.4 消息
当一个节点需要查询其他节点的状态或以某种方式控制其他节点时,它会发送一个合适类型的消息。如果一个节点需要向其他节点报告自己的状态,它就会发送一条信息。mesh 网络中的所有通信都是面向消息的,并定义了许多消息类型,每种类型都有自己独特的操作码。
信息可分为两大类:
- 已确认的报文要求接收报文的节点做出回应。回应有两个目的:一是确认相关信息已被接收,二是向原信息发送者返回与信息接收者相关的数据。有应答的消息 发送者如果没有收到预期的应答,可以重新发送消息。这意味着,一个给定有应答的消息多次到达一个节点,其效果与只收到一次的效果是一样的。
- 未收到的信息无需回复。
大多数蓝牙网状网络方案都使用未确认信息,因为这种信息传递模式的扩展性非常好。通过对节点进行配置,使其能够连续多次重发信息副本,从而确保信息的可靠性。
当目标是单个设备时,需要返回确认信息的报文效果很好,但当目标是一组多个设备时,就不能很好地扩展。大多数涉及节点或其元素配置的报文都使用确认报文。
通过中继系统可以将信息传送到直接无线电范围之外。中继在4.19 信息中继中解释。
4.5 地址
信息必须从一个地址发送,也必须向一个地址发送。蓝牙网格网络定义了三种地址。
单播地址唯一标识一个元素。单播地址在配置过程中分配给设备。
组地址是一种组播地址。这种地址类型允许多个设备通过称为发布 和订阅过程接收同一传输信息。组地址由蓝牙SIG (BluetoothSIG 定义,称为固定组地址(Fixed Group Addresses)或动态分配。目前已定义了七个SIG 固定组地址。它们分别被命名为全节点、全中继、全好友、全代理、全定向转发代理、全 IP 节点和全 IP 边界路由器。本文稍后将解释 "代理"、"朋友 "和 "中继 "等术语。
预计用户将通过配置应用 建立动态分组地址,这些地址将反映楼宇的物理配置,例如定义与楼宇中每个房间相对应的分组地址。
虚拟地址与组地址类似,它允许多个设备通过发布 和订阅接收单个传输信息。它的形式是一个 128 位 UUID 值,任何元素 都可以与之关联,就像标签一样。例如,虚拟地址可在生产时预先配置,并可用于各种场景,如轻松寻址部署在网状网络中的制造商生产的所有会议室投影仪。
4.6发布 /订阅
发送信息的行为称为发布。节点被配置为只接收那些发送到特定地址进行处理的信息,这被称为订阅。
通常情况下,信息是发送给组地址或虚拟地址的。组名和地址 名对于最终用户来说具有易于理解的含义,因此在配置设备时使用起来简单直观。
在图 2 中,我们可以看到名为Switch 1的节点正在向组地址Reception 发布信息。节点 "灯 1"、"灯 2 "和"灯 3 "分别向 "接收"地址订阅 ,并处理向该地址发布的信息。换句话说,灯 1、灯 2和灯 3可以通过开关 1 打开或关闭。
开关 2发布到组地址Accounts。 只有灯 3订阅了这个地址,因此它是唯一受开关 2 控制的灯。请注意,这个例子也说明了节点可以订阅 多个不同地址的信息。这既强大又灵活。
同样,请注意开关 5和开关 6是如何发布 到同一个承保地址的。
使用组地址和虚拟地址与发布通信模型的另一个好处是,在网络中删除、替换或添加新节点不需要重新配置其他节点。考虑一下在会计部门安装一盏额外的灯会涉及到什么。新设备将使用配置流程添加到网络中,并配置为订阅 账户地址。网络的这一变化不会影响其他节点。交换机 2将一如既往地向Accounts 发布 信息,但现在灯 3和新灯都会响应。

图 2 -发布 和订阅
4.7 状态和属性
元素可以处于不同的状态,这在蓝牙网格网络中可以用 "状态 "的概念来表示。 状态值来表示。
状态 是一种特定类型的值,包含在元素 及其模型中(见下文)。状态也有相关的行为,不能在其他上下文中重复使用。
举例来说,一个简单的灯可以是开着的,也可以是关着的。蓝牙网状网络定义了一个名为 "通用 OnOff"状态 。电灯将拥有这个状态 ,"开 "的值将对应并导致电灯点亮,而 "关 "的通用开或关 状态 将导致电灯熄灭。
下文将讨论 "通用"一词的意义。
属性与状态相似,都包含与 "元素"相关的值。 但它们在其他方面与状态不同。
熟悉Bluetooth LE[3]的读者一定知道特性,并记得它们是没有定义相关行为的数据类型,因此可以在不同的上下文中重复使用,例如在不同的 GATT 服务中。网状属性 为在支持蓝牙网状网络的设备中解释特性 提供了上下文。
为了理解与属性相关的上下文的意义和使用,举例来说,特性 温度 8 是一种 8 位温度状态 类型,它有许多相关属性,包括当前室内环境温度和当前室外 环境温度。这两个属性允许传感器发布 传感器读数,使客户端 能够确定温度值的上下文,从而更好地理解其真正含义。
4.8 状态和基本操作
消息是调用mesh 设备操作的机制。给定的消息类型定义了对状态或状态值集合的操作。所有消息都有三大类型,反映了Bluetooth Mesh 支持的操作类型。这三种类型的简称分别为 GET、SET 和 STATUS。
GET 消息要求一个或多个元素提供给定状态的值。STATUS 消息是对 GET 的回应,包含相关的状态值。
SET 消息会更改给定状态的值。已确认的 SET 报文会返回一个 STATUS 报文作为对 SET 报文的响应,而未确认的 SET 报文则不需要任何响应。
STATUS 消息是对 GET 消息的响应、对 SET 消息的确认或独立于其他消息而发送的,例如,可能是由发送消息的元素上运行的计时器驱动的。
消息引用的具体状态是通过消息操作码推断出来的。另一方面,在通用属性相关消息中,使用 16 位属性 ID 明确引用属性。
4.9 状态转换
从一个状态 到另一个状态 的变化称为状态 转换。转换可以是瞬时的,也可以在一段时间内进行,称为 "转换时间"。 转换时间.状态 转换可能会影响应用 的行为或节点的外观。
4.10 状态绑定
状态之间可能存在关系,其中一个状态的变化会引发另一个状态的变化。这种关系称为状态 绑定。一种状态 可能与其他几种状态绑定。
例如,考虑一盏由调光开关控制的灯。这盏灯可能有两种状态,通用开-关(Generic OnOff)和通用电平(Generic Level),每种状态都与另一种状态绑定。降低灯的亮度,直到通用电平值为零(完全变暗),通用开灯 状态就会从 "开 "过渡到 "关"。
4.11 模式
模型将前面的概念整合在一起,定义状态 数据的组合以及相关的信息类型和功能,就像面向对象软件开发中的类或对象一样。
模型通常是服务器模型或客户端 模型。
- 服务器模型定义了一系列状态、状态 转换、状态 绑定以及包含该模型的元素 可发送或接收的信息。它还定义了与支持的信息、状态和状态 转换有关的行为。
- 客户端 模型不定义任何状态。相反,它定义了可以发送或接收的信息,以便获取、设置或获得相应服务器模型中定义的状态的 STATUS。
模型可以通过扩展其他模型来创建。未扩展的模型称为根模型。
模型是不可改变的,也就是说,不能通过添加或删除行为来改变模型。实现新模型要求的正确且唯一允许的方法是扩展现有模型。
基础模型是配置和管理网状网络所需的模型。其他模型涉及某些类别的产品可能需要的特定功能类型。
4.12 泛型
人们认识到,许多不同类型的设备往往具有语义上等同的状态,"开 "与 "关 "的简单概念就是例证。电灯、风扇和电源插座都可以打开或关闭。
因此,蓝牙网格模型规范定义了一系列可重复使用的通用状态,如通用开/关(Generic OnOff)和通用电平(Generic Level)。
同样,还定义了一系列对通用状态进行操作的通用报文。例如,通用开/关获取(Generic OnOff Get)和通用电平设置(Generic Level Set)。
通用状态和通用信息用于通用模型,既包括通用服务器模型(如通用 OnOff 服务器),也包括通用水平 客户 客户端 模型(如通用水平客户端)。
泛型允许多种设备类型支持蓝牙网格网络,而无需创建新模型。请记住,模型也可以通过扩展其他模型来创建。因此,通用模型可作为快速创建新型设备模型的基础。

图 3 - 通用模型
4.13 场景
场景是存储的状态集合,可在接收到特殊类型的信息时或在指定的预定时间调用并使其成为当前状态。场景由 16 位场景编号标识,该编号在网状网络中是唯一的。
场景允许通过一个协调的动作,将一系列节点设置为先前存储的一组给定的互补状态。
试想一下,早上您希望接待区的温度为 20 摄氏度,LED 灯的亮度达到一定水平,接待员桌子上的灯调成温暖的黄色。在这个示例场景中手动将各个节点设置为这些状态后,您可以使用配置应用 将它们存储为一个场景,并在稍后通过发送与场景相关的适当网格信息或在预定时间自动调用该场景。
4.14 网络和子网
蓝牙网状网络由一组四种通用资源定义--地址空间、网络密钥和应用 密钥以及IV索引。蓝牙网状网络可细分为一系列子网。与基于 TCP/IP 等协议的网络不同,属于某个特定网络与设备的地址没有任何关系。相反,蓝牙网状网络和子网 成员资格 主要是通过向节点发放一个 "网络密钥 "来实现的。 网络层密钥(见4.15 键)。一个子网可以有多个网络密钥,因此可以成为多个子网的成员。子网之间可以完全独立,也可以重叠或完全包含在另一个子网中。
子网有多种用途,包括
- 通过将一组设备与其他无关设备隔离,增加网络的安全性。
- 通过防止信息流超出子网边界,可以提高无线电频谱的使用效率。
- 简化网络管理。例如,"访客设备 "可以通过子网 及其网络层密钥临时访问网络的一小部分。
图 4 描述了酒店每个客房使用的子网。
一个子网 被指定为主子网。预计将成为网络永久成员的设备将成为子网的成员。

图 4 - 用于隔离酒店每个房间设备的子网示例
4.15 秘钥
蓝牙网格协议规范定义了几种类型的安全密钥。
- 每个节点都有一个唯一的设备密钥(设备密钥).只有接受该密钥的设备和启动配置设备 才知道该密钥的值。该密钥用于确保配置过程的安全。
- 一台设备至少有一个共享网络密钥(网络密钥).这类密钥确保网络层的通信安全。拥有一个特定的网络密钥 ,节点就成为相关网络子网一部分。一个名为主网络密钥的特殊键与主子网有关。
- 网状网络至少有一个应用密钥(应用密钥).网络支持的应用实例可能包括照明、空调或供暖。应用密钥 用于确保高阶传输层 的通信安全,从安全角度看,具有在不同应用之间划分信息传递的作用。
设备秘钥 和主网络层密钥 在配置过程中提供给每个节点(见4.16 配置)。应用密钥以及与子网相对应的其他网络密钥(如有需要)将在配置过程中发给设备(见4.17 配置)。
4.16 配置
配置是设备加入mesh 网络并成为节点的过程。它涉及多个阶段,生成各种安全密钥,本身也是一个安全的过程。
通常使用智能手机或平板电脑等设备上的应用 来完成配置。也可以采用其他架构(如基于云的调配)。在这种情况下,用于驱动配置过程的设备被称为 启动配置设备和被供应的设备,即被供应者。
启动配置设备 可以配置处于直接无线电范围内的设备。可选功能 "远程配置"(Remote Provisioning)可以配置位于网络内任何位置、与启动配置设备相距任何距离的设备。
4.16.1 直接配置
直接配置过程分为五个步骤,下面将对这五个步骤进行介绍。
第一步.Beacon 广播
未配置设备通过广播 "未配置设备信标"(Unprovisioned Devicebeacon)来表明其是否可以进行配置。这可以通过包含 Mesh Beacon广告数据 (AD) 类型。
例如,用户可能需要通过按下按钮来启动新的设备广播。
第二步.邀请
在此步骤中,启动配置设备以启动配置邀请 PDU 的形式向被供应者发送邀请。被信标供应设备在供应能力 PDU 中回应有关自身的信息。
第三步. 交换公钥交换公钥
启动配置设备和被配置设备直接或使用带外(OOB)方法交换各自的公钥,公钥可以是静态的,也可以是短暂的。
如果支持,X.509 证书可用于公钥的应用密钥 。请参阅 4.16.3 基于证书的供应。
第四步.认证
在此步骤中,启动配置设备者和被配置设备会执行某些操作来验证身份。例如,被配置设备可以使用适合其能力的操作,以某种形式向用户输出一个随机的单数或多位数。例如,它可以显示一个多位数数值。然后,用户将新设备输出的数字输入启动配置设备,两台设备之间就会进行加密交换,其中包括随机数,以完成两台设备之间的身份验证。同样,启动配置设备也可以输出一个必须输入给被配置设备的值。有多种认证方法可供选择,部分取决于设备的输入/输出能力。
第五步. 启动配置数据的分发
应用密钥 成功完成后,两台设备各自从其私钥和交换的对等应用密钥 中获取一个会话密钥。会话密钥随后用于确保完成配置过程所需的数据的后续分发、其中包括一个称为网络密钥 网络层密钥 的安全密钥 网络层密钥 和一个称为设备秘钥 的特定设备设备密钥。重要的是,设备秘钥 是由启动配置设备 和 Provisionee 独立计算的,因此永远不会在空中传输。
配置完成后,设备将拥有一个 DevKey、网络的 NetKey、一个称为 IV 索引的mesh 安全参数和一个由启动配置设备分配的单播地址。现在,它被称为一个节点。
4.16.2 远程配置
使用远程配置(RPR),启动配置设备和未配置设备可以在任何地点,只要两台设备之间能通过网络形成通信路径。这为许多实际情况提供了更实用的配置方法。

图 5 - 远程配置
4.16.3 基于证书的配置
供应过程包括应用密钥 步骤。应用密钥可以通过多种方式实现,例如显示多位数。一般来说,应用密钥 要求被供应的设备在执行供应的人的视线范围内,以便(例如)可以计算 LED 的闪烁次数。但这并不总是可行的。特别是在使用远程调试的情况下,被调试的设备可能完全不在视线范围内,也许就在大楼的另一侧。
X.509 证书是一种具有标准格式的数字公钥证书。蓝牙 Mesh 支持在配置过程中使用 X.509 证书。使用 X.509 证书配置的设备不需要在视线范围内,因此非常适合远程配置。
4.17 配置
每个节点都支持一组配置服务器 状态,这些状态在配置服务器 模型中实现,并可通过配置客户端 模型访问。配置状态 数据与节点的组成和那些独立于任何特定应用 或设备类型行为的功能有关(这些功能由设备上实施的其他模型管理)。
构成数据 状态 分为多个页面,包含节点的相关信息,包括节点元素和节点支持的模型。大型构成数据 服务器模型与该状态 相辅相成,为具有复杂构成和大量组件的设备提供支持。DALI(数字可寻址照明接口)设备就是此类设备的典型代表。
DALI 设备以通信总线为核心,最多可连接 128 个组件(在 DALI 术语中称为总线 单元),并可方便地插拔。当 DALI 组件成为网状网络的一部分时,它就会成为代表整个 DALI 设备的复杂网状节点中的一个元素 。如果设备固件检测到插入总线的元件发生变化,其构成数据 就会自动更新,从而提供即插即用功能。
节点支持的功能(参见4.18 功能)由配置服务器 状态表示。节点订阅的地址存储在订阅名单 状态中。表示节点所属网络的网络网络密钥 子网 应用密钥 存储在网络密钥 应用密钥 列表状态 中,应用 应用密钥 则存储在应用密钥 列表状态中。
通过一系列配置信息,Configuration客户端 模型和配置服务器 模型可支持对配置服务器 模型状态进行 GET、SET 和 STATUS 操作。
4.18 功能
所有节点都可以发送和接收网格信息,但节点也可以拥有一些可选功能,使其具备额外的特殊能力。有四种可选功能:中继功能、代理功能、朋友功能和低功耗功能。受支持的功能 可在特定时间启用或禁用。
4.18.1 中继节点
支持中继功能 的节点被称为中继节点,能够转发接收到的信息。中继是一种机制,通过这种机制,信息可以穿越整个网状网络,在设备之间进行多跳中继。
网状网络 PDU 包括一个称为 生存周期(生存时间)。它是一个整数值,用于限制信息在网络中的跳转次数。例如,将生存周期 设为 3 会导致信息最多中继两次。将它设为 0 则根本不会中继,只会从发端设备直接跳一跳到目的地 设备。生存周期 值为 1 意味着信息已经被中继过若干次,不应再被中继。以生存周期 = 1 发送的报文不会离开设备,因此只能通过环回用于节点上的本地通信。
为了最有效地利用网络和无线电频谱,可以使用一种名为 "定向转发 "的可选功能 。定向转发以知情和更高效的方式使用中继。
有关中继工作原理的更多信息,请参阅4.19 报文中继。
4.18.2 低功耗节点和友好节点
某些类型的节点电源有限,需要尽可能地节约能源。这类设备可能主要负责发送信息,但偶尔仍需要接收信息。
考虑使用小型纽扣电池供电的温度传感器。只要温度高于或低于配置的上限和下限阈值,它就会每分钟发送一次温度读数。如果温度保持在阈值范围内,则不会发送任何信息。这些行为很容易实现,不会产生特别的功耗问题。
不过,用户也可以向传感器发送信息,从而改变温度阈值状态 。这种情况比较少见,但传感器必须支持。接收信息的需要对占空比和功耗都有影响。100% 的接收 (RX) 占空比将确保传感器不会错过任何温度阈值配置信息,但会消耗过多的电能。低占空比可以节约能源,但传感器有可能错过配置信息。
这个明显难题的答案就是 "好友节点 "和 "友谊"的概念。
像示例中的温度传感器这样的节点可以被指定为低功耗节点(LPN),并在传感器的配置数据中设置一个功能 标志来表明这一点。
LPN 与另一个节点协同工作,该节点不受电源限制(例如,它有一个永久的交流电源)。这种设备被称为好友节点。好友节点存储发给 LPN 的信息,并在 LPN 向好友节点轮询等待信息时发送这些信息。LPN 可以相对不频繁地轮询好友节点,以便在节约电能与及时接收和处理信息之间取得平衡。当它进行轮询时,好友节点存储的所有信息都会一个接一个地转发给 LPN,并带有一个称为 MD(更多数据)的标志,向 LPN 指示是否有更多信息要从好友节点发送。
LPN 与好友节点 之间的关系被称为 "友谊"。友谊是蓝牙网状网络中需要接收信息的节点能够高效运行的关键,因为这些节点的功率非常有限。
4.18.3 代理节点
4.18.3.1 关于代理节点
世界上有大量支持Bluetooth LE 设备,包括大多数智能手机和平板电脑。通常情况下,这些设备都包含蓝牙网状网络协议栈,但它们确实有能力连接到其他设备,并使用通用属性配置文件(GATT)定义的程序与其他设备进行交互。
代理节点具有 GATT服务 和若干特性,其他Bluetooth LE 设备可利用这些特性向蓝牙 Mesh 网络发送信息或从该网络接收信息。代理节点 充当 GATT 服务器,另一个设备则是 GATT客户端。
该协议被称为代理协议 。GATT 设备从由代理节点实现的 GATT 特性中读取和写入代理协议 PDU。代理节点 可将这些 PDU 转换为网状网络 PDU 或从网状网络 PDU 转换而来。关于代理协议的使用,代理节点 被视为代理服务器 ,而其它设备则被视为代理服务器 客户端。
代理客户端 设备必须首先进行配置,就像网络中的其他设备一样。
代理节点允许不具备完整蓝牙网状网络协议栈的Bluetooth LE 设备与网状网络中的节点进行交互。实际上,这意味着拥有完整操作系统和高分辨率显示屏的功能强大设备可以配备应用程序,为用户提供图形用户界面(GUI),通过该界面与网络中的灯等设备进行交互。

图 6 - 智能手机通过网状网络通信
4.18.3.2 代理发现
代理节点以两种模式之一运行,使其能够被代理客户端 (如智能手机应用 )以两种方式之一发现和应用 。
4.18.3.2.1 连续广告模式
在这种模式下,无论是否存在代理客户端设备,代理节点都会每隔一段时间广播广告数据包。广播数据包包含名为服务数据的广告数据项,其中包括 GATT Mesh 代理服务 的 UUID 标识和其他服务 数据。Mesh 代理服务 UUID 的存在可将广告设备识别为代理节点。代理客户端可通过扫描包含Mesh 代理服务 UUID 的广告数据包发现代理节点,连接到代理节点,然后通过连接交换代理 PDU。代理节点使用广告承载转发 PDU 到mesh 网络或从 网络转发 PDU。
这种不加区分、几乎永久性的广告方式是次优的,而且浪费了蓝牙广告渠道。网状网络中绝大多数节点使用的广播承载层都依赖于这些可用信道。
4.18.3.2.2 按需专用代理模式
我们还定义了第二种更有效的方法,其中涉及一种称为 "请求 "的技术。它被称为 "按需私有 GATT 代理",对它的支持是可选的。
在这种方法中,只有当代理服务器 意识到代理客户端 出现并需要其服务时,广告才会开始。
支持 On-Demand Proxy功能 代理客户端 通过广告表明它需要代理节点 的服务。它传输的广告数据包包含一个称为 "请求 PDU "的 PDU。其中包含 Mesh服务 请求的 UUID 和其他信息。
代理服务器 节点进行的扫描方式称为被动扫描。被动扫描不涉及传输任何数据包,因此对无线电信道没有影响。在收到并验证来自代理服务器客户端请求 PDU 后,代理节点 开始发出广告,以便代理服务器客户端 与其连接,并以标准方式通过已建立的连接开始交换代理服务器 PDU。
按需提供的专用 GATT 代理服务器只在代理服务器客户端 表示它应该做广告时才做广告,从而有效地利用了广告渠道。由于使用了 Mesh 私人信标,它还能改善隐私。参见7.7 隐私。
4.19 信息中继
4.19.1 多跳信息传递
蓝牙网状网络可能会跨越很大的区域,而建筑物中某一区域的节点往往不在其他节点的直接无线电范围内。为了使所有节点之间都能进行基于信息的通信,而不论发出信息的节点与接收信息的目的地 节点之间的距离有多远,蓝牙网状网络采用了一种系统,即由某些节点重发信息,使信息在网络中的节点之间跳转,直至到达目的地节点。
一般而言,重传信息的过程称为中继节点 ,这就是中继节点的功能。
中继可以采用两种不同的方式。第一种方式称为 "管理式网络泛洪",第二种称为 "定向转发"。
4.19.2 网络泛洪
中继节点 默认使用更简单的托管网络泛洪 方法。托管网络泛洪 涉及中继器重传收到的信息。
但在某些情况下,中继器不会进行重传,这有助于提高无线电频谱效率。例如
- PDU 包含一个名为 "生存周期"(Time to Live)的字段。发送者将该字段设置为一个整数值,用来限制 信息被中继的次数。这样就能防止信息无缘无故地在网络上被直接转发。
- 中继站会缓存已收到信息的详细信息。中继前要检查缓存。如果在缓存中找到报文,则假定该报文之前已被接收并重新传输,在这种情况下,新的报文副本将被丢弃。
4.19.3 定向转发
定向转发方法比托管网络泛洪 更复杂,能更有效地利用无线电频谱。使用定向转发时:
- 中继节点只有在知道自己是会员节点序列中的一个节点时才会重传信息,信息可通过该节点到达目的地。如果无法通过该节点到达目的地,信息就会被丢弃。这样就减少了无线电传输,提高了频谱使用效率,为网络中的信息传输留出了更大的容量,并降低了发生碰撞的概率。
- 在配置过程中,或通过手动创建,或通过各种系统程序自动创建和维护,以实现向目的地 传送的节点序列。
有关定向转发的更深入解释,请参阅蓝牙网格定向转发。
4.20 设备固件更新
4.20.1 关于固件
实现设备功能和控制硬件的底层软件通常称为固件。支持蓝牙网格网络的设备运行的固件可实现蓝牙网格协议和设备支持的型号。
通常情况下,固件需要在使用期内更新。更新支持蓝牙网格网络固件的设备的原因包括
- 升级设备支持的蓝牙网格协议版本
- 通过支持更多网格模型来增加新功能
- 修正错误
4.20.2 实际问题
Bluetooth Mesh 网络中的设备通常安装在难以触及的位置(如安装在天花板上)。从实际角度来看,任何依赖物理有线连接的固件更新程序都可能存在问题。即使是依赖与待更新设备直接通信的无线更新机制,也不是最佳选择,尤其是在大型建筑中。
蓝牙网状网络定义了一套允许从整个网络更新设备固件的程序,允许从任何物理位置启动对任何节点的更新。
接下来将介绍设备固件更新 (DFU) 功能 。
4.20.3 DFU 能力
Bluetooth Mesh Networking DFU功能 允许在一次操作中将固件更新文件(通常称为二进制 图像)通过无线网络发送到一组或多组目标设备上。它是一种方便的固件更新工具,能有效利用人力、网络和无线电资源。
4.20.3.1 DFU 模式和作用
蓝牙网状网络 DFU功能 涉及三对客户端 和服务器模型。
- BLOB 传输模型为节点之间传输二进制大对象(BLOB)提供了一种通用机制。固件更新文件就是 BLOB 的一个例子。
- 固件分发模型支持向要更新的节点分发固件更新文件的程序。固件分发程序使用 BLOB 传输模型。
- 固件更新型号支持应用设备固件更新的程序。
定义了若干 DFU 角色:
| 角色 | 费用项目 | 机型 |
| 目标 | 接收固件更新的节点。目标能够报告其正在运行的固件版本以及获取更新的位置。 | 固件更新服务器 BLOB 传输服务器 |
| 启动器 | 通常在既支持蓝牙 Mesh 又能连接互联网的设备上运行。这类设备包括智能手机和网关设备。启动器 会定期或应要求在制造商网站上查看新发布的固件。然后下载更新文件并将其发送到分发器节点。 | 固件分发客户端 固件更新客户端 BLOB 传输客户端 |
| 经销商 | 从启动器 接收固件更新文件,并将其发送到目标节点进行安装。充当启动器 的中间人,这意味着在整个分发和更新过程中,启动器 无需处于网状网络的范围内。 | 固件分发服务器 固件更新客户端 BLOB 传输客户端 BLOB 传输服务器 |
| 独立更新程序 | 单机版更新启动器 可发挥启动器 和分发器的组合作用,获取固件更新并直接发送到更新节点,而无需中间分发器。 | 固件更新客户端 BLOB 传输客户端 |
4.20.3.2 固件更新过程[4]
4.20.3.2.1 获取固件更新
Mesh DFU 模型规范定义了HTTPS 固件检查程序。该程序由启动器 (或独立更新器)调用,通常包括
- 从应用 接收目标节点列表
- 对于列表中的每个目标节点
- 检索当前安装的固件信息,如版本号和可获取更新的统一资源标识符 (URI)。
- 向 URI 发送 HTTP GET 请求,如果有固件更新,则在响应中下载固件描述文件。
固件描述文件是一个 JSON 格式文件,它提供的信息包括固件更新被分割成的文件数和更新的总大小(以字节为单位)。
然后使用HTTPS 固件检索程序,通过 HTTPS 协议获取固件更新文件。启动器 可以这样做,也可以指示分销商获取固件更新。
请注意,该规范还允许使用针对特定供应商的方法检查和检索固件更新。
4.20.3.2.2 发布固件更新
启动器 使用固件分发(Firmware Distribution)客户端 模式,该模式以 BLOB Transfer客户端 模式为后盾,向分发器发送固件更新和目标节点详细信息。然后,分发器使用固件更新客户端 模式和 BLOB 传输客户端 模式向每个目标节点发送更新。
4.20.3.2.3 固件安装
目标使用供应商特定的程序来验证和安装更新。分销商可获得进度信息。
4.20.3.2.4 DFU 安全性
从远程来源获取固件,然后将其安装到Bluetooth Mesh 网络中的节点上,存在安全风险。需要有一种方法来验证远程来源是否可信,以及固件更新文件是否被篡改。
DFU 规范要求在标准固件检查和 固件检索 程序中使用安全 HTTPS 协议从远程服务器下载。这可确保下载是加密的,不会在飞行中被篡改而不被发现。HTTPS 还要求远程服务器具有数字证书,以便验证其身份。
通过 HTTPS 进行固件检查和 通过 HTTPS 进行固件检索程序可解决主要的安全问题。设备使用的特定于供应商的安装程序为进一步的安全检查提供了其他机会。
5.系统架构
5.1 导言
在本节中,我们将仔细研究Bluetooth Mesh 架构、mesh 网络协议栈的层级以及定义该技术的技术规范。
5.2Bluetooth Mesh 规格
蓝牙网格网络由一系列规范定义。
- Mesh 协议规范定义了Bluetooth Mesh 技术的架构、协议、程序、基础模型和其他核心概念。
- Mesh 模型规范定义了附加模型,这些模型提供了基础模型所定义功能之外的功能。
- 设备固件更新和 BLOB 传输功能都有专门的规范,其中定义了各自的模型。
- 配置文件 规范集合定义了额外的要求和实施细节,进一步规范了特定类别的产品,从而提高了互操作性。
5.3 蓝牙网状网络协议栈
图 7 显示了蓝牙网状网络的架构,包括各层以及与蓝牙核心规范各部分的依赖关系。有两个堆栈。网状网络协议栈支持蓝牙网状网络节点之间的通信。网状网络配置堆栈用于配置设备。

图 7 -Bluetooth Mesh 架构
在图 7 中,有一个标有蓝牙核心规范 (LE 物理传输)的组件。这代表了Bluetooth LE 核心功能,蓝牙网状网络可利用这些功能。
Bluetooth LE 系统由控制器和主机组成。 host.它们通常是物理上独立的组件,以某种方式(如 UART)连接,并使用一组称为Host 控制器接口(HCI)的标准命令和事件进行通信。网状网络协议栈的各层都驻留在host 组件中。Mesh 网络协议栈依赖于Bluetooth LE 协议栈中在控制器中运行的部分,如链路层 和物理层。有关这些层和Bluetooth LE Bluetooth LE 基本架构的更多信息,请参阅《Bluetooth LE 入门》。
现在,我们将从底层开始,逐层回顾网状网络架构的每一层。
5.4 承载层
网状网络信息的传输需要一个底层通信系统。承载层定义了特定通信系统如何处理网格 PDU。目前已定义了两种用于一般信息传送的主要承载层,分别称为广告承载层和 GATT 承载层。 GATT承载层.
广播承载利用Bluetooth LE 广播和扫描功能发送和接收mesh PDU。
GATT承载层 允许不支持广播承载层 的设备使用一种称为代理协议协议的协议与网状网络的节点进行间接通信。代理协议 封装在 GATT 操作中,涉及一个名为网状代理服务(Mesh Proxy服务 )的 GATT服务 ,其中包括两个名为网状代理数据输入(Mesh Proxy Data In)和网状代理数据输出(Mesh Proxy Data Out)的 GATT 特性。
代理节点 实现了网状服务 及其特性。它同时支持GATT承载层 和广播承载层,这使它能通过这两种承载广播承载层转换和中继信息。
不支持代理功能的节点也可以支持GATT承载层 。
5.5网络层
网络层 定义了各种报文地址 类型和网络报文格式,允许承载层处理传输层 PDU。
它可以支持多个承载,每个承载可能有多个网络接口,包括本地接口,用于属于同一节点的元素之间的通信。
网络层 决定通过哪个网络层接口输出信息。输入过滤器 适用于从承载层到达的报文,以确定是否应将其传送到网络层 作进一步处理。输出输出过滤器 则负责控制这些信息是被丢弃还是被传送到承载层。
中继和代理功能可由网络层实现。
5.6底层传输层
底层传输层 从高阶传输层 获取 PDU,并将其发送到对等设备上的底层传输层 。在需要时,它会对 PDU 进行分段和重新组装。对于无法放入单个传输 PDU 的较长数据包,底层传输层 将执行分段,将 PDU 分割成多个传输 PDU。另一台设备上的底层传输层 会将分段重新组装成一个高阶传输层 PDU,并将其向上传递。
5.7高阶传输层
高阶传输层 负责访问层之间数据的加密、应用密钥 和应用密钥 。它还负责内部生成并在不同对等节点的上层传输层之间发送的传输控制信息。这些信息包括与友谊、定向转发和心跳有关的信息。
5.8访问层
访问层 负责定义模型如何使用高阶传输层。其中包括
- 定义报文数据格式。
- 定义和控制在高阶传输层中执行的加密和解密过程。
- 在向堆栈上层转发数据之前,验证从高阶传输层 接收的数据是否用于正确的网络和型号。
5.9基础模型层
基础模型层 负责实施与网状网络的配置和管理有关的模型。
5.10 模型层
模型层涉及模型的实现,因此也涉及一个或多个模型规范中定义的行为、信息、状态和状态 绑定的实现。
6.信息传递
本节探讨蓝牙 Mesh 网络中信息传送的工作原理,并将第 4 节中解释的一些关键概念汇集在一起。主要功能和概念。
6.1 信息发布和传送
使用 Wi-Fi 的网络以一个称为接入点的中心网络节点为基础,所有网络通信都通过它进行。如果路由器无法使用,整个网络就无法使用。
相比之下,蓝牙网状网络可将信息直接发送到无线电范围内的节点,或通过中继节点发送到距离较远的节点。当节点发布信息时,信息会被广播而不是直接发送到特定节点。所有节点都会接收来自直接无线电范围内节点的所有信息。如果被配置为这样做,节点就会使用受管网络泛洪 或定向转发,转发收到的信息。
6.2 多路径传输
使用广播通信和中继的一个重要结果是,信息可以通过网络的多条路径到达目的地 。这使得蓝牙网格网络成为一种高度可靠的网络技术。
6.3 遍历堆栈
Bluetooth LE 控制器的链路层 [5] 首先接收到一个信息包。然后,其有效载荷被传递到Host 中的蓝牙网状网络承载层,再从那里传递到网状网络层。
网络层 会进行各种检查,以决定是将信息传递到堆栈的更高位置,还是将其丢弃。
此外,PDU 还有一个网络层 字段,它提供了一种快速方法来确定信息是用哪个网络密钥 加密的。如果接收节点的网络层 无法识别网络层 ,则表明它不具备相应的网络密钥 ,不是子网 的成员,因此 PDU 会被丢弃。还有一个网络信息完整性检查(MIC)字段。如果 MIC 检查失败,则丢弃报文。
发端节点范围内的所有节点都会接收到信息,但由于所属网络或子网的原因,许多信息显然与该节点无关,因此会很快被丢弃。
同样的原则也适用于高阶传输层。不过,这里的检查是针对与报文相关联的应用密钥 ,并由 PDU 中的应用 标识符(AID)字段标识。如果该节点无法识别 AID,高阶传输层就会丢弃 PDU。如果传输信息完整性检查(TransMIC)失败,信息将被丢弃。
高阶传输层 将信息传递给访问层。在那里,模型层会根据接收到的信息类型调用相应的模型函数。
6.4 中继
4.19 节 "信息中继 "介绍了中继的基本概念。定向转发方法比托管网络泛洪 方法更复杂,本节将进一步解释。
6.4.1 定向转发
6.4.1.1 与有管理泛洪的比较
当使用网络泛洪 时,中继节点除了在有限的情况下,如当生存周期 字段所指示的最大跳数已被占用时,会重传它们收到的所有信息。这是一种简单而有效的机制,但在使用无线电频谱方面却不是最有效的。相对于中继节点节点,无论任何目的地 节点是否位于特定方向,信息都会在网络的各个方向传播。
图 8 和图 9 描述了一个配备Bluetooth Mesh 网络的大型会议厅,其中包括一个控制舞台灯光的开关。信息需要通过单跳转发才能到达所有的人。
开关范围内有两个中继节点。当使用舞台灯光开关时,一条信息被发送出去,由两个中继器接收并重新发送,这样信息就会在网络中向目标灯光和远离目标灯光的方向传播。

图 8 - 电灯开关广播开/关信息

图 9 - 两个中继器接收信息并都进行重传
这是次优方案。离舞台最远的中继节点 在将开关控制信息传递给舞台灯光方面毫无贡献。
定向转发与网络泛洪 的不同之处在于,只有中继节点的状态 数据表明它位于通往信息所指向的一个或多个节点的路径上时,才会进行中继节点。可以使用定向转发的中继节点 称为定向中继节点。
图 10 显示了会议厅灯光开关和中继节点使用定向转发的效果。灯光开关发出的开/关信息只向舞台上的灯光传播,而不会传播到网络的其他部分。

图 10 - 定向转发的效果
路径概念是定向转发的一个正式定义。
6.4.1.2 路径和通道
定向转发涉及定向中继节点序列的定义或发现,这些节点能够将信息从给定的源地址传送到特定的目的地 地址。这种节点序列称为路径。
在路径定义中,源地址总是单播地址,但目的地 地址可以是任何类型,包括组地址。当一个目的地 地址对应不止一个节点时,将定向转发路径描述为一组定向中继节点序列更为准确。
定向中继节点 上称为转发表的状态 数据项显示了中继节点 可以服务的路径。它由源地址和目的地 地址对列表组成。如果转发表中有包含信息源和目的地 地址 的条目,信息就会被转发。否则,信息将被丢弃。
可能存在不止一个定向中继节点序列,信息可以通过这些节点中继到达特定的目标节点。这可以通过创建多通道路径来加以利用。车道是定向中继节点的序列,在这方面与路径相同。如果从一个源节点向一个目的地 节点传送信息时,有多个节点序列可供选择,则该序列使用 "车道"一词,而所有车道的集合则使用 "路径"一词。多车道路径的好处是提供更大的冗余度,即使其中一个定向中继节点序列由于某种原因无法使用而中断,信息也更有可能被传送。
6.4.1.3 创建和维护路径
路径要么是使用配置管理器工具手动创建的,要么是通过执行一系列自动程序动态发现和建立的。
在使用自动路径创建时,该过程需要经过多个阶段。对于那些需要路径的源地址和目的地 地址对,会使用特殊的信息来探索网络,目的是找到能将信息从源地址传送到目的地 中继节点 序列。在这一过程中,会建立一个称为路径度量的测量值,以便对备选序列进行比较,选出最佳序列。路径度量只是计算通过给定的中继序列从源节点到目的地 所需的跳数。跳数越少的路径越好。
当发现可作为源/目的地地址 对路径的最短节点序列时,就会使用控制信息更新该序列中的节点,使其转发表显示它们是该路径的一部分。
7.安全
7.1 蓝牙网格网络的安全性是必须的
Bluetooth LE 允许配置文件 设计者利用一系列不同的安全机制。 这包括两个设备配对的各种方式、广告数据包中私人设备地址的使用以及附加到 GATT 特性的安全规则。但是,安全机制完全是可选的,完全开放、没有任何安全保护或限制的设备也是允许的。在蓝牙SIG (BluetoothSIG )规范不适用的情况下(例如在处理定制配置文件 或服务时),设备设计者或制造商有责任分析威胁,确定安全要求,并决定如何使用Bluetooth LE 的安全功能来满足这些要求。
相比之下,蓝牙网状网络的安全性是强制性的。网络、设备和单个应用程序都是安全的,不能关闭或降低安全性。
7.2 安全基础
以下基本安全声明适用于所有Bluetooth Mesh 网络:
- 所有mesh 信息都经过加密和验证。
- 网络安全、应用 安全和设备安全分别独立处理。请参阅下文7.3 分离关注点和安全密钥。
- 可使用密钥更新 程序 和 节点配置协议接口程序,在网状网络运行期间更改安全密钥更新 。
- 信息混淆提供了一种隐私机制,使节点难以被追踪。
- Mesh 专用信标可确保节点不会广播可用于设备跟踪的静态信息。
- Mesh 安全保护网络免受重放攻击。
- 将设备添加到mesh 网络成为节点的配置过程是一个安全的过程,包括对 X.509 数字证书的支持。
- 节点可以安全地从网络中删除,从而防止垃圾桶攻击[6]。
7.3 分离关注点和安全密钥
蓝牙网格网络安全的核心是三种类型的安全密钥。这些密钥为网络的不同方面提供安全保障。在蓝牙网状网安全design 中使用不同类型的安全密钥 ,是 "关注点分离"这一重要原则的体现。
要理解这一点并领会其中的意义,请看一盏可以充当 "中继节点"的网灯。作为中继节点,它可能会处理与大楼蓝牙网状网络门窗防盗系统有关的信息。灯没有正当理由访问和处理这些信息中的数据,但确实需要将它们转发给其他节点。
为了解决这种潜在的利益冲突,蓝牙网格网络使用不同的安全密钥来提供网络层 的安全,而不是用来确保与照明、物理安全、供暖等特定应用有关的数据的安全。
蓝牙网状网络中的所有节点至少拥有一个网络层密钥 网络密钥)。拥有共享密钥的节点才能成为网络成员。网络加密密钥和隐私网络密钥直接来自网络密钥。
拥有网络密钥 后,节点就可以对网络层 进行解密和认证,从而实现中继等网络层 功能。它不允许应用 数据被解密。
只有拥有正确应用密钥的节点才能解密特定应用 的数据。在网状网络的所有节点中,可能会有许多不同的应用应用密钥 ,但通常情况下,每个应用密钥 只会被一小部分节点子集 拥有,即那些可以参与给定应用的类型的节点。例如,电灯和电灯开关将拥有照明应用的应用密钥 ,但不拥有供热系统的应用密钥 ,只有恒温器、暖气片上的阀门等才拥有供热系统的应用密钥 。
高阶传输层 使用 AppKeys 对信息进行解密和验证,然后再将其传递到访问层。
应用网络密钥只与一个网络密钥相关联。这种关联被称为应用密钥 绑定,意味着特定应用密钥只能在一个特定网络上运行,而一个网络可以host 多个独立安全的应用。
最后一种密钥类型是设备密钥(DevKey)。这是一种特殊的应用密钥。每个节点都有一个唯一的 DevKey,只有 启动配置设备知道,其他设备都不知道。DevKey 用于确保配置过程中的通信安全。

图 11 - 安全密钥在Bluetooth Mesh
7.4子网 和子网 桥接
网络可细分为若干子网。每个子网 都有自己的网络密钥,只有属于该子网的节点才能拥有。例如,这可用于隔离和保护不同的物理区域,如酒店的每个客房。在这种情况下,这将确保特定客房的灯光等设备只能由同一房间和同一子网的其他设备控制。
在某些情况下,不同子网中的设备之间需要进行通信。酒店管理人员可能需要集中控制酒店所有房间的所有设备,但与此同时,一个客人房间的设备不能被用来控制另一个客人房间的设备,一个房间设备的传输不能被另一个房间的设备截获和解密,这些都是非常必要的。蓝牙网状网络(Bluetooth Mesh Networking)有一种叫做子网 桥接的 功能 ,可以实现这一点。
子网 桥接功能 允许网络规划者使用子网进行区域隔离,但也可以有选择性地允许不同的相邻子网中的特定设备之间进行通信,而不会影响安全性。这就需要设置一个或多个节点作为子网 。这些节点拥有要桥接的每个子网的网络密钥 ,以及桥接 配置服务器模型及其各种状态。
子网 桥接是通过一个名为 "子网 桥接"状态 启用的。桥接表(Bridging Table)是另一个状态 ,其中包含的条目可实现特定源地址和特定目的地 地址之间的通信。此外,桥接表条目还显示第一个子网 的网络密钥 和第二个子网的网络密钥 。
它是桥接表状态 中的信息,允许来自一个子网、用第一个网络密钥加密的信息被作为子网桥接的节点解密,并用第二个子网的网络密钥重新加密、由作为子网 桥的节点解密,并用第二个子网 的网络密钥 重新加密,而且该操作仅限于指定来源和目的地 地址的信息。
7.5 节点移除、密钥更新 和垃圾桶攻击
节点包含各种mesh 安全密钥。如果节点出现故障需要处理,或者所有者决定将节点出售给其他所有者,那么重要的是,该设备及其所含密钥不能被用来对节点所在的网络发动攻击。
定义了从网络中删除节点的程序。启动配置设备 应用 将节点添加到拒绝列表中,然后启动一个名为密钥更新 程序。
密钥更新 程序密钥更新 结果是,网络中的所有节点,除了那些被列入拒绝名单的节点外,都将获得新的网络密钥、应用 密钥和所有相关的衍生数据。换句话说,构成网络和应用 安全基础的整套安全密钥被替换。
因此,被从网络中删除的节点不再是网络成员,也不会构成威胁,因为该节点包含一个旧的网络密钥 和一组旧的 AppKeys。
7.6 重放攻击
重放攻击是一种技术,窃听者截获并捕捉一条或多条信息,然后再重新传输,目的是诱使收件人执行攻击设备无权执行的操作。
7.6.1IV索引 和序列号
蓝牙网格网络具有防止重放攻击的保护功能。这种保护的基础是使用两个数据项,即序列号 (SEQ)和IV索引。元素每次发布 信息时都会递增 SEQ 值。如果一个节点从一个元素 接收到的信息中包含的 SEQ 值小于或等于上一次有效信息中的 SEQ 值,那么该节点就会丢弃该信息,因为它很可能与重放攻击有关。
IV 索引是一种网络共享资源,在接收信息时与 SEQ 和源地址 值一起进行检查。对于元素 发送的每条网格信息,SEQ、IV索引 和 SRC(地址)字段的组合值总是唯一的。
网络每次使用一个IV索引 值,除非IV更新 程序正在进行中,在此期间使用两个不同的值,直到程序完成并为整个网络分配了一个新值。
7.6.2IV更新 程序
序列号长度为 24 位。通过重复递增 SEQ 字段,节点最终可能会耗尽其序列号 值。为了避免这种情况的发生,发现自己处于这种情况的节点可以启动一个名为IV更新 网络程序。这将通过递增旧值计算出一个新的IV索引 值,并将其分配给整个网络,受影响节点中的元素将其序列号 重置为零。
出于安全原因,只有属于主子网 成员的节点才能启动IV更新 程序。只属于非主子网成员的访客设备不能启动IV更新。这为这一重要的共享网络资源提供了保护。
7.7 隐私
从网络密钥 中提取的隐私网络密钥 用于混淆网络 PDU 头值,例如地址。混淆可确保无法利用随意、被动的窃听来跟踪设备和使用设备的人。它还使基于流量分析的攻击变得困难。
包括密钥更新 程序和IV更新 密钥更新 程序在内的许多蓝牙网格网络程序都使用 Beacon广播向网络中的其他设备广播数据,以显示它们的存在和状态。信标广播是一种利用蓝牙广告的技术。
静态、不变信息的传输可能会构成安全风险,因为当设备在网络中移动时,有可能被跟踪,并推断出设备、设备用户乃至整个网络的信息。为解决这一风险,蓝牙网状网络包含一种称为网状专用信标的功能。
Mesh 专用信标传输不包含静态信息。通过使用信标信息中包含的数据,消除了设备被跟踪的可能性,从而提高了网络的私密性。
8.可扩展性
事实证明,蓝牙网格网络是可以扩展的。在现实世界中,有多达六千个节点的商业部署。
蓝牙网格网络中可寻址元素的理论最大数量为 32,767 个。这是因为用于识别元素 的单播地址 长度为 15 比特。也就是说,以网络可容纳的节点数量来考虑可扩展性并不是一个特别有用的方法。从网络所能支持的工作量,或者换一种说法,从网络所能容纳的网络操作量和速度的角度来考虑更为合适。
可扩展性和其他性能指标是网络规划器(参见10.1 规划器)在设计网络时要考虑的问题。节点的位置和配置会对网络的性能以及将来扩展到所需最大节点数的难易程度产生重大影响。
无线网络的可扩展性往往受到多种因素的限制,包括共享无线电频谱的使用效率。当两个设备同时在同一无线电信道上传输信息时,就会发生碰撞,这可能成为网络可扩展性的一个限制因素。因此,避免或减少碰撞造成的信息丢失概率是蓝牙网格design 和网络规划人员design 工作的关键策略。
并非所有网络都一样。如果小型网络中的节点物理上靠近,并且节点频繁传输信息,那么节点相对较少的小型网络可能比大型网络更难扩展。换句话说,网络密度和节点冗余度等概念非常重要。这不仅仅是指网络中节点的绝对数量。
蓝牙网状网络的设计从一开始就考虑到了可扩展性。PDU 很小(最多 29 个八进制长度),这就减少了传输所使用的通话时间,从而降低了发生碰撞的概率。
通常,信息副本在三个不同的信道上传输。这不仅增加了网络容量,还降低了因碰撞而丢失信息的概率。
无论有无复杂的定向转发功能 ,中继过程都能为信息建立多条路径,从而提高信息传递的概率,尤其是在繁忙的网络中。
未确认的报文可减少网络流量,尤其是在组播场景中,即一台设备试图在一次操作中控制一组其他设备,这在Bluetooth Mesh 网络中是一种非常典型的情况。
分散式design 理念是蓝牙网状网络运作的重要基础。这支持更高水平的可扩展性,并使其有别于其他同类技术。例如,传感器可直接与灯具通信,无需中间照明控制器。
蓝牙SIG 网站上有一篇文章对蓝牙网格网络的可扩展性问题进行了更深入的探讨。
9.蓝牙网络化照明控制 (NLC)
蓝牙网状网络的主要应用之一是控制大型建筑中的联网照明设备。
灯具(有时更正式地称为灯具)可以很复杂,有多个可独立控制的灯泡,支持亮度和颜色控制,既可通过人工操作开关进行手动控制,也可通过远程无线传感器提供的环境测量结果进行控制。
蓝牙网状模型规范定义了标准化的功能模块,灯具等设备通过实现这些功能模块可获得网络中的某些功能,如开关功能。蓝牙模型的模块化特性有助于创造创新的多功能产品。单个模型通常很复杂,有许多参数可用于控制其状态 和行为。这进一步增强了蓝牙网状网络作为 NLC 技术的灵活性和多功能性。
蓝牙网状网络的许多重要方面都是可选的。这包括支持的承载列表、设备配置方式、支持的节点功能(如代理、中继、LPN 和好友)等。蓝牙网状网络规范的不同部分之间往往存在依赖关系。
蓝牙网状网络技术的灵活性非常有益。但这必须与通过标准化实现不同制造商产品之间互操作性的目标相平衡。一项技术的可配置性和可变性越高,有时就越难保证互操作性。因此,一系列蓝牙 NLC 设备配置文件 规范为不同类型的设备定义了配置文件 和其他应用 要求和建议。符合相关配置文件的要求,产品 就能与其他采用相同配置文件的产品互操作。
已为以下产品 类型定义了 NLC配置文件 规范。
- 环境光传感器NLC 配置文件
- 基本亮度Controller NLC 配置文件
- 基本场景选择器NLC 配置文件
- 调光控制NLC 配置文件
- 能源监控器NLC 配置文件
- 占用传感器NLC 配置文件
蓝牙网状网络定义了从物理层一直到应用 的所有设备层,是首个用于无线照明控制的全栈标准。
10.蓝牙网格网络利益相关者
了解主要利益相关者及其作用有助于了解Bluetooth Mesh 网络是如何规划、创建、维护和管理的。本节确定并解释了一些标准角色。
10.1 规划人员
规划人员有一系列广泛的职责,都与定义要创建的网络有关。不妨将这些职责分为三个子类别:
- 物理规划
- 功能规划
- 网络规划
所有子类别可能由同一人负责,也可能由专家分工负责。
物理规划涉及确定建筑物内设备的物理位置。建筑师、室内设计师或工业设计师通常负责物理规划。
功能规划涉及定义设备的功能特性及其与网络中其他设备的功能关系。功能规划可能会影响物理规划。
网络规划主要是确定所需的设备配置,以实现所需的功能和可靠性。正是这一角色决定了哪些设备被配置为友邻节点、低功耗节点、中继节点或代理节点等。网络规划人员会影响物理规划。
10.2 安装程序
安装人员在建筑物中实际安装设备。这通常需要钻孔、爬梯子、使用螺丝刀和连接 电源。
10.3 专员
在安装人员根据规划人员的design 实际安装设备后,该角色将通过配置使设备成为新Bluetooth 网格网络的一部分。配置完成后,专员将对每个新节点进行配置,使其具备功能和网络规划工作所指定的功能和配置。通常情况下,供应和配置是同时进行的,并使用相同的工具,通常是智能手机应用。
10.4 楼宇维护职责
楼宇维护角色是另一个宽泛的角色,涉及规划者、安装者和调试者角色的各个方面,但其职责是维护楼宇中的现有网络,而不是创建一个新网络。楼宇维护角色的任务包括更换设备(需要安装、调配和配置)、诊断和解决问题,以及安全处置不再需要的设备。
10.5 大楼业主
楼宇业主是楼宇的所有者,他们关心的是网络能否按要求运行、是否安全以及能否实现预期的投资回报率(ROI)。
11.结论
本文将向读者介绍蓝牙网格网络、其主要功能、概念和术语。它是蓝牙,但不是我们所熟知的蓝牙。它是一种蓝牙技术,支持设备使用新的拓扑结构以新的方式进行通信。
最重要的是,Bluetooth 使这种最普遍的低功耗无线技术成为全新使用案例和行业领域的完美选择。
12.额外资源
本节列出了支持从不同角度学习Bluetooth LE 其他资源。
| 资源 | 费用项目 | 地点 |
| 蓝牙网格协议规范 | 本规范定义了蓝牙网状网络架构及其协议和程序。 | https://www.bluetooth.com/specifications/specs/mesh-protocol/ |
| 蓝牙网格模型规格 | 为照明和传感器等应用定义了全套标准化模型。 | https://www.bluetooth.com/specifications/specs/mesh-model-1-1/ |
| 蓝牙核心规范 | 定义了蓝牙堆栈的所有层以及相关协议和程序。涵盖Bluetooth LE 和Bluetooth BR/EDR。 | https://www.bluetooth.com/specifications/specs/ |
| 配置文件和服务 规格 | 服务 规范定义了单个 GATT服务 及其包含的特征和描述符。服务 规范中定义了托管服务 的 GATT 服务器设备在响应各种条件和状态 数据值时的行为。 配置文件规范定义了相关设备所承担的角色,特别是定义了客户端 设备的行为和它应与之配合的连接服务器上的数据。 | https://www.bluetooth.com/specifications/specs/ |
| Bluetooth LE 入门 | Bluetooth LE 入门》介绍了Bluetooth LE 协议栈的每一层,从底层的物理层开始,到顶层的通用访问配置文件 。此外,还涵盖了与堆栈分层架构相关的主题,如安全性。如果您是Bluetooth LE 新手,并希望从技术角度了解该技术,可以从这里开始。 | https://www.bluetooth.com/bluetooth-resources/the-bluetooth-low-energy-primer/ |
| 蓝牙网格协议规范 -功能 摘要 | 蓝牙网格协议规范引入了几项重要的新功能。本文对这些变化进行了高度概括,并提供了有关每项新功能更详细内容的论文链接。 | https://www.bluetooth.com/mesh-feature-enhancements-summary/ |
| 学习指南 -Bluetooth LE 开发简介 | 这是一份教育资源,供希望学习智能手机和外围设备连接型场景软件开发的开发人员使用。包括一系列附带解决方案的实践项目。 | https://www.bluetooth.com/bluetooth-resources/bluetooth-le-developer-starter-kit/ |
| 学习指南 - 蓝牙网格网络软件开发入门 | 为希望了解蓝牙网状网络和在微控制器中实现网状模型的开发人员提供的教育资源。包括一系列附带解决方案的实践项目。 | https://www.bluetooth.com/bluetooth-resources/bluetooth-mesh-developer-study-guide/ |
| 学习指南 - 蓝牙网状网络代理功能简介 | 为希望学习如何为智能手机等设备创建图形用户界面应用程序的开发人员提供的教育资源,这些应用程序可与蓝牙网状网络中的节点进行交互。包括一系列附带解决方案的实践项目。 | https://www.bluetooth.com/bluetooth-resources/bluetooth-mesh-proxy-kit/ |
| 论文 - 蓝牙网格网络--开发人员简介 | 为有兴趣了解蓝牙网格网络关键概念和功能的人提供的教育资源。 | https://www.bluetooth.com/bluetooth-resources/bluetooth-mesh-networking-an-introduction-for-developers/ |
| 论文 - 蓝牙网格模型 - 技术概览 | 该教育资源可供有兴趣更好地了解蓝牙网状网络产品中可用的标准模型的人员使用。 | https://www.bluetooth.com/bluetooth-resources/bluetooth-mesh-models/ |
| 学习指南 - 了解Bluetooth LE 安全性 | 该教育资源解释并说明了Bluetooth LE (不包括蓝牙网格网络)安全性的各个方面。既适合安全领域的初学者,也适合有相关经验的人员。包括一系列实践项目和解决方案。 | https://www.bluetooth.com/bluetooth-resources/le-security-study-guide/ |
| 文件 - 蓝牙安全与隐私最佳实践指南 | 该指南旨在帮助实施者更好地理解为什么某些可用的安全和隐私选择在特定应用中优于或劣于其他选择,以及规范中还存在哪些风险和隐患。 | https://www.bluetooth.com/bluetooth-resources/bluetooth-security-and-privacy-best-practices-guide/ |
| 文章--蓝牙网格网络的可扩展性 | 这篇博文探讨了可扩展性问题,给出了定义,并探讨了在大型网络中制约这一问题的因素。 | https://www.bluetooth.com/blog/mesh-in-large-scale-networks/ |