蓝牙mesh_解密蓝牙mesh:低功耗节点LPN工作过程

2023-11-03

转载自蓝牙技术联盟

低功耗蓝牙(Bluetooth Low Energy)是全球最具节能性的短距离无线通信技术之一。其低功耗的特性广受开发者和消费者赞誉。随着蓝牙mesh网络的推出,开发者可能想知道蓝牙mesh网络是否也被设计为低功耗,是否继承了低功耗蓝牙的这一优点?

答案当然是YES!

蓝牙mesh网络采取了多种优化功耗的措施,特别包括一项称为“friendship” (友谊) 的特性。

b94e0cf61da8001e4668e10cefddacbe.gif

概述

蓝牙mesh网络中“friendship”(友谊)特性的应用可能非常多样化。一些如照明功能的产品会与主电源(国家电网)相连接,那么相较于照明本身的功耗,蓝牙mesh模块的功耗就可忽略不计。但其他产品,如智能传感器或智能锁,就会在供电方式上功耗受限,这意味着它们需要通过小型电池或能量采集技术来供电。这些产品最有可能利用到蓝牙mesh网络的友谊概念。

如果您阅读过我们蓝牙mesh网络系列之前的文章,那么您就知道节点(Node)是已经启动配置(Provision)并成为mesh网络中一员的设备。节点具有与其产品类型相关的功能,但也可具有与网络本身操作相关的功能并在其中扮演特定角色。而这取决于其所支持的mesh网络特性。所有节点都能够在网络中发送并接收mesh消息,此外还可以选择性地支持一个或多个其他网络特性,如下所列:

中继(Relay)特性:通过广播承载层接收并重新发送mesh消息、以构建更大规模网络的能力。

代理(Proxy)特性:在GATT和广播承载层之间接收并重新发送mesh消息的能力。

低功耗(Low-Power)特性:能够以明显较低的接收端占空比在mesh网络中运行。通过将无线电接收器启用时间最小化可实现节点功耗的降低,只有在绝对必要时才启动接收器。低功耗节点(LPN)通过与好友(friend)节点建立友谊(friendship)关系来实现这一点。

好友(Friend)特性:通过存储发往LPN的消息,仅在LPN明确发出请求时才进行转发来帮助LPN运行的能力。

要了解“友谊”是如何帮助LPN降低功耗的,我们可以先从传感器开始:传感器是一个很好的例子,它可以利用“友谊”,并被用作LPN。它们通常将绝大部分时间用于传输数据,且很少需要接收数据。传感器可能只有在温度超出一系列预设的限制时才会发送温度读数,而这种情况每天可能只会发生两次。正是这种不频繁的数据传输才使得此类设备的能耗使用维持在较低水平。

但如果需要根据季节将这些温度限制修改为不同的值,同时需要通过向传感器发送配置消息来实现这些限制的修改呢?传感器若想直接接收此类消息,就需要开启无线电进行收听。大多数时间它什么也接收不到,却在消耗能量。

因此,与好友节点的合作能够使低功耗节点(LPN)规划对无线电的使用,以适当或更低的频率接收消息而无需一直保持收听。低功耗节点会对好友节点进行轮询(Poll),查看是否有新消息(好友节点只会间或地对新消息进行存储)。功耗就是通过上述步骤得到节省的。

好友(Friend)和低功耗节点(LPN)

低功耗节点(LPN)必须与支持“好友”特性的另一节点建立“友谊”(friend)关系,以减少其接收器占空比(Duty Cycle)并节约能耗。图1来自蓝牙mesh配置文件规格,主要描绘了低功耗节点和好友节点之间的关系,具体如下:

浅蓝色:低功耗节点

深灰色:与特定低功耗节点相关联的好友节点

浅灰色:没有与低功耗节点建立关系的好友节点

619189a22c05d6b62910c6bf3e4e0220.png

图 1 – mesh网络的拓扑结构示例

