Ble mesh profile学习笔记

一.mesh网络系统架构

1.分层架构

 

1.1 Model layer 模型层

模型层定义了用于规范典型用户场景的操作的模型,并在蓝牙网格模型规范或其他更高的层规范中定义。更高层模型规范的示例包括照明模型和传感器等各类模型。

1.2 Foundation Model layer 基础模型层

基础模型层定义了配置和管理网状网络所需的状态、消息和模型。

1.3Access layer接入层

访问层定义了上层应用程序如何使用上层传输层。定义应用数据的格式;定义并控制在上层传输层执行的应用数据加解密;在转发上层输入的应用数据之前,检查是否接收到正确的网络上下文和应用密钥

1.4 Upper transport layer上部运输层

上层传输层对应用程序数据进行加密、解密和身份验证,旨在提供访问消息的机密性。它还定义了如何使用传输控制消息来管理节点之间的上层传输层,包括朋友功能使用的时间。

1.5 Lower transport layer下部运输层

下传输层定义了如何分割上层传输层消息并重新组装成多个下传输pdu,以将大型上层传输层消息传递到其他节点。它还定义了一个单一的控制消息来管理分段和重组

1.6 Network layer网络层

网络层定义了如何向一个或多个元素处理传输消息。它定义了允许传输pdu通过承载层进行传输的网络消息格式。网络层决定是中继/转发消息,接受它们进行进一步处理,还是拒绝它们。它还定义了如何对网络消息进行加密和身份验证。

1.7 Bearer layer承载层

承载层定义了如何在节点之间传输网络消息。目前有2个承载层被定义,广播承载层和GATT承载层。将来可能会定义额外的承载层。

2.设备和节点

非网状网络成员的设备被称为未配置的设备。作为网状网络的成员的设备被称为节点。Provisioner 用于管理未配置的设备和节点之间的转换。未配置的设备无法发送或接收网格消息;但是,它会向Provisioner 宣传其存在。在未配置的设备经过身份验证后,Provisioner 将邀请其进入网状网络,从而将未配置的设备转换为节点。

节点可以通过网状网络发送或接收网格消息,并由配置客户端进行管理,该配置客户端也可以是与Provisioner 相同的设备,以配置节点与其他节点通信的方式。配置客户端可以从网状网络中删除一个节点,从而将其恢复到未配置的设备。一个设备可以通过提供给另一个网状网络之后,从而支持一个节点的多个实例。网状网络的每个实例都由设备在配置过程中获得的地址和设备密钥决定。

2.1添加设备进入mesh网络

设备由Provisioner添加到网状网络中,此时它们将成为节点。在网状网络中进行的设备配置不同于蓝牙无线技术中通常使用的点对点连接和配对。使用简单的广播承载或基于gatt的点对点承载启用设备供应。在两个承载上都使用了单个配置协议。在基于广播的承载上的配置由所有设备实现。

通过基于gatt的承载配置允许电话等设备(即不支持通过广播承载本地供应的设备)成为Provisioner。为了帮助配置多个设备,一个设备有一个可以由Provisioner设置的注意定时器。当设置为非零值时,该设备可以使用任何方法来标识自己。例如,该设备可以闪光、发出声音或振动。当注意力计时器过期时,设备将停止识别自己。这允许Provisioner向设备发送一条消息,使其识别自己,并且设备在给定的时间后自动停止识别自己。

3 mesh的设计概念

mesh网络体系结构使用了几个不同的概念:状态、消息、绑定、元素、地址、模型、发布-订阅、mesh key等等,下面一一介绍。

3.1 States

状态是表示元素的条件的值。公开状态的元素被称为服务器。例如,最简单的服务器是一个通用的OnOff服务器,表示它是打开或关闭的。访问一个状态的元素被称为客户端。例如,最简单的客户端是通用OnOff客户端(二进制交换机),它能够通过由通用OnOff模型定义的消息来控制通用OnOff服务器。由两个更多的值组成的状态被称为复合状态。例如,换色灯可以与颜色饱和度和亮度分开地控制颜色色调。

3.2 Bound states

当一个状态绑定到另一个状态时,其中一个状态的变化会导致另一个状态的变化。绑定状态可以来自一个或多个元素中的不同模型。例如,常见的绑定类型是在级别状态和“关闭”状态之间:将级别更改为0会将绑定的“开启状态”更改为“关”,将“级别”更改为非零值会将绑定的“开启”状态更改为“开”。

3.3Messages

mesh网络内的所有通信都是通过发送消息来完成的。消息在状态下运行。对于每个状态,服务器都有一组已定义的消息,客户端可以用来请求状态值或更改状态。服务器还可以传输携带关于状态和/或不断变化的状态的信息的未经请求的消息。

消息被定义为具有操作码、相关参数和行为。操作码可以是单个八进制(用于需要参数的最大可能有效负载的特殊消息)、2个八进制(用于标准消息)或3个八进制(用于特定于供应商的消息)。包括操作码在内的总消息大小由底层传输层决定,底层传输层可以使用分割和重组(SAR)机制。为了最大限度地提高性能和避免SAR的开销,设计目标是在单个段中适应消息。传输层为非分段消息提供多达11个八字节,在使用1个八进制操作码时保留10个八字节,使用2八元操作码时提供9个八字节,使用供应商专用3八元操作码时提供8个八字节。传输层提供了一种能够传输多达32段的SAR机制。使用SAR时的最大消息大小为384八位节。这意味着(不包括应用程序MIC)当使用1八元操作码时,最多379个八进制字节可用,当使用2个八元操作码时,最多378个八进制字节可用,以及以上。

3.4Elements

