首页 › deep-tech › 图解随机接入RACH四步握手

图解随机接入:手机与基站的第一次握手

说明:本篇写作时在线检索通道受限,文中技术内容基于《通信原理》与主流 5G NR 教材的通识内容整理,参考来源以经典教材和长期稳定的权威站点为主。

一、从一个尴尬的场景说起

想象你走进一个巨大的礼堂,主持人不认识你,你也不知道自己该坐哪、什么时候能发言。你唯一能做的,是按照约定走到指定位置,举一次手,等主持人看到你、把话筒递给你,你才能说出自己的名字,正式加入会议。

手机开机入网的第一步,几乎就是这个过程。下行方向(基站→手机)其实不需要“举手”:基站不停地在广播信道上喊话(同步信号、系统消息),手机只要听就行。但上行完全不同——基站根本不知道:

  1. 你在哪:距离基站 300 米还是 3 公里?传播时延差了 10 微秒,上行如果不同步,所有用户的信号会在基站接收端“叠罗汉”,互相踩踏。
  2. 你何时想说话:手机不会预先告诉基站“我开机了”。上行时刻都没有专属资源。
  3. 你是谁:连接还没建立,基站连你的临时标识都没有。

所以必须设计一个不需要任何先验信息、任何时刻都可以发起、且不会造成混乱的上行通道——这就是随机接入信道(RACH,Random Access Channel)。“随机”二字,指的是发起时机和所用的前导码由手机自主随机选择,基站事先无从知晓。

顺带一提,本系列此前讲过“定时提前(TA)是拉住上行同步的绳子”——而随机接入,正是基站第一次量出这根绳子长度的地方。Msg2 里下发的 TA,就是这根绳子的初始长度。

随机接入不只是开机用。它至少在这些场景反复出现:

触发场景 说明
初始接入 开机/飞行模式解除后从空闲态入网
RRC连接重建 无线链路失败后重新找回连接
切换 到达新小区后需要取得上行同步
失步后上行数据到达 连接态但TA已失效,有数据要发
上行失步时被寻呼 收到寻呼后回网络“我在”
波束失败恢复 所用波束被遮挡后换波束重新报到

可以看到,切换能否成功、寻呼响应是否及时,底层都卡在 RACH 上。现网无线侧投诉中“上网慢”“刷不出页面”,相当一部分最终定位到的是 RACH 环节的问题。这是它值得每个无线工程师吃透的原因。

二、核心问题:敲门暗号该怎么设计?

2.1 设计约束

手机在 Msg1 里发送的不是普通数据,而是一段固定的、已知的序列,称为前导码(Preamble)。它要同时满足几个苛刻的条件:

2.2 答案:ZC 序列

通信理论给出过一个近乎完美的答案——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}$ 是序列长度。它有三条对随机接入至关重要的性质:

  1. 恒包络:幅度恒定为 1,只有相位在转,对手机功放非常友好;
  2. 理想周期自相关:与其自身的循环移位版本做相关运算,除对齐点外处处为零;
  3. 不同根序列之间互相关近似为零:$u$ 不同的两根序列,互相看对方就像看噪声。

第 2 条是整个检测机制的灵魂。由于循环移位彼此正交,同一个根序列可以通过取不同的循环移位(循环偏移量,工程参数记作 nCS) 派生出多个互相正交的“暗号”。每个小区从根序列出发,派生出 64 个前导码分配给用户。

为什么是 64 个? 这是一个典型的工程折中:前导码太少,两个用户撞号的概率高,冲突频繁;太多,则需要的根序列和循环移位组合变多,检测器要做的相关运算次数暴增,还要留出循环移位作为保护间隔。64 是“冲突概率可接受、检测复杂度可承受”的平衡点。

2.3 基站怎么“听见”敲门声:相关检测

基站收到 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 序列“为什么这样设计”的深层原因。

2.4 前导码格式:长度决定半径

前导码不是一个固定长度的东西。5G NR 沿用了长短两族格式:

属性 长格式前导码 短格式前导码
序列长度 839 139
子载波间隔 1.25 / 5 kHz 15 / 30 / 60 / 120 kHz
典型适用场景 广覆盖大小区、低频段 常规宏站、小站、毫米波高频段
重复次数 单次长序列 短序列连续重复多次
波束扫描适配 较弱 强(可与波束轮扫对齐)

直观理解:序列越长,时间上铺得越开,能容纳的时延不确定范围越大,所以长格式天然服务大半径小区(山区、海面覆盖);短格式短小灵活,能塞进波束赋形时代的各种上行时隙里,还能重复叠加积累能量。

前导码前面还套了一段循环前缀(CP),作用有二:对抗多径扩展;同时充当“时延不确定保护窗”——只要手机的传播时延落在这个窗口内,基站的相关峰就不会被糊掉。CP 和保护间隔的长度,反过来决定了小区的最大支持半径,这就是根序列与 nCS 规划时反复计算半径的由来。

