SIG 蓝牙 mesh 组成

mesh网络概述

蓝牙mesh网络是一种基于泛洪管理的mesh网络,消息是通过广播信道传递,收到消息的节点可以继续转发消息,这样就可以实现更远范围的消息传递。为了防止出现消息不受限制的转发传递,规定了以下两种方法来避免:

  • 节点不会转发之前收到的消息,当收到新的消息时,会首先在缓存中检查是否存在相同消息,若存在,则忽略新的消息。
  • 每个消息都会包含一个TTL(Time to Live)的字段,这是用来限制消息中继的次数,每次转发消息后,TTL的值就会减1,当TTL的值到达1时,消息就不会再次被中继。

网络和子网

共享以下几种网络资源的节点组成一个mesh网络:

  • 用来identify消息源地址及目的地址的网络地址
  • Netwoek Key, 用来在网络层加密
  • Application Key, 用来在access layer加密
  • IV index

IV Index 是一个32位的值,是一种共享网络资源,比如一个mesh网中的所有节点都共享相同的IV Index值。

IV Index从0x00000000开始,在IV-Update-procedure过程中递增,并由特定的进程维护,以保证整个mesh网内共享相同的IV。

IV Index在网络中通过Secure Network beacons 共享, 一个子网收到 IV-Update时,会处理并传播该update。传播是通过在子网中传输Secure Network beacons实现的。如果一个在主子网中的节点收到IV-update时,会将其传播到其他所有的子网。

如果一个节点从网络中消失一段时间,该节点会扫描Secure Network beacons ,或者是使用IV Index Recovery procedure来重新设置其IV-Index的值。

一个mesh网络中可以存在一个或多个子网(比如一个宾馆的所有节点构成一个mesh网络,每个房间的节点都构成一个子网),子网中的节点有着同样的Network Key,他们可以在网络层相互通讯。一个节点可以属于多个子网,即一个节点可以配置多个Network Key。在Provision阶段,一个节点会被配到一个子网中,可以通过Configuration Model将节点陪孩子到多个子网中。

子网中有一类特殊的子网,被称为主子网,主子网是基于主NetKey的。主子网中的节点参与IV更新操作,并将IV值传递给其他子网。与之相对的是,其他组网中 的设备只是向子网中传播IV-Index。

包含Configureation Client Model的节点来配置网络资源, 这类节点称之为Configuration Client。通常情况下,Provisioner 负责在Provision阶段给节点分配unicast address以保证不会有重复的地址。Configuration Client负责分配NetKey, AppKey以保证网络中的节点可以在网络层和access层通讯。

设备和节点 devices & nodes

加入mesh网络的设备称之为节点,未配网设备称之为device。** Provisioner** 就是用来管理节点与未配网设备之间的消息传输。

未配网的设备不能收发mesh消息,但是它可以通过广播消息告诉provisioner该设备的存在。provisioner可以将一个未配网设备接入网络使之成为网络节点。

网络节点可以收发mesh消息,其是由Configuration Client来管理的(Configuration Client可以与Provisioner是同一个)。Configuration Client是配置节点之间如何传递消息。Configuration Client可以把节点从mesh网络中移除,使之成为未配网设备。

入网

当设备被provisioner添加到网络时,就成为网络节点。设备的配网过程与传统的蓝牙点对点配对过程不同。设备配网过程是通过advertising bearer 或者point-to-point GATT-based bearer实现的。通过advertising bearer 配网的过程是被所有节点所支持的,而通过point-to-point GATT-based bearer配网允许智能手机这类设备成为配网者(provisioner)。

mesh中的几个概念

mesh网络结构使用以下几个概念:states、messages、bindings、element、addressing、models、publish-subscribe、mesh keys、association。

States(状态)

state是一个用来表示element状态的一个值。

可以表现state的element称之为server。比如,灯控中,灯节点一般为server,其开关状态则是一个state, server根据收到的消息改变其状态。

可以访问state的element称之为client。比如,灯控中的开关,可以通过发送开关消息给server,实现开关控制。

包含多个值得状态称之为复合状态,比如灯的颜色会包含RGB等分量。

Bound states(关联状态)

当一个状态关联另一个状态,其中一个改变,会导致另一个状态改变,这种状态就称之为关联状态。关联状态可以存在于一个或多个element的不同models之间。在灯控中,较为常见的关联状态是电平状态跟开关状态的关联,当电平变化到0时,会导致开关状态也变为关。

Messages(消息)

消息会作用于状态, 对于每个状态(state)都会定义一系列消息,这些消息被server支持并且可以被client用来获取并改变server的状态。server也可以主动发送自身状态的消息,比如状态改变时。

消息包含操作码、相关的参数以及行为。操作码可以是1~3个字节,比如泰凌微的私有mesh就是用的三个字节(op[3])表示,其中op[0]为操作码,op[1~2]表示厂商ID。一字节的操作码用于某些特殊情况,比如需要将允许的参数个数设置为最大时;2个操作码时标准的消息。

