BLE链路层-Feature Support

1. 引言

为什么要理解链路层支持特性?

蓝牙核心规范 v5.4 于 2023 年发布,重点面向物联网场景优化能效、连接稳定性和广播安全。它引入了四项关键新特性:

  • 带响应的周期性广播(PAwR)

  • 加密广播数据(EAD)

  • LE GATT 安全级别特征

  • 广播编码选择

这些特性看似分散,但背后都绕不开一个底层问题:设备如何声明自己支持哪些链路层能力,以及双方如何协商使用这些能力?

2. 链路层回顾

BLE 协议栈自上而下分为应用层、主机(Host)、主机控制器接口(HCI)和控制器(Controller)。链路层位于控制器内部,是协议栈中最贴近硬件的核心部分。

链路层的主要职责包括:

  • 数据包封装与解析:按照规范定义的数据包格式处理比特流。

  • 错误检测与纠正:通过 CRC 校验和 FEC 前向纠错保证可靠性。

  • 信道管理:管理广播信道和数据信道的选择与跳频。

  • 链路控制:通过 LL Control PDU 完成连接参数更新、加密控制、特性交换等操作。

  • 定时控制:精确管理广播事件、连接事件以及 PAwR 子事件的时间调度。

BLE 设备在链路层可处于就绪态、广播态、扫描态、发起态和连接态。蓝牙5.4 的 PAwR 特性在链路层引入了一种新的逻辑传输类型,扩展了传统广播态的能力边界。

3. Feature Support 与 FeatureSet

3.1 FeatureSet 是什么

链路层支持的特性集合由一个名为 FeatureSet 的位掩码表示。这个位掩码是主从设备之间进行特性协商的"能力清单":

  • 位值为 0:表示 Controller 不支持该链路层特性。

  • 位值为 1:表示 Controller 支持该链路层特性。

FeatureSet 的值在 Controller 与另一设备建立连接期间不能改变。对端设备可能会缓存本机所支持的特性信息,链路层在连接期间也可能缓存对端设备支持的特性信息。

一句话理解:FeatureSet 是链路层能力协商的"开关面板"。

比特位映射如下:

3.2 Y、O、N 与 Host 控制

在FeatureSet 位映射表中,每个位会标注 Y、O、N 之一,用于规定该位在发送给对端设备时应如何设置;另有 Host 控制 列,用于规定该位的取值由谁决定

标记/属性 含义 发送方行为 接收方行为 是否参与特性协商
Y 发送给对端时必须正确设置 支持该特性则置 1,不支持则置 0 读取该位,并据此判断对端能力
O 发送给对端时可置 0,也可正确设置;对端必须忽略该位 合法设置为 0,或按真实能力正确设置 必须忽略该位的值
N 发送给对端时必须置 0 必须置 0 收到恒为 0,不携带有效信息
Host 控制 该位由 Host 设置,默认为 0 Host 通过 HCI 命令决定取值 取决于该位自身的 Y/O/N 规则 独立维度,不单独决定是否参与协商

这些规则确保了不同厂商、不同版本的 Controller 在交换特性时不会因为保留位或无效位产生歧义。

3.3 特性交换与行为边界

链路层通过 LL_FEATURE_REQLL_FEATURE_RSP 交换 FeatureSet。双方只有在某个特性位都置 1 时,才能在后续通信中实际启用该特性。

控制PDU数据域如下:

特性交换流程如下图所示:

规范还明确了一条重要约束:

如果对端设备通过特性交换进程或 LL_UNKNOWN_RSP PDU 响应了它不支持的进程,则链路层不能再使用该进程,除非它支持至少一种要求该 PDU 的特性。

这意味着 FeatureSet 不仅仅是一份"能力声明",更是链路层在后续通信中必须遵守的行为边界

4. 常用链路层特性

下列举一些常用链路层特性及其对应的 PDU/进程要求。

特性 关键 PDU / 进程 作用
LE Encryption LL_ENC_REQ/RSPLL_START_ENC_REQ/RSPLL_PAUSE_ENC_REQ/RSP BLE 安全通信的基石
Connection Parameters Request LL_CONNECTION_PARAM_REQ/RSPLL_REJECT_EXT_IND 允许从设备主动发起连接参数变更
LE Ping LL_PING_REQ/RSP、LE Ping 进程、LE 认证 payload 超时 验证对端连接活跃性,链路层保活
LE Data Length Extension LL_LENGTH_REQ/RSP 单次传输携带更多有效载荷,减少协议开销
Path Loss Monitoring 新增 HCI 命令与回调、路径损耗区域标识 基于链路质量动态感知信号衰减

