蓝牙Mesh

一,蓝牙协议

       蓝牙协议分为经典蓝牙和低功耗蓝牙(BLE),但经典蓝牙和低功耗蓝牙互不兼容,因此在硬件模组上又有单模蓝牙和双模蓝牙的区别;经典蓝牙适用于音频流媒体传输,如无线耳机、麦克风等,低功耗蓝牙适用于遥控器、手环、灯和家电等,需要和智能手机直接相连接收控制的设备。在智能手机中的蓝牙就是是双模蓝牙,它可以支持经典蓝牙和低功耗蓝牙。

发展历程

BLE(Bluetooth LowEnergy,低功耗蓝牙)的工作频率是2.4GHz,蓝牙规范中定义了40个RF通道,通道间隔2MHz,其中3个通道是广播通道,用于发现设备、建立连接和广播等。而在BLE5.0 规范中(之前,广播信道只有 37、38、39和data信道(0-37)),剩余的37个通道既可以用于数据传输也可以用于广播通道。

Mesh是BLE的一种无线多跳网络拓扑结构,蓝牙Mesh是一种基于广播的,基于网络泛洪管理的协议,通过广播发送,扫描接收。由于它使用了蓝牙规范的低能量部分,并与该协议共享最低层,所以也有人称之为 BLE Mesh。

蓝牙Mesh网络通过中继功能解决单点故障问题,节点包括中继功能、低功耗功能、友邻功能和代理功能。蓝牙Mesh网络最大的优势是支持手机连接,然而现在的手机不支持蓝牙Mesh,因此蓝牙Mesh网络需要至少一个代理节点来实现和手机的通信。

蓝牙Mesh信息包含在蓝牙低能量广播包的有效负载中,所以其物理层表示与现有的低功耗蓝牙设备兼容。相较于传统蓝牙的星形组网,蓝牙 Mesh 低功耗、低响应延迟的特点,使其成为loT(物联网)中的重要组成部分。

蓝牙Mesh与低功耗蓝牙之间的关系

二,mesh的配网和配置过程

配网成功后,分发配网数据 (Distribution Of Provisioning Data): 包括网络密钥(NetKey)和设备的唯一地址,即单播地址(Unicast Address),密钥索引, IV索引,标志。

配置过程: 网关发到mesh节点的Composition Data 数据定义了元素个数以及元素下model个数与model-id。包括节点在mesh的角色(中继节点、友好节点、代理节点),订阅发布地址,心跳等设置。

三,蓝牙mesh的运行原理与数据包

配网成功后,网络中的每一个设备都发送和接收来自无线电范围内所有设备的所有消息。(在mesh网状网络中没有连接的概念),这种广播模式也称为网络泛洪,采用网络泛洪的方式,通过可控的泛洪消息传递,不需要创建和管理复杂的路由表、路由发现表(zigbee设备)等,节省了维护网络运行的存储器空间的开销。同时,网络泛洪消息传播的本质是多路径(Multi path)的,确保了信息可以通过多条路径传递到目的节点,因此网络中任何一个单点的故障也不会对网络传输造成致命性的影响,这使得网络可靠度极高。

蓝牙Mesh典型拓扑图

* 中继节点

中继的作用是扩大节点的传送范围。如图所示,当A设备发送单播地址时,若被中继节点B接收到,且B设备无此单播地址,此时B设备会检测数据包里的TTL是否大于1,若大于1,B设备会把此数据包再次广播出去,且TTL-1,当TTL为1时,中继会结束消息广播。

当A设备发送组播地址时,即使中继设备C订阅了这个地址,只要TTL大于1,C也会将消息中继转发出去并TTL-1,因为地址为组播地址,订阅此地址的不只1个节点。

* 朋友节点和低功耗节点

低功耗:低功耗节点,该节点长时间处于睡眠状态,在指定时间唤醒,唤醒期间处理所有睡眠期间的消息,处理完消息后再次进入睡眠状态。

朋友节点,在LPN睡眠期间,替LPN缓存消息,当LPN唤醒时,将缓存的消息发送至LPN。

1个朋友节点可与多个低功耗节点建立friendship。当需要改低功耗设备参数时,从发送消息节点到友节点,参数存储在友节点,低功耗设备按指定时间唤醒,向友节点发起收集参数广播,友节点接收到后发送参数广播,低功耗设备得到参数并更改状态

关于低功耗设备与友设备建立friendship与交流的过程。此过程是在上层传输层实现的。Friend request、friend poll等命令,均属于上层传输层操作码类型。