一条包含操作码的消息的总长度是在下传输层决定的,这里可能会用的分段重组机制。为了最优化性能,我们应避免分段重组,最好将消息限制在一个分段长度以内。传输层允许最多11个字节的不分段消息,当使用一个字节操作码时,参数个数最多允许10个。当操作码为3个时,最多允许8个参数。

传输层的分段重组机制最多允许32个分段,因此消息的最大长度是384个字节。除去MIC检验的四个字节,一个操作码的消息最多允许379个参数。

消息可以是需要回应的,也可以是无需回应的。

Element

element是节点中一个可寻址的实体,每个节点都至少有一个element,一个主element,多个附加element。element的数量和结构是固定的,在节点的生命周期中保持不变。

主element使用节点在配网时的唯一地址(unicast address)寻址,每个附加element都使用子序列地址寻址。这些element地址允许节点识别节点内的收发消息。

如果一个节点内,element的数量和结构发生了变化,比如在固件升级时,那么需要再次配网。

models中的消息是根据消息的操作码和element地址来分发的。

一个element中不允许包含多个使用相同消息的model,当一个element中的多个model使用相同消息时,会造成过载。为了避免过载,一个节点内允许多个element存在,这样具备相同消息的model放在不同element中就可以了。

比如,对于一个灯设备来说,可能存在两个灯泡,每个都实现了亮度控制。这时就需要节点包含两个element来分别表示两个灯泡,当收到亮度命令时,节点会根据element的地址来决定哪个灯泡亮度应被修改。

Addresses 地址

有三种类型地址,唯一地址(unicast address)、虚拟地址、组地址。

唯一地址是在配网阶段被分配给节点的主element,每个mesh网络可以有32767个唯一地址。

虚拟地址可以代表多个element,每个虚拟地址表示一个标签化的UUID。每个被发往UUID的消息都在完整检验值中包含可整个标签UUID,以验证消息。为了避免检查每个已知的UUID,我们使用UUID的哈希值。共有16384个哈希值,每个都代表了一族虚拟地址。在虚拟地址中,只使用了16384个哈希值,因此每个哈希值都可以表示上百万个UUID,因此虚拟地址的数量可以被认为很大。

组地址可以表示多个element,每个mesh网络中共有16384个组地址。有一些固定的组地址用来访问所有主element。共有256个固定组地址,16128个动态分配的组地址。

Models

Model定义了一个节点的基础功能,一个节点可能包含多个Model。一个Model定义了其所需要的状态、作用于状态的消息、以及相关行为。

mesh应用使用了client-server结构,通讯使用“发布-订阅”机制。鉴于mesh网络的特点,以及配网的行为,应用不是简单的“端到端”模式。应用是定义在client model、server model和control model之中。

  • Server model: 由一个或者多个element中的多个state组成。Server Model 定义了一族主消息,收发主消息时element的行为,还有收发消息之后的附加行为。

  • Client model:定义了一族消息,client可以用来请求、改变相关server的状态。client没有state.

  • Control model: 包含client功能用来与其他server通讯,也包含server功能用来与其他client通讯。一个control model可以包含控制逻辑,即与其他model相互作用时,该model的一些规则及表现。

一个简单的设备可以包含server、client、control model。下图表示了一个control model例子。

照明控制器是一个control model实现,照明控制器需要作为client来控制灯设备(或传感器),也需要作为一个server被智能手机等设备控制。这样一个照明控制器可以存在于传感器中、灯设备中或者是一个独立的设备中。

Models可以定义网络节点的功能,比如秘钥管理、地址分配、消息中继灯。Models也定义了设备的表现,比如电源控制、照明控制、传感器数据收集。有的节点只实现了中继中能,比如代理节点。

一个消息可以应用于多个不同的models,消息的表现在每个model中都是相同的。

Model的特性是不可改变的,不能向一个model移除或者添加行为。如果一个新的行为必须要添加,则需要产生一个新的model。model支持扩展,新的model扩展原model时,会继承原model的相关行为。

一个element所包含的的model决定了该element的表现。

Model可以被SIG定义(SIG Model)也可以被厂商(Vendor Model)定义,model被唯一的标识符所识别,可以是16bit(SIG Model)或者是32bi(Vendor Model)t的一个值。

下面的例子中,一个设备包含了两个element,主element中包含了一个model,该model是扩展自附属model的,在附属model的基础上添加了一个新的状态。

由于State_X1与State_X2可以接收相同的消息,因此必须要放在两个element中。

智能插座例子

如上图所示,该设备由两个插座组成,包含两个element,分别代表两个插座。每个element都分配一个唯一地址。

每个element的功能由Generic Power Level Server model定义,该model定义了一族状态以及作用于状态的消息。

Generic Power Level Set 消息被传送到设备上用来控制电平,然后根据element的地址,来控制对应的插座。

插座也可以被实现了Generic Level Client model的设备控制,该model简单的设置电平,插座的实际控制是通过状态关联实现的。在每个插座中,Generic Power Actual state 是与Generic Level state关联的。Generic Level Client Generic Level Server 发送电平设置消息,然后Generic Level改变,与此同时Generic Power Actual state 也会改变,Power Actual state实际控制插座电源。

