随机接入(Random Access Channel, RACH)是5G NR中UE与gNB建立上行同步、获取C-RNTI的唯一入口。传统4-step RACH(Rel-15)需要经历 Msg1(Preamble)→ Msg2(RAR)→ Msg3(PUSCH)→ Msg4(竞争解决)四个步骤,往返两次(2 RTT)才能完成竞争解决。在URLLC(超低时延高可靠通信)、工业物联网、卫星NTN(Non-Terrestrial Networks,长传播时延)等场景下,这套流程的时延开销变得难以接受。
为此,3GPP在Release 16引入了2-step RACH(Type-2 Random Access)机制,其核心思想是把4-step中的 Msg1+Msg3 合并为 MsgA、把 Msg2+Msg4 合并为 MsgB,用一次往返完成接入。该机制在 TS 38.321 §5.1.3(MAC随机接入过程)、TS 38.213 §8(物理层控制过程)、TS 38.331(RRC参数配置) 中完成标准化,并在Rel-17/18中针对NTN、小数据传输SDT、波束失败恢复等场景持续增强。
本文聚焦2-step RACH这一具体机制,从MsgA/MsgB消息结构、RO-PUSCH资源映射、MsgB三种响应(successRAR/fallbackRAR/backoffIndicator)、回退到4-step的衔接几个关键环节展开拆解。
4-step RACH的瓶颈在于:Msg1只发了一个Preamble序列,gNB在Msg2之前完全不知道UE要传什么;而Msg3承载的RRC消息(如RRCSetupRequest、RRCReestablishmentRequest、RRCResumeRequest)其实可以更早发出。2-step RACH的逻辑就是:既然Msg3迟早要发,不如与Msg1一起发。
flowchart TD
subgraph S4["4-step RACH (Rel-15)"]
direction LR
A1["Msg1<br/>Preamble"] --> A2["Msg2<br/>RAR(TA+Grant)"]
A2 --> A3["Msg3<br/>PUSCH(RRC)"]
A3 --> A4["Msg4<br/>竞争解决"]
end
subgraph S2["2-step RACH (Rel-16)"]
direction LR
B1["MsgA<br/>Preamble+PUSCH"] --> B2["MsgB<br/>success/fallback"]
end
S4 -->|"压缩2 RTT -> 1 RTT"| S2
依据TS 38.321 §5.1.1,随机接入可由以下事件触发,其中大部分在Rel-16后同时支持4-step与2-step:
| 事件 | 场景说明 | 2-step是否支持 |
|---|---|---|
| 初始接入(RRC_IDLE→RRC_CONNECTED) | 从同步到发起RRCSetupRequest |
✅ CBRA |
| RRC连接重建 | RRCReestablishmentRequest |
✅ CBRA |
| 切换(Handover) | 目标gNB预分配资源 | ✅ CFRA/CBRA |
| 上行失步时UL/SUL数据到达 | TA失步触发同步 | ✅ CBRA |
| SR失败 / UL失步 | 调度请求失败回退 | ✅ CBRA |
| 波束失败恢复(BFR) | 检测到BFI触发 | ✅ CBRA(R16增强) |
| NTN定时提前调整(Rel-17) | 卫星场景TA预补偿 | ✅ 增强支持 |
UE在发起随机接入前,需在4-step与2-step之间做选择。决定依据是RSRP门限比较,由rsrp-ThresholdMsgA(RRC参数)控制:
flowchart TD
Start["UE有上行数据/信令需求"] --> Check1{RACH资源是否配置了<br/>msgA-PUSCH资源?}
Check1 -->|否| Use4["选择 4-step RACH"]
Check1 -->|是| Check2{RSRP ≥ rsrp-ThresholdMsgA?}
Check2 -->|否| Use4
Check2 -->|是| Use2["选择 2-step RACH"]
Use2 --> BeamCheck{波束CFRA资源可用?}
BeamCheck -->|是| CFRA["CFRA模式2-step"]
BeamCheck -->|否| CBRA["CBRA模式2-step"]
设计意图:2-step RACH的MsgA PUSCH承载实际数据,需要较好的信道条件才能被正确解调。rsrp-ThresholdMsgA相当于一道"准入闸"——只有处于小区中心(高RSRP)的UE才允许使用2-step,否则强制走稳健的4-step。这避免了"边缘UE发MsgA PUSCH失败、白白浪费上行资源"的问题。
MsgA在物理层由两部分组成,共享同一个时频资源单元的关联:
flowchart LR
subgraph MsgA["MsgA 物理资源结构"]
P1["PRACH Preamble<br/>(PRACH Occasion, RO)"] --> P2["PUSCH Payload<br/>(PUSCH Occasion, PO)"]
end
P1 -.->|"1:N 或 1:1 映射"| P2
2-step RACH引入了MsgA-PO(PUSCH Occasion)这一新概念,并把RO与PO绑定起来,其映射在TS 38.213 §8.1中定义:
flowchart TD
RO1["RO #1"] --> PO1["PO #1 (DM-RS组A)"]
RO1 --> PO2["PO #2 (DM-RS组B)"]
RO2["RO #2"] --> PO3["PO #3 (DM-RS组A)"]
RO2 --> PO4["PO #4 (DM-RS组B)"]
RO3["RO #3"] --> PO5["PO #5 ..."]
关键参数配置(RRC层,TS 38.331):
| 参数名 | 含义 | 配置在 |
|---|---|---|
msgA-PreambleIndex |
CFRA专用Preamble索引 | SpCellConfig |
msgA-TransMax |
MsgA最大重传次数 | RACH-ConfigCommonTwoStepRA |
msgA-PUSCH-Resource |
MsgA PUSCH时频资源、MCS、DM-RS | MsgA-PUSCH-Config |
msgA-RSRP-Threshold |
启用2-step的RSRP门限 | RACH-ConfigCommonTwoStepRA |
msgB-ResponseWindow |
等待MsgB的窗口长度 | RACH-ConfigCommonTwoStepRA |
powerRampingStepMsgA |
MsgA功率爬坡步长 | RACH-ConfigCommon |
MsgA PUSCH承载的MAC PDU与4-step Msg3一致,典型内容包括:
- RRCSetupRequest(含UE identity: 39-bit randomValue 或 ng5G-S-TMSI)
- RRCReestablishmentRequest(含C-RNTI、PCI、reestablishmentCause)
- RRCResumeRequest(用于SDT/RRC_INACTIVE状态小数据传输,Rel-16增强重点)
MsgB是2-step RACH的精华所在。gNB收到MsgA后,根据对Preamble和PUSCH的解码情况,给出三种可能的响应。这是理解整个机制的钥匙。
sequenceDiagram
participant UE
participant gNB
Note over UE: RSRP≥门限,选定2-step RACH
UE->>gNB: MsgA (PRACH Preamble + PUSCH Payload)
Note over gNB: gNB解码MsgA
alt 场景A: Preamble✓ 且 PUSCH✓ (解码成功)
gNB-->>UE: MsgB = successRAR<br/>(C-RNTI, TA, 竞争解决, UL Grant)
Note over UE: 接入完成,进入RRC_CONNECTED
else 场景B: Preamble✓ 但 PUSCH✗ (PUSCH解码失败)
gNB-->>UE: MsgB = fallbackRAR<br/>(含Msg3 UL Grant, TC-RNTI)
Note over UE: 回退到4-step流程
UE->>gNB: Msg3 (用fallbackRAR给的Grant重发PUSCH)
gNB-->>UE: Msg4 (竞争解决)
else 场景C: 网络拥塞,无资源响应
gNB-->>UE: MsgB = backoffIndicator
Note over UE: 按BI随机退避后重发MsgA
end
(1)successRAR(成功响应)
这是2-step RACH的理想终态。当gNB同时成功解码了MsgA的Preamble和PUSCH时,用一个MAC子PDU直接完成RAR+竞争解决。其关键字段包括: - UE Contention Resolution Identity:回显UE在MsgA PUSCH中上报的身份(如CCCH SDU的前48 bit),用于UE确认是自己的MsgA被接收——这是竞争解决的核心。 - Timing Advance Command:时间提前量,完成上行同步。 - C-RNTI:分配的小区无线网络临时标识。 - UL Grant:用于后续上行传输的授权。 - TAC(Timing Advance Command)。
successRAR的MAC RAR结构示意如下:
flowchart LR
subgraph MsgB_SUCC["successRAR MAC subPDU"]
R1["RAPID<br/>(Preamble ID回显)"] --> R2["UE Contention<br/>Resolution Identity"]
R2 --> R3["Timing<br/>Advance"]
R3 --> R4["C-RNTI"]
R4 --> R5["UL Grant"]
end
(2)fallbackRAR(回退响应)
当gNB解码Preamble成功但PUSCH失败时——常见于MsgA PUSCH功率不足、信道突发恶化——gNB不浪费已经成功获取的Preamble,而是下发fallbackRAR,把流程"半路接入"到4-step。
fallbackRAR的内容与4-step Msg2(RAR)几乎一致:包含 RAPID、TA、TC-RNTI、Msg3 UL Grant。UE收到后,把刚发的MsgA Preamble视为Msg1,用fallbackRAR中的Grant在Msg3时刻重发PUSCH负载,然后等Msg4完成竞争解决。
这种设计的关键价值:前一次MsgA的Preamble不浪费,已经完成了竞争资源占用,只是PUSCH重传一次。
(3)backoffIndicator(退避指示)
网络拥塞时下发,指示UE在 [0, BI] 范围内随机退避后重传MsgA。这与4-step RACH的BI机制一致。
UE发送MsgA后,在msgB-ResponseWindow窗口内监听PDCCH,用 MSGB-RNTI(而非4-step的RA-RNTI)去加扰DCI。MSGB-RNTI的取值由MsgA所在RO的时频位置决定,使得多个UE可以复用同一搜索空间而各取所需。
从MAC实体状态机看(TS 38.321 §5.1.3),2-step到4-step的回退是同一次RA过程内部的状态迁移,而非重新开始:
stateDiagram-v2
[*] --> RA_Type_Selection
RA_Type_Selection --> RA_Procedure_2step: RSRP≥门限
RA_Type_Selection --> RA_Procedure_4step: RSRP<门限
RA_Procedure_2step --> MsgA_Tx: 选择preamble+PO
MsgA_Tx --> Wait_MsgB: 启动msgB-ResponseWindow
Wait_MsgB --> SUCCESS: 收到successRAR
Wait_MsgB --> FALLBACK: 收到fallbackRAR
Wait_MsgB --> BACKOFF: 收到backoff / 超时
FALLBACK --> Msg3_Tx: 视MsgA preamble为Msg1<br/>用fallbackRAR grant发Msg3
Msg3_Tx --> Wait_Msg4: 启动contentionResolutionTimer
Wait_Msg4 --> SUCCESS: 收到Msg4竞争解决
BACKOFF --> MsgA_Tx: 退避后重发
SUCCESS --> [*]: RA完成
PREAMBLE_POWER_RAMPING_COUNTER)会继续累加,保证重传时的功率提升。2-step RACH同样区分为基于竞争(CBRA)和免竞争(CFRA)两种模式:
| 维度 | 2-step CBRA | 2-step CFRA |
|---|---|---|
| Preamble来源 | UE从竞争池随机选 | gNB专用分配 |
| PO资源 | 从共享PO池按规则映射 | gNB专用分配的PO |
| 竞争解决 | 必须依赖successRAR中的CR Identity | 无竞争,无需解决 |
| 典型场景 | 初始接入、重建、SDT | 切换、波束恢复(专用资源) |
| 时延确定性 | 不确定(可能冲突) | 确定(无冲突) |
注意:2-step CFRA仅用于切换和波束失败恢复这两种gNB能预先为UE分配专用MsgA资源的场景;初始接入只能用CBRA。
使用Wireshark/TShark分析5G NR空口抓包(基于SCF FAPI或MAC/PHY层log)时,2-step RACH的识别要点:
| 观测点 | 2-step特征 | 4-step特征 |
|---|---|---|
| 第一条UL消息 | 同一TTI内含PRACH Preamble + PUSCH | 仅PRACH Preamble |
| RNTI类型(PDCCH DCI) | MSGB-RNTI 加扰 | RA-RNTI 加扰 |
| 响应窗口 | msgB-ResponseWindow |
ra-ResponseWindow |
| 响应内容 | successRAR(含CR Identity)/ fallbackRAR | RAR(仅TA+Grant+TC-RNTI) |
| TShark过滤(MAC层) | mac-lte.rrc_setup_req_in_msga |
mac-lte.msg3 |
TShark实操命令示例:
tshark -r 5g_capture.pcapng -Y "mac-nr && (fapi.dl_info.type == 1)" \
-T fields -e frame.number -e mac-nr.rnti -e mac-nr.rnti_type
通过RNTI类型字段可区分MSGB-RNTI(2-step响应)与RA-RNTI(4-step响应)。
| 故障现象 | 可能原因 | 排查思路 |
|---|---|---|
| UE始终走4-step,不走2-step | rsrp-ThresholdMsgA配置过高;gNB未配置MsgA-PUSCH资源 |
检查SIB1中rach-ConfigCommonTwoStepRA是否下发 |
| MsgA发不出/PO资源找不到 | RO-PO映射配置错误;DM-RS端口冲突 | 核对msgA-PUSCH-Config中的DM-RS图样与PO数量 |
| 频繁收到fallbackRAR | MsgA PUSCH功率不足;MCS过高 | 检查powerRampingStepMsgA、MCS表;增大初始PUSCH功率 |
| MsgB窗口超时无响应 | MSGB-RNTI计算错误;PDCCH搜索空间未配置 | 核对MSGB-RNTI与RO时频位置公式(TS 38.213 §8.2) |
| 回退到Msg3后竞争解决失败 | 多UE preamble碰撞 | 统计同一RO上的preamble冲突率,扩大preamble池 |
| ## 七、Rel-17/18的增强演进 |
2-step RACH在后续版本中持续增强,体现了标准对低时延场景的持续投入:
RRCResumeRequest成为MsgA的高频负载。| 对比维度 | 4-step RACH (Rel-15) | 2-step RACH (Rel-16) |
|---|---|---|
| 步骤数 | 4步(Msg1-4) | 2步(MsgA/MsgB) |
| 往返次数 | 2 RTT | 1 RTT(理想情况) |
| Preamble | Msg1单独发 | MsgA含Preamble+PUSCH |
| 竞争解决 | Msg4(单独) | successRAR内置(或回退Msg4) |
| RNTI(PDCCH) | RA-RNTI / TC-RNTI | MSGB-RNTI / TC-RNTI |
| 适用信道 | 任意RSRP | RSRP≥rsrp-ThresholdMsgA(小区中心) |
| 失败处理 | 退避重发Msg1 | 退避重发MsgA / fallbackRAR→Msg3 |
| 时延(中心UE) | 基准 | 约降低40%-50% |
| 资源开销 | 每UE最小(仅Preamble) | 每UE较大(Preamble+PUSCH) |
| 典型场景 | 边缘UE、拥塞场景 | URLLC、SDT、NTN、小区中心 |
Q1:2-step RACH一定比4-step快吗?
A:不一定。仅当UE处于小区中心(高RSRP、信道好)且gNB能成功解码MsgA PUSCH时,2-step才体现1 RTT的时延优势。若MsgA PUSCH解码失败触发fallbackRAR,则时延反而可能略高于直接走4-step(因为多了MsgA的PUSCH开销)。这也是rsrp-ThresholdMsgA门限存在的根本原因。
Q2:fallbackRAR和successRAR的物理承载有何区别? A:两者都在MsgB PDCCH(MSGB-RNTI加扰)调度的PDSCH中承载,但MAC子PDU结构不同:successRAR内含"UE Contention Resolution Identity + TA + C-RNTI + UL Grant"完成全流程;fallbackRAR仅含"RAPID + TA + TC-RNTI + Msg3 Grant",相当于4-step的Msg2,需要UE继续走Msg3/Msg4。
Q3:为什么初始接入只能用CBRA,而切换可以用CFRA? A:CFRA要求gNB预先为UE分配专用Preamble和PO资源。切换时源gNB可通过Xn接口提前向目标gNB为UE申请专用资源;而初始接入时UE尚无RRC连接,gNB无从为其预分配,只能从竞争池随机选择,因此必须用CBRA。
Q4:MSGB-RNTI和RA-RNTI如何计算? A:两者都基于MsgA/Msg1所在RO的时频位置(symbol index、slot index、frequency index、UL carrier)通过公式计算(详见TS 38.213 §8.2),但2-step RACH使用MSGB-RNTI以保证与4-step监听空间的区分,避免响应混淆。
Q5:2-step RACH在卫星NTN场景有什么特殊价值? A:NTN链路RTT极长(GEO卫星可达~540ms),4-step的2 RTT接入时延超过1秒。2-step RACH压缩为1 RTT,配合Rel-17引入的基于星历的TA预补偿,可使卫星场景的接入时延减半,对卫星物联网/应急通信意义重大。
本文由「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 等场景全覆盖。
