Bluetooth® Mesh 入门指南

1.修订历史

Version Date Author Changes
1.0.0 19 January 2019 Martin Woolley, Bluetooth SIG Initial version
1.1.0 16 May 2024 Martin Woolley, Bluetooth SIG Updated to include key features of Bluetooth Mesh 1.1 and Bluetooth Networked Lighting Control (NLC)

2.关于本文

Bluetooth® Mesh Primer 的制作是为了帮助产品设计师和开发人员等技术专业人士在查阅正式技术规范和深入研究该主题之前,快速了解Bluetooth Mesh 技术。

本文的目的不是复制或涵盖与正式规范相同的内容或深度。在有必要的情况下,本文可能会不时简要摘录规范内容。您应将本文视为通过介绍和解释重要的Bluetooth Mesh 概念、为其他资源和规范指明方向,从而使学习曲线不再那么陡峭。

3.导言

3.1Bluetooth 技术的演变

Bluetooth 技术自 2000 年问世。该技术最初是为了让两台设备无需任何其他中间网络设备就能进行无线数据交换,它很快就在无线鼠标和汽车免提套件等产品中发挥了作用。用于首批Bluetooth 产品的第一版Bluetooth 技术正式名称为Bluetooth BR(基本速率),物理层工作速率为每秒 100 万比特[1](Mb/s)。随后,同一技术的更快版本将比特率提高了一倍,达到 2 Mb/s,称为Bluetooth BR/EDR,其中 EDR 代表增强数据速率。

Bluetooth 低能耗(LE)首次出现在Bluetooth 核心规范[2] 的 4.0 版本中。这是Bluetooth 技术的一个新版本,它并没有取代其前身Bluetooth BR/EDR,而是作为一种替代品与之并存,其能力和品质使其成为新一代产品的完美选择,并能满足新的和具有挑战性的技术和功能要求。

Bluetooth LE 支持两个设备之间点对点通信以外的拓扑结构,其广播模式允许一个设备同时向数量不限的接收器传输数据。

Bluetooth LE 也是Bluetooth Mesh 网络的基础,它允许创建数以万计的设备网络,每个设备都能与网络中的任何其他设备通信。

3.2Bluetooth Mesh 网络

Bluetooth Mesh 建立网络的目的是提供一种安全、可扩展和标准化的无线通信技术,可用于解决商业楼宇的问题和机遇。

联网照明控制是Bluetooth Mesh 的一项关键应用,可对大型物理空间进行手动和自动照明控制。 单个灯具或一组灯具可通过单一网络操作进行控制。

以下是基于Bluetooth Mesh 网络的联网照明控制所能实现的一些关键功能。

  • 它们可以开关。
  • 它们的亮度(更准确地说是亮度)可以按照一个感知统一的尺度进行控制,以补偿人眼对光的不同敏感度。
  • 色温、色调和饱和度均可修改。
  • 传感器可以将房间内任何可测量属性的信息或多或少地传递给相关灯具,以便根据环境条件自动调整灯具状态。请注意,Bluetooth Mesh 不需要中央路由器来交换传感器和灯光之间的信息。
  • 可定义特定状态值的任意集合(称为场景),只需一次请求,灯光就能从一个场景切换到另一个场景。
  • 影响灯组的场景变化可安排在特定时间点自动进行。
  • 允许根据房间占用情况自动触发场景,并在没有人时自动过渡到待机状态。这有助于节约能源。
  • 支持为改变灯光状态设置预定义时间表的功能。
  • 支持供应商模式概念,允许制造商在需要时为其设备添加额外功能。

对网络中灯光的控制不受直接无线通信范围的限制。像开关或传感器这样的设备可以控制位于大楼远处(可能是几十层楼以上)的灯光。

Bluetooth Mesh 技术从一开始就设计了安全功能,可解决潜在的问题和威胁,包括

  • 保护信息的机密性
  • 通过设备和网络隐私机制防止设备被追踪
  • 防止篡改网络控制信息
  • 将设备的行动限制在网络的特定区域内
  • 防止重放攻击
  • 确保通过安全的程序将设备添加到网络中
  • 确保设备可以安全地从网络中移除,而不会出现被丢弃的设备日后被用于未经授权访问的风险
  • 提供提供和撤销访客访问网络相关功能的能力,同时不影响大型网络的安全性。

配备Bluetooth Mesh 网络和无线网络照明控制装置的建筑可享受一系列好处。

  • 它们变得更加节能,传感器可提供有关环境光照度和房间占用率的数据,这些数据可用于自动调节照明度。
  • 只需轻触开关或智能手机应用程序用户界面(UI),就能重新配置照明,以优化房间的当前用途,无论是演示还是大型公司圆桌会议。
  • Bluetooth Mesh 设备可提供使用情况和设备健康数据,这为主动维护提供了便利。
  • 更容易改变建筑物的布局和照明要求。它是无线的!
  • Bluetooth Mesh 该技术由一系列标准规范定义,涵盖整个协议栈以及设备的行为、功能和接口。这意味着,任何制造商生产的符合标准的产品都具有互操作性。Bluetooth Mesh 技术的采用者不会被锁定在单一制造商或封闭的小团体中。

4.主要特点和概念

要理解Bluetooth Mesh 网络拓扑结构,读者需要了解一系列基本特征、技术术语和概念,而这些在Bluetooth LE的世界里是找不到的 。在本节中,我们将探讨其中最基本的功能、术语和概念。

4.1 蓝牙运行模式

Bluetooth LE 定义了设备相互通信的多种不同方式。这些方式在Bluetooth 核心规范中有正式定义,在本文中被非正式地称为 "运行模式"。

各种运行模式有许多不同之处,包括设备形成的拓扑结构、可能的通信方向以及模式的基本技术细节,例如是面向连接的模式还是无连接模式。

在面向连接的通信中,设备首先交换信息,以便就后续通信的重要方面(如发送和接收定时参数)达成一致。而在无连接通信中,这种情况不会发生,发送和接收定时也不会以同样的方式预先商定。在Bluetooth LE 中,面向连接的通信总是发生在两个设备之间,而无连接通信可由一个发送设备与多个接收设备进行通信,无论是否预先商定了某种程度的参数信息。

拓扑结构与通信设备之间可能形成的关系的复杂程度有关。目前有三种不同的拓扑结构:

  • 一对一(1:1)
  • 一对多(1:m)
  • 多对多(m:n)

一些运行模式只允许单向传输应用数据,而另一些运行模式则允许双向传输。

有些模式使用精确的固定时间表来传输数据包,有些则不规则。

目前定义了七种运行模式。它们如下

  • LE 异步面向连接的逻辑传输(LE ACL)
  • LE 广播(ADVB)
  • LE 周期性广播 (PADVB)
  • LE 有回复的周期性广播 (PAwR)
  • 连接异步流 (CIS)
  • 广播等时流(BIS)
  • Channel Sounding (CS)

Bluetooth 核心规范详细定义了每种模式。

表 1 概述了七种运行模式的主要属性,以便进行比较。请注意,Channel Sounding (CS)是一种特殊模式,仅用于支持两个设备之间距离的安全计算,不用于传输应用数据。

Operational Mode Connection-Oriented or Connectionless Topology Transmit Schedule Direction of Application Data

LE ACL

connection-oriented

point-to-point

regular

bidirectional

ADVB

connectionless

one-to-many

irregular

unidirectional

PADVB

connectionless

one-to-many

regular

unidirectional

PAwR

connectionless

one-to-many

regular

bidirectional

CIS

connection-oriented

point-to-point

regular

bidirectional

BIS

connectionless

one-to-many

regular

unidirectional

CS

N/A

one-to-one

regular

N/A

表 1 -Bluetooth 运行模式的属性

Bluetooth Mesh 技术不是一种操作模式。它是一种协议,包含一系列定义的程序、标准应用层行为和其他功能,使Bluetooth LE 成为一种无线网络技术成为可能。它以Bluetooth LE 的核心功能为基础,包括几种运行模式,因此有时它以无连接方式运行,有时则使用面向连接的通信。原则上,Bluetooth Mesh 网络形成的拓扑结构是多对多的,因为任何设备都有可能与任何其他设备进行通信,而且应用数据的通信可以在两个方向上进行。