好友节点P与低功耗节点 I、J和K为“友谊”关系。好友节点O与低功耗节点 L和M为“friendship”关系。因此,寻址到节点I、J或 K的消息将被好友节点P存储并转发。寻址至节点L或M的消息将被好友节点 O存储和转发。好友节点的转发仅在低功耗节点轮询好友节点以获得等待传送的消息时才会发生。

友谊(Friendship)参数

低功耗节点需要找到好友节点,与其建立“友谊”关系。所涉及的流程称为“友谊建立”。我们稍后会探讨此流程。在此之前,先介绍一些有关对LPN行为进行管理的关键参数,这些参数被设定于友谊建立过程中。

1. ReceiveDelay是从LPN向好友节点发送请求,到其开始收听响应中间经过的时间。这让好友节点有时间做好响应的准备,并将响应发回。

2. ReceiveWindow 是LPN用于收听响应的时间。图2描述了涉及ReceiveDelay和ReceiveWindow的时序。

558dec1c92a83a8698e10c0ad3196426.png

图2 – ReceiveDelay和ReceiveWindow时序

3. PollTimeout设定了LPN发送给其好友节点的两个连续请求之间可能经过的最长时间。如果在PollTimeout计时器到时之前,好友节点未能收到LPN的请求,则友谊关系将被终止。

240b3994afefc4c0e4ed40904fdcfb00.png

图 3 – PollTimeout时序

“友谊”建立

如果两个人想建立友谊,可能对视一眼就已足够!

但对于蓝牙mesh网络中“友谊”的建立,还需要经过更多的步骤。

LPN发布一个“好友请求”(Friend Request)消息。该消息不会被中继,因此只有处于直接无线电范围内的好友节点才能处理该消息。不具有“好友”特性的节点会将消息丢弃。“好友请求” 消息包括LPN的ReceiveDelay、ReceiveWindow和PollTimeout参数。

附近的好友节点若支持“好友请求”消息中特定的要求,将准备一个“Friend Offer”消息,并将其发送回LPN。该消息包括各种参数,包括支持的ReceiveWindow大小、可用的消息队列大小、可用的订阅列表(Subscription List)大小、以及由好友节点测量的RSSI值。

LPN接收到“Friend Offer”消息时,通过应用一种实施专用的算法来选择合适的好友节点。该算法可能会考虑到各种各样的情况。某些设备可能会优先考虑ReceiveWindow大小,以尽可能减少功耗;而有些设备则可能会更加关注RSSI值,以确保能够与好友节点保持高质量的链路。所采用的精确算法由产品开发者决定。

选择好友节点之后,LPN将向好友节点发送一个“Friend Poll”轮询消息。

从LPN收到“好友轮询”(Friend Poll)消息后,好友节点会回复一个“Friend Update”更新消息,完成“好友” 建立流程并提供安全参数。此时“友谊”得以建立。

友谊(Friendship)消息传送

友谊建立之后,好友节点将LPN的所有消息存储在“好友队列”(Friend Queue)中,这些消息就是我们所说的“ 被存储的消息 ”。下方的图4描绘的就是好友节点和关联LPN之间的消息交换。

当好友节点收到一个寻址到该节点的LPN的消息时,好友节点会缓冲此消息,将其存储在称为“好友队列”的区域中。在图4中,我们可以看到,好友节点为LPN存储了消息1和2。

LPN会周期性地启用其收发器(transceiver),并向好友节点发送 “好友轮询” 消息,询问是否存储有任何为其缓冲的消息。

好友节点会先将一个被存储的消息发回至LPN作为对“好友轮询”(Friend Poll)的响应。

在每次接收到来自好友节点的消息之后,LPN会将继续发送“好友轮询”消息,直到收到一条“MD(MD =更多数据)”字段设置为0的“好友更新”消息为止。这意味着已经没有为LPN缓冲的更多消息了。此时,LPN停止对好友节点的轮询。

3ba2d5b57ea0948cee8553abdb88920a.png

图 4 – “友谊”消息传递

安全性

