打开主菜单

谷雨文档中心 β

更改

BLE-Mesh技术揭秘

添加7,630字节2019年11月23日 (六) 23:10
代理节点(Proxy Node)
节点可通过在特性字段中设置代理特性位(proxy feature bit),来表示自身可用作代理节点。特性字段是所有节点都具有的成分数据状态的一部分。
 
=== 蓝牙mesh代理服务 ===
代理节点(Proxy Node)可实施称为mesh代理服务的GATT服务,即本文中的“代理服务器(Proxy Server)”。'''mesh代理服务包含两个GATT特性:mesh代理数据输入和mesh代理数据输出'''。代理客户端(Proxy Client) 使用“GATT Write Without Response”子程序,将代理协议(见下图)PDU写入mesh代理数据输入特性,并从GATT通知中的mesh代理数据输出特性接收代理协议PDU。这就是互联GATT设备通过代理节点在蓝牙mesh网络中进行数据交换的机制。
[[文件:BleMesh-代理服务器与代理客户端.png|居中|缩略图|595x595像素|代理服务器与代理客户端]]
 
=== 发现代理节点 ===
低功耗蓝牙设备使用GAP广播来帮助其他设备发现自己。蓝牙mesh代理节点使用完全相同的技术,即通过“GAP可连接型广播(connectable advertising)数据包”,对自身的可用性、可作为代理节点的角色、及其身份进行广播。
 
'''GAP广播数据包中包含各类字段,称为广播类型(AD Type)'''。核心规格附录中对广播类型进行了定义。代理节点会在广播数据包中包含以下字段:
 
{| class="wikitable"
|+表 1 – mesh代理广播
!'''广播类型'''
!'''注释'''
|-
|标识
|表示通用可被发现模式(General Discoverable Mode)
|-
|完整的16位服务UUID列表
 
不完整的16位服务UUID列表
|包括mesh代理服务的UUID
|-
|服务数据
|包含与mesh代理服务相关的数据,可识别该代理是在为哪个网络或节点所提供服务
|}
服务数据广播类型的内容还需经过进一步检查。
 
{| class="wikitable"
!'''服务数据字段'''
!'''注释'''
|-
|识别类型
|此字段中的值能够正确解释“识别参数”字段的内容。
 
0x00:网络ID(Network ID)类型
 
0x01:节点标识(Node Identity)类型
|-
|识别参数
|可以是网络ID或节点标识,具体取决于识别类型
|}
'''网络ID是从网络密钥'''(NetKey – 参照《解密蓝牙mesh系列 | 第六篇》)'''派生而来的唯一公共标识符'''。节点标识由代理服务器节点的单播地址和网络标识符的组合派生而来,例如启用该标识的子网的网络ID。
 
如果代理服务器是多个子网的成员,则它将对包含每个子网的网络ID广播数据包进行交替操作,每次处理一个广播数据包。
 
'''节点标识广播的主要用途是将启动配置设备(Provisioner)快速连接至刚刚完成启动配置的节点,从而完成新节点的配置。'''
 
=== 代理协议 ===
'''代理客户端和代理服务器使用代理协议进行通信,并向对方发送代理PDU。'''这些PDU就像是存放各类蓝牙mesh PDU的容器。
 
蓝牙mesh接入消息使用核心蓝牙mesh协议栈,因此消息包含在网络PDU内。网络PDU可被封装在代理PDU中。
 
蓝牙mesh配置文件规格中定义了各种Beacon,包括未经启动配置的设备Beacon、以及安全网络Beacon。可通过代理协议将蓝牙mesh Beacon纳入网络。
 
'''启动配置过程涉及其自身协议,且启动配置PDU也可在代理PDU内进行交换'''。
 
最后,代理客户端和代理服务器可以交换特殊的代理配置消息,这些消息也可被封装于代理PDU中。
 
大多数类型的mesh数据可使用代理协议进行交换,因此可通过连接至代理节点的GATT客户端进行收发。
 
不同设备代理PDU的大小各异,PDU的大小是根据低功耗蓝牙属性协议(ATT)的最大传输单元(MTU)进行动态设置的,这是通过GATT连接来传输代理PDU的基础。此外,代理协议可以将完整的蓝牙mesh消息封装在代理PDU或多段消息的各个段中,借此来容纳较长的蓝牙mesh消息。
 
需要注意的一点是,'''任何蓝牙mesh节点(而非只有代理节点)都可以实施代理协议,从而支持基于GATT连接的直接交互。'''这在启动配置(provisioning)场景中非常有用。
 
