news 2026/7/14 19:40:42

【蓝牙精品系列文档】【03_blemesh架构】02_网络层

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【蓝牙精品系列文档】【03_blemesh架构】02_网络层

Mesh 网络层

核心概念

网络层(Network Layer)负责 Mesh 消息的寻址、中继和加密。它是在承载层之上、传输层之下的核心协议层。

地址类型

Unicast Address(单播地址)

范围说明
0x0001 ~ 0x7FFF分配给配网后的节点,每个节点至少一个
特点全网唯一,配网时由 Provisioner 分配
用途点对点通信

Group Address(组播地址)

范围说明
0xC000 ~ 0xFEFF固定或动态分配的组地址
特点多个节点可订阅同一组地址
用途分组控制(如:所有客厅灯)

SIG 预定义组地址:

地址名称用途
0xC000all-proxies所有 Proxy 节点
0xC001all-friends所有 Friend 节点
0xC002all-relays所有 Relay 节点
0xC003all-nodes所有节点

是的,Relay = 中继

在 BLE Mesh 里,Relay是一种节点特性(Feature):节点收到不是发给自己的Mesh 消息后,会重新广播转发,让消息多跳到达更远节点。

你文档里all-relays0xC002)就是所有开启了 Relay 功能的节点组成的组地址。

和「中继」的对应关系

英文中文含义
Relay中继 / 转发转发 Mesh 消息,实现多跳
Relay Node中继节点具备 Relay 能力的节点
all-relays所有中继节点组播发给全网所有 Relay 节点

中继怎么工作

Node A (TTL=5) ──PDU──> Relay Node (TTL=4) ──PDU──> Node B (TTL=3) │ TTL 减 1 后重发
  • 每中继一次,TTL 减 1
  • TTL 到 0 或 1 时不再转发
  • 随机延迟 0~50ms,减少冲突

和其他 SIG 组地址对比

组地址节点类型作用
all-proxiesProxy帮手机走 GATT 接入 Mesh
all-friendsFriend帮 Low Power 节点缓存消息
all-relaysRelay负责多跳转发,扩大覆盖
all-nodes全部广播给网络内所有节点

实际场景

照明网络里,常供电的灯通常会开 Relay,既当业务节点,也当中继,把控制命令传到远处开关或传感器。

注意:Relay 和 WiFi 里的「中继器」概念类似,都是转发别人流量;Mesh 里是否中继由Relay State配置决定,可以开关。

Virtual Address(虚拟地址)

范围说明
0x8000 ~ 0xBFFF基于 Label UUID 的地址
特点128-bit UUID 哈希生成,碰撞概率极低
用途跨网络共享资源

其他

地址名称说明
0x0000Unassigned未分配地址(未配网设备)
0xC004~0xCFFFRFU保留
0xD000~0xFEFFDynamic Group动态组地址
0xFF00~0xFFFFRFU保留

网络 PDU 格式

Network PDU: ┌────────┬────────┬─────────┬──────────┬───────────┬──────────┬─────┐ │ IVI:1b │ NID:7b │ CTL:1b │ TTL:7b │ SEQ:24b │ SRC:16b │ ... │ │ │ │ │ │ │ │ │ └────────┴────────┴─────────┴──────────┴───────────┴──────────┴─────┘ 完整结构: ┌──────────┬─────┬──────┬──────┬────────┬──────┬─────────┬──────┐ │ IVI+NID │ CTL │ TTL │ SEQ │ SRC │ DST │ Transport│ MIC │ │ 1 B │ 1b │ 7b │ 24b │ 16b │ 16b │ PDU │ 4/8B │ │ │ │ │ │ │ │ (加密) │ │ └──────────┴─────┴──────┴──────┴────────┴──────┴─────────┴──────┘

字段详解

字段大小说明
IVI1 bitIV Index 最低位,用于识别 Network Key
NID7 bitsNetwork ID,派生自 Network Key,快速识别所属网络
CTL1 bit0=Access 消息,1=Control 消息
TTL7 bits生存时间,每中继一次减 1,到 0 不再转发
SEQ24 bits序列号,防重放攻击
SRC16 bits源地址(Unicast)
DST16 bits目标地址(Unicast/Group/Virtual)
Transport PDU变长加密的传输层数据
MIC4/8 B消息完整性校验码(CTL=0 用 4B,CTL=1 用 8B)

IV Index

  • 32-bit 计数器,用于加密和防重放
  • 所有节点共享同一 IV Index
  • IV Index 只能递增
  • IV Update 过程:
    1. 节点检测到 IV Index 需要更新
    2. 发送 Secure Network Beacon,IV Update Flag = 1
    3. 其他节点进入 IV Update 状态
    4. 完成后 IV Update Flag = 0,新 IV Index 生效

中继机制

Relay 节点

  • 收到非自己的 Mesh 消息后重新广播
  • 每次中继 TTL 减 1
  • TTL = 0 或 TTL = 1 时不中继
  • 中继延迟:随机 0~50ms(避免冲突)

