前几轮我们讲过调制解调、波束赋形、切换与寻呼。但有一个更底层的问题一直没展开:UE开机、失步、或收到寻呼之后,是怎么“敲开”网络大门的? 这就是随机接入(Random Access, RACH)要解决的事。它是切换、TAU、寻呼响应、波束失败恢复等几乎所有移动性事件的共同入口——入口卡住,后面全堵。这一篇我们把它拆开看:为什么必须有随机接入、前导码的数学设计为什么如此精妙、四步握手每一步在防什么错。
先想一个问题:UE开机后明明已经通过同步信号(SSB)和基站完成了下行同步,为什么还需要随机接入?
答案是:下行同步了,上行并没有。
所以UE必须先上报“我离你有多远”,让基站告诉它一个时间提前量(TA, Timing Advance),之后上行才对得上拍。但问题在于:此时上行链路尚未建立,UE连“说话的资格”都没有——基站不知道它存在,也没有给它分配任何资源。
这就形成了一个经典的“先有鸡还是先有蛋”困境:要分配上行资源,基站得先知道UE;要知道UE,UE得先发上行信号。 随机接入就是为了打破这个死锁:UE在一个所有UE共知的固定资源位置(PRACH时机)上,发一段基站预先广播过特征的特殊信号(前导码)。基站不需要提前认识你,只要识别出“有人在X时刻发了Y号前导码”,就能反向估算出传播时延,并启动后续的身份确认流程。
类比一下:新员工第一天到公司,前台没有你的门禁卡(上行资源),但公司有规定——“访客在大门口按三下铃”。铃声本身不含信息,但公司听到铃声、看到你站的位置,就知道“有人来了、他离大门多远”,然后给你临时工牌(TA + 临时标识),走完登记流程。
随机接入分两大类,区别在于“用哪个前导码由谁决定”:
flowchart TD
A["什么情况下需要随机接入?"] --> B["网络能提前安排吗?"]
B -->|"不能, UE自主发起"| C["CBRA 基于竞争"]
B -->|"能, 网络预先指配"| D["CFRA 无竞争"]
C --> C1["RRC_IDLE 开机初始接入"]
C --> C2["RRC_INACTIVE 状态恢复"]
C --> C3["无线链路失败后重建"]
C --> C4["上行失步后收到寻呼<br/>或上行数据到达"]
C --> C5["切换时目标小区未给专用前导码"]
D --> D1["切换(目标小区指配专用前导码)"]
D --> D2["波束失败恢复(BFR)"]
D --> D3["辅小区组SCG添加"]
D --> D4["定位等需要确定性时延的场景"]
CFRA 流程只有两步(发前导码→收随机接入响应),因为“身份”已经包含在专用前导码里了,不需要再走竞争解决。理解了这个分界,现网看到“切换到某小区用CBRA失败率高”时,第一反应就应该是查目标小区的RACH资源是否拥塞或根序列规划是否冲突。
敲门声可以随便设计吗?不行,这段信号要在无调度、低信噪比、大时延扩展的环境下被检测出来,还必须支持几十个UE共用一组资源。5G(和4G一脉相承)选择了 Zadoff-Chu(ZC)序列,它的性质简直是为此量身定做的。
长度为 $N_{ZC}$ 的根ZC序列定义($u$ 为根指数,需与 $N_{ZC}$ 互质):
$$x_u(n) = \exp\left(-j\frac{\pi u \, n(n+1)}{N_{ZC}}\right)$$
它有三条“超能力”,每一条都对应随机接入的一个工程难题:
| ZC序列性质 | 数学表述 | 解决的工程问题 |
|---|---|---|
| 恒包络(CAZAC) | 所有采样点模值恒为1 | 信号峰均比低,UE功放成本低、发射效率高 |
| 理想自相关 | 与自身循环移位版本的相关为零,仅在移位点出现尖峰 | 基站做相关检测时尖峰位置=传播时延,一次检测同时完成存在性判断+TA测量 |
| 理想互相关 | 不同根序列间互相关恒定为 $1/\sqrt{N_{ZC}}$ | 多个UE同时用不同前导码互不干扰,且相邻小区可以用不同根序列组隔离干扰 |
第二条尤其妙:基站把接收信号与本地ZC序列做相关运算,相关峰出现的位置就直接给出往返时延,进而得到距离:
$$d = \frac{c \cdot \tau}{2}$$
也就是说,前导码既是“敲门声”,也是一把“测距尺”——Msg1一响,基站连你大概多远都知道了,这就是后续TA命令的来源。
每个小区要提供64个候选前导码。做法不是存64段序列,而是利用“循环移位仍正交”的性质:把一根长度839的根ZC序列循环移位,每移 $N_{CS}$ 个采样点生成一个新前导码($N_{CS}$ 是零相关区/循环移位间隔,由SIB广播)。
flowchart TD
R["根ZC序列 u=物理根序列号<br/>长度839(长格式)"] -->|"循环移位0"| P0["前导码0"]
R -->|"循环移位 N_CS"| P1["前导码1"]
R -->|"循环移位 2·N_CS"| P2["前导码2"]
R -->|"..."| PX["......"]
R -->|"循环移位 k·N_CS"| PK["前导码k-1"]
P0 & P1 & P2 & PK --> T{"k个移位够64个吗?"}
T -->|"839/N_CS ≥ 64, 单根够用"| OK["1个根序列服务本小区"]
T -->|"839/N_CS < 64, 单根不够"| M["多个根序列拼出64个<br/>→ 需要邻区根序列规划"]
$N_{CS}$ 不能随便小。它必须盖住两部分不确定性:最大往返传播时延(决定小区半径)和多普勒频移对相关峰的展宽(决定可容忍的UE速度)。简化关系为:
$$R_{max} \approx \frac{c \cdot N_{CS}}{2 \cdot N_{ZC} \cdot \Delta f_{RA}}$$
代入一个真实算例:长格式前导码 $N_{ZC}=839$、$\Delta f_{RA}=1.25\,\text{kHz}$,取 $N_{CS}=13$,则 $R_{max} \approx 3\times10^8 \times 13 / (2\times839\times1250) \approx 1.86$ km——这正是教科书上“NCS=13对应约1.9公里低速率小区”的出处。
这带来一个现网最常见的规划权衡:$N_{CS}$ 越大,抗时延/抗频偏能力越强,但一根根序列能切出的移位前导码越少。城区小小区用小 $N_{CS}$,一根根序列就够64个前导码;高铁沿线既要超远覆盖(Format 1长前导码,序列长达3ms、覆盖可达上百公里量级)又要抗350km/h的多普勒,$N_{CS}$ 被迫取很大,于是需要占用好几根根序列,而相邻小区必须规划不同的根序列组,否则跨小区前导码虚警(ghost preamble)会让基站“听见不存在的敲门声”。根序列规划冲突,是RACH类无线投诉排查中的经典病根。
竞争随机接入的标准流程是四步,业内俗称 Msg1~Msg4。我们结合两个UE同时敲门的场景看时序:
sequenceDiagram
participant UE1 as UE-A
participant UE2 as UE-B
participant gNB as gNB
Note over UE1,UE2: 两者恰好选中同一前导码, 同一PRACH时机发送
UE1->>gNB: Msg1: 前导码#12 (RA-RNTI对应资源位置)
UE2->>gNB: Msg1: 前导码#12 (同一时机, 发生碰撞)
gNB->>gNB: 相关检测: 发现前导码#12有能量, 测得TA
gNB-->>UE1: Msg2: RAR (TA指令+上行授权+临时C-RNTI)
gNB-->>UE2: Msg2: RAR (同一个响应, 双方都收到)
Note over UE1,UE2: 灾难点: 两者以为都接入成功
UE1->>gNB: Msg3: RRCSetupRequest (携带UE身份)
UE2->>gNB: Msg3: RRCSetupRequest (不同身份, 空口互踩)
gNB-->>UE1: Msg4: 竞争解决(回显UE-A的身份)
Note over UE1: UE-A: 收到自己的身份→接入成功
Note over UE2: UE-B: 身份不符→接入失败, 退避重试
Msg1:发前导码。 UE从64个候选中随机选一个,在PRACH时机上以初始功率发送。发射功率由广播参数给出目标值(preambleReceivedTargetPower),失败后逐步爬坡。
Msg2:随机接入响应(RAR)。 基站在一个由资源位置算出的固定窗口内(典型10ms量级)发送响应,UE用 RA-RNTI 去PDCCH上盲检属于自己的响应。RA-RNTI完全由UE所用的资源位置决定:
$$\text{RA-RNTI} = 1 + s_{id} + 14\,t_{id} + 14\times80\, f_{id} + 14\times80\times8\, u_{carrier}$$
其中 $s_{id}$ 是PRACH时机的起始OFDM符号号、$t_{id}$ 是帧内时隙号、$f_{id}$ 是频域编号、$u_{carrier}$ 区分正常/辅助上行载波。UE没有报任何身份,基站凭什么“回信”给你?靠的就是约定的资源位置编码——你几点几分在几号窗口敲的门,就是你临时的身份号。RAR里携带三样东西:TA指令(约12bit)、上行授权(调度Msg3)、临时C-RNTI。UE从此有了上行“发言权”。
Msg3:亮明身份。 第一次接入时,UE通过RRC信令(RRCSetupRequest)携带自己的正式身份(如核心网分配的标识或随机值)。这一步开始才走普通的HARQ重传。
Msg4:竞争解决。 这是四步设计中最具巧思的一环。如时序图所示,两个UE撞了前导码后会收到同一份RAR,双方都以为自己成功了,并在相同的授权资源上发Msg3——空口互相踩踏。网络必须做个了断,两种机制:
同时,Msg4成功后临时C-RNTI“转正”为该UE的C-RNTI。整套设计用最少的信令轮次把碰撞、误判、身份冒用全部兜住——这就是“为什么是四步而不是三步或五步”的答案:前两步建立同步与资源,后两步完成身份确认与冲突仲裁,缺一不可。
随机接入本质上运行在无调度、无反馈的信道上,失败是常态,协议用三个参数把“韧性”和“稳定性”平衡起来:
flowchart TD
S["发送前导码(第N次尝试)"] --> W{"窗口内收到Msg2 RAR?"}
W -->|"是"| C{"Msg4竞争解决成功?"}
C -->|"是"| DONE["接入成功<br/>临时C-RNTI转正"]
C -->|"否"| FB["回落: 视为本次失败"]
W -->|"否"| HB["失败处理"]
FB --> HB
HB --> P{"尝试次数达到上限?"}
P -->|"否"| BK["按广播的退避参数<br/>随机等待0~Backoff时间"]
BK --> RP["功率提高一个步长(典型2~4dB)<br/>重选前导码, 回到发送"]
P -->|"是"| FAIL["宣告随机接入失败<br/>触发链路失败/重建/重选小区"]
5G在继承四步框架的同时,做了两项针对自身痛点的改造。
第一,SSB与前导码资源的关联映射。 上一轮讲波束赋形时提到,毫米波基站用几十个窄波束扫描覆盖。如果UE发的Msg1不带波束信息,基站就不知道该往哪个波束方向回RAR。5G把SSB波束与PRACH时机/前导码分组做了周期性关联:UE选中哪个SSB,就只在与该SSB关联的时机上发对应分组的前导码。基站收到Msg1,立刻知道“这个UE在我的几号波束方向上”,后续RAR、Msg3、Msg4全部用这个波束对准它。前导码从纯粹的同步信号,升级成了携带波束方向信息的粗定位信令——这是5G RACH相比4G最本质的增强,也是现网波束类参数(如每SSB的PRACH配比)优化的原理基础。
第二,两步随机接入(2-step RACH),四步压缩成两步。 四步流程在低时延和高密度场景下偏重:海量物联网终端每次唤醒都走四步,信令开销占比过高;URLLC业务对1~2ms的额外时延敏感。于是标准演进后期(Rel-16起商用化)引入两步方案:
$$\text{MsgA} = \text{Msg1(前导码)} + \text{Msg3(PUSCH数据)}, \quad \text{MsgB} = \text{Msg2(RAR)} + \text{Msg4(竞争解决)}$$
| 维度 | 四步接入 | 两步接入 |
|---|---|---|
| 空口轮次 | 4次(2次上行+2次下行) | 2次(MsgA上行、MsgB下行) |
| 时延 | 约2个RTT以上 | 约减半 |
| 信令开销 | 每次接入4条消息 | 高密度小包场景显著降低 |
| 碰撞影响 | 仅Msg1碰撞,Msg3可用HARQ挽救 | MsgA中PUSCH部分也会碰撞,冲突代价更高 |
| 覆盖 | 前导码+Msg3独立优化 | PUSCH与前导码同传,边缘UE可回退四步 |
| 典型场景 | 通用、覆盖受限小区 | 小包高频唤醒(IoT)、低时延业务 |
注意最后一列的“回退”:若MsgB迟迟未到,UE按网络配置自动降级回四步流程继续(把已发的MsgA当作Msg1,走Msg2~Msg4)。这种“两步为主、四步兜底”的双轨设计,让运营商可以按小区负荷和业务画像灵活开关——现网参数上体现为msgA相关配置与回退开关。
理解原理的最终目的是排障。随机接入相关知识在日常工作中有四个高频落点:
常见调试陷阱还有一个:把RACH失败笼统归因为“信号弱”。实际上RA-RNTI算错导致的PDCCH盲检落空、Msg3上行授权过小、竞争解决计时器过短等信令层问题,症状与覆盖差一模一样。遇到疑难,抓一份空口信令看Msg1~Msg4到底断在哪一步,永远比看路测RSRP猜更可靠。
Q: 前导码(Msg1)和Msg3都从UE发出,为什么Msg1不走HARQ重传而Msg3走? A: 因为两者可靠性的实现机制不同。Msg1是ZC序列,本身没有信息承载,靠功率爬坡+多次重发换取检测概率,协议层面就是“发一次赌一次、输了加码再来”;而Msg3是真正的数据(携带RRC信令),已有上行同步和调度授权,可以走标准的HARQ+自适应重传机制,效率更高。这是“无反馈信道用扩频/爬坡,有反馈信道用重传”的典型分工。
Q: 64个前导码是每个小区独享的吗?相邻小区会互相干扰吗? A: 不是独享。64个前导码是每小区的逻辑编号空间,相邻小区若使用相同的根序列组,同一编号在两小区可能对应相同序列,边缘UE的发送会被邻区误检(虚警)。规划上通过给相邻小区分配不同的物理根序列号区间来隔离;$N_{CS}$ 越大每根序列切出的前导码越少,占用根序列越多,邻区规划越紧张——这就是高速/超远覆盖场景根序列资源“不够分”的根源。
Q: 随机接入和CDMA有什么关系?都用了扩频码? A: 思想同源但用途不同。CDMA用扩频码区分长期并行的多个用户(每个用户始终占用一个码道);随机接入的ZC前导码只用于瞬时的“存在性宣告”,一次接入结束后码资源即释放。两者都利用了“良好相关特性的码字正交/准正交”这一数学武器,但随机接入还要额外解决“无调度下的碰撞仲裁”,所以有了四步握手;CDMA用户间有网络统一调度功率,不需要仲裁环节。
Q: 切换时用CFRA,为什么有时还是看到切换过程走了CBRA? A: CFRA需要目标小区预先指配专用前导码并通过切换命令下发。当目标小区RACH资源紧张、或跨厂商接口未协商专用前导码、或专用前导码发送后超时无响应时,UE会回退到竞争流程。所以现网“切换RACH方式”是协商结果而非固定属性,排查切换时延偏大时,先确认实际走的是哪条路径。
Q: 两步接入会全面取代四步接入吗? A: 不会。两步在低时延和信令开销上占优,但MsgA把前导码和数据捆绑发送,碰撞时损失更大,且对覆盖边缘的PUSCH功率要求更高。四步凭借“先轻后重”的分步设计(先确认同步再传数据)在覆盖受限和低负荷场景更稳健。两者是互补关系:网络按小区的业务画像配置,UE按网络指示选用,失败自动回退——这也是移动通信标准设计的一贯哲学:不给单一场景开特效药,给所有场景留退路。
本文由「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 等场景全覆盖。
