目录
栏目
课题
- 访问层
- 访问信息
- 确认信息
- 地址
- 广告商
- 申请
- 认证
- 应用钥匙
- AppKey
- 信标
- 承担者
- 承载层
- 特征
- 客户
- 组成数据
- 配置模型
- 配置客户端
- 配置服务器
- 控制信息
- 控制模型
- 目的地
- 装置
- 设备钥匙
- 发展键
- DST
- 元素
- 特征
- 淹没
- 基础模型层
- 好友节点
- 求友
- 交情
- 关贸总协定承载国
- 心动
- 幂幂
- 输入滤波器
- 请柬
- 四、索引
- 四、最新情况
- 键绑定
- 关键指数
- 刷新键
- 极限
- 低功率节点(LPN)
- 下层传输层
- 治涝
- MD
- mesh 烽火
- mesh 网络
- mesh 供应 服务
- mesh 代理 服务
- mesh 时权
- mesh 时权
- mesh 当事人
- mesh 时间继电器
- 讯息
- 模型
- 模型层
- 更多数据
- 邻居
- 网络
- 网络ID
- 网络接口
- 网络钥匙
- 网络信息缓存
- 净键
- 网络层
- 节点
- 节点身份
- 蹊跷
- 输出滤波器
- 财产
- 供应者
- 供应
- 代理客户端
- 代理配置信息
- 代理功能
- 代理过滤器
- 代理节点
- 代理协议
- 代理服务器
- 已发布
- 发布/订阅
- 公布地址
- 中继功能
- 中继节点
- 路由
- 景象
- 场景寄存器
- 安全网络信标
- 安全钥匙
- 序号
- 服务器
- SIG 模型
- 源头
- 状况
- 国债
- 状态转换
- 子网
- 订阅
- 订阅名单
- TAI
- TAI-UTC Delta
- 时权
- 时态
- 过渡时间
- 垃圾桶攻击
- TTL
- 暗语
- 上层传输层
- 世界协调时
- 供应商模式
基本概念和术语
Mesh 网络
术语"mesh 网络"指的是一种无线网络拓扑结构,其中每个网络节点通过向范围内的其他节点中继数据,参与整个网络的数据分配。有两种主要的技术用于在mesh 网络上中继数据,即路由和泛洪。Bluetooth mesh 网络使用一个专门的和高度优化的泛洪版本,称为管理泛洪。
路由
Mesh 使用路由技术的网络,沿选定的路径发送数据,通过特定的节点到达目的地。被称为路由器的专用设备负责确定数据必须遵循的路径。这种对路由器的依赖可能会导致单点故障和网络不稳定或不可靠。
淹水
Mesh 使用泛洪技术的网络,广播数据,使其被直接范围内的所有节点接收。反过来,它们又通过再次广播将收到的数据转发出去,使另一组在范围内的节点都能收到。只有收到数据的节点才会对数据采取行动。
淹没是指信息要经过多条路径才能到达目的地。不依赖路由器,因此,网络包含单点故障的风险大大降低。这使得使用泛洪的mesh 网络具有高度可靠性。
管理式水浸
Bluetooth mesh 联网利用泛洪方法的优势,优化其运行,使其既可靠又高效。Bluetooth mesh 联网设计的一些特点,有助于提高管理洪水的效率。
心跳--心跳消息由节点定期传送。心跳消息向网络中的其他节点表明,发送心跳消息的节点仍在活动。此外,心跳消息包含的数据可以让接收节点确定发送者离它有多远,以到达它所需的跳数来表示。这种知识可以通过TTL字段来利用。
TTL - TTL是所有Bluetooth mesh PDU都包含的一个字段。它控制消息中继的最大跳数。设置TTL可以让节点对中继进行控制,并通过确保消息不会被中继到比需要更远的地方来节约能源。心跳消息允许节点确定每条消息发布的最佳TTL值应该是多少。
消息缓存--网络消息缓存必须由所有节点实现。缓存中包含了所有最近看到的消息,如果发现缓存中存在消息,说明该节点之前已经看到并处理过该消息,则会立即丢弃。
友谊 - Bluetooth mesh 网络中最重要的优化机制可能是由朋友节点和低功率节点的组合提供的。友好节点为相关的低功耗节点提供了一个信息"存储和转发"服务 的功能。这使得低功耗节点能够以一种节能的方式运行,并且只有在要求相关的朋友节点提供其存储的任何消息后,才将其无线电打开,进入"接收模式"。其余时间,低功率节点的无线电只有在需要传输数据时才会被打开。
子网--子网是一种允许Bluetooth mesh 网络被分割的机制。这主要是出于安全的目的,但它也有一个好处,即使用子网发送的消息不会被中继到子网之外。这可以节约能源。
设备
设备是指能够被配置,从而成为节点和会员 网络的Bluetooth 设备。
节点
节点是指已被配置的Bluetooth 设备,因此,它是一个网络会员 的一部分。一个节点可能属于一个以上的不同网络。
网络
子网
网络可包含一个或多个子网。子网的目的是让不同的区域安全隔离,例如,酒店的各个房间。一个节点凭借拥有子网的网络密钥而成为子网的一员会员 。一个节点可以通过拥有一个或多个子网的网络密钥而属于一个或多个子网。
要素
一般要素
元素是设备中的一个可寻址实体。这意味着它是一个设备的某些部分,它至少有一个独立的状态值,代表着元素的某些条件。所有节点必须至少有一个元素。有些节点会有多个Element。例如,一个包含多个开关的复合灯开关可能是一个拥有多个元素的节点。
主要内容
地址
Bluetooth mesh 使用不同地址类型的系统来识别单个元素或元素集。
单播地址
单播地址标识一个节点的单个特定元素。提供者管理单播地址的分配,并确保网络内没有重复的地址分配。
集团地址
组地址是代表一个或多个元素的多播地址。分组地址可以通过定义Bluetooth SIG ,称为SIG 固定分组地址,也可以通过动态分配。最多允许256SIG 个固定组地址,在撰写本文时,只有4个被定义。这些地址被命名为所有代理、所有朋友、所有中继和所有节点。
一个mesh 网络中最多可以有16383个组地址。
虚拟地址
虚拟地址是一个可分配给一个或多个元素的地址,跨越一个或多个节点。它采用128位UUID值的形式,任何元素都可以与之相关联,它很像一个标签。
mesh 网络中的虚拟地址可能多达70万亿个。
未指定地址
这是一种特殊的地址类型,其值为0x0000。它的使用表明,一个元素尚未配置,也没有为其分配单播地址。
发布地址
用于发布消息的目标地址称为发布地址。发布地址可以是单播地址、预配置的组地址或虚拟地址。
目的地(DST)
资料来源
TTL
TTL代表Time To Live,是网络PDU中mesh 的一个字段。其目的是控制收到的消息是否应该被中继,并限制消息最终在网络中继的总跳数。值为0表示消息没有被中继,不应该被中继。这意味着节点可以向直接在无线电范围内的其他节点(邻居)发送消息,并表示接收节点不应转发该消息。如果一个消息的TTL值为2或更多,那么每次中继时,TTL值都会减少。值为1则表示该消息可能已经至少中继了一次,但不应该再中继。
邻居
在直接的无线电范围内(即一跳的距离)的Node,称为Neighbors。
特征
功能定义了节点的一些最基本的功能。所有节点都有发送和接收mesh 消息的能力。节点还可以选择支持一个或多个附加功能,目前定义了以下功能。请注意,一个功能可以在特定设备上启用或禁用。
中继功能
通过广告承载接收和重传mesh 信息的能力,以实现更大的网络。支持中继功能并启用中继功能的节点称为中继节点。
代理功能
在GATT和广告承载者之间接收和重传mesh 信息的能力。支持代理功能并启用代理功能的节点称为代理节点。
低功率特性
当与支持朋友功能的节点一起工作时,能够在mesh 网络中以显著降低的接收器占空比运行。支持低功耗功能并启用了低功耗功能的节点被称为低功耗节点(LPN)。
朋友功能
帮助支持低功耗功能的节点高效运行的能力,通过存储指定给该节点的消息,并仅在低功耗节点轮询朋友节点时才传送这些消息。支持朋友功能并启用了朋友功能的节点称为朋友节点。Friend和Low Power Node之间的关系称为Friendship。
型号
一个模型定义了一组状态、状态转换、状态绑定、消息和其他相关行为。节点中的一个元素必须支持一个或多个模型,正是这些模型定义了元素的功能。有许多模型被定义为"Bluetooth SIG 通用"模型,其中许多模型被刻意定位为"通用"模型,在广泛的设备类型中具有潜在的效用。
Bluetooth mesh 网络中的所有通信都是通过消息来完成的,消息被定义为模型规范的一部分。
模式有两种,服务器和客户端。
一个模型可以扩展另一个模型。不扩展其他模型的模型称为"根模型"。不允许通过添加或删除行为来改变一个模型。对新要求的正确反应是扩展现有模型。
理解Model的概念最好是通过考虑一个例子。
最简单的通用模型是通用OnOff服务器模型。它定义了一个单一的状态,称为Generic OnOff,它的值可以是0x00代表Off,也可以是0x01代表On。该模型定义了四种类型的Message。这四种Message是:
- 通用的开/关获取
- 通用的On-Off设置
- 通用的On-Off设置为Unacknowledged
- 通用的开/关状态
当支持Generic OnOff Server Model的元素接收到Generic OnOff Get消息时,该元素会回复一个Generic OnOff Status消息,报告Generic OnOff状态的当前值。
当一个支持Generic OnOff Server Model的元素接收到Generic OnOff Set消息时,会导致Generic OnOff状态的值被改变,预计该元素所在的物理设备会以某种预期的方式反映这种状态值的变化(例如灯的开启或关闭)。Generic OnOff Set被称为Acknowledged Message,这意味着它需要元素的响应。在Generic OnOff Set的情况下,预期的响应是一个Generic OnOff状态消息。
通用关机设置未确认消息与通用关机设置消息的语义相同,只是不要求元素用状态消息响应。
通用关机状态信息可由一个元素发送,以报告其关机状态。它是一个未确认的消息,不需要收到它的元素的响应。
被定义的模型Bluetooth SIG 被称为SIG 模型。供应商也可以定义自己的模型,这些被称为供应商模型。
配置模型
有许多方式可以配置mesh 网络设备,这由"配置服务器模型"定义的"状态"来表示。例如,"安全网络信标"状态表示该节点是否作为安全网络信标进行广播,"朋友"状态表示是否支持"朋友功能",而"AppKey 列表"则包含此节点所关联的应用程序的应用密钥列表。配置服务器模型允许通过配置客户端模型来配置这种状态值。
组成数据
组成数据是属于"配置服务器模型"的一个状态值,并且始终存在于所有初级元素中。它包含有关节点、它所包含的元素以及它所支持的模型和功能的信息。它是一种复合状态,由一页或多页信息组成。
应用
Mesh 应用程序使用mesh 网络和一个或多个客户端、服务器和/或控制器模型的组合来提供用户级功能,通常涉及相关类型的设备。因此,例如,一个mesh 照明应用可能涉及到控制简单的灯的通用OnOff服务器模型和通用OnOff客户端模型,再加上控制可调光灯的通用电平服务器模型和通用电平客户端模型。
国家
状态表示元素的某些方面的条件以及一些相关的行为。例如,一个简单的灯泡节点只包含一个初级元素,可能支持通用的OnOff模型,其中包括通用的OnOff状态。该状态定义了一个0x00的值,表示灯泡当前处于关闭状态,0x01表示灯泡处于开启状态。
状态可以是多维的。例如,Light HSL状态将Hue、Lightness和Saturation状态值组合成一个单一状态。
特性
特性是一种数据类型,它代表了服务器所暴露的特定类型的属性数据。Bluetooth 特性与Bluetooth 低能关贸总协定相关,Bluetooth mesh 也与低能关贸总协定相关。特性定义了一种类型、数据格式(如uint8)、特性实例值的单位(如摄氏度),有时还定义了对该类型有效的有效值范围或列举。
特性没有相关的上下文,也没有定义的行为。
财产
一个属性提供了解释一个特性的具体实例的上下文。
例如,Temperature 8 Characteristic,是一个表示温度测量的类型,格式为uint8,使用0.5摄氏度的单位。此特性定义了几个属性,因此允许在不同的情况下对其进行解释。Present Indoor Ambient Temperature属性表示温度8特性应该被解释为是在室内进行的测量,而Present Outdoor Ambient Temperature属性则与在室外进行的测量有关,Present Ambient Temperature属性并没有具体说明地点的类型,这要从其他、地点属性中推导出来。
特性值被认为是标量值或非标量值。无论是哪种情况,属性的原始值都必须根据某些规则进行解释。非标量值只是根据其定义中相关特性的格式字段进行解释。标量值的解释是通过对每个特性的字段应用一个方程,涉及一系列参数,这些参数是为每个特性的字段单独定义的。使用的等式是:
R = C * M * 10d * 2b
其中:
- R = 代表值
- C = 原值
- M=乘数
- d = 小数指数
- b = 二进制指数
mesh 操作中涉及的状态是由mesh 消息的操作码推断出来的,而属性相关的消息中,如通用用户属性获取消息中,属性ID是显式引用的。
状态转换
从一个状态到另一个状态的变化称为状态转换。各种各样的事情都可以触发状态转换。一个"设置消息"到达一个元素并被处理可能会引起一个状态转换。实现可能会触发状态转换,作为异步操作的结果,例如,由本地定时器触发的操作。用户与设备的物理交互,如按下按钮,也可能引起状态转换。
状态转换可能瞬间发生,也可能需要一段时间才能完成。一个状态从一个状态值转换到另一个目标状态值所需的时间称为转换时间。
有些消息允许指定过渡延迟,表示在状态转换开始前必须经过一段时间。
国家约束力
模型可定义一个状态与另一个状态之间的关系,据此,对第一个状态的变化将引起另一个状态的定义变化。这两个状态之间的关系以及一个状态可能引发另一个状态的变化的定义称为状态绑定。状态绑定可能存在于同一模型或不同模型中的状态之间。一个国家可以绑定到多个其他国家。
时间状态
时间状态表示当前TAI时间、TAI-UTC Delta和当地时区偏移的时间。它在场景的执行中起着关键作用。
时间权限
时间权限是时间状态中的一个位字段。当设置为1时,表示该元素可以访问可靠的时间源。可靠的时间源可以是外部源,如 GPS 或 NTP,也可以是元素或其父节点的实时时钟。
Mesh 时间权限
节点在传播时间的过程中可以扮演不同的角色mesh ,节点扮演的特定角色由时间角色状态表示。扮演Mesh 时间权威角色的节点,发布时间状态消息,但不处理收到的时间状态消息。
Mesh 时间 客户
节点在传播时间的过程中可以扮演各种不同的角色mesh ,节点所扮演的特定角色由时间角色状态表示。扮演Mesh 时间客户端角色的节点,会处理收到的时间状态消息,但不会发布这些消息。
Mesh 时间继电器
节点在传播时间的过程中可以扮演不同的角色mesh ,节点扮演的特定角色由时间角色状态表示。扮演Mesh 时间中继角色的节点,既可以发布时间状态消息,也可以处理收到的时间状态消息。
TAI
国际原子时,是Bluetooth mesh 时间所依据的时间标准。
TAI-UTC Delta
世界协调时
协调世界时间,是调节时钟的常用标准。
留言内容
mesh 网络中节点之间的通信是通过发送消息来完成的。消息与模型相关联,并在状态上运行。有些消息需要响应,被称为确认消息。其他消息不需要响应,称为未确认消息。常见的消息类型包括请求特定元素中给定状态的当前值的消息,请求改变特定元素中给定状态的值的消息,以及报告状态当前值的消息,这些消息可能是对另一节点通过确认消息请求状态值的回应。
访问信息
访问消息是一类mesh 消息,从模型发送到访问层,或由模型从访问层接收。访问消息涉及报告或设置状态。
控制信息
控制信息是一种与mesh 网络操作有关的mesh 信息类型,例如心跳信息和朋友请求信息。例如心跳消息和朋友请求消息。控制信息在mesh 协议栈的上层传输和下层传输中处理。
已确认的信息
已确认的消息是一类mesh 访问消息,必须始终予以回复。响应通常是状态消息。如果没有收到对已确认消息的响应,发送者必须重新发送或取消消息。重要的是,为了避免在接收元素处无意中造成多个状态转换的可能性,在需要重传的情况下,与已确认消息相关的操作必须是幂等的。
暗语
未确认的消息是mesh 访问消息中不需要响应的一类。状态消息是未确认消息的一个例子。
Mesh 烽火
Mesh 信标是由节点和未供应的设备定期发布广告的数据包。mesh 信标有效载荷包含在称为Mesh 信标AD类型的Bluetooth GAP AD类型中。有关AD类型的一般信息,请参见Bluetooth 核心规范补充文件。
目前,定义了两种类型的mesh Beacon,即Unprovisioned Device Beacon和Secure Network Beacon。
安全网络信标用于指示节点在IV更新和密钥刷新安全程序方面与该节点会员 所属的特定子网有关的安全状态。
状态信息
状态消息是一类mesh 消息,用于传递给定状态的当前值。它可以作为对确认消息的回应而发送,也可以作为对本地触发的状态变化的回应或定时发送。
幂幂
当执行一次或多次时产生相同结果的操作被称为幂等操作。Mesh 消息必须与幂等操作相关联。
发布/订阅
mesh 网络上发送和接收的信息符合发布-订阅的通信模式。
从一个节点向一组一个或多个其他节点发送消息称为发布。配置一个节点接收某些消息称为订阅。
节点可以发布未经请求的消息,也可以发布消息回复其他消息。
未经请求的消息可以发布到单播地址、组地址或虚拟地址。发布消息的地址被称为发布地址。回复消息总是发布到正在发送回复的消息的源地址。
节点订阅的发布地址列表存储在订阅列表中,该列表是配置服务器模型的一部分。订阅列表中的地址用于选择或过滤收到的消息。
服务器
在mesh 网络中,作为服务器的元素实现了一个服务器模型,并拥有一个或多个状态项,这些状态项可能受到状态转换的影响。状态转换可由从客户端收到的消息触发。
客户
在mesh 网络中,Client是一个实现客户端模型的元素,它向Server发送消息。与服务器不同,客户端没有状态。
控制模型
元素实现的控制模型使其既能作为客户端,与其他兼容的服务器进行通信,又能作为服务器,与其他兼容的客户端进行通信。控制模型可以包括控制逻辑,它指定了协调控制模型与其他客户端和服务器模型之间的交互的规则。
承担者
承载器是一个通信系统或协议栈,用于代表另一个系统或协议栈在终端之间传输数据。承载器通常被描述或描绘成位于其下方并向其上方的另一个协议栈提供服务。例如,早期的移动互联网技术--无线应用协议,可以通过几种不同的承载方式选择使用,包括短信和GPRS。Bluetooth mesh
广告商
Bluetooth mesh 栈中可用的承载器之一,该承载器利用GAP广告和扫描从其他节点接收消息和广播消息。该承载利用Bluetooth GAP广告和扫描来接收信息,并向其他节点广播信息。
关贸总协定承担者
Bluetooth mesh 栈中可用的承载器之一。该承载器允许不支持广告承载器的设备使用称为代理协议的协议与支持广告承载器的mesh 网络节点间接通信。能够在使用广告承载器的节点和使用GATT承载器的节点之间中继mesh 消息的节点称为代理节点。
代理协议PDU由GATT承载客户端通过写入代理节点中的GATT特性(称为Mesh 代理数据输入特性)来发送。PDU由GATT Bearer Client接收,作为与GATT Mesh Proxy Data Out特性有关的通知信息。
Mesh 配置 服务
Mesh Provisioning服务 是一个GATT 服务,由代理节点实现,它支持那些与Provisioning有关的代理协议PDU。
Mesh 代理人 服务
Mesh Proxy服务 是一个GATT 服务,由Proxy节点实现,它支持那些与Provisioning无关的Proxy协议PDU。
代理客户端
Mesh Proxy 服务,与所有GATT服务一样,定义了一个客户端角色和一个服务器角色。连接到实现Mesh 代理服务 的节点并与之交互的Bluetooth 设备被称为代理客户端,它与另一个设备的交互,在这里被称为代理服务器。
代理服务器
Mesh Proxy 服务,与所有GATT服务一样,定义了一个客户端角色和一个服务器角色。实现Bluetooth mesh 代理的Mesh 服务 代理节点在与连接的关贸总协定客户机进行交互时,被称为代理服务器,在这里被称为代理客户机。
代理配置信息
代理服务器可以通过配置代理服务器所应用的过滤器来精确控制他们所接收的网络流量。代理配置信息在代理客户端和代理服务器之间交换,允许配置代理过滤器。
代理过滤器
代理客户端可以通过配置代理服务器应用的过滤器来控制他们接收的网络流量。这种过滤器称为代理过滤器。过滤器采用白名单和黑名单的形式,它们各自指定了目标地址的列表。列表中的地址可以是支持的地址类型的任何组合,即单播、组或虚拟地址。目的地址不在白名单过滤器中的邮件会被代理服务器的代理过滤器丢弃。同样,包含在黑名单过滤器中的目标地址的消息也会被丢弃。代理服务器配置信息在代理客户端和代理服务器之间交换,允许配置代理过滤器。.
节点身份
节点标识是一个字段的名称,它包含在Bluetooth mesh 代理节点广播的广告数据包中的服务 数据字段中。它的值是由代理节点的单播地址和网络标识符的组合得出的,例如它所启用的一个子网的网络ID。
心跳
节点可以被配置为定期发送一条称为心跳消息的消息。心跳消息的目的是向其他节点表明发送心跳消息的节点仍然处于活动状态,并允许以发送心跳消息所需的跳数来确定其与接收方的距离。
使用配置服务器模型配置心跳行为。除其他事项外,还可以配置必须向其发送心跳消息的地址(通常是组地址)、必须发送心跳消息的频率以及是否无限期或以有限的指定次数发送心跳消息。
心跳消息包含并保留心跳发起者设置的初始TTL,并保持不变。这使得接收者可以确定消息到达所需的跳数,从而优化他们随后向心跳源节点发送的消息,将TTL设置为一个不高于需要的值。
节点可以被配置为每当启用或禁用特定节点功能时就发送心跳消息。
朋友请求
朋友请求是一种控制消息,由低功耗节点发送,以发起寻找朋友的活动。
更多数据
MD是More Data的缩写,是一个单位字段的名称,存在于接入层PDU中,用于向低功耗节点(LPN)指示发送消息的Friend至少还有一条消息要发送。
场景
场景是一个存储的状态集合,可以通过收到给定的信息或在指定的时间调用并使其成为当前状态。场景由一个16位的场景编号标识,该编号在mesh 网络中是唯一的。
场景可以让整个环境,比如一个房间,它的每个mesh 节点,它的灯光、供暖系统、空调系统等等,都可以通过一个协调的动作,切换到一个预定义的赠送状态。
场景登记
场景寄存器是一个由17个记忆的场景编号组成的数组,第一个数组会员 的索引位置为0,包含当前活动场景的场景编号,如果没有活动场景,则包含0x0000的数值。其他数组成员包含一个已记忆的场景编号,如果场景寄存器数组会员 中没有记忆的场景,则包含0x0000的值。
安全钥匙
该Bluetooth mesh 规范定义了两种主要的安全密钥:网络密钥(NetKeys)和应用密钥(AppKeys),外加一种特殊类型的AppKey,即设备密钥(DevKeys)。
网络密钥(NetKey)
一个NetKey可以保证网络层的通信安全,并在网络中的所有节点或特定子网中的所有节点之间共享。拥有一个给定的NetKey就可以定义会员资格 一个给定的mesh 网络或子网。
应用密钥(AppKey
AppKey确保接入层的通信安全,并在参与特定mesh 应用的所有节点之间共享。供应者负责生成和分发AppKey。
设备密钥(DevKey)
每个节点都拥有一个唯一的DevKey。只有DevKey所属的节点和供应者才知道DevKey,DevKey用于保障节点和供应者之间的通信安全。
网络ID
网络ID是由网络密钥衍生出来的一个独特的公共标识符,其目的是为了快速有效地查找网络密钥,用于认证和加密操作。其目的是为了快速有效地查找网络密钥,以便在认证和加密操作中使用。
关键指标
NetKeys和AppKeys太长,无法在单段消息中传输。因此,为了尽可能提高消息传递的效率,键被分配了一个称为键索引的全球唯一的 12 位索引值,作为键的简短标识符。信息包括键索引值,可根据配置客户端维护的键列表进行引用。
钥匙扣
应用密匙只能在一个网络中使用,因此,应用密匙和网络密匙之间有关联。因此,应用密钥和网络密钥之间存在关联。这种关联被称为密钥绑定。
四、索引
IV(初始化向量)指数是一个32位的值,由网络中的所有节点共享。其目的是在计算消息Nonce值时提供熵(随机性)。它由IV更新程序更新。
诺斯
Nonce是一个只能使用一次的数字。在通信安全中,由于旧通信的副本无法在不被发现的情况下被重复使用,因此,非记号可以作为防止重放攻击的一种方式。在Bluetooth mesh 网络中,每次对信息进行加密时,都会给它一个新的nonce值。非记号有不同的部分,包括一个序列号和一个称为IV指数的值。每当需要时,IV索引就会被改变,以确保Nonce值不能被绕过和重复。参见IV更新程序。
四、最新情况
Nonce值必须是唯一的。因此,nonce内的序列号不允许环绕,因此。IV索引就起到了这个作用。每当一个节点确定它有可能在最多96小时内用完它的序列号值,或者它确定另一个节点处于这种情况时,它就会启动IV更新程序,使其选择一个新的IV索引值并用于后续通信。在执行IV更新程序的过程中,旧的和新的IV索引值都被接受。
按键刷新
如果任何一个或多个mesh 网络或应用程序密钥的安全性被认为受到损害或有受到损害的风险,那么密钥刷新程序就会被用来生成和分发替代密钥。密钥受损的一个主要例子是网络中的一个节点被移除。例如,如果mesh 一盏灯出现故障并被处理掉,那么理论上它所包含的密钥可能会被收集并用于所谓的"垃圾桶攻击"。为了解决垃圾桶攻击的风险,我们定义了一个节点移除程序。节点删除包括触发密钥刷新程序。
网络消息缓存
所有节点必须实现一个缓存,存储所有最近看到的消息。如果一个消息在被网络层处理时被发现在网络消息缓存中,它将被立即丢弃。这有助于优化节点和整个mesh 网络的性能和能源利用。
配置
"供应"是指将设备添加到mesh 网络中的过程。设备被配置后,称为"节点"。
供应涉及五个步骤。
步骤1.信标
未供应的设备如果还没有在供应过程中,则表示它可以通过广告作为未供应设备信标进行供应。
第二步.邀请函
在这一步骤中,供应者使用可用的承载器以供应邀请PDU的形式向要供应的设备发出邀请。Beaconing设备在供应能力PDU中以自身信息做出响应。
第3步:交换公钥交换公钥
供应者和要供应的设备,直接或使用带外(OOB)方法交换其公钥。
第四步.认证
在认证步骤中,待配置的设备使用与其能力相适应的动作,以某种形式向用户输出一个随机的、单一的或多位数的数字。例如,它可能会闪烁LED灯若干次。用户将新设备输出的数字输入供应器,两台设备之间进行涉及随机数的加密交换,以完成两台设备各自对对方的认证。
第五步。提供数据的分发
身份验证成功完成后,会生成一个会话密钥,并用于保护完成供应过程所需数据的后续分发,包括NetKey。
Provisioner
Provisioner是一个能够将另一个设备添加到网络中的设备。因此,它负责生成和分发NetKeys。预计供应者通常是智能手机或平板电脑应用程序。然而,其他实现方式也是可能的。
网络接口
mesh 网络层支持从/到各种不同的承载器接收和发送消息。一些节点将支持多种承载类型,例如同时支持广告承载和GATT承载。网络层可能会有多个给定承载类型的实例,例如支持多个GATT客户端连接。一个承载器的实例通过网络接口连接到网络层。
定义了一个特殊的网络接口--本地接口,允许在同一节点的元素之间发送消息。
输入滤波器
一个网络接口的实例有一个关联的输入过滤器,它决定是否应该将通过特定的承载器接收到的消息传递到网络层。
外置过滤器
一个网络接口的实例有一个相关的输出过滤器,它决定了从网络层收到的消息是否应该被传递给一个承载器,或者是否应该被丢弃。
系统架构
模型层
模型层关注的是Model的实现,因此,要实现一个或多个模型规范中定义的行为、消息、状态、状态绑定等。
基础模型层
基础模型层负责实现那些与mesh 网络的配置和管理有关的模型。
访问层
Bluetooth mesh 协议栈的接入层负责定义应用程序如何利用上层传输层。这包括定义应用数据的格式,定义和控制在上层传输层中执行的加密和解密过程,以及验证从上层传输层收到的数据是用于正确的网络和应用,然后再将数据转发到协议栈中。
上层传输层
Bluetooth mesh 协议栈的上层传输层负责对进出接入层的应用数据进行加密、解密和认证。它还负责传输控制消息,这些消息是在不同对等节点上的上层传输层之间内部生成和发送的。其中包括与友情和心跳有关的消息。
下层传输层
下层传输层从上层传输层接收PDU,并将其发送到对等设备上的下层传输层。在需要的情况下,它执行PDU的分段和重新组装。对于较长的数据包,无法放入单个传输PDU中,下层传输层将进行分段,将PDU分割成多个传输PDU。另一个设备上的接收下层传输层将把这些分段重新组合成一个单一的上层传输层PDU,并将其上传到堆栈中。
网络层
网络层定义了各种Message地址类型和网络Message格式,允许传输层PDU由承载层传输。它可以支持多个承载层,每个承载层可以有多个网络接口,包括本地接口,用于同一节点的元素之间的通信。网络层决定通过哪个网络接口输出消息。输入过滤器应用于从承载层到达的消息,以确定它们是否应该被传递到网络层进行进一步处理。输出消息要经过输出过滤器,以控制它们是否被丢弃或交付给承载层。
承载层
承载层定义了如何使用底层Bluetooth 低能耗堆栈在节点之间传输PDU。目前,定义了两个承载层,即广告承载层和GATT承载层。
限制
32767 mesh 网络中的元素
127跳最多可以由一个mesh 消息进行
16383 mesh 网络中的组地址
mesh 网络中70万亿个虚拟地址
340个十亿mesh 网络
4096mesh 网络中的应用
4096 mesh 网络中的子网
65535 mesh 网络中的场景
离开网络超过48周的节点必须进行重新配置。