说明:本篇写作时在线检索通道受限,文中技术内容基于《通信原理》与主流 5G NR 教材的通识内容整理,参考来源以经典教材和长期稳定的权威站点为主。
想象你走进一个巨大的礼堂,主持人不认识你,你也不知道自己该坐哪、什么时候能发言。你唯一能做的,是按照约定走到指定位置,举一次手,等主持人看到你、把话筒递给你,你才能说出自己的名字,正式加入会议。
手机开机入网的第一步,几乎就是这个过程。下行方向(基站→手机)其实不需要“举手”:基站不停地在广播信道上喊话(同步信号、系统消息),手机只要听就行。但上行完全不同——基站根本不知道:
所以必须设计一个不需要任何先验信息、任何时刻都可以发起、且不会造成混乱的上行通道——这就是随机接入信道(RACH,Random Access Channel)。“随机”二字,指的是发起时机和所用的前导码由手机自主随机选择,基站事先无从知晓。
顺带一提,本系列此前讲过“定时提前(TA)是拉住上行同步的绳子”——而随机接入,正是基站第一次量出这根绳子长度的地方。Msg2 里下发的 TA,就是这根绳子的初始长度。
随机接入不只是开机用。它至少在这些场景反复出现:
| 触发场景 | 说明 |
|---|---|
| 初始接入 | 开机/飞行模式解除后从空闲态入网 |
| RRC连接重建 | 无线链路失败后重新找回连接 |
| 切换 | 到达新小区后需要取得上行同步 |
| 失步后上行数据到达 | 连接态但TA已失效,有数据要发 |
| 上行失步时被寻呼 | 收到寻呼后回网络“我在” |
| 波束失败恢复 | 所用波束被遮挡后换波束重新报到 |
可以看到,切换能否成功、寻呼响应是否及时,底层都卡在 RACH 上。现网无线侧投诉中“上网慢”“刷不出页面”,相当一部分最终定位到的是 RACH 环节的问题。这是它值得每个无线工程师吃透的原因。
手机在 Msg1 里发送的不是普通数据,而是一段固定的、已知的序列,称为前导码(Preamble)。它要同时满足几个苛刻的条件:
通信理论给出过一个近乎完美的答案——Zadoff–Chu 序列。它的数学形式是:
$$x_u(n) = e^{-j\pi u n(n+1)/N_{ZC}}, \quad n = 0, 1, \dots, N_{ZC}-1$$
其中 $u$ 是根序列索引,$N_{ZC}$ 是序列长度。它有三条对随机接入至关重要的性质:
第 2 条是整个检测机制的灵魂。由于循环移位彼此正交,同一个根序列可以通过取不同的循环移位(循环偏移量,工程参数记作 nCS) 派生出多个互相正交的“暗号”。每个小区从根序列出发,派生出 64 个前导码分配给用户。
为什么是 64 个? 这是一个典型的工程折中:前导码太少,两个用户撞号的概率高,冲突频繁;太多,则需要的根序列和循环移位组合变多,检测器要做的相关运算次数暴增,还要留出循环移位作为保护间隔。64 是“冲突概率可接受、检测复杂度可承受”的平衡点。
基站收到 PRACH 时频资源上的信号后,把它分别与所有候选前导码(根序列 × 循环移位)做相关运算:
$$R_u(\tau) = \sum_{n} r(n) \cdot x_u^{*}(n - \tau)$$
如果某个前导码真的到达了,对应的 $R_u(\tau)$ 会出现一个尖锐的相关峰。这个峰携带两份信息:
flowchart TD
A["PRACH时域接收信号"] --> B["与候选前导码逐一做相关"]
B --> C{"是否存在超门限的相关峰"}
C -->|无峰| D["判定无人接入 继续监听"]
C -->|有峰| E["峰对应的移位编号 给出前导码ID"]
E --> F["峰在时间轴上的偏移 换算环路时延"]
F --> G["生成定时提前 并用RA-RNTI下发响应"]
峰值序号告诉基站“用的是哪个暗号”,峰值位置告诉基站“敲门的人离我多远”——TA 就是从这里第一次量出来的。一次相关检测,同时完成身份识别和距离测量,这正是选择 ZC 序列“为什么这样设计”的深层原因。
前导码不是一个固定长度的东西。5G NR 沿用了长短两族格式:
| 属性 | 长格式前导码 | 短格式前导码 |
|---|---|---|
| 序列长度 | 839 | 139 |
| 子载波间隔 | 1.25 / 5 kHz | 15 / 30 / 60 / 120 kHz |
| 典型适用场景 | 广覆盖大小区、低频段 | 常规宏站、小站、毫米波高频段 |
| 重复次数 | 单次长序列 | 短序列连续重复多次 |
| 波束扫描适配 | 较弱 | 强(可与波束轮扫对齐) |
直观理解:序列越长,时间上铺得越开,能容纳的时延不确定范围越大,所以长格式天然服务大半径小区(山区、海面覆盖);短格式短小灵活,能塞进波束赋形时代的各种上行时隙里,还能重复叠加积累能量。
前导码前面还套了一段循环前缀(CP),作用有二:对抗多径扩展;同时充当“时延不确定保护窗”——只要手机的传播时延落在这个窗口内,基站的相关峰就不会被糊掉。CP 和保护间隔的长度,反过来决定了小区的最大支持半径,这就是根序列与 nCS 规划时反复计算半径的由来。
另外一个工程细节:手机高速移动会产生多普勒频移,让接收序列的“转速”不再严格匹配本地副本,相关峰会分裂、变矮。为此标准设计了受限集(restricted set)前导码——通过限制允许的循环移位,让检测器能对多普勒造成的频偏进行补偿。高铁、沿江沿湖高速场景的根序列规划,必须用受限集,这是现网规划中一个经典易错点。
5G 引入大规模波束赋形后,基站下行不再是全向“广播喇叭”,而是轮流朝各个方向发射同步信号块(SSB,可理解为一束束定向探照灯)。这就带来一个新问题:手机看到了第 3 束灯,怎么让基站知道它是被第 3 束灯照到的?
设计答案非常巧妙:把 PRACH 时频资源位置(RO,RACH Occasion)和前导码编号,与 SSB 编号建立固定映射。手机先测量各 SSB 的参考信号接收功率(RSRP),选最强的一束;再按映射表,在与这束 SSB 绑定的 RO 上、用绑定的那组前导码发送 Msg1。
flowchart TD
A["UE测量各SSB的RSRP"] --> B["选定最强的一束SSB"]
B --> C["查SSB与RO及前导码组的映射关系"]
C --> D["在对应RO上用对应组内随机选一个前导码"]
D --> E["基站收到后反查映射 推断UE面向哪条下行波束"]
E --> F["后续Msg2 Msg4用该波束对准UE发送"]
于是前导码 + 时频位置 = 一份隐式的“我看的是哪盏灯”的登记表,基站无需任何额外信令就能选对下行发射波束。理解了这一点,你就理解了现网排查中的一个重要逻辑:某几个 SSB 对应的 RACH 失败集中偏高,往往指向那几条下行波束方向上有新建遮挡(如广告牌、临时建筑),而不是 RACH 参数本身的问题。
前导码只有 64 个,而用户成千上万,两个手机选到同一个前导码、在同一个 RO 上发送(冲突)在所难免。整套流程的设计核心就是:先快速放行,再事后验明正身。这就是竞争型随机接入(CBRA)的四步握手:
sequenceDiagram
participant UE
participant gNB
Note over UE: 选定SSB对应RO并随机挑一个前导码
UE->>gNB: Msg1 发送PRACH前导码
Note over gNB: 相关检测出前导码ID与时延
gNB->>UE: Msg2 随机接入响应(TA 上行授权 临时标识)
Note over UE: 在响应窗口内监听 收不到则退避重发
UE->>gNB: Msg3 用临时标识加扰 发送唯一身份信息
gNB->>UE: Msg4 竞争解决(回显获胜者身份)
alt 身份被回显
Note over UE: 校验一致 接入成功 临时标识转正
else 身份不是自己
Note over UE: 本轮落败 退避后换前导码重来
end
手机按前述规则选好前导码,在 RO 上发出。发送功率不是一步到位,而是从初始值开始,每失败一轮按固定步长(常见 2 dB)爬升,即功率爬升(Power Ramping)——理由与此前讲过的上行功率控制一脉相承:先礼貌地小声说,听不见再逐渐提高音量,避免远端用户一上来就对近端造成底噪抬升。
基站在检测到前导码后,通过一个由 RA-RNTI 加扰的调度指令下发随机接入响应(RAR)。以 NR 为例,RA-RNTI 由前导码所在的时频位置计算得出:
$$\text{RA-RNTI} = 1 + s_{id} + 14 \times t_{id} + 14 \times 80 \times f_{id} + 14 \times 80 \times 8 \times c_{id}$$
其中 $s_{id}$、$t_{id}$、$f_{id}$ 分别是前导码编号、RO 所在的时间位置和频域位置,$c_{id}$ 区分普通上行与补充上行。
为什么用 RA-RNTI 而不是用户专属标识? 因为此时基站只看见了“某个前导码在某个位置出现过”,完全不知道是哪个手机。RA-RNTI 相当于“第 N 号窗口的取餐叫号”:所有在这个窗口发过 Msg1 的手机都去监听这个号。RAR 中携带四样东西:定时提前量(TA)、上行授权(Msg3 的资源)、临时小区标识(TC-RNTI),以及可能的退避指示。手机必须在响应窗口(可配置,毫秒级)内等到这个响应,等不到就判本轮失败。
拿到授权后,手机用 TC-RNTI 加扰,在 PUSCH 上发送真正的身份信息:初始接入时是注册类身份(如 5G-S-TMSI 或随机值),切换时则是源站分配的原 C-RNTI。这是整条链路上第一次传输“内容”而非“暗号”,因此走了完整的 HARQ 重传保护。
冲突的本质:A 和 B 撞了同一个前导码,基站只检测出“有人敲门”,把同一份 TA 和授权发给了两个人,于是 Msg3 在 PUSCH 上发生了真刀真枪的碰撞(两者叠在一起,通常只有一个能被解出来,或都解不出来)。Msg4 中,基站把 Msg3 里收到的身份原样回显——谁看到自己的名字被点到,谁就是赢家,TC-RNTI 转正为正式 C-RNTI;没被点到名的手机,读取退避指示,随机等待一段时间,换一个前导码从头再来。
为什么要在 Msg4 做回显校验,而不是在 Msg1 就解决冲突? 因为前导码检测只能告诉你“序列出现了”,无法区分"一个人敲了一次"和“两个人同时敲了同一个”。冲突的分辨必须依赖每个用户独一无二的高层身份,而这个身份只有到 Msg3 才首次出现。把仲裁放在最后一环,前面三步就能保持极简、极快。
四步流程虽然稳健,但对“发个小包就走”的场景(传感器上报、心跳包)太重了:一来一回四次空口交互,时延和开销都不划算。两步接入把四步压成两步:
| 对比维度 | 四步接入 | 两步接入 |
|---|---|---|
| 消息构成 | Msg1→Msg2→Msg3→Msg4 | MsgA(前导码+数据捆绑)→ MsgB(响应+竞争解决合一) |
| 交互次数 | 4 次空口往返 | 2 次空口往返 |
| 时延 | 较高 | 显著降低 |
| 适用场景 | 通用、稳健 | 小数据包、时延敏感 |
| 失败回退 | 退避后重试四步 | 可回退为四步继续 |
设计动机一句话概括:把“报到”和“说事”合并成一次发射,把“发号”和“宣布赢家”合并成一次响应。同时保留回退到四步的通路——竞争太激烈或资源不足时退回老路,保证兼容与稳健。
有些场景付不起冲突的代价。典型如切换:手机已经与源站建立了完整连接,源站和目标站之间可以先打好招呼,由目标站指定一个专用前导码。手机到达新小区后直接用这个“专属暗号”敲门:
flowchart TD
subgraph 竞争型CBRA
A1["初始接入"] --> M["自行随机选前导码"]
A2["失步后重建"] --> M
A3["未获专用前导码的切换"] --> M
end
subgraph 免竞争型CFRA
B1["切换前目标站分配专用前导码"] --> N["用指定前导码发起 无需竞争"]
B2["波束失败恢复"] --> N
end
M --> O["走完整四步握手"]
N --> P["基站按号识人 直接下发TA与授权"]
由于前导码与用户一一对应,基站收到即知是谁,Msg3 和 Msg4 的仲裁环节可以整体省略。波束失败恢复同理:手机用专用前导码在新波束上重新报到,快速找回同步。
RACH 成功率是现网核心 KPI 之一。关键调试思维是:不要把 RACH 当成一个黑盒指标,而要按失败发生的“步骤”拆开定位——失败在 Msg1、Msg2、Msg3 还是 Msg4,病因完全不同。
| 失败位置 | 现象 | 常见病因 |
|---|---|---|
| Msg1 未被检测 | 基站根本没收到前导码 | 覆盖弱、PRACH 初始功率偏低、根序列规划冲突、前导码重发次数上限过小 |
| Msg2 未收到 | 手机发了但等不到响应 | 响应窗口配置不当、下行覆盖问题、同频段上行干扰淹没了 PRACH |
| Msg3 解码失败 | 授权给了但数据收不回 | 授权资源过小、调制阶数过高、干扰导致 HARQ 屡败 |
| Msg4 身份不符 | 冲突持续增多 | 前导码资源不足、高话务小区撞号率上升 |
flowchart TD
A["RACH成功率下降"] --> B{"按步骤拆分定位"}
B -->|Msg1层失败| C["查覆盖与PRACH功率 重规划根序列"]
B -->|Msg2层失败| D["查响应窗口与下行覆盖 查上行干扰"]
B -->|Msg3层失败| E["查授权资源与干扰 检查HARQ重传"]
B -->|Msg4层失败| F["扩前导码资源 分析话务与冲突率"]
C --> G["回归验证成功率与时延两项指标"]
D --> G
E --> G
F --> G
三个最常见的误解与陷阱:
最后把整个流程放回全局视角:你此前学过的 FFT(相关检测靠频域快速卷积实现)、信道估计与衰落原理(PRACH 一样穿过多径信道)、定时提前(Msg2 首次下发)、链路自适应(Msg3 起生效),在随机接入这一条链上全部交汇。理解 RACH,等于把空口上行侧的半本教科书串了一遍。
Q: RACH 和调度请求(SR)有什么区别? A: 两者都是“我发消息”,但处于连接生命周期的不同阶段。RACH 用在上行完全失步、基站对手机一无所知的时刻,连时延都未对齐,所以要用免调度的专用序列;SR 用在保持上行同步、已有专属配置的连接态,手机只需在分配好的资源上发一个简单的请求标记。可以粗略记成:RACH 是敲门重新入会,SR 是举手要话筒。
Q: 两个用户撞了同一个前导码,会不会双双接入成功? A: 不会。两者使用完全相同的时频资源和相同序列,在基站接收端波形叠加,通常只能解出(至多)一份 Msg3。Msg4 只会回显被成功解码的那份身份,另一个用户校验失败后自动出局重来。理论上若两份 Msg3 碰巧都被解出,回显也只能指向其中之一,仲裁结果同样唯一。
Q: Msg2 的监听为什么要用 RA-RNTI,而不是手机自己的标识? A: 因为发 Msg1 时基站不知道手机身份,手机也没有任何被网络认可的标识可用来加扰响应。RA-RNTI 由发起 Msg1 的时频位置唯一算出,双方无需任何先验协商就能对上暗号——它本质上是“这次敲门事件”的编号,而不是“某个人”的编号。
Q: 短前导码为什么撑不起大小区? A: 序列时长短,对应的循环前缀和保护间隔也短,能容纳的往返传播时延范围小。半径 5 公里的小区往返时延就有约 33 微秒,短格式加长 CP 后虽可扩展,但能量积累与检测窗口的折中使其更适合中小半径;广覆盖仍由长格式担纲。
Q: 为什么手机开机不直接用普通数据信道发接入请求? A: 普通数据信道的接收依赖精确的上行同步和已分配的调度资源,而这两样恰恰是接入前不具备的。ZC 前导码的特殊性在于它同时是对序列和时间都免疫的探测信号——无需同步就能被相关捕获,还顺带量出时延。用一个“自带标尺的暗号”完成从零到一的建立,这正是随机接入设计的精髓。
本文由「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 等场景全覆盖。
