首页 › ran › 5G NR随机接入RACH深度解读

5G NR随机接入(RACH)全流程深度解读:TS 38.321 §5.1的CBRA/CFRA机制与信令细节

随机接入(Random Access, RACH)是UE进入5G网络的“第一声呐喊”,也是整个NR空口流程中最容易被低估复杂度的机制。它横跨TS 38.211(PRACH物理层波形)、TS 38.213(随机接入参数与时序)、TS 38.321(MAC层过程)三个规范,任何一个参数配错都会导致“UE发了Msg1却永远收不到Msg2”这类难以定位的现场问题。本文以TS 38.321第5.1章为主线,逐消息拆解竞争随机接入(CBRA)与非竞争随机接入(CFRA)的每个环节,并给出RA-RNTI计算、退避重传逻辑、抓包识别与排错思路。


一、随机接入的触发场景与总体框架

根据TS 38.300第9.2.6节,NR中触发随机接入过程的场景包括:

# 触发场景 典型RA类型 UE状态
1 RRC_IDLE态初始接入 CBRA(4-step) RRC_IDLE
2 RRC连接重建(RRC Re-establishment) CBRA RRC_CONNECTED
3 切换(Handover) CFRA(专用前导码) RRC_CONNECTED
4 gNB下行数据到达但上行失步 CBRA(含C-RNTI MAC CE)或gNB下发PDCCH Order RRC_CONNECTED
5 UE上行数据到达但上行失步 CBRA RRC_CONNECTED
6 从RRC_INACTIVE态恢复 CBRA RRC_INACTIVE
7 请求其他系统信息(on-demand SI) Msg1-based或Msg3-based IDLE/INACTIVE/CONNECTED
8 波束失败恢复(Beam Failure Recovery, BFR) CFRA(SSB/CSI-RS关联的专用前导码) RRC_CONNECTED
9 辅小区激活/SCell添加时的上行同步 CFRA或CBRA RRC_CONNECTED

从机制维度看,NR定义了两个正交的选择轴:

初始接入只能是CBRA;切换和BFR通常走CFRA;2-step主要服务于时延敏感场景(如RRC_INACTIVE小数据传输)。

flowchart TD
    A[UE需要随机接入] --> B{是否拥有专用前导码?}
    B -->|是 rach-ConfigDedicated| C[CFRA 无竞争]
    B -->|否| D[CBRA 基于竞争]
    D --> E{网络是否配置了msgA-ConfigCommon?}
    E -->|是 且RSRP满足msgA-RSRP-Threshold| F[可选 2-step RA]
    E -->|否| G[4-step RA]
    F -->|MsgB携带Fallback RAR| G
    C --> H[Msg1专用前导码]
    F --> I[MsgA = 前导码+PUSCH]
    G --> J[Msg1~Msg4 完整四步]

二、Msg1之前:PRACH资源选择与SSB-RO映射

这是整个随机接入最“物理层”也最容易出错的部分。UE在发送Msg1前,必须完成两级决策(TS 38.321 §5.1.1、§5.1.2):

2.1 SSB选择

UE基于SSB测量RSRP,选择RSRP高于SIB1中rsrp-ThresholdSSB的SSB波束。如果SIB1中配置了多个rach-ConfigCommon(按SSB分组),UE使用所选SSB对应的那套RACH配置。设计意图很明确:让UE在自己“听得最好”的波束方向上发前导码,gNB才能用对应的接收波束收上来——这是波束赋形时代的必然设计,也是LTE RACH没有的复杂度。

2.2 SSB到RO的映射

PRACH Occasion(RO)是时频域上的一片PRACH资源。SIB1中rach-ConfigCommon → rach-ConfigGeneric的关键IE如下:

IE 含义 典型取值示例
prach-ConfigurationIndex 查TS 38.211 §6.3.3.1表格,确定PRACH格式、子帧位置、时域密度 依FR1/FR2和场景而定
msg1-FDM 频域上每个时刻并行的RO数量 1/2/4/8
msg1-FrequencyStart 频域起始RB位置 0~NRB-1
zeroCorrelationZoneConfig 前导码循环移位约束,影响单根ZC序列可支持的候选前导码数 0~15
preambleReceivedTargetPower 初始前导码接收目标功率 -202~-90 dBm(步进2)
preambleTransMax 前导码最大发送次数 n4~n200
ra-ResponseWindow RAR监听窗口长度(以slot为单位) 最大可达80 slot
ssb-perRACH-OccasionAndCB-PreamblesPerSSB 每个RO映射的SSB数N与每SSB竞争前导码数R 如oneEighth→每RO对应8个SSB

