首页 › deep-tech › 随机接入:敲开基站的大门

随机接入:敲开基站的大门

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

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


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

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

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

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

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)两种。最典型、也最能体现设计思想的是四步竞争接入。下面我们用一张时序图把它完整还原。

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 里装了三样关键东西:

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

Msg3:首条调度上行消息(UE → gNB)

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

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

Msg4:竞争解决(gNB → UE)

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

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


三、前导码的玄机:为什么用 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 会用同一块上行资源同时发数据,造成上行冲突,谁也收不好。

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),把流程压缩到极致:

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 — 经典通信教学站,图解 ZC 序列与前导码检测原理,权威且详实。
  2. Cafetele - 5G RACH Procedure (4-Step and 2-Step) — 含交互式仿真,直观对比四步与两步接入流程。
  3. RF Wireless World - 5G NR PRACH Explained — 详解 PRACH 物理层结构、前导码格式与处理过程。
  4. A Primer on Zadoff-Chu Sequences (arXiv) — Zadoff-Chu 序列的数学基础与循环移位原理,适合深入理解前导码设计。
  5. 博客园 - 5G NR 随机接入 RACH 流程 — 中文详解 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学通信知识星球海报-扫码加入