<!-- title: 随机接入：敲开基站的大门 -->

# 随机接入：敲开基站的大门

你走进一座陌生的写字楼，要拜访某家公司。门禁紧锁，你必须先在门口按一下对讲机，报上姓名，保安核实后开门放你进去，再告诉你走哪部电梯、到几楼。在 5G 网络里，这个"按对讲机、报身份、拿到通行证"的过程，就叫**随机接入（Random Access，RACH）**。

这是终端（UE）与基站（gNB）之间一切正式通信的起点。开机注册要接入、切换到新小区要接入、从浅睡眠态（RRC_INACTIVE）醒来要接入、上行失步要重新同步也要接入。可以说，**随机接入是所有移动性管理的第一道门**。本文就从"为什么需要它"讲起，把四步接入、前导码（preamble）的本质、竞争解决的玄机，以及 5G 新引入的两步接入，一次性讲透。

---

## 一、为什么需要随机接入：上行同步的难题

要理解随机接入，先得理解一个根本矛盾：**下行容易同步，上行难以同步**。

基站下行发射时，所有 UE 接收的是同一个时钟源——基站本身。无论你在小区的哪个位置，你只要锁定基站下发的同步信号（PSS/SSS），就能对齐到基站的"节拍"。这个过程叫**下行同步**，是一次单向广播，不需要 UE 主动做任何事。

但上行完全是另一回事。不同 UE 离基站远近不同，信号到达基站的时间差可能达到几十甚至上百微秒。在 OFDM 系统里，一个 OFDM 符号的子载波间隔假设是 30 kHz，对应的符号长度只有约 33 微秒。如果两个 UE 的上行信号到达基站相差几十微秒，就会破坏子载波之间的正交性，产生严重的**符号间干扰（ISI）**和**子载波间干扰（ICI）**——整个上行信道直接乱套。

```mermaid
flowchart LR
    subgraph 下行["下行同步（简单）"]
        A1["gNB 广播 SS/PBCH"] -->|单一时钟| A2["所有 UE 锁定节拍"]
    end
    subgraph 上行["上行同步（困难）"]
        B1["UE1 近"] --> B4["gNB 接收"]
        B2["UE2 中"] -->|时延不同| B4
        B3["UE3 远"] -->|时延更大| B4
        B4 --> B5{"正交性被破坏?<br/>必须校准 TA"}
    end
    style A5 fill:#d4edda
    style B5 fill:#f8d7da
```

为了解决这个问题，基站必须给每个 UE 单独算一个"提前量"——**时间提前量（Timing Advance，TA）**。距离越远的 UE，越要提前发送，这样信号才能"踩准点"到达基站，仿佛所有 UE 都在基站门口排队一样整齐。

问题来了：**基站要算 TA，就得先收到 UE 的信号；但 UE 要发信号，又得先知道 TA**。这就是典型的"鸡生蛋"问题。随机接入，就是为了打破这个死循环而设计的"破冰仪式"——UE 先用一个**不需要精确同步**的特殊信号（前导码）粗略地敲一下门，基站据此估算 TA，再告诉 UE 该提前多少。从此上行同步建立，后续通信才能正常进行。

理解了这一点，你就能明白随机接入的四个核心使命：

1. **建立上行同步**（拿到 TA）；
2. **请求接入**（告诉基站"我要上线"）；
3. **完成竞争解决**（多人同时敲门时，分清楚谁是谁）；
4. **建立/恢复信令连接**（为后续的 RRC 消息铺路）。

---

## 二、四步接入：一次完整的"敲门仪式"

5G NR 的随机接入分为**基于竞争（CBRA）**和**无竞争（CFRA）**两种。最典型、也最能体现设计思想的是**四步竞争接入**。下面我们用一张时序图把它完整还原。

```mermaid
sequenceDiagram
    participant UE as UE（终端）
    participant gNB as gNB（基站）
    Note over UE,gNB: ① UE 还没有上行同步
    UE->>gNB: Msg1：随机选择一个 Preamble<br/>（在 PRACH 上发送）
    Note over gNB: gNB 检测前导码<br/>估算上行到达时延 → 计算 TA
    gNB->>UE: Msg2：RAR（随机接入响应）<br/>携带 TA、UL Grant、临时 C-RNTI<br/>（用 RA-RNTI 加扰调度）
    Note over UE: UE 按 TA 提前发送，初步同步
    UE->>gNB: Msg3：首条调度的上行消息<br/>（如 RRC Setup Request，含 UE 身份）
    Note over gNB: gNB 用 UE 身份区分<br/>碰撞的多个 UE，选出"赢家"
    gNB->>UE: Msg4：竞争解决<br/>回显 UE 身份<br/>（用临时 C-RNTI 加扰）
    Note over UE: 核对身份一致 → 接入成功<br/>临时 C-RNTI 升级为正式 C-RNTI
```