这些特性构成了 BLE 链路层的基础能力集。蓝牙5.4 的新特性并非孤立存在,而是在这一框架下通过新增位定义与 PDU 要求来实现。

4.1 加密过程

在连接态下,中央设备可以启动加密操作,其流程如下:

LL_ENC_REQ/LLENC_RSP PDU的数据域如下:

5. 蓝牙5.4新特性

蓝牙5.4 引入的四项核心新特性,在 4.6 节的 FeatureSet 框架下有不同的角色。需要说明的是,它们并不都直接表现为 4.6 节中的新 FeatureSet 位,但都与链路层特性协商结果协同工作。

蓝牙5.4特性 角色
PAwR 扩展链路层周期性广播的逻辑传输类型,需新增对应 PDU 与进程支持
EAD 广播层加密机制,依赖 LE Encryption(4.6.1)作为底层安全基础
LE GATT 安全级别特征 主机层 GATT 特征,但安全协商结果需链路层加密特性配合
广播编码选择 扩展 LE Coded PHY 控制能力,属于链路层与 HCI 层面增强

理解这张表的关键在于:任何蓝牙5.4新特性的使用,都必须以 FeatureSet 中对应位被正确声明和支持为前提。 只有双方都置位为 1 的特性,才能在后续通信中被实际启用。

6. 重点特性PAwR

6.1 背景与设计动机

在蓝牙5.4之前,BLE 的无连接通信模式存在一个根本局限:广播是单向的,观察者只能被动接收数据,无法向广播者回传信息。而建立 ACL 连接虽然可以实现双向通信,但连接数量受限,且维护连接所需功耗较高。

PAwR 的推出正是为了解决这一矛盾。它扩展了蓝牙5.0引入的周期性广播协议,在保留定时精确、无需连接建立的前提下,增加了观察者向广播者发送响应载荷的能力。

6.2 链路层实现机制

在链路层的逻辑传输层上,蓝牙5.4定义了三种主要广播类型:广播(ADVB)、周期性广播(PADVB)和带响应的周期性广播(PAwR)。PAwR 的链路层实现包含以下关键设计:

  • 时间结构:PAwR 按照周期性广播间隔规律运行,没有 ADVB 中的 0--10 ms 随机延迟。每个 PAwR 事件由多个子事件组成,每个广播事件最多可有 128 个子事件。

  • 子事件的数据交互 :在每个子事件中,广播者首先发送一个数据包------可以是 AUX_SYNC_SUBEVENT_INDAUX_CONNECT_REQ。与该子事件同步的所有观察者扫描该数据包并处理载荷。数据包发送后,经过响应时隙延迟,观察者可以在各自的响应时隙中向广播者回传数据。每个子事件最多支持 256 个响应时隙。

  • 链路层 PDU 结构 :周期性广播使用 AUX_SYNC_IND PDU。同步所需的时间信息通过 SyncInfo 字段传递,该字段包含在 AUX_ADV_IND PDU 中。响应时隙的定时参数包括 Subevent_IntervalNum_SubeventsResponse_Slot_DelayResponse_Slot_SpacingNum_Response_Slots 等。

  • 功耗优化:观察者只需选择订阅特定的子事件进行同步,仅在这些特定时间段内扫描,无需持续监听所有广播数据。

  • 连接建立能力:PAwR 的子事件中可以包含连接请求,使设备无需额外的扫描和广播流程即可建立 ACL 连接。

6.3 应用场景

PAwR 的首要标准化用例是电子货架标签(ESL)。一个接入点可以通过 PAwR 同时管理数千个超低功耗的 ESL 终端节点,更新价格信息并接收标签的状态反馈。此外,PAwR 还适用于传感器网络、仓库管理等需要双向通信的大规模物联网场景。

7. 重点特性EAD

7.1 背景与设计动机

广播通信的一个固有问题在于其开放性------任何处于射频范围内的设备都可以接收广播数据。在蓝牙5.4之前,核心规范中没有定义对广播数据进行加密的标准化方法,加密机制仅存在于面向连接的通信中。EAD 的引入填补了这一安全空白。