映射规则(TS 38.213第8章):在关联周期(association period)内按“先频域、后时域”顺序将RO依次映射给SSB;连续多个关联周期组成关联模式周期(association pattern period),之后从头循环。若某SSB没有获得任何RO(N<1的情况),则该SSB不可用于触发随机接入——UE必须换别的SSB。

2.3 前导码组选择

每个RO承载64个前导码候选。ssb-perRACH-OccasionAndCB-PreamblesPerSSB将这64个候选切分:若配置了Group A/B(ra-Msg3SizeGroupA、messagePowerOffsetGroupB),Msg3(CCCH SDU)尺寸超过门限的UE选Group B前导码(gNB收到后预留更大的Msg3授权),否则用Group A。前导码序列本身由TS 38.211 §6.3.3定义:长格式基于长度839的ZC序列,短格式基于长度139的ZC序列。

flowchart TD
    S[测量各SSB的RSRP] --> T{存在RSRP ≥ rsrp-ThresholdSSB的SSB?}
    T -->|否| U[无法发起RA<br/>等待信号改善]
    T -->|是| V[选出SSB i]
    V --> W[在关联周期内找到映射给SSB i的RO集合]
    W --> X{Msg3尺寸 > ra-Msg3SizeGroupA?}
    X -->|是| Y[选Group B前导码<br/>需满足Group B功率偏移条件]
    X -->|否| Z[选Group A前导码]
    Y --> A1[在RO内以PREAMBLE_INDEX发Msg1<br/>功率 = preambleReceivedTargetPower<br/>+ ΔPREAMBLE + PREAMBLE_POWER_RAMPING_STEP × 计数器-1]
    Z --> A1

三、CBRA四步全流程信令解析

sequenceDiagram
    autonumber
    participant UE
    participant gNB

    Note over UE: 依据SIB1选择SSB/RO/前导码
    UE->>gNB: Msg1: PRACH前导码 (RAPID隐含于时频位置)
    Note over gNB: 检测前导码,计算RA-RNTI与RAPID

    UE->>gNB: 监听PDCCH (RA-RNTI加扰)<br/>窗口 = ra-ResponseWindow
    gNB->>UE: Msg2: MAC RAR (PDCCH DCI 1_0 with RA-RNTI)
    Note over UE: 校验RAPID → 应用TA → 存TC-RNTI

    UE->>gNB: Msg3: PUSCH (TC-RNTI加扰)<br/>CCCH SDU = RRCSetupRequest
    Note over gNB: 解码Msg3,准备竞争裁决

    gNB->>UE: Msg4: PDCCH (TC-RNTI) + PDSCH<br/>Contention Resolution MAC CE (48bit) + RRCSetup
    Note over UE: MAC CE内容 == 自己的CCCH SDU?<br/>是→TC-RNTI转正为C-RNTI,RA成功

3.1 Msg1:前导码发送

Msg1没有MAC层消息体——UE只是在选定的RO上发送选定的前导码序列。gNB通过“在哪个时频资源上检测到哪条序列”就能反推出RAPID(0~63)和RA-RNTI,这就是Msg2寻址的基础。

3.2 Msg2:随机接入响应(RAR)——MAC头结构逐字段解析

RAR是本流程中IE最密集的消息,其MAC PDU结构为:若干MAC子头 + 若干MAC RAR体,一个RAR PDU可同时响应多个前导码(最多携带多个RAPID):

字段 长度 说明
E 1 bit 扩展位,1表示后面还有子头
T 1 bit 0=本子头携带退避指示BI;1=携带RAPID
BI 4 bit 退避指示,索引映射到0~960ms量级的退避时长(精确映射见TS 38.321相应表格)
RAPID 6 bit 前导码ID,与UE所发前导码匹配则继续

每个MAC RAR体固定56 bit(7字节):

字段 长度 说明
Timing Advance Command 12 bit 上行定时提前量,粒度随子载波间隔缩放(TS 38.213 §4.2)
UL Grant 27 bit Msg3资源授权:跳频标志+频域/时域资源分配+MCS(4bit)+TPC(3bit)+CSI请求(1bit)
Temporary C-RNTI 16 bit 临时C-RNTI,Msg3加扰与Msg4寻址都用它

RA-RNTI计算公式(TS 38.321 §5.1.3):

RA-RNTI = 1 + s_id + 14×t_id + 14×80×f_id + 14×80×8×ul_carrier_id

其中:
s_id  = 该RO第一个OFDM符号索引 (0 ≤ s_id < 14)
t_id  = 该RO在系统帧内的第一个slot索引 (0 ≤ t_id < 80)
f_id  = 该RO的频域索引 (0 ≤ f_id < 8)
ul_carrier_id = 0(NUL载波)/ 1(SUL载波)

