5G NR 在 Release 15 沿用了 LTE 的四步随机接入(4-step RACH,Msg1→Msg2→Msg3→Msg4),但 3GPP 在 Release 16 引入了两步随机接入(2-step RACH)机制,其核心动机并非"步数少一步"这么简单,而是为了解决 5G 网络中三类关键场景的接入瓶颈:毫米波(mmWave)波束失败恢复(BFR)的高时延敏感、小数据传输(SDT)的频繁小包接入开销、以及工业物联网(URLLC)对初始接入时延的极致要求。
在四步 RACH 中,UE 与 gNB 之间需要完成四次空口往返(round trip),其中 Msg1/Msg2 的 preamble 与 RAR 握手主要解决"我在线"与上行同步(TA)问题,Msg3/Msg4 才真正传输身份与竞争解决。这意味着一个完整的接入至少要付出 4 次空口交互的时延代价。而 2-step RACH 将"preamble 握手"与"上行数据载荷传输"合并为一条 MsgA(PRACH preamble + PUSCH payload),将"RAR 响应"与"竞争解决"合并为一条 MsgB,从而将交互轮次压缩到 2 次。
需要强调的是,2-step RACH 并非完全替代 4-step,二者在 5G 网络中长期共存,UE 根据 RRC 配置和实时信道质量(RSRP)在两种过程类型间动态选择。规范层面,2-step RACH 的 MAC 过程定义在 3GPP TS 38.321(MAC 协议规范)Section 5.1 "Random Access procedure",物理层参数定义在 TS 38.213 Section 8,而相关 RRC 配置信元定义在 TS 38.331 的 RACH-ConfigCommonTwoStepRA、MsgA-PUSCH-Config 等信息元素中。
UE 何时选择 2-step、何时选择 4-step,并非 UE 自由决定,而是由 TS 38.321 Section 5.1.2 "Random Access Resource selection" 中定义的判定逻辑严格控制。其核心判据是 msgA-RSRP-Threshold(承载于 RACH-ConfigCommonTwoStepRA 中)。
判定流程如下:UE 首先根据业务触发原因(initial access、RRC re-establishment、handover、BFR、UL non-sync、SDT 等)确定本次 RA 是否被允许使用 2-step。若该触发的 RACH 资源同时配置了 2-step 和 4-step 资源,UE 测量选定 SS/PBCH block(SSB)或 CSI-RS 的 RSRP:当 RSRP ≥ msgA-RSRP-Threshold 时,UE 选择 2-step RACH;否则回退选择 4-step RACH。
这一设计意图非常清晰:2-step RACH 要求 UE 在 MsgA 阶段就一次性把上行数据(包括控制信令或用户数据)发送出去,对上行覆盖有较高要求。如果 RSRP 太低(即 UE 处于小区边缘或深度衰落),MsgA 的 PUSCH 部分极可能解码失败,反而不如先通过 4-step 的低阶 preamble 完成握手再发数据可靠。因此 RSRP 阈值是接入可靠性与时延之间的工程权衡点,由运营商根据小区半径和部署场景(如室内小站 vs 宏站)配置。
stateDiagram-v2
[*] --> 触发RA: 初始接入/BFR/切换/SDT
触发RA --> 选择SSBorCSI-RS: 测量RSRP
选择SSBorCSI-RS --> 检查2-step配置: 该BWP是否配置2-step资源?
检查2-step配置 --> 无2step配置: 选择4-step RACH
检查2step配置 --> 有2step配置: RSRP >= msgA-RSRP-Threshold?
有2step配置 --> 不满足阈值: 选择4-step RACH (Msg1)
有2step配置 --> 满足阈值: 选择2-step RACH (MsgA)
无2step配置 --> [*]
不满足阈值 --> [*]
满足阈值 --> [*]
此外,对于基于非竞争的 2-step CFRA(Contention Free Random Access)——典型场景是切换和 BFR——gNB 会通过专用 RRC 信令(RACH-ConfigDedicatedTwoStepRA)直接为 UE 分配专用 preamble,此时不再受 RSRP 阈值约束,UE 直接走 CFRA 2-step 路径,时延最短。
MsgA 是 2-step RACH 区别于 4-step 的本质所在。一条 MsgA 在物理层上同时占用两个上行信道资源:在 PRACH 上发送 preamble(称为 MsgA PRACH),在 PUSCH 上发送上行载荷(称为 MsgA PUSCH)。这两者并非独立无关联,而是通过规范的映射规则严格绑定。
flowchart TB
subgraph MsgA["MsgA (一条逻辑消息)"]
direction TB
M1["MsgA PRACH (在PRACH上)"] --> M2["MsgA PUSCH (在PUSCH上)"]
end
subgraph PRACH资源["PRACH Occasion (RO)"]
R1["RO 索引<br/>Preamble Index"]
end
subgraph PUSCH资源["PUSCH Occasion (PO)"]
P1["PO 索引<br/>DMRS端口/序列"]
end
M1 -.->|"承载preamble"| R1
M2 -.->|"承载payload"| P1
R1 ==>|"规范定义映射规则<br/>每个preamble ↔ 一个PO+DMRS"| P1
subgraph PUSCH载荷["MsgA PUSCH Payload 内容"]
L1["CCCH SDU<br/>(如RRCSetupRequest) 或"]
L2["MAC CEs / 用户数据(SDT) 或"]
L3["C-RNTI MAC CE(切换/BFR)"]
end
M2 --> PUSCH载荷
这里的关键机制是 RO(PRACH Occasion)与 PO(PUSCH Occasion)之间的关联映射。在 TS 38.331 的 MsgA-PUSCH-Config 中,网络配置了 PRACH 资源与 PUSCH 资源的对应关系:每个 PRACH preamble 索引被映射到一个特定的 PUSCH 时机(PO)和 DMRS 端口/序列组合。gNB 一旦在某个 RO 上检测到某个 preamble,就无需额外信令即可推算出对应的 PO 位置去解码该 UE 的 MsgA PUSCH。这种"preamble 即地址"的设计是 2-step RACH 高效的根本原因。
为了支持 MsgA PUSCH 的传输,preamble 被分为两组:一组专用于 2-step MsgA(每个 preamble 对应一个 PO),另一组预留用于回退(fallback)。RACH-ConfigCommonTwoStepRA 中的 msgA-PUSCH-ResourceGroupA 等参数定义了分组边界,与 4-step 中的 group A/B 思路类似,用于区分载荷大小(小包用 group A,大包/高路径损耗用 group B)。
MsgA PUSCH 携带的载荷内容取决于触发场景:初始接入时携带 CCCH SDU(如 RRCSetupRequest);切换或 BFR 时携带 C-RNTI MAC CE;SDT 场景下则直接携带用户面小数据包。这意味着 UE 在接入的第一步就能把"我想干什么"甚至"我的数据"一次说清。
UE 发送 MsgA 后,会在配置的 MsgB 接收窗口内监听以 MSGB-RNTI(即 2-step RACH 的 RNTI,由 RO 的时间/频率索引计算)加扰的 PDCCH。gNB 收到 MsgA 后的响应分为三种 MAC RAR 子 PDU 类型,这是 2-step RACH 信令设计的精髓。
| MsgB 子 PDU 类型 | 触发条件 | 携带的关键信元 | UE 收到后的动作 |
|---|---|---|---|
| BI(Backoff Indicator)子头 | gNB 限流/过载 | 回退参数 BI | 仅作为窗口参数,UE 暂无成功接入则按 BI 退避 |
| fallbackRAR | preamble 检测成功,但 MsgA PUSCH 解码失败 | RAPID、Timing Advance、UL Grant、TC-RNTI | 回退到 4-step:用 fallbackRAR 的 UL grant 把 MsgA PUSCH 内容作为 Msg3 重传 |
| successRAR | preamble 与 MsgA PUSCH 均成功解码 | RAPID、竞争解决 ID、TA、C-RNTI 或 TC-RNTI、UL Grant、可选 PHR 指示 | 接入成功:竞争解决完成,进入连接态 |
fallbackRAR 的设计是 2-step RACH 工程鲁棒性的关键。考虑到 MsgA PUSCH 比 preamble 更脆弱、更易解码失败,规范没有让 UE 直接判定接入失败并重发 MsgA,而是提供了一个"软着陆"通道:gNB 既然已经检测到 preamble(说明 RO 资源已占用、上行粗同步可行),就干脆回退指示 UE 用传统 Msg3 的方式重传载荷,避免 MsgA 重传带来的时延和资源浪费。fallbackRAR 之后的流程与 4-step 的 Msg3→Msg4 完全等价。
successRAR 则是 2-step RACH 的成功终态。其中竞争解决 ID(Contention Resolution Identity)用于解决多 UE 碰撞——若多个 UE 恰好选了同一 preamble,gNB 在 successRAR 中回显成功 UE 的 ID,其余 UE 据此判定碰撞并重发。successRAR 携带的 TA 完成上行精同步,UL Grant 分配后续 PUSCH 资源,C-RNTI(已有连接)或 TC-RNTI(首次接入)完成 RNTI 分配。至此,一条 MsgA + 一条 MsgB 即完成全部接入。
下面用时序图清晰对比 4-step 与 2-step RACH 的完整信令交互,以及 2-step 的成功路径与 fallback 路径。
sequenceDiagram
participant UE
participant gNB
rect rgb(240,245,255)
Note over UE,gNB: 4-step RACH(传统,4次空口往返)
UE->>gNB: Msg1 (PRACH Preamble)
gNB->>UE: Msg2 (RAR: TA + TC-RNTI + UL Grant)
UE->>gNB: Msg3 (CCCH SDU / C-RNTI MAC CE)
gNB->>UE: Msg4 (竞争解决)
Note over UE,gNB: 接入完成
end
rect rgb(235,255,240)
Note over UE,gNB: 2-step RACH 成功路径(2次往返)
UE->>gNB: MsgA (Preamble@PRACH + Payload@PUSCH)
Note right of UE: RSRP≥msgA-RSRP-Threshold 触发
gNB->>UE: MsgB = successRAR<br/>(竞争解决ID + TA + C-RNTI + UL Grant)
Note over UE,gNB: 接入完成(一步到位)
end
rect rgb(255,245,235)
Note over UE,gNB: 2-step RACH 回退路径(PUSCH解码失败)
UE->>gNB: MsgA (Preamble成功 + PUSCH解码失败)
gNB->>UE: MsgB = fallbackRAR<br/>(RAPID + TA + UL Grant + TC-RNTI)
Note right of gNB: 指示UE回退到Msg3
UE->>gNB: Msg3 (用fallbackRAR的grant重传PUSCH载荷)
gNB->>UE: Msg4 (竞争解决)
Note over UE,gNB: 回退后等价于4-step完成
end
| 对比维度 | 4-step RACH(Type-1) | 2-step RACH(Type-2) |
|---|---|---|
| 3GPP 引入版本 | Rel-15 | Rel-16 |
| 空口交互轮次 | 4 次 | 2 次(理想)/ 3~4 次(回退) |
| 首条上行消息 | Msg1:仅 preamble,无载荷 | MsgA:preamble + PUSCH 载荷 |
| PUSCH 时机 | Msg3 才首次传 PUSCH | MsgA 即传 PUSCH |
| 响应信令 | Msg2(RAR)+ Msg4 | MsgB(successRAR 或 fallbackRAR) |
| 接入时延 | 高 | 低(小小区/良好覆盖下显著) |
| 信令开销 | 较大 | 较小(尤其适配 SDT) |
| 覆盖/鲁棒性要求 | 高(preamble 抗衰能力强) | 较高(MsgA PUSCH 需可靠解码) |
| 触发选择判据 | 默认 / RSRP 低时选用 | RSRP ≥ msgA-RSRP-Threshold 且配置了 2-step 资源 |
| 典型适配场景 | 大小区、边缘覆盖、高碰撞 | mmWave BFR、SDT、URLLC、室内小站、切换 CFRA |
| gNB 检测复杂度 | 低 | 高(联合 preamble+PUSCH 检测、RO/PO 映射) |
| 关键 RRC 配置 | RACH-ConfigCommon | RACH-ConfigCommonTwoStepRA + MsgA-PUSCH-Config |
2-step RACH 的使能与参数全部通过 RRC 下发,工程师在抓包或排查时需重点关注以下信元:
| RRC 信元 | 所在 IE | 作用 |
|---|---|---|
msgA-RSRP-Threshold |
RACH-ConfigCommonTwoStepRA | 2-step/4-step 选择阈值,RSRP≥此值才用 2-step |
msgA-RSRP-ThresholdSSB |
RACH-ConfigCommonTwoStepRA | 选定 SSB 用于 MsgA 的 RSRP 门限 |
msgA-TransMax |
RACH-ConfigCommonTwoStepRA | MsgA 最大传输次数,耗尽后判失败 |
msgA-PreambleReceivedTargetPower |
RACH-ConfigCommonTwoStepRA | MsgA preamble 目标接收功率初值 |
MsgA-PUSCH-Config |
BWP-UplinkCommon → msgA-PUSCH-Config | PO 资源、DMRS、MCS、TPC、RO↔PO 映射 |
msgA-PUSCH-ResourceGroupA |
RACH-ConfigCommonTwoStepRA | preamble 分组边界(小包/大包) |
RACH-ConfigDedicatedTwoStepRA |
SpCellConfig 等 | 专用 CFRA 资源(切换/BFR 无竞争 2-step) |
如何在抓包中识别 2-step RACH:在 Wireshark(配合 MAC/PHY 层解析,如 Amarisoft、srsRAN 或商用基带 log)中,2-step 的特征是 UE 的上行方向上 PRACH preamble 与 PUSCH 在极短时间窗内同时出现(而非先 Msg1 等 RAR 再 Msg3)。下行方向用 MSGB-RNTI 加扰的 PDCCH 调度 MsgB,其 MAC 层 payload 可展开看到 fallbackRAR 或 successRAR 子结构,RAPID 与上行 preamble 一一对应。
常见故障点与排错思路:
频繁出现 fallbackRAR:说明 preamble 检测成功但 MsgA PUSCH 反复解码失败。排查方向:上行干扰(检查 RSSI/底噪抬升)、PO/RO 映射配置是否与 gNB 一致、DMRS 配置、MsgA PUSCH 的 MCS 与发射功率(msgA-PreambleReceivedTargetPower + 功率爬坡)。若大面积 UE fallback,多为网络侧 MsgA-PUSCH-Config 配置错误或上下行 TA 估计偏差过大。
UE 始终不选择 2-step:检查 msgA-RSRP-Threshold 是否配置过高,或当前 BWP/小区根本未配置 RACH-ConfigCommonTwoStepRA,导致 UE 永远走 4-step。也可能是 UE 能力不支持 Rel-16 2-step RACH。
MsgA 重发至 msgA-TransMax 耗尽仍无 MsgB:上行覆盖严重不足或 gNB 未正确监听对应 RO/PO。应核查 RSRP 是否真的满足阈值(边缘 UE 误判)、preamble 功率爬坡是否生效、RO 资源时频位置是否与小区实际配置匹配。
CFRA 2-step(切换/BFR)失败:核查 RACH-ConfigDedicatedTwoStepRA 是否随切换命令正确下发,专用 preamble 与目标小区 PO 资源是否对应。
2-step RACH 的设计哲学可以概括为三点:其一,以"preamble 即上行地址"的 RO/PO 映射,消除 4-step 中 Msg1/Msg2 的握手往返,用一次联合上行传输替代两次串行交互;其二,以 msgA-RSRP-Threshold 实现"好覆盖用快、差覆盖用稳"的自适应类型选择,兼顾时延与可靠性;其三,以 fallbackRAR 提供 2→4 的平滑降级通道,在 MsgA PUSCH 失败时不丢弃已建立的 preamble 同步成果,最大化资源复用。这三点共同使 2-step RACH 成为 5G 应对 mmWave、SDT、URLLC 三大挑战的接入层基石。
Q1:2-step RACH 一定能降低接入时延吗? A:不一定。只有当 UE 处于良好覆盖(RSRP 满足阈值)且 MsgA PUSCH 一次解码成功(收到 successRAR)时,2-step 才真正实现 2 次往返的最低时延。若 MsgA PUSCH 失败触发 fallbackRAR,则退化为 Msg3→Msg4,时延与 4-step 接近甚至更高(多了 MsgA PUSCH 的无效发送)。因此边缘覆盖场景下 4-step 反而更优。
Q2:MsgA 和 Msg3 是什么关系? A:MsgA 的 PUSCH 部分在功能上等价于 4-step 的 Msg3——都是 UE 接入后的第一条上行数据/信令载荷。区别在于 MsgA 把 Msg1(preamble)和 Msg3(payload)合并成一条消息发送,省去了中间 Msg1/Msg2 的握手。正因如此,fallbackRAR 触发后,UE 直接把 MsgA PUSCH 的内容当作 Msg3 重传即可,逻辑无缝衔接。
Q3:fallbackRAR 和 4-step 的 Msg2(RAR)完全一样吗? A:信元结构高度相似(都含 RAPID、TA、UL Grant、TC-RNTI),但承载场景不同。fallbackRAR 出现在 2-step 的 MsgB 窗口内、由 MSGB-RNTI 调度,语义是"你的 MsgA PUSCH 没解出来,请用这个 grant 重传"。收到 fallbackRAR 后,UE 不再重发 MsgA,而是按 4-step 逻辑发 Msg3,后续竞争解决(相当于 Msg4)由 successRAR 或普通竞争解决机制完成。
Q4:为什么 BFR(波束失败恢复)特别需要 2-step CFRA RACH? A:波束失败时 UE 已丢失服务波束,必须尽快在新波束上恢复连接。4-step 需要四次往返,在 mmWave 的苛刻时延下可能触发 RLF(无线链路失败)。2-step CFRA 用专用 preamble 无竞争接入,2 次往返即完成恢复,是 mmWave 波束恢复的关键技术,因此 Rel-16 起 BFR 被设计为优先使用 2-step CFRA。
Q5:小数据传输(SDT)和 2-step RACH 是什么关系? A:SDT(Rel-17 增强)允许 UE 在 RRC_INACTIVE 态直接传小包数据而不进入连接态,2-step RACH 的 MsgA PUSCH 天然适合承载这类小数据——UE 在接入的第一步就把数据发出去。二者结合后,一次 2-step 接入即可完成"接入 + 数据上传",是 IoT/即时消息等小包场景的极致优化组合。
本文由「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 等场景全覆盖。