7.2 链路层与广播层实现

EAD 通过新增一种 AD 类型(类型 0x31)来实现广播数据的加密封装。广播数据的全部或部分载荷可以被加密,且支持灵活的非对称加密策略------部分 AD 结构加密、部分保持明文,使非关键数据仍可被任何观察者解读。

加密广播数据的 AD 结构包含以下字段:

  • 长度字节:标识数据长度。

  • 数据类型字节:标识为 EAD 类型。

  • 5 字节随机化器(Randomizer):每次载荷变化时需生成新的随机化值。

  • 加密数据:使用 AES-CCM 算法加密的有效载荷。

  • 4 字节消息完整性检查(MIC):用于验证数据完整性和来源真实性。

密钥材料的共享通过 GATT 层完成。蓝牙5.4 定义了一个新的 GATT 特征------Encrypted Data Key Material,包含 24 字节的密钥值(16 字节会话密钥 + 8 字节 IV 值)。该特征仅允许通过加密和认证的 GATT 连接读取,因此广播设备和接收者必须事先完成配对。

EAD 不仅可以配合 PAwR 使用,也可以配合其他广播传输方式使用,为开发者提供了灵活的部署选择。

8. 辅助增强

8.1 LE GATT 安全级别特征

该特性允许设备通过 GATT 安全级别特征来声明其安全模式和安全等级。蓝牙 LE 定义了三种安全模式:

  • 安全模式 1:无安全性、未认证加密、认证加密

  • 安全模式 2:未认证数据签名、认证数据签名

  • 安全模式 3:未认证配对和加密、认证配对和加密、认证 LE 安全连接

通过 GATT 安全级别特征,设备可以直接标示自己的安全模式和等级,简化安全协商流程。该特性与 EAD 配合使用,为超低功耗物联网设备提供了完整的安全通信解决方案。

8.2 广播编码选择

广播编码选择特性在链路层和 HCI 命令层面增加了对编码方案的控制能力。蓝牙5.4允许开发者灵活指定主广播信道和辅助广播信道上使用 S=2 或 S=8 的编码方案。

  • S=2:使用 2 个符号表示 1 个比特,编码增益较高,速率和距离平衡较好。

  • S=8:使用 8 个符号表示 1 个比特,编码增益更高,通信距离更远但速率更低。

广播编码选择使开发者能够根据实际部署环境精确管控通信距离与功耗的权衡,并可协调包括 Mesh 节点在内的蓝牙设备间的通信距离。

9. 小结

Feature Support 定义了链路层特性协商的底层规则:FeatureSet 位掩码是 Controller 能力声明的唯一载体,位有效性、掩码规则和 Host 控制属性共同构成了特性协商的"语法"。

蓝牙5.4的新特性并非孤立的功能叠加,而是在这一框架下通过新增位定义与 PDU 要求来实现的。PAwR 扩展了无连接双向通信能力,EAD 将标准化加密引入广播数据,LE GATT 安全级别特征简化了安全协商,广播编码选择增强了物理层控制灵活性。

相关推荐
Ivanqhz2 小时前
Slope One 算法详解:与矩阵分解、共现矩阵的异同
java·服务器·网络·人工智能·深度学习
王六米。3 小时前
RAG知识库建设 文档解析 切分与索引如何衔接
服务器·前端·网络·企业数字化转型·智钳智能盒子
wuyk5554 小时前
【Socket 进阶之路】第 7 章 IO 多路复用 select & poll 完整实战|多 fd 监听、超时等待、优缺点横向对比
服务器·开发语言·网络·数据库·物联网
捷瑞电子工坊5 小时前
嵌入式蓝桥杯从零点亮第一个LED
stm32·蓝桥杯·cubemx·嵌入式·led·ll·锁存
dog2505 小时前
写一个时延固定的拥塞控制
网络
酣大智6 小时前
华为 VRRP的抢占延迟时间
网络·tcp/ip·vrrp
hengmeida6 小时前
楼宇控制柜标准化项目交付完整规范
大数据·网络·笔记
2501_937860946 小时前
上篇:网络编程基础与UDP套接字编程
java·网络·计算机网络
xixiaoyunya7 小时前
制造业生产数据备份:在“不停产“前提下的自动化实践
网络·安全