### Msg1：发前导码（UE → gNB）

UE 从小区配置的 **64 个前导码**（preamble）中**随机**选一个，在 PRACH（物理随机接入信道）上发出去。这一步的关键词是"随机"——正因为是随机选的，才可能和别的 UE 撞车，这就是"竞争"的由来。

前导码的特殊之处在于：它**不需要精确的上行同步也能被基站正确检测**。基站只要在前导码的"检测窗口"里收到能量的相关峰，就能算出 UE 的大致时延（也就是 TA 的初始值）。这正是前导码要承担"破冰"任务的原因。

UE 发完 Msg1 后，会计算一个 **RA-RNTI**，用来监听随后的响应。这个计算公式很有意思，它把"我在哪个时间、哪个频率发的"编码进去：

$$
\text{RA-RNTI} = 1 + s_{id} + 14\,t_{id} + 14 \times 80\,f_{id} + 14 \times 80 \times 8\,ul_{carrier\_id}
$$

其中 $s_{id}$ 是 PRACH 的 OFDM 符号索引，$t_{id}$ 是时隙索引，$f_{id}$ 是频域索引，$ul_{carrier\_id}$ 区分普通上行还是补充上行（SUL）。这样，基站回 RAR 时用 RA-RNTI 加扰，UE 一看"这就是回复我的"，就能精准锁定。

### Msg2：随机接入响应 RAR（gNB → UE）

基站在 PDCCH 上用 RA-RNTI 加扰一条 DCI，调度 PDSCH 上的 **RAR（Random Access Response）**。RAR 里装了三样关键东西：

- **Timing Advance（TA）**：告诉 UE 该提前多少发送；
- **UL Grant（上行授权）**：给 UE 分配一小块上行资源，用来发 Msg3；
- **临时 C-RNTI**：一个临时身份，后续 Msg3/Msg4 用它加扰。

⚠️ **一个关键陷阱**：如果 Msg1 有多个 UE 撞了同一个前导码，它们都会收到**同一条** RAR，因为基站只认前导码编号（RAPID），不知道具体是哪个 UE。也就是说，撞车的 UE 此刻还蒙在鼓里，会拿着相同的 UL Grant 和相同的临时 C-RNTI 继续往下走。竞争解决，必须等到 Msg3/Msg4。

### Msg3：首条调度上行消息（UE → gNB）

UE 拿着 Msg2 给的 TA 和 UL Grant，在 PUSCH 上发出第一条"正经"上行消息。**Msg3 的核心作用是亮明 UE 真正的身份**：

- 如果是**初始接入**（UE 处于 RRC_IDLE），Msg3 携带的是一条 CCCH 消息，比如 `RRCSetupRequest`，里面带一个 UE 标识（如 5G-S-TMSI 或随机数）；
- 如果 UE **已经连接**（如切换、失步恢复），Msg3 直接带它原有的 **C-RNTI**。

正是 Msg3 这个"独一无二的身份"，让基站第一次有机会把撞车的 UE 区分开。

### Msg4：竞争解决（gNB → UE）

基站从 Msg3 的多个碰撞 UE 里**只选一个**作为赢家，在 Msg4 里**回显**这个赢家的身份（竞争解决标识）。UE 收到 Msg4 后，核对自己在 Msg3 里发的身份：

- **对得上** → 你赢了！接入成功，临时 C-RNTI 升格为正式 C-RNTI；
- **对不上** → 你输了，有人抢先。回退（backoff）等待一段时间，从 Msg1 重新来过。

到这一步，竞争尘埃落定，上行同步建立，终端正式"进门"。

---

## 三、前导码的玄机：为什么用 Zadoff-Chu 序列

前导码不是随便选的一段波形，它的设计凝聚了深刻的通信原理。5G（和 4G 一样）的前导码基于 **Zadoff-Chu（ZC）序列**生成。要理解为什么，先看它的几个"超能力"：

$$
x_u(n) = e^{-j\pi\,u\,n(n+1)/L}, \quad n = 0,1,\dots,L-1
$$

其中 $u$ 是"根序列索引"（root sequence index），$L$ 是序列长度。

