Net网络

蓝牙Mesh

2023-04-30  本文已影响0人  Jeff_9021

一,蓝牙协议

       蓝牙协议分为经典蓝牙和低功耗蓝牙(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的配网过程

注: 配网阶段:provisioner为设备分配单播(mesh)地址和netkey;配置阶段:节点使用DevKey,provisioner为节点配置发布地址,订阅地址等(可选的配置),配置完成后,节点元素使用netkey(用于网络层安全,使相同netkey的节点在一个网络中,节点通过广播方式发布消息,若配置发布地址则发布消息到配置的地址A;若节点未配置订阅地址A则该节点就不能处理该消息),AppKey(用于保护应用层消息,仅用于provisioner(配置者)与provisionee(被配置者)之间进行私有通信,即再次配置时使用)

【组内节点可以只配置发布地址到组播地址,不配置订阅地址到组播地址,即可实现组内其他节点发布消息到组播地址时,该节点可以不处理】

网络配置参数

关于对节点特征的定义

Role:定义扮演的mesh角色,一种是device角色,一种是provisioner角色,前者是被配置设备,后者是给人配置的设备。

Relay:置一表示支持中继角色

Proxy:置一表示支持代理角色

Fn:置一表示支持friend角色

Lpn:置一表示支持低功耗角色

Prov:置一表示在系统开始后会先广播入网配置广播(PB-GATT)

Snb:置一表示状态可以被config beacon改变

Bg_scan:置一表示在系统开始后会进行扫描

三,蓝牙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的所有消息。

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

* 数据包格式

其中需要解释的是:

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

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

SRC:发射端地址

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

NetMIC:消息校验码

四, 网络层结构

蓝牙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的应用

上一篇下一篇

猜你喜欢

热点阅读