蓝牙mesh中,安全性保障无处不在,“友谊”也如此,它采用两种特殊的安全证书:

主安全资料(Master Security Material):由网络密钥(NetKey)派生,可被同一网络中的其他节点使用。使用主安全资料加密的消息可被同一网络中的任何节点解码。

好友安全资料(Friend Security Material):由网络密钥(NetKey)、以及由低功耗节点(LPN)和好友节点生成的额外计数器号码派生而来。使用好友安全资料加密的消息只能由处理该消息的好友节点和LPN解码。

LPN和好友节点使用的两种安全资料是怎样的呢?总结如下:

使用好友安全材料加密的相应友谊消息:

好友轮询(Friend Poll)

好友更新(Friend Update)

好友订阅列表(Friend Subscription List)添加/删除/确认好友节点发送至LPN的“被存储的消息”

使用主安全资料加密的相应友谊消息:

好友清除(Friend Clear)

好友清除确认(Friend Clear Confirm)

从LPN发送至好友节点的消息将根据应用设置,通过主安全资料或好友安全资料进行加密。

“友谊”终止

“友谊”可在某些情况下终止:

如果在PollTimeout计时结束之前,好友节点未收到“ 好友轮询”、“好友订阅列表添加”或“好友订阅列表删除”消息,则友谊终止。

LPN可以通过将“好友清除”消息发送给好友节点,以启动友谊终止程序,“友谊”就会被好友节点终止。

平台选择小窍门

开发者在选择实施好友和LPN的平台时,应考虑遵循以下指南:

RAM容量:可用的RAM容量直接影响一个 好友节点可支持LPN的数量、及其可为相关LPN缓冲多少个消息。

LPN:所选MCU和模块的通用功耗性能对于LPN很关键。 此外,从休眠模式到运行模式的唤醒/预热时间会影响LPN的响应速度和延迟。

作为开发者,我像你们一样对蓝牙mesh SDK怀有热切的期望。让我们一同感受蓝牙mesh“ 友谊 ”的魅力吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝牙mesh_解密蓝牙mesh:低功耗节点LPN工作过程 的相关文章

  • 学计算机这么课最大的收获是啥,计算机课程学习心得范文

    计算机网络系统是一个集计算机硬件设备 通信设施 软件系统及数据处理能力为一体的 能够实现资源共享的现代化综合服务系统 计算机网络系统的组成可分为三个部分 即硬件系统 软件系统及网络信息系统 下面是学习啦小编为大家收集整理的计算机课程学习心得
  • 电流采样电路

    文章目录 前言 一 差分放大电路的优点 二 注意事项 总结 前言 有时候我们需要对电流进行采样 但是电流实际是不好测量的 最简单的方法就是把电流转化为电压 这里推荐一种比较简单的放大电路 差分放大电路 大家可以看模电课本 283 284页的
  • vue开发一些常遇见的问题

    1 显示富文本的内容 自动换行样式 文本超出 div class introduction div introduction font size 16px font weight 400 color 666666 letter spacin
  • html background属性

    background属性 属性解释 background属性是css中应用比较多 且比较重要的一个属性 它是负责给盒子设置背景图片和背景颜色的 background是一个复合属性 它可以分解成如下几个设置项 background color
  • 2022年陕西省职业院校技能大赛中职组网络安全赛项规程

    2022年陕西省职业院校技能大赛中职组 网络安全赛项规程 一 赛项名称 赛项名称 网络安全 赛项归属 信息技术类 二 竞赛目的 为检验中职学校网络信息安全人才培养成效 促进网络信息安全专业教学改革 培养大批既满足国家网络安全战略需要有具备世
  • 获取下拉框选中的值

    1 当Jquery是1 9以下版本 selector live change function 执行的代码 2 当Jquery版本大于1 9 body on change selector function 执行的代码 3 简单版 推荐使用
  • Spring MVC 配置HttpMessageConverter和Conversion-service的问题

    最近开始学习spring mvc 配置HttpMessageConverter来转换json和xml 以及配置conversion service来格式化数据 这个两个配置总不能都测试通过 要么是第一个转换json和xml出错 格式化数据通
  • 自定义注解的场景及其实现

    自定义注解的场景及其实现 自定义注解的场景 登陆 权限拦截 日志处理 以及各种Java框架 如Spring Mybatis Hibernate JUnit 实现方法 Java自定义注解通过运行期间靠反射获取注解 实际开发过程中 如果我们需要
  • Elasticsearch学习笔记4:Springboot整合ES

    一 编写ES配置类 import org springframework context annotation Bean import org springframework context annotation Configuration
  • 区块链入门必读(FISCO)

    关键概念 区块链是由多个学科交叉组合形成的一门技术 本章将阐述区块链相关的基本概念 对涉及的基本理论进行科普介绍 如果您已经对这些基本技术很熟悉 可以跳过本章 区块链是什么 区块链 blockchain 是在比特币之后提出的一个概念 在中本
  • Java的文件上传

    文件上传效果图 代码如下 package star july upload import java io File import java io IOException import java util List import java u
  • ChatGPT在电子健康记录和医疗信息查询中的应用前景如何?

    电子健康记录 EHRs 和医疗信息查询在现代医疗保健系统中起着至关重要的作用 它们有助于提高患者护理的质量 提高医疗保健的效率 减少错误 促进患者参与 并促进医学研究和数据驱动的决策 ChatGPT作为一种人工智能技术 在这一领域具有巨大的
  • 关于vtk中的vtkActor、vtkRenderer、vtkRenderWindow的设置

    1 正常显示vtk 需要 vtkActor 可以有多个 进行一些演员的处理 vtkRenderer 可以有多个 将vtkActor进行加入 vtkRenderWindow 只能有一个 将vtkRenderer进行加入 vtkRenderWi