中继流程

Node A (TTL=5) ──PDU──> Relay Node (TTL=4) ──PDU──> Node B (TTL=3) │ TTL 减 1 后重发

Relay 特性配置

配置说明
Relay State开启/关闭中继功能
Relay Retransmit Count中继重发次数 (0~7)
Relay Retransmit Interval中继重发间隔 (0~31, 单位 10ms)

中继节点是怎么"宣告"的(问题 1)

关键:Relay 不靠 Beacon 周期性宣告身份。Mesh 协议里 Relay 的"身份"通过两个机制暴露:

1. Composition Data(静态能力上报)

节点配网后,Provisioner 通过Config Composition Data Get读取节点的 Composition Data,里面包含节点支持哪些 Feature

Composition Data Page 0 ├── CID / PID / VID ├── Features 字段(16-bit 位图) │ ├── bit0: Relay ← 是否支持中继能力 │ ├── bit1: Proxy │ ├── bit2: Friend │ └── bit3: Low Power └── Elements / Models

这是能力声明:「我硬件上能做 Relay」,不等于"现在开着"。

2. Relay State(运行时开关)

是否真正启用中继,由Relay State决定,Provisioner 通过Config Server Model远程配置(详见下文「Relay 配置消息空口交互」章节)。

全网没有任何节点需要预先知道「谁是 Relay」——这是 Mesh 泛洪的本质:每个收到包的节点自己判断要不要转发。

转发时 TTL-1 是规范硬性要求(问题 1)

NimBLEbt_mesh_net_relay()实现清晰:

步骤 1:TTL 检查,TTL ≤ 1 不转发

if(rx->ctx.recv_ttl<=1U){return;}
  • TTL=0:禁止转发(规范定义)
  • TTL=1:到达最后一跳,转发出去会变 TTL=0,没意义,不转发

步骤 2:检查 Relay 是否开启

if(rx->net_if==BT_MESH_NET_IF_ADV&&!rx->friend_cred&&bt_mesh_relay_get()!=BT_MESH_RELAY_ENABLED&&bt_mesh_gatt_proxy_get()!=BT_MESH_GATT_PROXY_ENABLED){return;}
  • 从 ADV 收到的包:必须 Relay 开启
  • 从 GATT 收到的包:必须 GATT Proxy 开启

步骤 3:TTL 减 1 写回包头(保留 CTL 位)

/* Leave CTL bit intact */sbuf->om_data[1]&=0x80;sbuf->om_data[1
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 19:40:27

获奖平台传播易 全域广告投放一站式解决方案

2016 年 6 月&#xff0c;由 2016 中国大数据与移动广告营销大会组委会主办的年度行业重磅评选 —— 中国移动互联网金指尖奖评选结果正式揭晓&#xff0c;传播易广告投放平台凭借成熟全链路广告投放服务、丰富媒体资源矩阵与稳定高效的平台服务能力&#xff0c;成功摘得最佳第…

作者头像 李华
网站建设 2026/7/14 19:40:21

物联网安全芯片SE050与PIC18F4682的硬件集成方案

1. 物联网安全现状与SE050的定位在2023年的物联网安全态势报告中&#xff0c;全球每天新增的物联网设备达到惊人的150万台&#xff0c;而其中近70%的设备存在可被利用的安全漏洞。传统MCU在应对现代安全威胁时往往力不从心&#xff0c;这正是恩智浦EdgeLock SE050这类安全元件(…

作者头像 李华
网站建设 2026/7/14 19:40:16

软件设计师冲刺:核心考点速记与实战联想

1. 计算机组成原理速记口诀与实战联想校验码的防伪超市&#xff1a;想象你正在超市收银台结账&#xff0c;商品价格标签就是数据位&#xff0c;收银员添加的校验码就像小票上的防伪码。奇偶校验码只能发现单数位价格标签被篡改&#xff08;比如有人把5元改成8元&#xff09;&am…

作者头像 李华
网站建设 2026/7/14 19:39:51

TMC7300与PIC24EP512GU814电机控制方案详解

1. TMC7300与PIC24EP512GU814电机控制方案概述在工业自动化和嵌入式控制领域&#xff0c;有刷直流电机的稳定运行一直是工程师面临的基础挑战。TMC7300作为TRINAMIC公司推出的高效电机驱动芯片&#xff0c;与Microchip的PIC24EP512GU814高性能16位微控制器组合&#xff0c;形成…

作者头像 李华
网站建设 2026/7/14 19:39:26

LangChain 学习记录 03:提示词模板 PromptTemplate 与 ChatPromptTemplate 详解

LangChain 学习记录 03&#xff1a;提示词模板 PromptTemplate 与 ChatPromptTemplate 详解 摘要 在大模型应用开发里&#xff0c;Prompt 不是随手拼出来的一段字符串&#xff0c;而是影响模型输出质量、代码可维护性和项目稳定性的核心资产。 本文围绕 LangChain 的提示词模…

作者头像 李华