元素是节点内的可寻址实体。每个节点具有至少一个元素,即主元素,并且可以具有一个或多个附加的辅助元素。元素的数量和结构是静态的,在节点的整个生命周期中不会改变(也就是说,只要该节点是网络的一部分)。使用在配置期间分配给节点的第一个单播地址来处理主元素。每个附加的辅助元素都使用后续的地址进行处理。这些单播元素地址允许节点识别节点内的哪个元素正在发送或接收消息。如果元素的数量和结构发生变化,例如由于固件更新,则必须重新配置该节点。当执行固件更新以更改元素的数量或结构时,可使用节点删除。系统将基于操作码和元素地址在模型中发送消息。不允许一个元素包含以相同方式使用相同消息的多个模型实例。

例如,一个灯具可以具有两个灯,每个灯实现了照明服务器模型的一个实例和一个通用电源开启服务器模型的实例。这要求节点包含两个元素,每个灯一个。当它接收到“开断”消息时,节点使用元素的单播地址来标识消息所指向的通用电源开断服务器模型的哪个实例。在另一个示例中,双插座电源带包含两个独立的能量测量传感器,它们可以测量连接到插座上的设备所消耗的功率。这将要求节点有两个传感器数据状态,每个状态都在一个单独的元素中。第一个元素,即主元素,将使用节点的单播地址进行识别,并将包括第一个能量传感器的状态以及表示节点配置的状态。所述第二元件,即第二元件,将使用单播元件地址进行识别,并将包括所述第二能量传感器的状态。每个元素都有一个GATT蓝牙命名空间描述符值,它可以帮助识别该元素所代表的节点的哪个部分。

3.5Addresses

地址可以是单播地址、虚拟地址或组地址。还有一个特殊的值来表示在消息中未使用的未分配的地址。一个单播地址被分配给一个元素,并且总是表示一个节点中的单个元素。每个网状网络有32767个单播地址。虚拟地址是一个多播地址,可以表示一个或多个节点上的多个元素。每个虚拟地址在逻辑上表示一个Label UUID,它是一个128位的值,不必进行集中管理。发送到Label UUID的每个消息都包含用于验证消息的消息完整性检查值中的完整的Label UUID。为了减少检查每个已知标签UUID的开销,使用了标签UUID的散列。有16384个散列值,每个散列值编码了一组虚拟地址。虽然在一个虚拟地址中只有16384个哈希值,但每个哈希值可以代表数百万个可能的标签UUID;因此,虚拟地址的数量被认为是非常大的。

组地址是一个多播地址,可以表示一个或多个节点上的多个元素。每个网状网络有16384个组地址。有一组固定的组地址,用于根据这些节点的功能来处理这些节点的所有主要元素的子集。所有其他的组地址都被称为动态分配的组地址。有256个固定的组地址和16128个动态分配的组地址。

3.6Models

一个模型定义了一个节点的基本功能。一个节点可以包括多个模型。模型定义了所需的状态和作用于这些状态的消息,以及任何相关的行为。mesh应用程序是使用与发布-订阅范例进行通信的客户端-服务器体系结构来指定的。

规范定义了三种类型的模型:服务器模型、客户端模型和控制模型:

服务器模型:服务器模型由跨越一个或多个元素的一个或多个状态组成。服务器模型定义了一组它可以传输或接收的强制消息,元素在传输和接收此类消息时所需的行为,以及在传输或接收消息后发生的任何附加行为。

客户端模型:客户端模型定义了一组消息(强制的和可选的),客户端用来请求、更改或使用相应的服务器状态,如服务器模型定义的服务器状态。客户端模型没有状态。

控制模型:控制模型可能包含与其他服务器模型通信的客户端模型功能,以及与其他客户端模型通信的服务器模型功能。控制模型也可以包含控制逻辑,这是一组规则和行为,用来协调控制模型连接到的其他模型之间的交互。

单个设备可以包括服务器、客户端和控制模型

例如,图中显示了实现服务器模型(设备C)的设备的状态和支持消息R、S、T、X、Y、Z;以及实现客户端模型的两个设备,其中设备a支持消息X、Y和Z,设备B支持消息R、S、T和Z。

 在另一个示例中,显示了实现控制模型的设备的元素-模型结构。设备C可以作为客户机与服务器模型通信(分别支持消息X、Y、Z和消息R、S和T),并且可以作为服务器与客户机模型通信(支持消息a、B和C)。

 照明控制器是控制模型的实现的一个示例。照明控制器需要作为传感器(测量占用率和/或环境光)和光源(如灯或其他灯具)的客户端。照明控制器还可以作为设置客户端的服务器(例如,配置其参数的智能手机应用程序)。这样种照明控制器可以包括在传感器或光源中,也可以是单独的设备。模型可以将设备的功能定义为一个网络节点,如密钥管理、地址分配和消息的中继。模型还定义了围绕网络节点构建的设备的物理行为,如功率控制、照明控制和传感器数据收集。可能有一些节点只实现与网络相关的功能,如中继节点或代理节点,而大多数节点能够通过控制电力、控制光发射或感知环境数据来与物理世界交互。一个消息可以被多个不同的模型使用。消息行为在每个模型中是相同的,使客户端之间有共同的理解

 例如,图显示了一个设备的元素-模型结构,该设备实现了一个具有两个绑定状态的根模型和在每个状态上操作的一组消息。根模型位于主元素内,并通过在辅助元素上添加另一个状态的扩展模型进行扩展。消息无法区分在同一元素上具有相同状态的多个实例。因此,当一个设备上存在一个给定状态的多个实例时,每个实例都需要在一个单独的元素中。在这个示例中,状态X的第二个实例需要位于第二个元素上,因为它是相同类型的状态,因此具有服务于它的相同类型的消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值