<!-- title: 5G NR随机接入RACH深度解读 -->
<!-- domain: ran -->

# 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定义了两个正交的选择轴：

- **4-step RA vs 2-step RA**（R16引入2-step，TS 38.321 §5.1同时支持两种类型）；
- **CBRA（基于竞争）vs CFRA（无竞争）**。

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

```mermaid
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序列。

```mermaid
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四步全流程信令解析

```mermaid
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相同的概率极低），且不需要任何额外信令往返。

---

## 四、失败重传与退避机制（状态机视角）

```mermaid
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成功 --> [*]
```

要点：

- **退避指示（BI）**：gNB在拥塞时通过RAR子头下发BI，UE在[0, BI]间随机取值等待后再发Msg1——这是gNB侧唯一的“RACH拥塞控制”手段；
- **功率爬升**：`PREAMBLE_POWER_RAMPING_COUNTER`随失败递增，发送功率按步进爬升；短前导码格式还需叠加ΔPREAMBLE偏移（TS 38.213第8章）；
- **兜底**：达到`preambleTransMax`后MAC层上报“随机接入问题”，由RRC决定走重建或RLF流程——很多外场“5G掉线”本质上都是这一步。

---

## 五、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层规范）官方页面](https://www.3gpp.org/dynareport/38321.htm) — 第5.1章随机接入过程（CBRA/2-step/CFRA）、RA-RNTI公式、RAR MAC PDU结构
2. [3GPP TS 38.213（物理层控制过程）官方页面](https://www.3gpp.org/dynareport/38213.htm) — 第8章随机接入参数、TA命令粒度、前导码功率
3. [3GPP TS 38.211（物理信道与调制）官方页面](https://www.3gpp.org/dynareport/38211.htm) — §6.3.3 PRACH格式与ZC前导码序列定义
4. [3GPP TS 38.300（NR总体描述）官方页面](https://www.3gpp.org/dynareport/38300.htm) — §9.2.6随机接入触发场景汇总
5. [3GPP TS 38.331（RRC规范）官方页面](https://www.3gpp.org/dynareport/38331.htm) — 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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