另外一个工程细节:手机高速移动会产生多普勒频移,让接收序列的“转速”不再严格匹配本地副本,相关峰会分裂、变矮。为此标准设计了受限集(restricted set)前导码——通过限制允许的循环移位,让检测器能对多普勒造成的频偏进行补偿。高铁、沿江沿湖高速场景的根序列规划,必须用受限集,这是现网规划中一个经典易错点。

三、波束时代的敲门姿势:SSB 与 RO 的配对

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

Msg1:举手

手机按前述规则选好前导码,在 RO 上发出。发送功率不是一步到位,而是从初始值开始,每失败一轮按固定步长(常见 2 dB)爬升,即功率爬升(Power Ramping)——理由与此前讲过的上行功率控制一脉相承:先礼貌地小声说,听不见再逐渐提高音量,避免远端用户一上来就对近端造成底噪抬升。

Msg2:基站递话筒

基站在检测到前导码后,通过一个由 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),以及可能的退避指示。手机必须在响应窗口(可配置,毫秒级)内等到这个响应,等不到就判本轮失败。

Msg3:自报家门

拿到授权后,手机用 TC-RNTI 加扰,在 PUSCH 上发送真正的身份信息:初始接入时是注册类身份(如 5G-S-TMSI 或随机值),切换时则是源站分配的原 C-RNTI。这是整条链路上第一次传输“内容”而非“暗号”,因此走了完整的 HARQ 重传保护。

Msg4:宣布赢家

冲突的本质:A 和 B 撞了同一个前导码,基站只检测出“有人敲门”,把同一份 TA 和授权发给了两个人,于是 Msg3 在 PUSCH 上发生了真刀真枪的碰撞(两者叠在一起,通常只有一个能被解出来,或都解不出来)。Msg4 中,基站把 Msg3 里收到的身份原样回显——谁看到自己的名字被点到,谁就是赢家,TC-RNTI 转正为正式 C-RNTI;没被点到名的手机,读取退避指示,随机等待一段时间,换一个前导码从头再来。

为什么要在 Msg4 做回显校验,而不是在 Msg1 就解决冲突? 因为前导码检测只能告诉你“序列出现了”,无法区分"一个人敲了一次"和“两个人同时敲了同一个”。冲突的分辨必须依赖每个用户独一无二的高层身份,而这个身份只有到 Msg3 才首次出现。把仲裁放在最后一环,前面三步就能保持极简、极快。

五、两步接入与免竞争接入:两条快捷通道

5.1 两步接入(2-step RACH)

四步流程虽然稳健,但对“发个小包就走”的场景(传感器上报、心跳包)太重了:一来一回四次空口交互,时延和开销都不划算。两步接入把四步压成两步:

对比维度 四步接入 两步接入
消息构成 Msg1→Msg2→Msg3→Msg4 MsgA(前导码+数据捆绑)→ MsgB(响应+竞争解决合一)
交互次数 4 次空口往返 2 次空口往返
时延 较高 显著降低
适用场景 通用、稳健 小数据包、时延敏感
失败回退 退避后重试四步 可回退为四步继续

设计动机一句话概括:把“报到”和“说事”合并成一次发射,把“发号”和“宣布赢家”合并成一次响应。同时保留回退到四步的通路——竞争太激烈或资源不足时退回老路,保证兼容与稳健。

5.2 免竞争接入(CFRA)

有些场景付不起冲突的代价。典型如切换:手机已经与源站建立了完整连接,源站和目标站之间可以先打好招呼,由目标站指定一个专用前导码。手机到达新小区后直接用这个“专属暗号”敲门:

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 失败怎么定位

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

三个最常见的误解与陷阱:

  1. “RACH 失败率高 = 覆盖差”。 不一定。根序列规划冲突(相邻小区用了会产生强互相关的根序列组合)会让基站“看错号”,表现为检测异常;高话务下撞号增多则会让 Msg4 竞争失败占比升高——这两类问题加功率毫无用处。
  2. “随机 = 任意时刻随便发”。 前导码的选择和 RO 的位置都严格受限:必须先选定 SSB,再按映射关系选资源和前导码组。手机真正的自由度只是“组内选哪一个”。
  3. TDD 网络忽略帧结构配比。 PRACH 只能出现在允许上行的时隙里,跨链路干扰(远端基站下行信号飘进本站上行接收)会直接抬高 PRACH 底噪,这类“空气接口的串扰”是 TDD 大规模组网后 Msg2 失败的隐蔽元凶。

最后把整个流程放回全局视角:你此前学过的 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 前导码的特殊性在于它同时是对序列和时间都免疫的探测信号——无需同步就能被相关捕获,还顺带量出时延。用一个“自带标尺的暗号”完成从零到一的建立,这正是随机接入设计的精髓。

参考来源

  1. ShareTechnote — 5G/NR 技术站点 — 站内 Random Access / PRACH 系列图文,工程师视角的流程与参数解读
  2. Erik Dahlman, Stefan Parkvall, Johan Sköld,《5G NR: The Next Generation Wireless Access Technology》, Academic Press — 随机接入设计与帧结构原理的系统教材
  3. 樊昌信等,《通信原理》(第7版),国防工业出版社 — 伪随机序列与相关接收的基础理论出处

本文由「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学通信知识星球海报-扫码加入