随机推荐

  • js 分浏览器设置style属性

    http www cnblogs com jianshao810 archive 2010 06 20 1761120 html var cssText font weight bold color red 下面写法用于firefox类型浏
  • 史上最牛,接口自动化测试-yaml框架配置文件总结(超级详细)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • EasyUI项目之购物车功能

    前言 继续讲解EasyUi项目 网上书城 之加入购物车 清空购物车功能 码字不易 点个关注 转载请说明 开发工具 eclipse MySQL 目录 1 目标 2 代码展示 加入购物车 清空购物车 思维导图 实现购物车的三种方式 1 目标 加
  • adcsr图像超分代码_MMEditing: 多任务图像视频编辑工具箱

    我们近期在 OpenMMLab 项目中开源了 MMEditing 这是一个图像和视频编辑的工具箱 它目前包含了常见的编辑任务 比如图像修复 图像抠图 超分辨率和生成模型 在编辑图像或者视频的时候 我们往往是需要组合使用以上任务的 因此我们将
  • npm run build --report 不生成report分析文件原因

    运行 下面命令即可 命令行后缀参数需要多加 符号 npm run build report
  • C语言中文件操作,即文件打开,文件写入、文件读取、文件关闭

    1 文件读写前 必须先使用fopen函数打开文件 fopen 若要对文件进行读写操作 第一步需要使用fopen 函数fopen 函数用于打开指定路径的文件 获取指向该文件的指针 函数原型 func fopen brief 打开文件 para
  • k8s学习(十一)创建DaemonSet

    目录 前言 一 下载 fluentd elasticsearch 二 创建 DaemonSet 三 版本回退 四 指定 Node 节点 前言 DaemonSet 保证在每个 Node 上都运行一个容器副本 常用来部署一些集群的日志 监 控或
  • log4j2的JsonLayout测试

    log4j2的JsonLayout测试 工程开发 最近在开发通用的分布式日志采集器 碰到日志信息块的划分问题 尤其是碰到有异常堆栈的情况 需要做合并操作 当前我们的解决方案是使用日志块的起始时间来判断 有过萌生使用JsonLayout的想法
  • XCTF_very_easy_sql

    简单的进行sql注入测试后发现不简单 尝试一下按照提示 结合这句提示 应该是内部访问 所以采用的手段应该是ssrf 顺便看看包 唯一值得关注的是set cookie 说回ssrf 唯一能使用的方式应该是Gopher协议 找到了一个POST的
  • RS码(Reed-Solomon码)

    RS编码是一种多进制编码技术 适合于存在突发错误的通信系统 RS解码技术相对比较成熟 但由RS码和卷积码构成的级联码在性能上与传统的卷积码相比较提高不多 故在未来第三代移动通信系统采用的可能性不大 RS是 Reed Solomon 里德 所
  • Java中final关键字理解

    最近毕业面试 有几家都问到了final关键字的使用 谈到final关键字 想必很多人都不陌生 在使用匿名内部类的时候可能会经常用到final关键字 另外 Java中的String类就是一个final类 那么今天我们就来了解final这个关键
  • 服务器显示checkin,checkin.gstatic.com服务器iP

    2020 07 14 2021 08 08 203 208 50 162 2021 08 08 2021 08 08 142 250 186 131 2021 08 08 2021 08 08 142 250 72 131 2019 07
  • IPC:有名管道

    mkfifo chatA c 有名管道 FIFO namedPipe 提供了一个路径名相关联 以FIFO文件形式存在于文件系统中 FIFO的内容存放在内存 文件中没有内容 创建后可以read write close等 实现了任意不同进程间的
  • Registration based Few-Shot Anomaly Detection

    Registration based Few Shot Anomaly Detection paper https arxiv org abs 2207 07361 code https github com MediaBrain SJTU
  • 数值求解一维定态薛定谔方程

    背景 学习量子化学原理与应用课程时 一维定态薛定谔方程经常归结为解二阶偏微分方程 因此 学习数值解法一方面能够验证解析解 另一方面也能够应对更多更复杂的势垒函数对应方程的解 参考资料 https github com FelixDesroc
  • vue.js框架+mintUI 网站自建之挂件编写: 实现图片选择、预览和上传之后再从数据库读出并显示的一种方式

    网站上传图片 预览图片 加载图片的实现方法 文章结构 1 原始实现方法 2 更新 利用canvas重绘 优化加载速度 3 更新 canvas绘制在移动端与pc端的不同 19 4 28 4 28更新 对于4 27提出的想法现在出现一个问题 利
  • IDEA OutOfMemory(内存溢出)的问题解决

    1 idea编译时内存溢出 解决办法 打开设置界面 搜索Compiler 编译 如下图所示 将这个值设置为一个较大的值 2 运行时内存溢出 解决办法 打开tomcat设置页面 VM options加上参数 server XX PermSiz
  • MySQL-如何分库分表?一看就懂

    一 为什么要分库分表 如果一个网站业务快速发展 那这个网站流量也会增加 数据的压力也会随之而来 比如电商系统来说双十一大促对订单数据压力很大 Tps十几万并发量 如果传统的架构 一主多从 主库容量肯定无法满足这么高的Tps 业务越来越大 单
  • CentOS 8 正式停服;复旦教授痛批 Google 修复高危漏洞一直延期;WebStorm 2021.3.1 发布

    整理 宋彤彤 责编 屠敏 开源吞噬世界的趋势下 借助开源软件 基于开源协议 任何人都可以得到项目的源代码 加以学习 修改 甚至是重新分发 关注 开源日报 一文速览国内外今日的开源大事件吧 一分钟速览新闻点 开源大新闻 CentOS 8 正式
  • 蓝牙mesh_解密蓝牙mesh:低功耗节点LPN工作过程

    转载自蓝牙技术联盟 低功耗蓝牙 Bluetooth Low Energy 是全球最具节能性的短距离无线通信技术之一 其低功耗的特性广受开发者和消费者赞誉 随着蓝牙mesh网络的推出 开发者可能想知道蓝牙mesh网络是否也被设计为低功耗 是否