实例演算:设RO位于某slot的第2个符号(s_id=2)、系统帧内第10个slot(t_id=10)、频域第1个RO(f_id=1)、普通上行载波,则 RA-RNTI = 1 + 2 + 14×10 + 14×80×1 = 1263(十六进制0x04EF)。UE对自己发Msg1的时频位置计算RA-RNTI,再盲检该RNTI加扰的PDCCH——公式两端必须严格一致,这正是排错重点(见第七节)。

3.3 Msg3:调度传输

收到RAPID匹配的RAR后,UE在UL Grant指示的资源上发送Msg3。初始接入时Msg3内容为CCCH SDU(RRCSetupRequest),PUSCH用TC-RNTI加扰。连接态触发(如场景4/5)时,Msg3改为携带C-RNTI MAC CE——此时竞争裁决走“隐式”路径:UE后续直接守候自己C-RNTI加扰的PDCCH,收不到专用调度即视为竞争失败,无需Msg4 MAC CE。此外,Msg3每次HARQ重传都会重启竞争裁决定时器(ra-ContentionResolutionTimer,SIB1配置,以slot为单位)。

3.4 Msg4:竞争解决

gNB用TC-RNTI调度PDSCH,携带UE Contention Resolution Identity MAC CE(48 bit)——内容就是gNB收到的CCCH SDU原文回传。UE逐位比对:一致说明“这条前导码最终是我的”,TC-RNTI升格为C-RNTI,RA成功并继续解析RRCSetup;不一致或定时器超时,则竞争失败。设计意图:48比特回显比对让两个同时撞前导码的UE几乎必然只有一个胜出(两者CCCH SDU相同的概率极低),且不需要任何额外信令往返。


四、失败重传与退避机制(状态机视角)

stateDiagram-v2
    [*] --> 发送Msg1
    发送Msg1 --> 监听RAR窗口 : 前导码已发
    监听RAR窗口 --> 发送Msg3 : 收到RAPID匹配的RAR
    监听RAR窗口 --> 退避重选 : 窗口超时无RAR
    监听RAR窗口 --> 退避重选 : RAPID不匹配
    发送Msg3 --> 监听Msg4 : 每次重传重启定时器
    发送Msg3 --> 失败处理 : 竞争裁决定时器超时
    监听Msg4 --> RA成功 : MAC CE匹配
    监听Msg4 --> 失败处理 : 不匹配或超时
    退避重选 --> 发送Msg1 : 按BI退避0~960ms<br/>功率提升PREAMBLE_POWER_RAMPING_STEP<br/>可重选SSB/前导码
    失败处理 --> 发送Msg1 : 计数 < preambleTransMax
    失败处理 --> RLF : 连续失败达preambleTransMax<br/>触发无线链路失败/重建
    RA成功 --> [*]

要点:


五、CFRA:无竞争随机接入

CFRA的核心是gNB通过RRC专用信令预分配前导码,最典型的是切换流程:gNB在RRCReconfiguration中携带rach-ConfigDedicated → cfra,其中按SSB(或CSI-RS)列出了目标小区可用的PRACH Occasion和前导码ID。UE在目标小区发送专用前导码后,gNB凭唯一的RAPID+RO组合就能锁定“是哪个UE来了”,RAR中的UL Grant直接用于发送RRCReconfigurationComplete(Msg3同时携带C-RNTI MAC CE),全程无竞争、无Msg4回显裁决,切换中断时延因此显著降低。

BFR场景类似:UE检测到波束失败后,在BeamFailureRecoveryConfig指定的候选波束(SSB/CSI-RS)对应的专用前导码资源上发起RA;R16的增强版BFR MAC CE还支持一次上报多个候选波束。另一种特殊CFRA是Msg1-based SI请求:SIB1为on-demand SI分配专用前导码,gNB收到后直接广播对应SI——没有Msg3/Msg4,UE只需在RAR窗口确认即可,最多尝试B次。


六、R16 2-step RACH:MsgA与MsgB

R16在TS 38.321 §5.1引入2-step RA Type:MsgA = PRACH前导码 + MsgA PUSCH(后者资源由msgA-ConfigCommon配置,含时频位置、DM-RS、MCS等),MsgB则承担RAR+竞争解决双重职责。MsgB中存在两种MAC子PDU:success RAR(携带TA、竞争裁决身份等,一步到位)和fallback RAR(指示UE退回4-step流程,沿用其中的TC-RNTI继续Msg3/Msg4)。UE是否选2-step取决于:网络是否配置了msgA、MsgA载荷能否放下、以及RSRP是否超过msgA-RSRP-Threshold。该机制与RRC_INACTIVE小数据传输(R17增强)配合,是降低接入时延与信令开销的关键抓手。


七、实战:抓包识别与故障排查

