在5G NR FR2(毫米波24.25GHz~52.6GHz)部署中,高频信道面临严重的路径损耗和遮挡效应。一个行人的身体遮挡就可能导致波束信号衰减20~30dB,使UE瞬间失去与服务波束的连接。如果每次波束劣化都触发RRC重建,则恢复时延将达到数百毫秒级别,远无法满足URLLC等场景需求。
波束失败检测与恢复(Beam Failure Detection and Recovery, BFD/BFR) 正是为此设计的底层快速恢复机制——它允许UE在PHY/MAC层自主检测波束级链路失败,并通过专用PRACH资源在数十毫秒内完成恢复,全程不触发RRC状态转换,保持RRC_CONNECTED状态不变。
BFR机制的核心规范分布在三个TS文档中:
| 规范 | 覆盖范围 |
|---|---|
| TS 38.213 Section 6 | 物理层:BFD评估准则、候选波束L1-RSRP测量、PRACH资源映射 |
| TS 38.321 Section 5.17 | MAC层:BFI计数器管理、定时器控制、BFR MAC CE、随机接入过程 |
| TS 38.331 | RRC层:BeamFailureRecoveryConfig、RadioLinkMonitoringConfig配置IE |
整个BFR流程可以分解为四个阶段:检测(Detection)→ 识别(Identification)→ 请求(Request)→ 响应(Response),每个阶段都有独立的定时器守护,形成一条精密的定时器链。
波束失败检测的物理基础是一组波束失败检测参考信号(BFD-RS)。网络通过RRC信令中的RadioLinkMonitoringConfig为UE配置监测资源:
RadioLinkMonitoringConfig ::= SEQUENCE {
failureDetectionResourcesToAddModList
SEQUENCE (SIZE(1..maxNrofFailureDetectionResources))
OF RadioLinkMonitoringRS,
failureDetectionResourcesToReleaseList
SEQUENCE (SIZE(1..maxNrofFailureDetectionResources))
OF RadioLinkMonitoringRS-Id,
beamFailureInstanceMaxCount
ENUMERATED {n1, n2, n3, n4, n5, n6, n8, n10},
beamFailureDetectionTimer
ENUMERATED {pbfd1, pbfd2, pbfd3, pbfd4, pbfd5,
pbfd6, pbfd8, pbfd10},
...
}
RadioLinkMonitoringRS ::= SEQUENCE {
radioLinkMonitoringRS-Id RadioLinkMonitoringRS-Id,
purpose ENUMERATED {beamFailure, rlf, both},
detectionResource CHOICE {
ssb-Index SSB-Index,
csi-RS-Index NZP-CSI-RS-ResourceId
},
...
}
设计意图:purpose字段允许同一组RS资源同时服务于BFD和RLF检测(both),也可以独立配置。在典型FR2部署中,BFD-RS通常对应CORESET#0的激活TCI状态所关联的SSB或CSI-RS,确保UE监测的是实际用于PDCCH接收的波束质量。
BFD的物理层评估并非直接比较L1-RSRP值,而是采用假设PDCCH BLER准则(TS 38.213 Section 6):
关键设计:使用假设BLER而非简单RSRP作为判据,是因为BLER综合考虑了干扰、噪声和信道估计质量,更准确地反映PDCCH的实际接收可靠性。这比单纯RSRP门限判断在多小区干扰场景下更加鲁棒。
MAC层收到L1的BFI指示后,执行以下逻辑(TS 38.321 Section 5.17):
收到BFI指示时:
BFI_COUNTER = BFI_COUNTER + 1
启动或重启 beamFailureDetectionTimer
beamFailureDetectionTimer超时时:
BFI_COUNTER = 0(重置)
判断条件:
if BFI_COUNTER >= beamFailureInstanceMaxCount:
触发波束失败(Beam Failure Detected)
stateDiagram-v2
[*] --> 正常监测: RRC配置BFD-RS
正常监测 --> 收到BFI: L1指示(假设BLER>Q_out)
收到BFI --> 累加计数: BFI_COUNTER++
累加计数 --> 启动定时器: 启动/重启BFD Timer
启动定时器 --> 正常监测: 定时器超时→重置计数器
启动定时器 --> 收到BFI: 再次收到BFI(未超时)
启动定时器 --> 波束失败触发: BFI_COUNTER≥MaxCount
波束失败触发 --> 候选波束搜索: 进入CBI阶段
候选波束搜索 --> [*]
定时器博弈的核心矛盾:
| 参数 | 设置偏小 | 设置偏大 |
|---|---|---|
beamFailureInstanceMaxCount(如n1/n2) |
检测灵敏度高,但误触发概率大 | 检测更稳健,但恢复时延增加 |
beamFailureDetectionTimer(如pbfd1/pbfd10) |
只捕获连续快速恶化,漏检间歇性衰落 | 跨越较长时间窗口累积BFI,但可能延缓检测 |
典型配置为 beamFailureInstanceMaxCount=n3 + beamFailureDetectionTimer=pbfd10,意味着UE需要在一个检测定时器周期内收到3次连续BFI才触发波束失败。这避免了因短暂衰落造成的误触发,同时保持足够快的检测速度。
波束失败触发后,UE立即在候选波束列表中搜索可用的新波束。候选波束资源通过BeamFailureRecoveryConfig中的candidateBeamRSList配置:
BeamFailureRecoveryConfig ::= SEQUENCE {
rootSequenceIndex-BFR INTEGER (0..137) OPTIONAL,
rach-ConfigBFR RACH-ConfigGeneric OPTIONAL,
rsrp-ThresholdSSB RSRP-Range OPTIONAL,
candidateBeamRSList
SEQUENCE (SIZE(1..maxNrofCandidateBeams))
OF PRACH-ResourceDedicatedBFR OPTIONAL,
ssb-perRACH-Occasion ENUMERATED {oneEighth, oneFourth,
oneHalf, one, two, four, eight, sixteen} OPTIONAL,
ra-ssb-OccasionMaskIndex INTEGER (0..15) OPTIONAL,
recoverySearchSpaceId SearchSpaceId OPTIONAL,
beamFailureRecoveryTimer ENUMERATED {ms10, ms20, ms40, ms60,
ms80, ms100, ms150, ms200} OPTIONAL,
...
}
候选波束可以是SSB或CSI-RS,通过PRACH-ResourceDedicatedBFR区分:
PRACH-ResourceDedicatedBFR ::= CHOICE {
ssb BFR-SSB-Resource,
csi-RS BFR-CSIRS-Resource
}
BFR-SSB-Resource ::= SEQUENCE {
ssb SSB-Index,
ra-PreambleIndex INTEGER (0..63),
...
}
BFR-CSIRS-Resource ::= SEQUENCE {
csi-RS NZP-CSI-RS-ResourceId,
ra-OccasionList SEQUENCE (SIZE(1..maxRA-OccasionsPerCSIRS))
OF INTEGER (0..maxRA-Occasions-1) OPTIONAL,
ra-PreambleIndex INTEGER (0..63) OPTIONAL,
...
}
UE对每个候选波束RS资源测量L1-RSRP,与门限 Q_in(rsrp-ThresholdSSB)比较:
设计意图:Q_in > Q_out,形成双门限滞回机制。Q_out(10% BLER)用于检测当前波束"不可用",Q_in(RSRP绝对门限)用于确保新波束"足够好"。这种非对称设计防止UE在两个质量相近的边缘波束之间来回切换(乒乓效应)。
| 特性 | SSB候选波束 | CSI-RS候选波束 |
|---|---|---|
| 粒度 | 粗粒度(SSB周期20/40/80/160ms) | 细粒度(CSI-RS可密集配置) |
| 开销 | 低(SSB为同步信号,本身必须发送) | 较高(需额外CSI-RS资源配置) |
| 波束宽度 | 宽波束 | 窄波束,更适合精确波束恢复 |
| PRACH映射 | SSB→RO通过ssb-perRACH-Occasion映射 |
CSI-RS→RO通过ra-OccasionList显式映射 |
| 适用场景 | FR1/FR2通用 | FR2精细化波束管理 |
当候选波束在candidateBeamRSList中配置了专用PRACH前导码(ra-PreambleIndex)时,UE使用无竞争随机接入(CFRA)发起BFRQ:
步骤:
1. UE根据选定候选波束的SSB-Index或CSI-RS-ResourceId,查表获取对应的专用ra-PreambleIndex(0~63)
2. 在该候选波束关联的PRACH时机(RO)上发送专用前导码
3. 启动 beamFailureRecoveryTimer
CFRA优势:由于前导码是网络预分配的,不存在竞争冲突,gNB收到前导码后即可确定UE身份和所选新波束,实现单步(Msg1→Msg2)恢复,时延最小。
当候选波束未配置专用前导码时(如CSI-RS候选波束的ra-PreambleIndex为OPTIONAL且未配置),UE回退到基于竞争的随机接入(CBRA):
步骤: 1. UE从公共前导码集合中随机选择一个前导码 2. 在候选波束对应的RO上发送(Msg1) 3. 等待RAR窗口(Msg2) 4. 发送Msg3(含C-RNTI MAC CE) 5. 等待竞争解决(Msg4)
CBRA代价:四步交互导致恢复时延增加2~3倍,且存在竞争失败风险。
BFRQ的PRACH发送遵循独立的功率攀升参数:
RACH-ConfigGeneric ::= SEQUENCE {
preambleReceivedTargetPower INTEGER (-202..-60),
preambleTransMax
ENUMERATED {n3,n4,n5,n6,n7,n8,n10,n20,n50,n100,n200},
powerRampingStep
ENUMERATED {dB0, dB2, dB4, dB6},
ra-ResponseWindow
ENUMERATED {sl1, sl2, sl4, sl8, sl10, sl20, sl40, sl80},
...
}
若配置了ra-Prioritization,BFR可以使用更高的功率攀升步长(powerRampingStepHighPriority),确保BFRQ在恶劣信道条件下也能被gNB检测到。
flowchart TD
A[波束失败触发] --> B[候选波束搜索]
B --> C{找到合格候选波束?}
C -->|否| D[触发RLF→RRC重建]
C -->|是| E{配置了专用前导码?}
E -->|是| F[CFRA模式]
E -->|否| G[CBRA模式]
F --> H[发送专用PRACH前导码 Msg1]
H --> I[启动beamFailureRecoveryTimer]
I --> J[在recoverySearchSpace监测C-RNTI PDCCH]
J --> K{收到响应?}
K -->|是| L[BFR成功→切换到新波束]
K -->|否 Timer超时| M{重试次数<preambleTransMax?}
M -->|是| N[功率攀升+重新发送前导码]
N --> J
M -->|否| D
G --> O[四步RA: Msg1→Msg2→Msg3→Msg4]
O --> P[竞争解决成功?]
P -->|是| L
P -->|否| Q[重试或触发RLF]
gNB成功检测BFRQ前导码后,在UE配置的recoverySearchSpaceId指定的搜索空间上发送响应:
beamFailureRecoveryTimer窗口内监测该搜索空间设计意图:使用专用recoverySearchSpaceId而非默认Type1-PDCCH CSS(用于普通RAR),是因为BFR响应需要在新波束对应的控制资源集上发送。gNB收到BFRQ前导码后已经知道UE选择了哪个候选波束,因此在对应新波束的CORESET上发送PDCCH响应。
sequenceDiagram
participant UE
participant PHY as UE PHY(L1)
participant MAC as UE MAC(L2)
participant gNB
Note over UE,gNB: 阶段1: 波束失败检测(BFD)
gNB->>UE: BFD-RS (SSB/CSI-RS)
UE->>PHY: 测量所有BFD-RS的假设BLER
PHY->>PHY: 所有BFD-RS BLER > Q_out?
PHY->>MAC: BFI指示(L1→L2)
MAC->>MAC: BFI_COUNTER++ 启动BFD Timer
Note over MAC: 重复BFI直到BFI_COUNTER≥MaxCount
Note over UE,gNB: 阶段2: 候选波束识别(CBI)
UE->>UE: 测量candidateBeamRSList中所有候选RS
UE->>UE: L1-RSRP ≥ rsrp-ThresholdSSB?
UE->>UE: 选择RSRP最高的合格候选波束
Note over UE,gNB: 阶段3: BFR恢复请求(BFRQ)
UE->>gNB: PRACH Preamble(专用/竞争)
Note right of UE: 在候选波束的RO上发送
MAC->>MAC: 启动beamFailureRecoveryTimer
Note over UE,gNB: 阶段4: gNB响应(BFR Response)
gNB->>UE: PDCCH(C-RNTI加扰)
Note left of gNB: 在recoverySearchSpace上发送
Note left of gNB: 在新波束的CORESET上发送
MAC->>MAC: 停止beamFailureRecoveryTimer
MAC->>MAC: 重置BFI_COUNTER=0
Note over UE,gNB: BFR成功完成→在新波束上恢复通信
Rel-16将BFR机制扩展到载波聚合场景下的辅小区(SCell),引入了BFR MAC CE上报机制。SCell BFR与PCell BFR的核心区别在于:
| 特性 | PCell BFR | SCell BFR (Rel-16) |
|---|---|---|
| 失败检测 | BFD-RS→BFI计数器 | 相同机制 |
| 恢复请求 | PRACH preamble | MAC CE(在SpCell上发送) |
| 候选波束 | 独立搜索 | 独立搜索 |
| gNB响应 | recoverySearchSpace PDCCH | 调度的PUSCH确认 |
| 回退 | RLF→RRC重建 | 上报"无候选波束"→gNB决策 |
BFR MAC CE格式(TS 38.321 Section 6.1.3.6):
| 字段 | 比特数 | 说明 |
|---|---|---|
| ACID(ServCell ID) | 5位 | 失败的SCell索引 |
| BFR Type | 1位 | 0=有候选波束,1=无候选波束 |
| Candidate Beam Index | 变长 | 候选波束RS索引(如有) |
SR-based BFR(Rel-16):当UE在SpCell上有可用的SR资源时,UE可以先发SR请求PUSCH资源,再在PUSCH上发送BFR MAC CE,避免PRACH竞争。
BFR全过程涉及三条定时器的级联守护,每条定时器的超时都意味着不同的后果:
flowchart TD
subgraph 阶段1[阶段1: BFD检测]
T1[beamFailureDetectionTimer<br/>pbfd1~pbfd10]
end
subgraph 阶段2[阶段2: BFR请求]
T2[beamFailureRecoveryTimer<br/>ms10~ms200]
T3[ra-ResponseWindow<br/>sl1~sl80]
end
subgraph 阶段3[失败处理]
T4[RLF→RRC重建]
end
T1 -->|超时→重置计数器| T1
T1 -->|BFI达MaxCount| T2
T2 -->|收到C-RNTI PDCCH| 成功[BFR成功]
T2 -->|超时| 重试{重试<preambleTransMax?}
重试 -->|是| T2
重试 -->|否| T4
T3 -->|超时| 重试
定时器参数配置博弈表:
| 参数组合 | 场景 | 优势 | 风险 |
|---|---|---|---|
| MaxCount=n1 + Timer=pbfd10 | URLLC超低时延 | 检测最快(单次BFI即触发) | 误触发概率最高 |
| MaxCount=n10 + Timer=pbfd1 | 高速移动/频繁遮挡 | 累积窗口大,稳健 | 检测时延最长 |
| BFRTimer=ms10 + preambleTransMax=n3 | 稳定信道 | 快速判定失败 | 重试机会少 |
| BFRTimer=ms200 + preambleTransMax=n20 | 恶劣覆盖 | 充分重试机会 | 总失败时延可能达数秒 |
关键定时器交互:
1. beamFailureDetectionTimer超时→重置BFI_COUNTER,防止历史BFI无限累积
2. beamFailureRecoveryTimer启动点:PRACH Msg1发送时刻
3. ra-ResponseWindow嵌套在beamFailureRecoveryTimer内,单次RAR窗口失败后功率攀升重试
4. 所有重试耗尽后→声明RLF→触发RRC重建
L1日志关键事件:
| 日志事件 | 含义 |
|---|---|
BFI_INDICATION |
PHY层向MAC发送BFI指示 |
BEAM_FAILURE_DETECTED |
BFI_COUNTER达到MaxCount |
CANDIDATE_BEAM_FOUND (SSB/CSI-RS idx=xx) |
候选波束搜索结果 |
BFR_PRACH_TX (preamble=xx, RO=xx) |
BFRQ PRACH发送 |
BFR_RESPONSE (C-RNTI DCI) |
gNB响应 |
RRC日志:关注BeamFailureRecoveryConfig的完整配置,特别是recoverySearchSpaceId是否正确指向新波束的CORESET。
| 故障现象 | 可能原因 | 排查方向 |
|---|---|---|
| BFI计数器到顶但未触发BFR | beamFailureDetectionTimer配置过短,计数器被反复重置 |
检查Timer值与BFI到达间隔的关系 |
| BFRQ发送后无响应 | recoverySearchSpaceId配置错误或gNB未在正确波束上响应 |
检查搜索空间配置和gNB日志 |
| 反复触发BFR | Q_out门限过高或候选波束质量不足 | 检查Q_out/Q_in配置和候选波束RSRP |
| SCell BFR MAC CE被丢弃 | SpCell上行资源不足或SR配置缺失 | 检查SR资源配置和PUSCH调度 |
| CFRA→CBRA意外回退 | 候选波束未配置专用前导码或前导码已失效 | 检查ra-PreambleIndex配置 |
| ## 九、Rel-17/18增强特性 |
| 特性 | 版本 | 说明 |
|---|---|---|
| 无候选波束的CBRA回退 | Rel-17 | 当所有候选波束均不满足Q_in时,允许在任意可用SSB上发起CBRA |
| 多TRP BFR | Rel-17/18 | 每个TRP独立检测波束失败,支持per-TRP恢复 |
| NTN BFR适配 | Rel-17/18 | 针对卫星场景的大RTT调整BFR定时器 |
| L1/L2移动性集成 | Rel-18 | BFR与L1/L2切换流程整合,实现更快的小区级恢复 |
| RedCap BFR简化 | Rel-18 | 针对Reduced Capability设备的简化BFR过程 |
| 特性 | BFR | RLF | RRC重建 |
|---|---|---|---|
| 触发级别 | 波束级 | 链路级 | 连接级 |
| 恢复主体 | UE自主(PHY/MAC) | UE+网络协同 | 网络控制 |
| 典型时延 | 10~50ms | 200~500ms | 500ms~数秒 |
| 上下文保持 | 完全保持 | 保持(AS上下文保留) | 部分保持(需AMF参与) |
| RRC状态 | CONNECTED不变 | 先进入短暂异常 | 重建后恢复CONNECTED |
| 适用频段 | FR2(波束赋形) | FR1/FR2均适用 | FR1/FR2均适用 |
Q1: BFD为什么使用假设BLER而不是直接用L1-RSRP作为判决条件?
A: 假设BLER综合了信号强度、干扰水平和信道估计精度三个维度,比单纯的RSRP更准确地反映PDCCH实际接收可靠性。在小区边缘或强干扰场景下,RSRP可能仍然较高但干扰导致PDCCH无法解调,此时假设BLER能正确触发BFD而RSRP门限不能。
Q2: CFRA和CBRA模式在BFR中如何选择?
A: 这不是UE的运行时选择,而是由网络RRC配置决定的。如果candidateBeamRSList中为某个候选波束配置了ra-PreambleIndex(0~63有效值),则该波束使用CFRA;如果未配置或配置无效,UE自动回退到CBRA。实际网络中,运营商通常为SSB候选波束预配置CFRA资源以保证恢复速度。
Q3: beamFailureDetectionTimer和beamFailureRecoveryTimer有什么区别?
A: 这是两个完全不同阶段的定时器。beamFailureDetectionTimer用于BFD阶段,控制BFI计数器的累积窗口——超时后计数器归零,防止历史BFI影响当前判断。beamFailureRecoveryTimer用于BFR阶段,从UE发送PRACH Msg1开始计时,控制gNB响应的等待窗口——超时未收到响应则重试或声明失败。
Q4: SCell波束失败为什么不直接用PRACH恢复?
A: 因为SCell可能只配置了下行载波而没有上行载波(某些CA场景),或者SCell的上行PRACH资源不可用。因此Rel-16选择通过SpCell上的MAC CE上报SCell的波束失败信息,由gNB统一决策恢复方案(如重配SCell的波束或触发SCell切换)。
Q5: BFR成功后UE如何知道新波束的PDCCH配置?
A: BFR成功后,UE在recoverySearchSpaceId指定的搜索空间上继续监测PDCCH。由于gNB已通过BFRQ PRACH获知UE选择了哪个候选波束,gNB会在新波束对应的CORESET/搜索空间上发送后续PDCCH。如果需要更新TCI状态或CORESET配置,gNB会通过MAC CE(TCI State Indication for UE-specific PDCCH MAC CE)或RRC重配置信令完成。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