通信是通过Bluetooth LE 以适当的方式传输信息,这种传输方式使用一种称为承载的机制,该承载机制基于其中一种运行模式。设备能够在整个网络内向其他设备转发信息,因此端到端的通信范围远远超出了每个mesh 设备的无线电范围。

4.2 设备和节点

作为mesh 网络一部分的设备被称为节点,而非节点设备则被称为未配置设备

将未配置的设备转变为节点的过程称为配置

配置是一个过程,它能使未配置的设备拥有一系列安全密钥,为其分配一个单播地址,并在称为启动配置设备上的数据库中列出。启动配置设备通常是平板电脑或智能手机。

4.3 要素

有些节点有多个组成部分,每个部分都可以独立控制。在Bluetooth Mesh 术语中,这些部件被称为元素。图 1 显示的是一种 LED 照明产品,如果将其添加到Bluetooth Mesh 网络中,就会形成一个具有三个元素的节点,每个元素用于控制单个 LED 灯。

图 1

图 1 - 由三个元素组成的照明节点

4.4 消息

当一个节点需要查询其他节点的状态或以某种方式控制其他节点时,它会发送一个合适类型的消息。如果一个节点需要向其他节点报告自己的状态,它就会发送一条信息。mesh 网络中的所有通信都是面向消息的,并定义了许多消息类型,每种类型都有自己独特的操作码。

信息可分为两大类:

  • 已确认的报文要求接收报文的节点做出回应。回应有两个目的:一是确认相关信息已被接收,二是向原始信息发送者返回与信息接收者相关的数据。已确认信息的发送者如果没有收到预期的回应,可以重新发送信息,因此已确认信息必须是幂等的。这就意味着,某条已确认信息多次到达节点后,其效果与只收到一次的效果相同。
  • 未收到的信息无需回复。

Bluetooth Mesh 大多数情况下都会使用未确认消息,因为这种消息传递模式的扩展性非常好。通过对节点进行配置,使其快速连续多次重传信息副本,从而确保信息的可靠性。

当目标是单个设备时,需要返回确认信息的报文效果很好,但当目标是一组多个设备时,就不能很好地扩展。大多数涉及节点或其元素配置的报文都使用确认报文。

通过中继系统,可将信息传送到直接无线电范围之外。中继在4.19 信息中继中解释。

4.5 地址

Bluetooth Mesh 定义了三种地址类型。

单播地址可唯一标识单个元素。单播地址在配置过程中分配给设备。

组地址是一种多播地址。这种地址类型允许多个设备通过称为 "发布和订阅 "的过程接收相同的传输信息。组地址由Bluetooth SIG 定义,称为固定组地址,或动态分配。SIG 定义了七个固定组地址。它们分别被命名为全节点、全中继、全好友、全代理、全定向转发代理、全 IP 节点和全 IP 边界路由器。本文稍后将解释 "代理"、"朋友 "和 "中继 "等术语。

预计用户将通过配置应用程序建立动态群组地址,这些地址将反映楼宇的物理配置,例如定义与楼宇中每个房间相对应的群组地址。

虚拟地址与组地址类似,它允许多个设备通过发布和订阅接收单个传输信息。它采用 128 位 UUID 值的形式,任何元素都可以与之关联,非常类似于标签。例如,虚拟地址可在生产时预先配置,并可用于各种情况,比如,在由制造商生产并部署在mesh 网络中的所有会议室投影仪中进行轻松寻址。

4.6 发布/订阅

发送信息的行为称为发布。节点被配置为只接收那些发送到特定地址进行处理的信息,这被称为订阅。

通常情况下,信息是发送给组地址或虚拟地址的。组名和虚拟地址名对于最终用户来说具有易于理解的含义,因此在配置设备时使用起来简单直观。

在图 2 中,我们可以看到名为Switch 1的节点正在向组地址Reception 发布信息。节点Light 1Light 2Light 3都订阅了Reception地址,因此可以处理发布到该地址的信息。换句话说," 1 "" 灯 2 "" 3 "可以通过开关 1 打开或关闭。

开关 2发布到组地址Accounts。 只有灯 3订阅了这个地址,因此它是唯一受开关 2 控制的灯。请注意,这个例子还说明了节点可以订阅多个不同地址的信息。这既强大又灵活。

同样,请注意开关 5开关 6是如何发布到同一个承保地址的。

在发布/订阅通信模式中使用组地址和虚拟地址还有一个好处,就是在网络中移除、替换或添加新节点时,不需要重新配置其他节点。考虑一下在会计部门安装一盏新灯的过程。新设备将使用配置流程添加到网络中,并配置为订阅账户地址。网络的这一变化不会影响其他节点。开关 2将继续像以前一样向Accounts发布信息,但现在灯 3和新灯都会响应。

图2

图 2 - 发布和订阅

4.7 状态和属性

元素可以处于不同的状态,这在Bluetooth Mesh 中用状态值的概念来表示。

状态是一种特定类型的值,包含在元素及其模型中(见下文)。状态也有相关的行为,并且不能在其他上下文中重复使用。

Bluetooth Mesh 定义了一种称为 "通用 OnOff"状态。该灯将拥有这种状态,On值将对应并导致该灯点亮,而Generic OnOff状态的Off值将导致该灯熄灭。

下文将讨论 "通用"一词的意义。

属性与状态相似,都包含与元素相关的值。 但它们在其他方面与状态不同。

熟悉Bluetooth LE[3]的读者一定知道特性,并记得特性是一种数据类型,没有与之相关的定义行为,因此可以在不同的上下文中重复使用,例如在不同的 GATT 服务中。mesh 属性提供了在Bluetooth Mesh 设备中解释特性的上下文。