**① 恒幅、零自相关**。ZC 序列在时域和频域都是恒幅的，且与自身的循环移位版本正交。这意味着：基站用本地副本和接收信号做"相关检测"，只有当 UE 发的前导码和基站副本完全对齐时，才出现一个尖锐的**相关峰**；偏一点就几乎没有响应。这种"针尖式"的峰，让基站能精确测出 UE 的传播时延（TA）。

**② 低 PAPR**。恒幅特性意味着峰均比低，UE 用功率放大器发送时效率高、不伤功放——这对上行尤其重要。

**③ 一个根序列"派生"出多个前导码**。通过对 ZC 序列做**循环移位（cyclic shift，NCS）**，可以从一个根序列派生出多个互不干扰的前导码。这就像一根橡皮筋，每旋转一个角度就得到一个新"花纹"，而每个花纹都能被单独识别。

这里就引出了网络规划中一个真实存在的工程问题：**64 个前导码怎么凑出来？**

一个根序列通过循环移位能派生的前导码数量为：

$$
N_{preamble} = \left\lfloor \frac{L_{RA}}{N_{CS}} \right\lfloor
$$

其中 $L_{RA}$ 是序列长度，$N_{CS}$ 是循环移位量。这里有一个**鱼和熊掌的权衡**：

| 调整方向 | 对小区半径的支持 | 单根序列派生前导码数 | 需要的根序列数 | 规划难度 |
|---|---|---|---|---|
| $N_{CS}$ **增大** | 支持**更大**小区（时延容忍度高） | **减少**（每根派的少） | **增多** | **升高**（邻区易撞） |
| $N_{CS}$ **减小** | 仅支持**较小**小区 | **增多**（每根派的多） | **减少** | **降低** |

为什么 NCS 大能支持更大小区？因为更大的循环移位意味着能容忍更大的传播时延差——时延差超过一个 NCS 对应的时间，前导码就会"溢出"到相邻的检测窗口里造成误判。所以**大覆盖（如农村宏站）必须配大 NCS，每根序列派的前导码变少，凑齐 64 个就要用多根序列**。这时候相邻小区的"根序列索引"必须错开规划（root sequence index planning），否则两个小区用了重叠的根序列，前导码就会跨区误触发，造成误接入。这是无线网络优化（网优）工程师在开站时实实在在要做的事情。

5G 还区分**长前导码**和**短前导码**两套格式：

| 类型 | 序列长度 | 典型子载波间隔 | 适用场景 |
|---|---|---|---|
| **长前导码** | 839 | 1.25 / 5 kHz | FR1 大覆盖、农村、海面，支持数十至上百公里 |
| **短前导码** | 139 | 30 / 60 / 120 kHz | FR1/FR2 高速、低时延场景，接入更快 |

短前导码时长更短，处理时延低，更契合 5G 对低时延的追求；长前导码则保留了 4G 的传统，用于广覆盖。

---

## 四、竞争解决：四步接入的灵魂

很多人能背下 Msg1~Msg4，却不真正理解**为什么必须是四步**。答案藏在"竞争解决"里。

假设去掉 Msg3/Msg4，只保留 Msg1/Msg2 行不行？不行。因为 Msg1 的前导码是 64 选 1，当多个 UE 同时选中同一个前导码（碰撞），基站在 Msg2 里无法分辨它们——它只回了一条 RAR，带着同一个 UL Grant 和同一个临时 C-RNTI。如果就此放行，这些撞车的 UE 会用同一块上行资源同时发数据，造成**上行冲突**，谁也收不好。

```mermaid
flowchart TD
    M1["Msg1：3个UE都选了preamble #7<br/>（碰撞发生）"] --> M2["Msg2：基站只回一条RAR<br/>（含相同UL Grant + 相同临时C-RNTI）"]
    M2 --> M3["Msg3：3个UE各自亮明<br/>真实身份（5G-S-TMSI/C-RNTI）"]
    M3 --> DEC{"gNB 比对身份"}
    DEC -->|只选1个赢家| M4["Msg4：回映赢家身份"]
    M4 --> W1["赢家：身份对得上→升级C-RNTI→接入成功"]
    M4 --> L1["输家：身份对不上→回退backoff→重新Msg1"]
    style W1 fill:#d4edda
    style L1 fill:#f8d7da
```