element可以报告状态,在插座的例子中,每个插座都可以汇报电源状态以统计耗电量。能耗是通过Sensor Server model定义的消息实现的,每个消息都有个element地址,这个地址唯一识别插座。

SIG蓝牙mesh笔记2_mesh组成的更多相关文章

  1. SIG蓝牙mesh笔记3_网络结构

    目录 3. Mesh Networking 3.1 Bearers 承载层 3.2 Network Layer 网络层 3.2.3 Address validity 地址有效性 3.2.4 Netwo ...

  2. SIG蓝牙mesh笔记5_Provisionging

    目录 Bluetooth Mesh Provisioning Provisioning bearer layer Generic Provisioning PDU Bluetooth Mesh Pro ...

  3. [蓝牙前沿应用] 照明即平台 —— 通过蓝牙增强服务提高照明投资回报率(蓝牙MESH、定位AoA、AoD)

      1.照明即平台(LAAP) 随着照明设施向LED转型,他们也在利用类似于蓝牙MESH的技术,创建一个可连接的照明平台,作为他们建筑的中枢神经系统.这些系统除了提供先进的照明控制,还建立了一个增强版 ...

  4. 蓝牙mesh介绍

    了解一下关于蓝牙Mesh的知识. 蓝牙mesh网络使用,并且依赖于低功耗蓝牙(BLE).低功耗蓝牙技术是蓝牙mesh使用的无线通信协议栈. 蓝牙BR / EDR能够实现一台设备到另一台设备的连接和通信 ...

  5. 解密蓝牙mesh系列

    解密蓝牙mesh系列 https://mp.weixin.qq.com/s/KdVhkgcmHIboA0xPFqFCgQ 1.NRF52832 & NRF52840 BLE mesh 协议栈 ...

  6. 蓝牙mesh网络技术的亮点

    蓝牙mesh网络技术的亮点 The highlights of Bluetooth mesh networking technology 导言 蓝牙是当今最主要的低功耗无线技术之一,对无线设备用户和开 ...

  7. 关于蓝牙Mesh您必须知道的七件事

    蓝牙技术联盟于7月19日正式宣布,蓝牙(Bluetooth)技术开始全面支持Mesh网状网络.全新的Mesh功能提供设备间多对多传输,并特别提高构建大范围网络覆盖的通信能力,适用于楼宇自动化.无线传感 ...

  8. Android蓝牙学习笔记

    一 Bluetooth基本概念 蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备.计算机及其终端设备.各种数字数据系统.甚至家用电器采用无线方式联接起来.它的传输距离为10cm-10m,如果增加 ...

  9. Android蓝牙操作笔记

    蓝牙是一种支持设备短距离传输数据的无线技术.android在2.0以后提供了这方面的支持. 从查找蓝牙设备到能够相互通信要经过几个基本步骤(本机做为服务器): 1.设置权限 在manifest中配置 ...

随机推荐

  1. Oracle作业5——多表查询、子查询

    一.基础练习: 1.查询和scott相同部门的员工姓名ename和雇用日期hiredate SELECT ENAME,HIREDATE FROM EMP WHERE DEPTNO=(SELECT DE ...

  2. iOS获取通讯录所有联系人信息

    以下是2种方式: 第一种方法: GetAddressBook.h #import <Foundation/Foundation.h> @interface GetAddressBook : ...

  3. jQuery mouseove和mouseout事件不断触发

    关于锋利的jQuery第三章结尾提示图片效果(鼠标放在图片上会出现一个大图跟随鼠标移动)实现时mouseove和mouseout事件不断触发的问题 html <ul class="bo ...

  4. hdu_4465_Candy

    LazyChild is a lazy child who likes candy very much. Despite being very young, he has two large cand ...

  5. 浅析MySQL主从复制技术(异步复制、同步复制、半同步复制)

      Preface       As we all know,there're three kinds of replication in MySQL nowadays.Such as,asynchr ...

  6. Windows远程常见问题

    1.window2003远程桌面“已达最大连接数”解决:1)mstsc /v:(此处为服务器IP) /console   任务管理器注销已断开用户 mstsc /v:192.168.4.3 /cons ...

  7. Python模块、包、异常、文件(案例)

    Python模块.包.异常.文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, ...

  8. 坑爹的jquery ui datepicker

    1.坑爹的jquery ui datepicker 竟然不支持选取时分秒,害的我Format半天 期间尝试了bootstrap的ditepicker,但是不起作用,发现被jquery ui 覆盖了, ...

  9. Python入门 —— 04字符串解析

    字符串 -字符串是 Python 中最常用的数据类型.(可以说是大多数语言都常用) 1. 创建字符串 ( '' 或 "" 和 '''''')(单,双和三引号)(字符串可以为空) - ...

  10. rem和em的用法

    1.rem转化为向素值的方法 rem单位转化为像素大小取决于根元素的字体大小,即HTML元素的字体大小,根元素字体大小乘以rem. 例:根元素的字体大小 16px,10rem 将等同于 160px,即 ...