关于代理协议的更多信息,包括代理PDU的格式,可参考蓝牙mesh配置文件规格: <nowiki>https://www.bluetooth.com/specifications/mesh-specifications</nowiki> 【这里待上传pdf文档】
 
=== 代理过滤器和代理配置 ===
代理客户端可通过对代理服务器所应用的过滤器进行配置,对接收到的网络流量进行精确的控制。'''过滤器采用白名单和黑名单的形式,同时这些名单会指定各自的目标地址列表。'''列表中的地址可能是其所支持的地址类型的任意组合,即单播、群组或虚拟地址。如果消息的目标地址未包含在白名单过滤器中,则消息会被代理服务器的代理过滤器(Proxy Filter)滤掉。同样,如果消息的目的地包含在黑名单过滤器中,也会被滤过。
 
代理配置(Proxy Configuration)消息在代理客户端和代理服务器之间进行交换,并实现代理过滤器的配置。
 
=== 使用低功耗蓝牙智能手机或平板电脑启动配置 ===
'''通常使用智能手机或平板电脑执行启动配置流程,以将新设备添加至蓝牙mesh网络'''。大多数此类设备不会实施完整的蓝牙mesh网络协议栈,而且与蓝牙mesh网络进行的所有交互(包括启动配置)都很可能会使用代理协议。如前所述,启动配置PDU可被封装于代理PDU中,因此可通过代理服务器节点、利用GATT连接进行交换。蓝牙mesh配置文件规格中将采用代理协议的启动配置协议称为PB-GATT。
 
=== 借助代理节点使用代理协议时需要注意什么? ===
'''智能手机等设备要想通过代理节点、借助代理协议与蓝牙mesh网络通信,则必须扫描并连接至代理节点'''。换句话说,它必须支持GAP中央设备的角色。
 
此外,'''必须首先对智能手机进行启动配置'''。如果未经启动配置,任何设备都无法与蓝牙mesh网络中的节点进行交互。
 
=== 结论 ===
通过GATT、代理协议和蓝牙mesh代理节点对当前市场上的低功耗蓝牙设备提供支持,这绝对值得上新闻头条了!它为人们手中已有的海量设备打开了通往蓝牙mesh网络世界的大门。
 
== 第八章节 安全性概览 ==
无论是mesh还是其他网络技术,安全性永远是最重要的特性。
 
=== 为何安全性如此关键? ===
安全性可谓是物联网(IoT)最受关注的问题之一。从农业到医院、从智能家居到商业智能建筑、从发电站到交通管理系统,物联网系统和技术将触及我们生活的方方面面。'''物联网系统如果存在安全漏洞,就可能会导致灾难性的后果'''。
 
蓝牙mesh网络的安全性从设计之初就是重中之重。'''本章节将着重分析主要的安全特性和现已被解决的安全问题'''。本系列的后续文章也将持续详细地介绍蓝牙mesh网络安全性的各个方面。
 
=== 蓝牙mesh网络强制使能安全性 ===
低功耗蓝牙(Bluetooth Low Energy)GATT设备可实施蓝牙核心规格中定义的一系列安全措施。产品设计人员有责任决定采取哪些安全措施,也可以决定不采用任何既有的安全特性。换句话说,'''低功耗蓝牙GATT的安全性配置是非强制性的'''。如果我们谈论的是单一设备的安全性及其与另一台设备的连接,只要产品设计师正确地进行风险评估,那么他的决定就是合理的。'''然而,蓝牙mesh网络中的安全性涉及的不仅是单一设备或对等设备之间的连接安全性;它关注的是整个设备网络的安全性,以及网络中各组设备的安全性。'''
 
因此, '''蓝牙mesh网络中强制性使用安全性'''。
 
=== 蓝牙mesh网络安全性的基本概念 ===
以下基本的安全性说明适用于所有蓝牙mesh网络:
== Mesh系列文章 ==
蓝牙官方组织在其微信公账号上发布了有关Mesh的系列文章,强烈建议开发者仔细阅读。文章列表如下:
# [https://mp.weixin.qq.com/s?__biz=MzA4MTg3MTg2Mg==&mid=2651237010&idx=2&sn=bb09d02477c7a64cda2e69d2b10fac0e&chksm=847c5c0bb30bd51d13933bc4d6bd8ee1ab4415dfbc0d48361d79e582953a268cdfb756a42e54&scene=21#wechat_redirect 解密蓝牙mesh|第七篇]
# [https://mp.weixin.qq.com/s/5RKrK5v6Vqyjog51nhTUCw 解密蓝牙mesh|第八篇]
# [https://mp.weixin.qq.com/s/aS16lAPmy4IRUgmcvqYe8g 解密蓝牙mesh|第九篇]
2,367
个编辑