【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录
- 节点的功能
- 承载层(GATT/Adv)
- 局限性:
- 拓扑关系
- 定向转发机制
- 定向转发意义
- CG
节点的功能
节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration Server 模型所定义(见原文2.3.13. 特性和功能):
- 中继功能 – 通过广告承载接收和重新传输网状消息以支持更大的网络的能力。
- 代理功能 – 能够在 GATT 和广告承载之间接收和重新传输网状消息。
- 低功耗功能 – 能够以显著降低的接收器占空比在网状网络中运行,仅与支持 Friend 功能的节点结合使用。
- Friend 功能 – 通过存储发往这些节点的消息来帮助支持 Low Power 功能的节点运行的能力。
- 某些节点支持 “Friend” 功能,这意味着它们可以与其他低功耗节点建立“友谊”关系。
- 支持 Friend 功能的节点可以为 Low Power Nodes(低功耗节点) 缓存消息,让低功耗节点不需要一直监听无线信道,从而节省电量。
承载层(GATT/Adv)
在 蓝牙Mesh(Bluetooth Mesh) 网络中,GATT Bearer 和 Advertising Bearer(简称 Adv Bearer) 是两种不同的消息传输方式(即“承载层”,Bearer,持票人;持有者;送信人;传播者)
- Advertising Bearer 是蓝牙Mesh网络默认使用的通信方式,基于BLE的广播机制。
- GATT Bearer 主要用于传统BLE设备(如手机)接入Mesh网络,通过GATT连接进行通信。
对比项 | Advertising Bearer | GATT Bearer |
---|---|---|
是否必须支持 | 是(所有 Mesh 节点必须支持) | 否(可选) |
是否需要连接 | 否 | 是(需与 Proxy Node 建立 GATT 连接) |
是否支持广播 | 是 | 否 |
是否支持分段 | 是 | 否(由 Proxy Node 处理) |
适用对象 | 所有 Mesh 节点 | BLE 设备(如手机) |
通信方式 | 广播/泛洪 | 单播(GATT 连接) |
局限性:
- Advertising Bearer的数据包大小有限(通常不超过 39 字节有效载荷)。如果消息太大,会被分段处理,增加传输延迟。
- GATT Bearer 仅支持单播通信,效率低于广播承载。不支持自动重传和分段功能,因此依赖于 Proxy Node 处理。
拓扑关系
节点 | 类型 | 描述 |
---|---|---|
Q, R, S | Relay Node | 具备转发消息能力,将接收到的消息重新广播出去,以扩大网络覆盖范围 |
N | 支持 Friend | 未启用 Friendship |
O, P | Friend Node | 为 Low Power Nodes 提供消息缓存 |
I, J, K | Low Power Node | 一般用于电池供电设备;使用 P 作为 Friend |
L, M | Low Power Node | 一般用于电池供电设备;使用 O 作为 Friend |
T | GATT Proxy Client | 通过 S 接入网络 |
S | Proxy Node | 为 T 提供 GATT 到 Mesh 的桥接 |
-
虽然节点 N 支持 Friend 功能,但它并没有与任何低功耗节点建立连接或缓存消息,所以它不算真正的 Friend Node。
-
节点 O 和 P 是真正的 Friend Node,因为它们有对应的 Low Power Nodes 与之建立连接。
-
例如,如果要从 T 向 L 发送一条消息,T 将通过 GATT 承载方式把该消息发送给节点 S。节点 S 将使用广播承载方式重新广播这条消息。节点 H、R、N 和 O 处于节点 S 的无线通信范围内,因此它们都会接收到这条消息。由于节点 O 是 L 的好友节点,它会将这条消息缓存起来。如果该消息是分段的消息,O 会在底层传输层回复一个确认(acknowledgment)。一段时间后,L 会轮询节点 O 以检查是否有新消息,这样 O 就会将最初由 T 发送的消息转发给 L。
定向转发机制
- 节点 M 是一个 低功耗节点(Low Power Node),它不能持续监听网络。
- 它与节点 O 建立了“友谊”关系(Friendship),所以节点 O 会为它缓存消息,并代表它发送或接收数据。
- 节点 O 不仅是 Friend Node,还支持 Directed Friend 功能,即它可以主动为低功耗节点建立一条优化的、指向特定目标的路径。
- 它为节点 M 到目标节点 H 建立了一条 2-lane path(双车道路径):
- “2-lane” 表示路径可以双向使用(从 M 到 H 和从 H 到 M)。
- 这种路径可能是根据网络延迟、信号强度或其他路由指标优化后的最佳路径。
定向转发意义
因此,无论支持定向中继的节点数量有多少,通信流量都会被限制在已建立的路径之内。在这个例子中,即使节点 E、G、N 和 Q 接收到了从 M 发往 H 的消息,它们也不会参与转发。
- BLE Mesh 中引入 定向转发机制 的目的是:
- 避免传统泛洪机制造成的广播风暴和资源浪费。
- 将流量限制在已知的最佳路径上,提升效率、降低延迟、减少能耗。
- 提高网络可扩展性,特别是在大型网络中。
CG
- 2.3.14. 拓扑
- 低功耗蓝牙技术 > GAP和GATT介绍 GATT连接的网络拓扑: 一个外设只能连接一个中心设备,而一个中心设备可以连接多个外设。连接建立后,通信是双向的,不同于GAP的单向通信
- Telink BLE SIG Mesh GATT 配网功能
- 很多文章讲蓝牙Mesh的带宽是2Mbps,实际上2Mbps指的是BLE,即低功耗蓝牙(也是用得最普遍的那种蓝牙)而非蓝牙 Mesh的。而蓝牙Mesh的带宽即便是SIG官方也不大好意思明说,我翻了一遍BLE Mesh的标准文档也没见着,后来看到几个著名的蓝牙芯片厂商的测试报告和文章才知道只有区区的2Kbps左右,跟BLE(低功耗蓝牙)比差了1000倍了。这个其实从原理上也很好理解,BLE Mesh是构建于BLE的基础之上的,蓝牙是一种跳频协议,一共40个信道,其中3个是广播(advertising)信道,用来做设备发现的,剩下的37个是用来跑正常的数据通讯。而BLE Mesh为了支持Mesh网络不得已只能用这3个广播信道来做传输数据用,剩下的37个信道它没法用,所以它的带宽低到只有2Kbps就很正常了
- 米家 BLE Mesh 支持的功能
相关文章:

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...

关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...

android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...