识别方法:随机接入纯走空口(Uu),NGAP/NG-U完全无感知,因此商用核心网侧抓包看不到它。识别手段有三:①空口嗅探仪(如 Keysight/QXDM类工具)直接解PRACH;②UE侧QXDM/高通LOG中看RA attempt、RAR received事件;③gNB运维台统计PRACH检测数、RAR成功率、Msg3误块率。Wireshark配合专用mac-lte/nr-lte解析器可看到MAC RAR子PDU中的RAPID、TA、TC-RNTI。

典型故障与排错思路:

现象 可能根因 排错抓手
UE发Msg1,始终收不到RAR ①UE与gNB的SIB1中rach-ConfigCommon不一致(尤其msg1-FDM/FrequencyStart),导致双方算出的RA-RNTI不同;②PRACH根序列规划错误;③PRACH受干扰,gNB虚检 比对SIB1实测值与网管配置;核对prach根序列索引;看PRACH干扰底噪
RAR收到,Msg3反复HARQ重传失败 UL Grant资源太小/MCS过高、TA不准(远点用户)、上行覆盖受限 检查ra-Msg3SizeGroupA与Group B使用情况;核对TA命令;查Msg3 BLER统计
Msg4收不到/裁决失败 TC-RNTI冲突罕见;多为Msg3解码错导致gNB回显不匹配 看竞争失败计数器;热点小区关注BI下发频率
突发RACH风暴 信令风暴/小区重建潮;gNB仅能靠BI缓解 观察BI分布与preambleTransMax触顶率
切换失败在目标小区 cfra中专用前导码RO与实际PRACH配置不匹配 比对RRCReconfiguration中cfra与目标小区SIB1

常见问题

Q1: RA-RNTI和Temporary C-RNTI有什么区别? A: RA-RNTI由Msg1占用的时频资源位置通过固定公式算出,用于Msg2(RAR)的PDCCH寻址,同一RO上所有发起接入的UE共享;TC-RNTI是gNB在RAR中分配给UE的临时身份,用于Msg3加扰和Msg4寻址,竞争成功后转正为C-RNTI。

Q2: CBRA和CFRA的区别是什么? A: CBRA中UE随机选前导码,可能多个UE撞码,需要Msg3/Msg4竞争裁决;CFRA中gNB通过rach-ConfigDedicated预分配唯一的前导码+RO组合,天然无竞争,无Msg4回显,典型用于切换和波束失败恢复。

Q3: 4-step和2-step RACH该如何取舍? A: 2-step把前导码和数据合并为MsgA,时延和信令开销更低,但需要更多上行资源预留且覆盖受限;4-step鲁棒性更好、覆盖场景更广。UE只有在网络配置了msgA-ConfigCommon且RSRP超过门限时才允许选2-step,收到fallback RAR时须退回4-step。

Q4: 为什么UE收不到Msg2最常见的原因是msg1-FDM不一致? A: RA-RNTI公式中f_id(频域RO索引)是乘性大系数项(14×80×f_id)。若UE和gNB对频域RO划分理解不同(如msg1-FDM按4配置 vs 实际按2生效),双方算出的RA-RNTI完全不同,gNB发出的RAR永远落不到UE盲检的RNTI上,表现为“gNB明明检测到了前导码,UE却一直超时”。

Q5: Msg1-based和Msg3-based SI请求的区别? A: Msg1-based使用专用前导码请求SI,无需竞争与Msg3,开销最小;Msg3-based使用公共前导码走完整CBRA,在RRCSetupRequest中携带SI请求指示。网络在SIB1中用si-RequestConfig(专用前导码)或si-RequestConfigSUL等决定采用哪种。


参考来源

  1. 3GPP TS 38.321(MAC层规范)官方页面 — 第5.1章随机接入过程(CBRA/2-step/CFRA)、RA-RNTI公式、RAR MAC PDU结构
  2. 3GPP TS 38.213(物理层控制过程)官方页面 — 第8章随机接入参数、TA命令粒度、前导码功率
  3. 3GPP TS 38.211(物理信道与调制)官方页面 — §6.3.3 PRACH格式与ZC前导码序列定义
  4. 3GPP TS 38.300(NR总体描述)官方页面 — §9.2.6随机接入触发场景汇总
  5. 3GPP TS 38.331(RRC规范)官方页面 — SIB1中rach-ConfigCommon、rach-ConfigDedicated、msgA-ConfigCommon等IE定义

注:本文技术细节依据3GPP Rel-15/Rel-16系列规范撰写;因当前会话无法联网抓取,参考来源均为3GPP官网固定规范页,建议读者下载对应版本的正式文本核对具体表格数值(如BI映射表、ra-ContentionResolutionTimer取值)。


本文由「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 等场景全覆盖。

51学通信知识星球海报-扫码加入