所以协议的设计逻辑是：**用 Msg3 里的"独有身份"把碰撞的 UE 分开，用 Msg4 的"回映机制"宣布唯一赢家**。输家收到不一致的身份，自动回退重试。这其实是用一次"确认往返"来消化随机选择带来的不确定性——四步不是冗余，而是**竞争解决的最低成本**。

理解了这一点，你就能秒懂**无竞争随机接入（CFRA）为什么只需两步**：当基站**主动**、**独占**地给某个 UE 指定一个专用前导码（dedicated preamble），就根本不存在碰撞的可能——这个前导码只有它一个人能用。没有碰撞，就无需竞争解决，Msg3/Msg4 可以省略，只剩 Msg1/Msg2。切换场景下的接入就常用 CFRA，目标基站通过切换命令给 UE 派发专用前导码，实现快速、零冲突接入。

| 对比维度 | CBRA（基于竞争） | CFRA（无竞争） |
|---|---|---|
| 前导码来源 | UE **随机选** | 基站**专用分配** |
| 是否可能碰撞 | **是** | **否** |
| 步数 | 四步（Msg1~4） | 两步（Msg1~2） |
| 典型场景 | 初始接入、RRC 恢复、上行失步恢复 | **切换**（专用前导码） |
| 时延 | 较高 | 较低 |

---

## 五、功率爬升：敲门敲不响就使劲敲

UE 发 Msg1 时不知道该用多大功率，于是从**初始前导码目标功率**开始发。如果基站在规定时间内没回 RAR（可能是功率太小、信号太弱、或前导码撞车输给了别人），UE 不会干等，而是**逐次提高发射功率重发**，直到功率达到上限或重试次数耗尽。这叫**功率爬升（power ramping）**：

$$
P_{PRACH} = \min\Big(P_{max},\; P_{target} + \Delta_{PREAMBLE} + (N-1)\cdot \text{powerRampingStep}\Big)
$$

其中 $N$ 是前导码发送次数。每次重发功率抬升 `powerRampingStep`（通常 2~4 dB）。这是一种"先轻后重"的策略：先用小功率避免干扰别人，敲不响再逐步加力。网优里常说的 **RRC 连接建立失败（radio link fail / RACH fail）**，很多时候就和功率爬升到顶仍无响应有关——可能是覆盖盲区、也可能是 PRACH 资源拥塞。

---

## 六、两步接入：5G 的提速革命

四步接入要四个往返，时延偏高。5G Release 16 引入了**两步随机接入（2-step RACH）**，把流程压缩到极致：

```mermaid
sequenceDiagram
    participant UE
    participant gNB
    UE->>gNB: MsgA：Preamble + 载荷（RRC请求/小数据）<br/>（合并四步的 Msg1+Msg3）
    alt 基站成功解码
        gNB->>UE: MsgB（成功）：含TA、竞争解决、C-RNTI
        Note over UE: 接入完成！（合并四步的 Msg2+Msg4）
    else 基站未解码/冲突
        gNB->>UE: MsgB（fallback）：指示回退
        Note over UE: 回退到四步RACH的Msg3/Msg4
    end
```

| 步骤 | 四步 RACH | 两步 RACH |
|---|---|---|
| 第 1 步 | Msg1（仅前导码） | **MsgA（前导码 + 载荷）** |
| 第 2 步 | Msg2（RAR） | **MsgB（成功响应 / 回退指示）** |
| 第 3 步 | Msg3（上行身份） | 成功时**省略** |
| 第 4 步 | Msg4（竞争解决） | 成功时**省略** |

两步接入的核心思想是**"乐观并发"**：UE 默认"我大概率能接进来"，于是一次性把前导码和首条上行载荷（如 RRC 请求甚至小包数据）一起发出去（MsgA）。如果基站成功解码并回 MsgB（成功），整个接入一两步搞定，时延大幅下降；如果失败，MsgB 给一个回退指示，UE 退回到四步流程的 Msg3/Msg4 继续，**不会因为乐观而牺牲可靠性**。

两步接入特别适合：**小数据传输（SDT）**、**URLLC 低时延**、**非授权频谱（NR-U）**、以及**覆盖增强**场景。它的价值在于：在不增加失败风险的前提下，把"敲门—报身份—拿通行证"三件事打包成一次往返，让接入更快、更省电。

---

## 七、实战连接：调试中你会遇到它

理解随机接入原理，在现网调测中非常实用：

1. **排查"无法驻留/无法注册"**：终端开机后第一件事就是随机接入。如果抓包看到反复重发 Msg1 却收不到 Msg2，重点查覆盖（RSRP/RSRQ）、PRACH 配置、功率参数和是否存在上行干扰。这是最常见的"开不了机就接入失败"问题。