* 代理节点,与不支持mesh协议栈的设备,节点T仅使用GATT bearer连接到Mesh网络,S必须将所有消息转发给T,并且转发T的所有消息。

注:工作中要明确每个蓝牙设备支持那种节点

* Network PDU format (网络层数据包格式

其中需要解释的是:

IVI: IV index为4字节长度,对于mesh来说,每一包消息都带着完整的IV index太重了,没有那么多的可用长度留给IV index用,因此在network层的pdu上只包含了IV index的最低有效位,叫做IVI字段。

CTL:控制着消息的性质,有访问和控制两种性质。

TTL:为中继转发次数,转发一次TTL-1,等于1时不再转发

SRC:发射端地址

DST:目标地址(指某节点某元素的单播地址,或某组的组播地址或虚拟地址)

NetMIC:消息校验码

mesh中消息是通过SEQ进行标记的,序列号(SEQ)和IV索引 来防止重放攻击

四, 网络层结构

蓝牙mesh的网络协议栈

五,应用层模型

在应用层面,SIG对蓝牙设备的功能进行了多层次的封装:节点-元素-模型-状态。

* device(设备)和node(节点)

未配网的mesh设备,被provisioner 配网成功后,加入mesh网络中,成为节点;

provisioner设备:mesh中的节点,负责网络中其他节点的配置。通常,provisioner程序包含一个配置客户端和客户端节点,用于控制其他节点(如电灯或空调)中的特定功能。provisioner通常是网关设备的一部分,是在mesh网络和其他网络技术(如Internet)之间提供桥梁的设备。建立provisioner有两种主要方法: 以独立应用程序(独立provisioner程序)运行它, 或通过串行接口(串行供应程序)由主机应用程序控制。

* Element(元素)

出于节能或便捷部署的需要,一个节点可以关联多个子设备,这每个子设备都是一个“元素”。例如, 一个节点可以包含一个蓝牙通信模块和一个灯组(灯组由多个灯泡组成),所有的灯泡都是通过同一个蓝牙模组接入Mesh网络,在灯组中的每一个灯泡都是一个元素。元素是Mesh网络中最小单位的“实体”,每个元素在网络中都有一个唯一的mesh地址(单播地址,Unicast Address)。在设备中可以根据寻址访问到的实体,这样在控制的时候就可以根据元素来进行寻址控制。

* 模型(model)和状态(state)

在应用层面,“节点”就是接入蓝牙Mesh网络的“设备”,它包含了一个或一组“元素”(子设备),每个元素都具有一些“模型”(功能),每个模型都有唯一的标识符(32位),能够在Mesh网络中被识别出来,且每一项功能都配置有一个或一组“状态”参数,来表示此功能所对应的操作。

例如:每当圣诞节来临,圣诞树需要灯饰装点,灯饰一般都是一串彩灯(由许多不同颜色的灯泡组成)。可以将这一串灯视为一个“节点”。为了营造圣诞气氛,可以对灯串中每一种颜色的灯作为“元素(Element)”进行单独控制。每种颜色的灯都具有发光的功能作为它的“模型”,模型包括两种状态属性:“开/关”状态、亮度状态。这样,蓝牙Mesh网络便有了对装饰灯进行动态控制的基础。

六,管理‘泛洪’

“管理泛洪”的措施如下:

* Heartbeats

心跳消息由节点定期发送。心跳消息向网络中的其他节点指示发送心跳的节点仍处于活动状态。此外,心跳消息还包含数据,这些数据使接收节点可以根据到达发送方所需的跳数确定发送方的距离。可以通过 TTL 字段利用此数据。

* TTL

TTL(生存时间)是所有蓝牙 Mesh PDU 都包含的字段。它控制中继的最大跳数。设置 TTL 可以确保节点不会中继太多,从而使节点可以控制中继并节省能量。

心跳消息使节点可以确定每个发布的消息的最佳 TTL 值。

*  Message Cache

消息缓存必须由所有节点实现。消息缓存包含所有最近收到的消息,如果发现一条消息存在于消息缓存中,表明该节点之前已经收到和处理过该消息,则立即将其丢弃。

* Friendship

蓝牙 Mesh 网络中最重要的优化机制可能是 Friend 节点和 Low Power 节点的组合。如所述,Friend 节点提供消息存储并将服务转发到关联的 Low Power 节点。这允许低功耗节点以高效节能的方式运行。

七,mesh术语

八,蓝牙mesh的应用

版权声明:
作者:Zad
链接:https://www.techfm.club/p/71384.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>