要理解上下文与属性相关的意义和用途,可以考虑使用温度 8(Temperature 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 模式

模型将前面的概念整合在一起,定义了状态数据的组合以及相关的信息类型和功能,就像面向对象软件开发中的对象一样。

模型通常是服务器模型客户端模型

  • 服务器模型定义了一系列状态、状态转换、状态绑定以及包含该模型的元素可发送或接收的消息。它还定义了与支持的信息、状态和状态转换相关的行为。
  • 客户机模型不定义任何状态。相反,它定义了可以发送或接收的信息,以便获取、设置或获得相应服务器模型中定义的状态的状态。

模型可以通过扩展其他模型来创建。未扩展的模型称为根模型。

模型是不可改变的,也就是说,不能通过添加或删除行为来改变模型。实现新模型要求的正确且唯一允许的方法是扩展现有模型。

基础模型是指配置和管理mesh 网络所需的模型。其他模型涉及某些类别产品可能需要的特定功能类型。

4.12 泛型

人们认识到,许多不同类型的设备往往具有语义上等同的状态,"开 "与 "关 "的简单概念就是例证。电灯、风扇和电源插座都可以打开或关闭。

因此,Bluetooth Mesh 模型规范定义了一系列可重复使用的通用状态,如通用 开/关和 通用电平

同样,还定义了一系列对通用状态进行操作的通用报文。例如,通用开/关获取(Generic OnOff Get)和通用电平设置(Generic Level Set)。

通用状态和通用信息用于通用模型,包括通用服务器模型(如通用开-关服务器)和通用客户端模型(如通用 级客户端)。

泛型允许多种设备类型支持Bluetooth Mesh ,而无需创建新模型。请记住,模型也可以通过扩展其他模型来创建。因此,通用模型可以作为快速创建新型设备模型的基础。

图 3

图 3 - 通用模型

4.13 场景

场景是存储的状态集合,可在接收到特殊类型的信息时或在指定的预定时间调用并使其成为当前状态。场景由 16 位场景编号标识,该编号在mesh 网络中是唯一的。

场景允许通过一个协调的动作,将一系列节点设置为先前存储的一组给定的互补状态。

试想一下,早上您希望接待区的温度为 20 摄氏度,LED 灯的亮度达到一定水平,接待员桌子上的灯调成温暖的黄色。手动将本示例场景中的各个节点设置为这些状态后,您可以使用配置应用程序将其存储为一个场景,并在日后通过发送与场景相关的适当mesh 消息或在预定时间自动调用该场景。

4.14 网络和子网

Bluetooth Mesh 网络由一组四种常见资源定义--地址空间、网络密钥和应用密钥以及 IV 索引。Bluetooth Mesh 网络可细分为一系列子网。与基于 TCP/IP 等协议的网络不同,隶属于某一特定网络与设备地址没有任何关系。相反,Bluetooth Mesh 网络和子网成员资格 主要通过向节点发放网络密钥来实现(见4.15 密钥)。一个节点可以被授予多个网络密钥,因此可以是多个子网的成员 。子网之间可以完全独立,也可以重叠或完全包含在另一个子网中。

子网有多种用途,包括

  • 通过将一组设备与其他无关设备隔离,增加网络的安全性。
  • 通过防止信息流超出子网边界,可以提高无线电频谱的使用效率。
  • 使网络管理更容易。例如,"访客设备 "可以使用子网及其网络密钥临时访问网络的一小部分。

图 4 描述了酒店每个客房使用的子网。

其中一个子网被指定为主子网。预计将成为网络永久成员的设备将成为主子网的成员。

图 4

图 4 - 用于隔离酒店每个房间设备的子网示例

4.15 秘钥

Bluetooth Mesh 协议规范定义了几种类型的安全密钥。

  • 每个节点都有一个唯一的设备密钥(DevKey)。只有设备和启动配置设备知道这个密钥值。该密钥用于确保配置过程的安全性。
  • 一台设备至少有一个共享网络密钥(NetKey)。这种密钥可确保网络层的通信安全。拥有一个特定的 NetKey,节点就成为相关网络或子网的一部分。一个特殊的密钥称为主网密钥,与mesh 网络有关。
  • mesh 网络至少有一个应用密钥(AppKey)。网络支持的应用实例可能包括照明、空调或供暖。AppKey 用于确保上层传输层的通信安全,从安全角度看,它具有在不同应用之间划分信息传递的作用。

设备密钥和主网络密钥在配置过程中提供给每个节点(见4.16 配置。在配置过程中,将向设备发放应用密钥,如有需要,还将发放与子网相对应的其他网络密钥(见4.17 配置)。

4.16 配置

配置是设备加入mesh 网络并成为节点的过程。它涉及多个阶段,生成各种安全密钥,本身也是一个安全的过程。

通常使用智能手机或平板电脑等设备上的应用程序来完成配置。也可以采用其他架构(如基于云的配置)。在这种情况下,用于发起配置过程的设备被称为Provisioner,而被配置的设备被称为Provisionee

供应者可以供应直接无线电范围内的设备。可选功能 "远程配置 "可以配置位于网络内任何位置、与启动配置者相距任何距离的设备。

4.16.1 直接配置

直接配置过程分为五个步骤,下面将对这五个步骤进行介绍。

第一步.Beacon 广播

未配置设备通过广播 "未配置设备信标 "来表明其可用性。这可以通过在广播数据包有效载荷字段中包含Mesh 信标广告数据 (AD) 类型来表示。

例如,用户可能需要通过按下按钮来启动新的设备广播。

第二步.邀请

在此步骤中,启动配置设备以启动配置邀请 PDU 的形式向被供应者发送邀请。被信标供应设备在供应能力 PDU 中回应有关自身的信息。

第三步. 交换公钥交换公钥

启动配置设备和被配置设备直接或使用带外(OOB)方法交换各自的公钥,公钥可以是静态的,也可以是短暂的。

如果支持可使用 X.509 证书对公钥进行验证。请参阅 4.16.3 基于证书的供应

第四步.认证

在此步骤中,启动配置设备者和被配置设备会执行某些操作来验证身份。例如,被配置设备可以使用适合其能力的操作,以某种形式向用户输出一个随机的单数或多位数。例如,它可以显示一个多位数数值。然后,用户将新设备输出的数字输入启动配置设备,两台设备之间就会进行加密交换,其中包括随机数,以完成两台设备之间的身份验证。同样,启动配置设备也可以输出一个必须输入给被配置设备的值。有多种认证方法可供选择,部分取决于设备的输入/输出能力。

第五步. 启动配置数据的分发

验证成功后,两台设备各自从自己的私人密钥和交换的对等公开密钥中获得一个会话密钥。会话密钥随后用于确保完成供应过程所需的数据的后续分发,包括称为网络密钥(NetKey)的安全密钥和称为设备密钥(DevKey)的设备特定密钥。重要的是,设备密钥是由供应者和被供应者独立计算的,因此永远不会在空中传输。

配置完成后,设备将拥有一个 DevKey、网络的 NetKey、一个称为 IV 索引的mesh 安全参数和一个由启动配置设备分配的单播地址。现在,它被称为一个节点。

4.16.2 远程配置

使用远程配置(RPR),启动配置设备和未配置设备可以在任何地点,只要两台设备之间能通过网络形成通信路径。这为许多实际情况提供了更实用的配置方法。

图 5

图 5 - 远程配置

4.16.3 基于证书的配置

配置过程包括验证步骤。验证可以通过多种方式实现,例如显示一个多位数字。一般来说,身份验证要求被配置的设备在执行配置的人的视线范围内,以便(例如)可以计算 LED 的闪烁次数。但这并不总是可行的。特别是在使用远程配置的情况下,被配置的设备可能完全不在视线范围内,也许就在大楼的另一侧。

Bluetooth Mesh 支持在配置过程中使用 X.509 证书。使用 X.509 证书调配的设备不需要在视线范围内,因此非常适合远程配置

4.17 配置

每个节点都支持一组标准配置状态,这些状态在标准配置服务器模型中实现,并使用配置客户端模型进行访问。配置状态数据与节点的组成和那些独立于任何特定应用程序或设备类型行为的功能有关(这些功能由设备上实施的其他模型管理)。

合成数据状态分为多个页面,包含节点的相关信息,包括其元素和支持的模型。大型组合数据服务器模型是对该状态的补充,为具有复杂组合和大量组件的设备提供支持。DALI(数字可寻址照明接口)设备就是此类设备的典型代表。

DALI 设备围绕一条通信总线而建,最多可连接 128 个组件(在 DALI 术语中称为总线 单元),可方便地插入或拔出。当 DALI 组件成为mesh 网络的一部分时,它就会成为一个复杂的mesh 节点中的一个元素,该节点代表整个 DALI 设备。如果设备固件检测到插入总线的组件发生变化,其组成数据就会自动更新,从而提供即插即用功能。

节点支持的功能(见4.18 功能)由配置服务器状态显示。节点订阅的地址存储在订阅列表状态中。表示节点是会员 的网络和子网密钥存储在 NetKey List 状态中,应用密钥存储在 AppKey List 状态中。

通过一系列配置信息,配置客户端模型和配置服务器模型可支持对配置服务器模型状态进行 GET、SET 和 STATUS 操作。

4.18 功能

所有节点都可以发送和接收mesh 信息,但节点也可以拥有一些可选功能,使其具备额外的特殊能力。有四种可选功能:中继功能、代理功能、好友功能和低功耗功能。受支持的功能可在特定时间启用或禁用。

4.18.1 中继节点

支持中继功能的节点被称为中继节点,能够转发接收到的信息。中继是一种机制,通过这种机制,信息可以穿越整个mesh 网络,在设备之间进行多跳中继

Mesh 网络 PDU 包括一个称为TTL(生存时间)的字段。它是一个整数值,用于限制信息在网络中的跳转次数。例如,将 TTL 设置为 3 会导致报文最多被中继两次。如果设置为 0,则信息根本不会被中继,只会从发端设备直接跳到目的设备。TTL 值为 1 意味着信息已经被中继了若干次,不应再被中继。以 TTL = 1 发送的信息不会离开设备,因此只能通过环回用于节点上的本地通信。

为了最有效地利用网络和无线电频谱,可以使用称为定向转发的可选功能。定向转发以知情和更高效的方式使用中继。

有关中继工作原理的更多信息,请参阅4.19 报文中继。

4.18.2 低功耗节点和友好节点

某些类型的节点电源有限,需要尽可能地节约能源。这类设备可能主要负责发送信息,但偶尔仍需要接收信息。

考虑使用小型纽扣电池供电的温度传感器。只要温度高于或低于配置的上限和下限阈值,它就会每分钟发送一次温度读数。如果温度保持在阈值范围内,则不会发送任何信息。这些行为很容易实现,不会产生特别的功耗问题。

不过,用户也可以向传感器发送改变温度阈值状态值的信息。这种情况比较少见,但传感器必须支持。接收信息的需要对占空比和功耗都有影响。100% 的接收 (RX) 占空比可确保传感器不会错过任何温度阈值配置信息,但却会消耗大量电能。低占空比可以节约能源,但传感器有可能错过配置信息。

这个明显难题的答案就是 "朋友 "节点和 "友谊 "的概念。

像示例中的温度传感器这样的节点可以被指定为低功耗节点(LPN),并在传感器的配置数据集中设置一个功能标志来表明这一点。

LPN 与另一个节点协同工作,该节点不受电源限制(例如,它有一个永久的交流电源)。这种设备被称为好友节点。好友节点存储发给 LPN 的信息,并在 LPN 向好友节点轮询等待信息时发送这些信息。LPN 可以相对不频繁地轮询好友节点,以便在节约电能与及时接收和处理信息之间取得平衡。当它进行轮询时,好友节点存储的所有信息都会一个接一个地转发给 LPN,并带有一个称为 MD(更多数据)的标志,向 LPN 指示是否有更多信息要从好友节点发送。

LPN 与 "朋友 "节点之间的关系被称为 "友谊"。友谊关系是Bluetooth Mesh 网络中需要接收信息的功率非常有限的节点能够高效运行的关键。

4.18.3 代理节点

4.18.3.1 关于代理节点

世界上有大量支持Bluetooth LE 的设备,包括大多数智能手机和平板电脑。通常情况下,这些设备都包含Bluetooth Mesh 网络协议栈,但它们确实能够连接到其他设备,并使用通用属性配置文件 (GATT)定义的程序与其他设备进行交互。

代理节点实现了 GATT服务 和若干特性,其他Bluetooth LE 设备可利用这些特性向Bluetooth Mesh 网络发送信息或从该网络接收信息。代理节点充当 GATT 服务器,其他设备则是 GATT 客户端。

定义了一种称为代理协议的协议。GATT 设备通过代理节点实现的 GATT 特性读写代理协议 PDU。代理节点将这些 PDU 转换为mesh 网络 PDU 或从 网络 PDU 转换而来。在使用代理协议时,代理节点被视为代理服务器,其他设备则被视为代理客户端。

代理客户端设备必须首先进行配置,就像任何其他作为会员 的网络设备一样。

代理节点允许不具备完整Bluetooth Mesh 网络协议栈的Bluetooth LE 设备与mesh 网络中的节点进行交互。在实践中,这意味着拥有完整操作系统和高分辨率显示屏的强大设备可以配备应用程序,为用户提供图形用户界面(GUI),通过该界面与网络中的灯等设备进行交互。

图 6

图 6 - 智能手机通过mesh 代理节点进行通信

4.18.3.2 代理发现

代理节点以两种模式之一运行,使代理客户端(如智能手机应用程序)能以两种方式之一发现并参与代理节点。

4.18.3.2.1 连续广告模式

在这种模式下,无论是否存在代理客户端设备,代理节点都会每隔一段时间广播广告数据包。广播数据包包含名为服务数据的广告数据项,其中包括 GATT Mesh 代理服务 的 UUID 标识和其他服务 数据。Mesh 代理服务 UUID 的存在可将广告设备识别为代理节点。代理客户端可通过扫描包含Mesh 代理服务 UUID 的广告数据包发现代理节点,连接到代理节点,然后通过连接交换代理 PDU。代理节点使用广告承载转发 PDU 到mesh 网络或从 网络转发 PDU。

这种方法所使用的不加区分、或多或少的永久性广告是次优的,而且浪费了Bluetooth 广告信道。mesh 网络中绝大多数节点使用的广告承载都依赖于这些可用信道。

4.18.3.2.2 按需专用代理模式

我们还定义了第二种更有效的方法,其中涉及一种称为 "请求 "的技术。它被称为 "按需私有 GATT 代理",对它的支持是可选的。

在这种方法中,只有当代理服务器意识到有代理客户端存在并需要其服务时,广告才会开始。

支持 "按需代理 "功能的 "代理 "客户机通过发送广告来表明它需要 "代理 "节点的服务。它传输的广告数据包包含一个称为 "请求 PDU "的 PDU。其中包含Mesh Proxy Solicitation服务 的 UUID 和其他信息。

代理服务器节点进行的扫描称为被动扫描。被动扫描不涉及任何数据包的传输,因此对无线电信道没有影响。在收到并验证来自代理客户机的请求 PDU 后,代理节点开始发出广告,以便代理客户机与其连接,并以标准方式通过已建立的连接开始交换代理 PDU。

按需提供的专用 GATT 代理服务器只在代理服务器客户端表示应该做广告时才做广告,从而有效利用了广告渠道。由于使用了Mesh 专用信标,它还提高了隐私性。请参见7.7 隐私

4.19 信息中继

4.19.1 多跳信息传递

Bluetooth Mesh 网络可能会跨越很大的区域,而建筑物中某一区域的节点往往不在其他节点的直接无线电范围内。为了使所有节点之间都能进行基于信息的通信,而不论发送节点与接收节点之间的距离有多远,Bluetooth Mesh 采用的系统包括由某些节点重发信息,使信息在网络中的节点之间跳转,直至到达目的地。

一般来说,重传信息的过程称为中继,这是中继节点的功能。

中继可以通过两种不同的方式发挥作用。第一种方法称为管理泛洪,第二种称为定向转发

4.19.2 网络泛洪

中继节点默认使用更简单的管理泛洪方式。受管泛洪包括中继节点重传收到的报文。

但在某些情况下,中继器不会进行重传,这有助于提高无线电频谱效率。例如

  • PDU 包含一个称为 "生存时间(TTL)"的字段。发送方将该字段设置为一个整数值,以限制信息被转发的次数。这可以防止报文无缘无故地在网络上直接转发。
  • 中继站会缓存已收到信息的详细信息。中继前要检查缓存。如果在缓存中找到报文,则假定该报文之前已被接收并重新传输,在这种情况下,新的报文副本将被丢弃。
4.19.3 定向转发

定向转发方法比管理泛洪更复杂,能更有效地利用无线电频谱。使用定向转发时

  • 中继节点只有在知道自己是会员节点序列中的一个节点时才会重传信息,信息可通过该节点到达目的地。如果无法通过该节点到达目的地,信息就会被丢弃。这样就减少了无线电传输,提高了频谱使用效率,为网络中的信息传输留出了更大的容量,并降低了发生碰撞的概率。
  • 在配置过程中,或通过手动创建,或通过各种系统程序自动创建和维护节点序列,以实现向目的地的交付。

6.4节 "中继"进一步探讨了定向转发。

有关定向转发的深入解释,请参阅Bluetooth Mesh 定向转发

4.20 设备固件更新

4.20.1 关于固件

Bluetooth Mesh 设备运行的固件实现了Bluetooth Mesh 协议和设备支持的型号。

通常情况下,固件需要在使用期内更新。更新Bluetooth Mesh 设备固件的原因包括:

  • 升级设备支持的Bluetooth Mesh 协议版本
  • 通过支持更多mesh模型来增加新功能
  • 修正错误
4.20.2 实际问题

Bluetooth Mesh 网络中的设备通常安装在难以触及的位置(如安装在天花板上)。从实际角度来看,任何依赖物理有线连接的固件更新程序都可能存在问题。即使是依赖与待更新设备直接通信的无线更新机制,也不是最佳选择,尤其是在大型建筑中。

Bluetooth Mesh 定义了一套允许从整个网络更新设备固件的程序,允许从任何物理位置启动对任何节点的更新。

接下来将介绍设备固件更新 (DFU)功能。

4.20.3 DFU 能力

Bluetooth Mesh DFU 功能允许在一次操作中将固件更新文件(通常称为二进制 映像)通过网络无线分发到一组或多组目标设备。它是一种方便的固件更新工具,能有效利用人力、网络和无线电资源。

4.20.3.1 DFU 模式和作用

Bluetooth Mesh DFU 功能涉及三对客户机和服务器模型。

  • BLOB 传输模型为节点间传输二进制大对象(BLOB)提供了一种通用机制。固件更新文件就是 BLOB 的一个例子。
  • 固件分发模型支持向要更新的节点分发固件更新文件的程序。固件分发程序使用 BLOB 传输模型。
  • 固件更新型号支持应用设备固件更新的程序。

定义了若干 DFU 角色:

Role Description Models

Target

A node which receives firmware updates. A Target is able to report the version of firmware it is running and the location from which updates can be obtained.

Firmware Update Server

BLOB Transfer Server

Initiator

Usually runs on a device that both supports Bluetooth Mesh and has internet connectivity. Examples of such devices include smartphones and gateway devices. Periodically or on request, an Initiator checks manufacturers’ websites for new firmware releases. It then downloads update files and sends them to a Distributor node.

Firmware Distribution Client

Firmware Update Client

BLOB Transfer Client

Distributor

Receives firmware update files from an Initiator and sends them to Target nodes for installation. Acts as an intermediary for the Initiator which means the Initiator does not need to be in range of the mesh network for the full duration of the distribution and update procedures.

Firmware Distribution Server

Firmware Update Client

BLOB Transfer Client

BLOB Transfer Server

Standalone Updater

A Stand-alone Updater fulfils the role of a combined Initiator and Distributor, acquiring firmware updates and sending them directly to Updating Nodes without the need for an intermediate Distributor.

Firmware Update Client

BLOB Transfer Client

 

4.20.3.2 固件更新过程[4]

4.20.3.2.1 获取固件更新

Mesh DFU 模型规范定义了HTTPS 固件检查程序。该程序由启动程序(或独立更新程序)调用,通常包括

  1. 从应用层接收目标节点列表
  2. 对于列表中的每个目标节点
    1. 检索当前安装的固件信息,如版本号和可获取更新的统一资源标识符 (URI)。
    2. 向 URI 发送 HTTP GET 请求,如果有固件更新,则在响应中下载固件描述文件

固件描述文件是一个 JSON 格式文件,它提供的信息包括固件更新被分割成的文件数和更新的总大小(以字节为单位)。

然后使用HTTPS 固件检索程序,通过 HTTPS 协议获取固件更新文件。启动程序可以这样做,也可以指示分发程序获取固件更新。

请注意,该规范还允许使用针对特定供应商的方法检查和检索固件更新。

4.20.3.2.2 发布固件更新

启动器使用固件分发客户端模型(由 BLOB 传输客户端模型支持)向分发器发送固件更新和目标节点详细信息。然后,分发者使用固件更新客户端模型和 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 规格

Bluetooth Mesh 是由一系列规范定义的。

  • Mesh 协议规范定义了Bluetooth Mesh 技术的架构、协议、程序、基础模型和其他核心概念。
  • Mesh 模型规范定义了附加模型,这些模型提供了基础模型所定义功能之外的功能。
  • 设备固件更新和 BLOB 传输功能都有专门的规范,其中定义了各自的模型。
  • 配置文件 规范集合定义了额外的要求和实施细节,进一步规范了特定类别的产品,从而提高了互操作性。

5.3Bluetooth Mesh 堆栈

图 7 显示了Bluetooth Mesh 的架构,包括其各层以及与Bluetooth 核心规范各部分的依赖关系。有两个堆栈。mesh 网络协议栈支持Bluetooth Mesh 网络中节点之间的通信。mesh 配置堆栈用于配置设备。

图 7

图 7 -Bluetooth Mesh 架构

在图 7 中,有一个标有Bluetooth 核心规范(LE 物理传输)的组件。这代表了Bluetooth LE 核心功能的集合,这些功能被Bluetooth Mesh 所利用。

Bluetooth LE 系统由控制器主机组成。它们通常是物理上独立的组件,以某种方式连接(如 UART),并使用一组称为主机控制器接口(HCI)的标准命令和事件进行通信。mesh 网络协议栈的各层都驻留在主机组件中。mesh 网络协议栈依赖于Bluetooth LE 协议栈中在控制器中运行的部分,如链路层和物理层。有关这些层和Bluetooth LE 基本架构的更多信息,请参阅 Bluetooth Low Energy Primer

现在,我们将回顾mesh 架构的每一层,从底层开始逐层深入。

5.4 承载层

Mesh 信息的传输需要底层通信系统。承载层定义了特定通信系统如何处理mesh PDU。用于一般信息传送的两个主要承载层被定义为广告承载层GATT 承载

广播承载利用Bluetooth LE 广播和扫描功能发送和接收mesh PDU。

GATT 承载允许不支持广告承载的设备使用称为代理协议的协议与mesh 网络的节点间接通信。代理协议封装在 GATT 操作中,涉及一个名为Mesh Proxy服务 的 GATT服务 ,其中包括两个名为Mesh Proxy Data In(代理数据输入)和Mesh Proxy Data Out(代理数据输出)的 GATT 特性。

代理节点实现Mesh 代理服务 及其特征。它同时支持 GATT 承载和广告承载,因此可以通过这两种承载转换和转发信息。

不支持代理功能的节点也可以支持 GATT 承载。

5.5 网络层

网络层定义了各种报文地址类型和网络报文格式,使承载层能够处理传输层 PDU。

它可以支持多个承载,每个承载可能有多个网络接口,包括本地接口,用于属于同一节点的元素之间的通信。

网络层决定通过哪个网络接口输出信息。输入过滤器适用于从承载层到达的报文,以确定是否应将其传送到网络层作进一步处理。输出报文则要经过输出过滤器,以控制是丢弃还是传送到承载层。

中继和代理功能可由网络层实现。

5.6 下层传输层

下层传输层从上层传输层获取 PDU,并将其发送到对等设备上的下层传输层。必要时,下层传输层会对 PDU 进行分段和重新组装。对于无法放入单个传输 PDU 的较长数据包,下层传输层将执行分段,将 PDU 分割成多个传输 PDU。另一台设备上的接收下层传输层会将这些分段重新组装成一个上层传输层 PDU,并将其向上传递。

5.7 上层传输层

上层传输层负责加密、解密和验证往来于接入层的应用数据。它还负责内部生成并在不同对等节点的上层传输层之间发送的传输控制信息。这些信息包括与友谊、定向转发和心跳有关的信息。

5.8 接入层

接入层负责定义模型如何使用上层传输层。这包括

  • 定义报文数据格式。
  • 定义和控制在上层传输层执行的加密和解密过程。
  • 验证从上层传输层接收的数据是否用于正确的网络和型号,然后再将数据向堆栈上层转发。

5.9 基础模型层

基础模型层负责实施与mesh 网络配置和管理有关的模型。

5.10 模型层

模型层涉及模型的实现,因此也涉及一个或多个模型规范中定义的行为、消息、状态和状态绑定的实现。

6.信息传递

本节探讨Bluetooth Mesh 网络中信息传递的运作方式,并将第 4 节中解释的一些关键概念汇集在一起。主要功能和概念

6.1 信息发布和传送

使用 Wi-Fi 的网络以一个称为接入点的中心网络节点为基础,所有网络通信都通过它进行。如果路由器无法使用,整个网络就无法使用。

相比之下,Bluetooth Mesh 直接向无线电范围内的节点发送信息,如果距离较远,则通过中继节点发送信息。当节点发布信息时,信息会被广播,而不是直接路由到特定节点。所有节点都会接收来自无线电直达范围内节点的所有信息。如果配置为这样做,节点将使用管理泛洪或定向转发,转发收到的信息。

6.2 多路径传输

使用广播通信和中继的一个重要结果是,信息可以通过网络的多条路径到达目的地。这使得Bluetooth Mesh 成为一种高度可靠的网络技术。

6.3 遍历堆栈

接收信息的第一步是Bluetooth LE 控制器的链路层接收数据包[5]。然后,其有效载荷被传递到主机中的Bluetooth Mesh 承载层,再从那里传递到mesh 网络层。

网络层会进行各种检查,以决定是将报文传递到堆栈的更高位置,还是将其丢弃。

此外,PDU 还有一个网络 ID 字段,它提供了一种快速确定信息使用哪个 NetKey 加密的方法。如果接收节点上的网络层无法识别网络 ID,则表明该节点不具备相应的 NetKey,也不是该子网的会员 ,因此 PDU 将被丢弃。还有一个网络信息完整性检查(MIC)字段。如果 MIC 检查失败,则丢弃报文。

发端节点范围内的所有节点都会接收到信息,但由于该节点所属网络或子网的原因,许多信息显然与该节点无关,因此很快就会被丢弃。

同样的原理也适用于上层传输层。不过,这里的检查是针对与报文关联的 AppKey 进行的,该 AppKey 由 PDU 中的应用标识符 (AID) 字段标识。如果该节点无法识别 AID,上层传输层就会丢弃 PDU。如果传输报文完整性检查 (TransMIC) 失败,报文将被丢弃。

上层传输层将信息传递给接入层。在那里,模型层会根据接收到的信息类型调用相应的模型函数。

6.4 中继

4.19 节 "报文中继 "介绍了中继的基本概念。定向转发方法比有管理的泛洪方法更复杂,本节将作进一步说明。

6.4.1 定向转发

6.4.1.1 与有管理泛洪的比较

当使用管理泛洪时,中继节点会重传它们收到的所有信息,但在有限的情况下除外,如 TTL 字段所指示的最大跳数已被占用。这是一种简单有效的机制,但在使用无线电频谱方面却不是最有效的。信息在整个网络中向所有方向传播,无论任何目标节点是否位于相对于中继节点的特定方向上。

图 8 和图 9 描述了一个配备Bluetooth Mesh 网络的大型会议厅,其中包括一个控制舞台灯光的开关。信息需要通过单跳转发才能到达所有的人。

开关范围内有两个中继节点。当使用舞台灯光开关时,一条信息被发送出去,由两个中继器接收并重新发送,这样信息就会在网络中向目标灯光和远离目标灯光的方向传播。 

图 8

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

图 9

图 9 - 两个中继器接收信息并都进行重传

这是次优方案。离舞台最远的中继节点无法将开关控制信息传递给舞台灯光。

定向转发与管理泛洪的不同之处在于,只有当中继节点的状态数据表明它位于一条通往信息所指向的一个或多个节点的路径上时,才会进行中继。可以使用定向转发的中继节点称为定向中继节点。

图 10 显示了会议厅灯光开关和中继节点使用定向转发的效果。灯光开关发出的开/关信息只向舞台上的灯光传播,而不会传播到网络的其他部分。

图 10

图 10 - 定向转发的效果

路径概念是定向转发的一个正式定义。

6.4.1.2 路径和通道

定向转发涉及定义或发现定向中继节点序列,这些节点能够将信息从给定的源地址传送到特定的目的地址。这种节点序列称为路径

在路径定义中,源地址始终是单播地址,但目的地址可以是任何类型,包括组地址。当一个目的地址对应多个节点时,将定向转发路径描述为一组定向中继节点序列更为准确。

定向中继节点上有一个称为转发表的状态数据项,表示中继可以服务 的路径。它由源地址和目的地址对列表组成。定向中继节点在接收到信息时会查询转发表,如果转发表中有包含信息源地址和目的地址的条目,则转发该信息。否则,信息将被丢弃。

可能存在不止一个定向中继节点序列,信息可以通过这些节点中继到达特定的目标节点。这可以通过创建多通道路径来加以利用。通道是定向中继节点的序列,在这方面与路径相同。不过,当从一个源节点向一个目标节点传送信息时,有多个节点序列可供选择时,术语 "通道"用于表示序列,而 "路径"则用于表示所有通道的集合。多通道路径的好处是提供了更大的冗余度,即使其中一个定向中继节点序列由于某种原因无法使用而中断,信息也更有可能被传送。 

6.4.1.3 创建和维护路径

路径要么是使用配置管理器工具手动创建的,要么是通过执行一系列自动程序动态发现和建立的。

在使用自动路径创建时,该过程需要经过多个阶段。对于需要路径的源地址和目的地地址对,会使用特殊信息来探索网络,目的是找到能将信息从源地址传送到目的地的中继节点序列。在这一过程中,会建立一种称为路径度量的测量方法,以便对备选序列进行比较,并选出最佳序列供使用。路径度量只是计算通过给定的中继序列从信源节点到达目的地所需的跳数。跳数越少的路径比跳数越多的路径越好。

当发现可作为源地址/目的地址对路径的最短节点序列时,该序列中的节点将使用控制报文进行更新,以便其转发表显示它们是该路径的一部分。

7.安全

7.1Bluetooth Mesh 的安全性是强制性的

Bluetooth LE 允许配置文件 设计人员利用一系列不同的安全机制。 这包括两个设备配对的各种方式、广告数据包中私人设备地址的使用以及附加到 GATT 特性的安全规则。但是,安全机制完全是可选的,完全开放、没有任何安全保护或限制的设备也是允许的。在Bluetooth SIG 规范不适用的情况下(例如处理定制的配置文件 或服务 ),设备设计者或制造商负责分析威胁和确定安全要求,并决定如何使用Bluetooth LE 的安全特性来满足这些要求。

相比之下,在Bluetooth Mesh 中,安全是强制性的。网络、设备和单个应用程序都是安全的,不能关闭或降低安全性。

7.2 安全基础

以下基本安全声明适用于所有Bluetooth Mesh 网络:

  1. 所有mesh 信息都经过加密和验证。
  2. 网络安全、应用程序安全和设备安全分别独立处理。见下文7.3 关注点和安全密钥的分离
  3. 在mesh 网络运行期间,可使用密钥刷新程序 节点供应协议接口程序更改安全密钥。
  4. 信息混淆提供了一种隐私机制,使节点难以被追踪。
  5. Mesh 专用信标可确保节点不会广播可用于设备跟踪的静态信息。
  6. Mesh 安全保护网络免受重放攻击。
  7. 将设备添加到mesh 网络成为节点的配置过程是一个安全的过程,包括对 X.509 数字证书的支持。
  8. 节点可以安全地从网络中删除,从而防止垃圾桶攻击[6]

7.3 分离关注点和安全密钥

Bluetooth Mesh 安全性的核心是三种类型的安全密钥。这些密钥为网络的不同方面提供安全保障。在Bluetooth Mesh 安全性设计中使用不同类型的安全密钥,是一项重要原则(即 "关注点分离")实例。

要理解这一点并领会其意义,请考虑一个可以充当中继节点的mesh 灯。作为中继节点,它可能会处理与大楼Bluetooth Mesh 门窗安全系统有关的信息。灯具没有正当理由访问和处理这些信息中的数据,但它确实需要将这些信息转发给其他节点。

为了处理这种潜在的利益冲突,Bluetooth Mesh 使用不同的安全密钥来提供网络层的安全,而不是用于确保与照明、物理安全、供暖等特定应用有关的数据的安全。

mesh 网络中的所有节点至少拥有一个网络密钥(NetKey)。正是拥有了这个共享密钥,节点才能成为会员 。网络加密密钥和隐私密钥直接来自 NetKey。

拥有 NetKey 后,节点就可以解密和验证网络层,从而执行中继等网络功能。它不允许对应用数据进行解密。

只有拥有正确应用密钥(AppKey)的节点才能解密特定应用的应用数据。mesh 网络中的所有节点都可能拥有许多不同的 AppKey,但通常每个 AppKey 只由一小部分节点拥有,即那些可以参与特定应用的节点。例如,电灯和电灯开关会拥有照明应用的 AppKey,但不会拥有供热系统的 AppKey,只有恒温器、暖气片上的阀门等才会拥有供热系统的 AppKey。

上层传输层使用 AppKeys 对信息进行解密和验证,然后再将其传递到访问层。

AppKeys 只与一个 NetKey 关联。这种关联被称为密钥绑定,意味着拥有特定 AppKey特定应用程序只能在一个特定网络上运行,而一个网络可以容纳多个独立安全的应用程序。

最后一种密钥类型是设备密钥(DevKey)。这是一种特殊的应用密钥。每个节点都有一个唯一的 DevKey,只有 启动配置设备知道,其他设备都不知道。DevKey 用于确保配置过程中的通信安全。

图 11

图 11 - 安全密钥在Bluetooth Mesh

7.4 子网和子网桥接

网络可细分为若干子网。每个子网都有自己的 NetKey,只有属于该子网的节点才能拥有。例如,这可用于隔离和保护不同的物理区域,如酒店的每个客房。在这种情况下,这将确保特定客房内的灯光等设备只能由同一客房内同一子网的其他设备控制。

在某些情况下,不同子网中的设备之间需要进行通信。酒店管理人员可能需要能够集中控制酒店所有房间的所有设备,但与此同时,一个客人房间的设备不能用来控制另一个客人房间的设备,一个房间设备的传输不能被另一个房间的设备截获和解密,这些都是非常必要的。Bluetooth Mesh 有一个称为子网桥接的功能,可以实现这一点。

子网桥接功能允许网络规划人员使用子网进行区域隔离,但也可以有选择性地允许不同的相邻子网中的特定设备之间进行通信,而不会影响安全性。这需要设置一个或多个节点作为子网桥。这些节点拥有要桥接的每个子网的 NetKey 以及一个称为网桥配置服务器模型及其各种状态。

子网桥接通过一个名为 "子网桥接"的状态启用。另一个状态称为桥接表,其中包含可在特定源地址和特定目标地址之间进行通信的条目。此外,桥接表条目还显示第一个子网的 NetKey 和第二个子网的 NetKey。

通过桥接表状态中的信息,一个子网的报文在使用第一个 NetKey 加密后,可由作为子网桥接器的节点解密,并使用第二个子网的 NetKey 重新加密,而且该操作仅限于使用指定源地址和目的地址的报文。

7.5 节点移除、密钥刷新和垃圾桶攻击

节点包含各种mesh 安全密钥。如果节点出现故障需要处理,或者所有者决定将节点出售给其他所有者,那么重要的是,该设备及其所含密钥不能被用来对节点所在的网络发动攻击。

定义了从网络中删除节点的程序。使用发起配置设备的应用程序将节点添加到拒绝列表中,然后启动一个名为 "密钥刷新"的程序。

密钥刷新程序会导致网络中的所有节点(拒绝列表中的节点除外)都获得新的网络密钥、应用程序密钥和所有相关的衍生数据。换句话说,构成网络和应用程序安全基础的整套安全密钥都会被替换。

因此,被从网络中删除的节点(包含一个旧的 NetKey 和一组旧的 AppKeys)不再是会员 ,也不会构成威胁。

7.6 重放攻击

重放攻击是一种技术,窃听者截获并捕捉一条或多条信息,然后再重新传输,目的是诱使收件人执行攻击设备无权执行的操作。

7.6.1 IV 索引和序列号

Bluetooth Mesh 具有防止重放攻击的功能。这种保护的基础是使用两个数据项,即序列号(SEQ)和 IV 索引。元素每次发布信息时都会递增 SEQ 值。如果节点从某个元素接收到的信息中包含的 SEQ 值小于或等于上次有效信息中的 SEQ 值,那么该节点就会丢弃该信息,因为这很可能与重放攻击有关。

IV 索引是一种网络共享资源,在接收报文时与 SEQ 和源地址值一起进行检查。对于元素发送的每个mesh 报文,SEQ、IV 索引和 SRC(源地址)字段的组合值总是唯一的。

网络每次使用一个 IV 指数值,除非正在进行IV 更新程序,在此期间使用两个不同的值,直到程序完成并为整个网络分配了一个新值。

7.6.2 IV 更新程序

序列号长度为 24 比特。通过重复递增 SEQ 字段,节点最终可能会耗尽其序列号值。为避免出现这种情况,发现自己处于这种情况的节点可以启动一个名为 IV 更新的网络程序。这将通过递增旧值计算出一个新的 IV 索引值,并将其分配给整个网络,受影响节点中的元素将其序列号重置为零。

出于安全原因,只允许主子网成员节点启动 IV 更新程序。仅属于非主子网成员的访客设备不能启动 IV 更新。这为这一重要的共享网络资源提供了保护。

7.7 隐私

从 NetKey 导出的隐私密钥用于混淆网络 PDU 头值,如源地址。混淆可确保无法利用随意、被动的窃听来跟踪设备和使用设备的人。它还能使基于流量分析的攻击变得困难。

Bluetooth Mesh 程序(包括密钥刷新程序和 IV 更新程序)使用信标向网络中的其他设备广播数据,以显示它们的存在和状态。信标是一种利用Bluetooth 广告的技术。

静态、不变信息的传输可能构成安全风险,因为当设备在网络中移动时,有可能被跟踪,并推断出设备、设备用户以及整个网络的信息。为解决这一风险,Bluetooth Mesh 包括一种称为Mesh 专用信标的功能。

Mesh 专用信标传输不包含静态信息。通过使用信标信息中包含的数据,消除了设备被跟踪的可能性,从而提高了网络的私密性。

8.可扩展性

Bluetooth Mesh 事实证明,网络是可以扩展的。在现实世界中,有多达六千个节点的商业部署。

Bluetooth Mesh 网络中可寻址网元的理论最大数量为 32,767 个。这是因为用于标识网元的单播地址长度为 15 位。也就是说,以网络可容纳的节点数量来考虑可扩展性并不是一个特别有用的方法。从网络可支持的工作量的角度来考虑,或者换一种说法,从网络可容纳的网络操作量和速度的角度来考虑,才是更合适的。

可扩展性和其他性能指标是网络规划器(参见10.1 规划器)在设计网络时要考虑的问题。节点的位置和配置会对网络的性能以及将来扩展到所需最大节点数的难易程度产生重大影响。

无线网络的可扩展性往往受到多种因素的限制,包括共享无线电频谱的使用效率。当两个设备同时在同一无线电信道上传输信息时,就会发生碰撞,这可能成为网络可扩展性的一个限制因素。因此,避免或减少碰撞造成的信息丢失概率是Bluetooth Mesh 设计和网络规划人员设计工作的关键策略。

并非所有网络都一样。如果小型网络中的节点物理上靠近,并且节点频繁传输信息,那么节点相对较少的小型网络可能比大型网络更难扩展。换句话说,网络密度和节点冗余度等概念非常重要。这不仅与网络中节点的绝对数量有关。

Bluetooth Mesh 在设计之初就考虑到了可扩展性。PDU 很小(最多 29 个八进制字节),这就减少了传输所使用的通话时间,从而降低了发生碰撞的概率。

通常,信息副本在三个不同的信道上传输。这不仅增加了网络容量,还降低了因碰撞而丢失信息的概率。

无论有无定向转发功能的复杂性,中继过程都能为信息建立多条路径,从而提高信息传递的概率,尤其是在繁忙的网络中。

未确认的报文可减少网络流量,尤其是在组播场景中,即一台设备试图在一次操作中控制一组其他设备,这在Bluetooth Mesh 网络中是一种非常典型的情况。

分散式设计理念是Bluetooth Mesh 工作方式的重要基础。这支持更高水平的可扩展性,并使其有别于其他同类技术。例如,传感器可直接与灯具通信,无需中间照明控制器。

Bluetooth SIG 网站上有一篇文章,对Bluetooth Mesh 网络中的可扩展性问题进行了更深入的探讨。

9.Bluetooth 联网照明控制(NLC)

Bluetooth Mesh 的主要应用之一是控制大型建筑中的联网照明设备。

灯具(有时更正式地称为灯具)可以很复杂,有多个可独立控制的灯泡,支持亮度和颜色控制,既可通过人工操作开关进行手动控制,也可通过远程无线传感器提供的环境测量结果进行控制。

Bluetooth Mesh 模型规范定义了标准化的功能模块,灯具等设备通过实现这些功能模块可获得网络中的某些功能,如开关功能。模型的模块化特性有助于创造创新的多功能产品。单个模型通常非常复杂,有许多参数可用于控制其状态和行为。这进一步增加了Bluetooth Mesh 作为网络照明控制技术的灵活性和多功能性。

Bluetooth Mesh 的许多重要方面都是可选的。这包括支持的承载列表、设备配置方式、支持的节点功能(如代理、中继、LPN 和朋友)等。Bluetooth Mesh 规范的不同部分之间往往存在依赖关系。

Bluetooth Mesh 技术的灵活性非常有益。但这必须与通过标准化实现不同制造商产品之间互操作性的目标相平衡。技术的可配置性和可变性越高,有时就越难保证互操作性。因此,一系列Bluetooth Mesh NLC 设备配置文件 规范为各类设备定义了标准配置和其他应用层要求和建议。遵守相关配置文件将使产品能够与其他采用相同配置文件 的产品实现互操作。

NLC配置文件 规定了以下产品类型的规格。

  • 环境光传感器 NLC配置文件
  • 基本亮度控制器 NLC配置文件
  • 基本场景选择器 NLC配置文件
  • 调光控制 NLC配置文件
  • 能源监测器 NLC配置文件
  • 占用传感器 NLC配置文件

Bluetooth Mesh 定义了从物理层一直到应用层的所有设备层,是首个无线照明控制的全栈标准。

10.Bluetooth Mesh 利益攸关方

了解主要利益相关者及其作用有助于了解Bluetooth Mesh 网络是如何规划、创建、维护和管理的。本节确定并解释了一些标准角色。

10.1 规划人员

规划人员有一系列广泛的职责,都与定义要创建的网络有关。不妨将这些职责分为三个子类别:

  • 物理规划
  • 功能规划
  • 网络规划

所有子类别可能由同一人负责,也可能由专家分工负责。

物理规划涉及确定建筑物内设备的物理位置。建筑师、室内设计师或工业设计师通常负责物理规划。

功能规划涉及定义设备的功能特性及其与网络中其他设备的功能关系。功能规划可能会影响物理规划。

网络规划主要是确定所需的设备配置,以实现所需的功能和可靠性。正是这一角色决定了哪些设备被配置为友邻节点、低功耗节点、中继节点或代理节点等。网络规划人员会影响物理规划。

10.2 安装程序

安装人员在建筑物中实际安装设备。这通常需要钻孔、爬梯、使用螺丝刀和连接电源。

10.3 专员

在安装人员根据规划人员的设计实际安装设备后,该角色将通过配置设备使其成为Bluetooth Mesh 新网络的一部分。配置完成后,专员将对每个新节点进行配置,使其具备功能和网络规划工作所规定的功能和配置。通常情况下,供应和配置是同时进行的,并使用相同的工具(通常是智能手机应用程序)。

10.4 楼宇维护职责

楼宇维护角色是另一个宽泛的角色,涉及规划者、安装者和调试者角色的各个方面,但其职责是维护楼宇中的现有网络,而不是创建一个新网络。楼宇维护角色的任务包括更换设备(需要安装、调配和配置)、诊断和解决问题,以及安全处置不再需要的设备。

10.5 大楼业主

楼宇业主是楼宇的所有者,他们关心的是网络能否按要求运行、是否安全以及能否实现预期的投资回报率(ROI)。

11.结论

本文应已向读者介绍了Bluetooth Mesh 、其主要功能、概念和术语。它是Bluetooth ,但与我们所知的不同。它是一种Bluetooth 技术,支持设备使用新拓扑结构进行通信的新方式。

最重要的是,Bluetooth 使这种最普遍的低功耗无线技术成为全新使用案例和行业领域的完美选择。

12.额外资源

本节列出了从不同角度学习Bluetooth LE 的其他资源。

Resource Description Location

Bluetooth Mesh Protocol Specification

This specification defines the Bluetooth Mesh architecture and its protocols and procedures.

https://www.bluetooth.com/specifications/specs/mesh-protocol/

Mesh Models

Defines the full set of standard Bluetooth Mesh models.

https://www.bluetooth.com/specifications/specs/mesh-model-1-1/

Bluetooth Core Specification

Defines all layers of the Bluetooth stack and associated protocols and procedures. Covers both Bluetooth LE and Bluetooth BR/EDR.

https://www.bluetooth.com/specifications/specs/

Profile and service specifications

A service specification defines a single GATT service along with the characteristics and descriptors that it contains. The behaviors to be exhibited by the GATT server device hosting the service in response to various conditions and state data values are defined in the service specification.

 

Profile specifications define the roles that related devices assume and in particular, define the behavior of the client device and the data on the connected server that it should work with.

https://www.bluetooth.com/specifications/specs/

The Bluetooth Low Energy Primer

The Bluetooth Low Energy (LE) Primer explains every layer of the Bluetooth LE stack, starting with the physical layer at the bottom and ending with the generic access profile at the top. Topics related to the layered architecture of the stack, such as security, are covered too. This is the place to start if you’re new to Bluetooth LE and want to learn about the technology from a technical perspective.

https://www.bluetooth.com/bluetooth-resources/the-bluetooth-low-energy-primer/

Bluetooth Mesh 1.1 – Feature Summary

Version 1.1 of the Bluetooth Mesh protocol specification introduced several substantial new features. This paper summarizes the changes at a high level and provides links to papers that provide greater detail on each of the new features.

https://www.bluetooth.com/mesh-feature-enhancements-summary/

Study Guide – An Introduction to Bluetooth Low Energy Development

An educational resource for developers wishing to learn about software development for connection-oriented scenarios involving smartphones and peripheral devices. Includes a series of hands-on projects with solutions.

https://www.bluetooth.com/bluetooth-resources/bluetooth-le-developer-starter-kit/

Study Guide – An Introduction to Bluetooth Mesh Software Development

An educational resource for developers wishing to learn about Bluetooth Mesh and about the implementation of mesh models in microcontrollers. Includes a series of hands-on projects with solutions.

https://www.bluetooth.com/bluetooth-resources/bluetooth-mesh-developer-study-guide/

Study Guide – An Introduction to the Bluetooth Mesh Proxy Function

An educational resource for developers wishing to learn how to create GUI applications for devices such as smartphones which allow interaction with nodes in a Bluetooth Mesh network. Includes a series of hands-on projects with solutions.

https://www.bluetooth.com/bluetooth-resources/bluetooth-mesh-proxy-kit/

Paper – Bluetooth Mesh Networking – An Introduction for Developers

An educational resource for anyone interested in learning about the key concepts and capabilities of Bluetooth Mesh.

https://www.bluetooth.com/bluetooth-resources/bluetooth-mesh-networking-an-introduction-for-developers/

Paper – Bluetooth Mesh Models – A Technical Overview

An educational resource for anyone interested in better understanding the standard models available for use in Bluetooth Mesh products.

https://www.bluetooth.com/bluetooth-resources/bluetooth-mesh-models/

Study Guide – Understanding  Bluetooth LE Security

An educational resource which explains and illustrates all aspects of security in Bluetooth LE (excluding Bluetooth Mesh). Suitable for both complete beginners to the subject of security and those with prior experience. Includes a series of hands-on projects with solutions.

https://www.bluetooth.com/bluetooth-resources/le-security-study-guide/

Paper – Bluetooth Security and Privacy Best Practices Guide

A guide which is intended to help implementers better understand why certain available security and privacy choices are better or worse than others for specific applications, and what risks and pitfalls remain in the specifications.

https://www.bluetooth.com/bluetooth-resources/bluetooth-security-and-privacy-best-practices-guide/

Article – Scalability in Bluetooth Mesh networks

A blog post which examines the question of scalability, offers a definition and explores the factors that govern the issue in larger networks.

https://www.bluetooth.com/blog/mesh-in-large-scale-networks/

[1]在讨论无线电传输速率时,使用每秒符号 比特更为常见。不过,在Bluetooth 中,数字比特和模拟符号之间存在 1:1 的对应关系。

[2]第 5 节介绍了Bluetooth 规范。系统架构。

[3] Bluetooth LE Primer是作为一般 LE入门的推荐读物

[4]在本节中,可以用独立更新程序角色代替启动程序或分发程序。

[5]见 6.3Bluetooth Mesh 堆栈

[6]垃圾桶攻击涉及回收被丢弃的设备,以及回收和恶意使用其中包含的安全密钥

获得帮助