2. **切换失败定位**：目标小区的随机接入（多为 CFRA）失败，会直接导致切换失败。需检查切换命令里是否正确下发了专用前导码、目标小区 PRACH 资源是否正常。理解"专用前导码 → 无竞争 → 两步接入"的逻辑，能帮你快速锁定是规划问题还是信令问题。

3. **根序列规划导致的伪接入**：相邻小区根序列索引规划重复，会导致前导码跨区误触发，表现为接入成功率异常波动、掉话。这是典型的"参数规划"而非"覆盖"问题，不懂前导码派生原理的话很难想到根上。

4. **容量瓶颈分析**：一个小区只有 64 个前导码，按 PRACH 周期换算就是单位时间内最多能支持的接入尝试数。高密度场景（如体育场、车站）海量用户同时开机，前导码会成为**接入容量的硬瓶颈**，需要加密 PRACH 时机或分流到多载波。

---

## 常见问题

**Q1：四步接入和两步接入，现网到底用哪个？**

A：由网络和 UE 能力共同决定。网络会广播是否支持两步接入及对应的 RACH 资源。当条件具备（信道较好、UE 支持、网络开启）时优先两步；若 MsgA 发送后基站无法解码，会自动回退到四步。对工程师而言，关键是知道**两步不是取代四步，而是叠加在四步之上的提速选项**，且最终都以四步为可靠兜底。

**Q2：为什么前导码偏偏选 64 个？**

A：这是一个工程折中：太少（如 8 个）则高负载下碰撞概率飙升，接入时延剧增；太多（如 256 个）则需要占用更多根序列、更多 PRACH 资源，挤占上行带宽。64 这个值在碰撞概率、接入容量、资源开销之间取得了平衡，沿袭自 4G LTE 并在 5G 中保留。配合合理的 PRACH 周期配置，足以支撑绝大多数场景。

**Q3：RA-RNTI 和 C-RNTI 到底什么区别？**

A：**RA-RNTI** 是"临时通行证"，由 UE 根据"我在何时何频发的前导码"算出来，只用来在 Msg2 阶段接收 RAR，一次接入用完即弃；**C-RNTI** 是"正式工牌"，是 UE 在小区里的唯一无线身份，接入成功后用于后续所有上下行调度加扰。临时 C-RNTI 在 Msg4 成功后会"转正"为 C-RNTI。

**Q4：CFRA 既然无碰撞，为什么不全部用 CFRA？**

A：因为 CFRA 要求基站**预先知道哪个 UE 要接入并给它派专用前导码**。这在切换、RRC 恢复等"网络发起或可预知"的场景可行；但初始接入时 UE 还没和网络建立任何联系，网络无从指派，UE 只能自己随机选——所以初始接入天然只能用 CBRA。CFRA 是"特权通道"，CBRA 是"公共大门"。

**Q5：Msg3 失败了会怎样？**

A：Msg3 发送后，UE 会启动一个竞争解决定时器等 Msg4。若超时未收到 Msg4，或收到的 Msg4 身份对不上，UE 判定本次接入失败，回退后重新从 Msg1 开始（功率爬升）。多次失败超过最大重试次数，则向上层报告接入失败，可能触发 RRC 连接重建或回到空闲态。

---

## 参考来源

1. [ShareTechnote - 5G RACH](https://www.sharetechnote.com/html/5G/5G_RACH.html) — 经典通信教学站，图解 ZC 序列与前导码检测原理，权威且详实。
2. [Cafetele - 5G RACH Procedure (4-Step and 2-Step)](https://www.cafetele.com/5g-rach-procedure/) — 含交互式仿真，直观对比四步与两步接入流程。
3. [RF Wireless World - 5G NR PRACH Explained](https://www.rfwireless-world.com/articles/5g-nr-prach-function-contents-physical-layer-processing) — 详解 PRACH 物理层结构、前导码格式与处理过程。
4. [A Primer on Zadoff-Chu Sequences (arXiv)](https://arxiv.org/html/2211.05702v3) — Zadoff-Chu 序列的数学基础与循环移位原理，适合深入理解前导码设计。
5. [博客园 - 5G NR 随机接入 RACH 流程](https://www.cnblogs.com/qxql2016/p/16826208.html) — 中文详解 Msg1~Msg4 全流程、RA-RNTI 计算与功率控制，贴近工程实践。

---
> 本文由「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)
