首页 › deep-tech › 5G随机接入:敲门到入座的四步信令

5G随机接入:从PRACH前导码到竞争解决的全流程图解

一把钥匙开一扇门:理解随机接入的本质

想象你走进一家繁忙的餐厅。你不知道服务员是谁,也不知道座位在哪里。你需要做的第一件事是什么?——举手示意,引起注意,然后被领到座位上。

5G网络中的随机接入(Random Access)就是这个"举手示意"的过程。手机(UE)从沉默状态需要和基站(gNB)建立通信时,第一步就是发起随机接入——在没有任何上行资源的情况下,用一套精心设计的信令流程,让基站知道"我在这里,我要接入"。

这个过程看似简单,实则暗藏玄机:多个手机可能同时"举手",如何区分?信号经过不同距离传播后到达时间不同,如何同步?前导码如何设计才能让基站高效检测?本文将逐一拆解这些问题。


为什么需要随机接入?

随机接入并不是一个"锦上添花"的功能,它是移动通信系统运转的基础枢纽。以下场景都必须触发随机接入:

触发场景 说明 RA类型
初始接入 手机开机或从无覆盖区恢复,需要建立RRC连接 CBRA
RRC重建 连接中断后尝试恢复 CBRA
切换 从源基站切换到目标基站,需要在目标基站快速同步 CFRA(通常)
下行数据到达 手机处于RRC_INACTIVE/IDLE态,基站收到下行数据需寻呼手机 CBRA
上行数据到达 手机有数据要发但处于非连接态,或没有PUCCH资源发调度请求 CBRA
上行失步 连接态下上行定时失步,需重新获取TA(Timing Advance) CFRA
波束失败恢复 FR2毫米波场景下,当前波束失效需切换到新波束 CFRA
SI请求 需要按需获取系统信息(Other SI) CBRA

核心共性:只要手机还没有上行同步(不知道该在什么时刻发送信号),就必须通过随机接入来获取同步。


PRACH前导码:精心设计的"敲门信号"

前导码的结构

随机接入的第一步是手机发送一个PRACH前导码(Preamble)。这个前导码的结构非常讲究:

┌──────────┬────────────────────────────┬──────────┐
│    CP    │   Preamble Sequence        │   GT     │
│ 循环前缀 │   (ZC序列,通常839点)       │  保护间隔 │
└──────────┴────────────────────────────┴──────────┘
     ↑                  ↑                    ↑
  抵抗多径延迟     携带身份信息          防止溢出到下一个符号

为什么选择ZC序列?

前导码序列不是随便选的。5G选择了Zadoff-Chu(ZC)序列,这是一个在通信领域被广泛使用的数学序列。它的核心优势可以用一个词概括:CAZAC——恒包络零自相关(Constant Amplitude Zero AutoCorrelation)。

用通俗的话来说:

  1. 恒包络:序列的每个样点幅度都相同,意味着发射信号的峰均比(PAPR)很低,功放效率高——手机省电。

  2. 完美的自相关性:序列和自己做相关运算,只有完全对齐时才产生一个尖锐的峰值,偏移哪怕一个采样点,相关值就迅速降到接近零。这使得基站能精确测量信号的到达时间,从而估算出定时提前量(TA)。

  3. 低互相关性:不同根序列索引产生的ZC序列之间相关值很低,使得基站能同时检测多个不同手机发出的前导码。

ZC序列的数学定义如下:

$$x_u[n] = e^{-j\frac{\pi u n(n+1)}{N_{ZC}}}$$

其中 $u$ 是根序列索引(root sequence index),$N_{ZC}$ 是序列长度(FR1通常为839,FR2为139)。$n = 0, 1, 2, ..., N_{ZC}-1$。

从一个根序列生成64个前导码

一个小区需要提供64个前导码供手机选择。但根序列索引不需要64个——通过对一个根序列做循环移位(Cyclic Shift),就可以衍生出多个正交的前导码:

$$x_{u,v}[n] = x_u[(n + C_v) \mod N_{ZC}]$$

其中 $C_v$ 是第 $v$ 个循环移位量,由参数 $N_{CS}$(零相关区配置)决定。

flowchart TD
    A["根序列 u\n(rootSequenceIndex)"] --> B["循环移位 0×Ncs"]
    A --> C["循环移位 1×Ncs"]
    A --> D["循环移位 2×Ncs"]
    A --> E["循环移位 ...×Ncs"]
    A --> F["循环移位 (L-1)×Ncs"]

    B --> G["前导码 #0"]
    C --> H["前导码 #1"]
    D --> I["前导码 #2"]
    E --> J["前导码 ..."]
    F --> K["前导码 #L-1"]

    G & H & I & J & K --> L["一个根序列\n可生成 L 个前导码"]

    L --> M["若 L < 64\n继续用下一个根序列\nu+1, u+2, ..."]
    M --> N["直到凑齐\n64个前导码"]

关键设计哲学:$N_{CS}$ 越大,一个根序列能生成的前导码越少,但每个前导码之间的"安全距离"越大,抗多径干扰能力越强。网络规划时需要在前导码容量和覆盖性能之间做权衡:

NCS配置 小区半径影响 前导码容量
NCS小(如0) 仅适用于极小小区 一个根序列可生成更多前导码
NCS大(如大覆盖) 适用于大覆盖小区 一个根序列生成的前导码少,需更多根序列

前导码格式:适配不同覆盖范围

5G定义了多种前导码格式,核心区别在于CP长度和序列重复次数:

格式 适用频段 序列长度 特点
Format 0 FR1 839 类似LTE,标准覆盖
Format 1 FR1 839 长CP+长序列,大覆盖(~100km)
Format 2 FR1 839 序列重复4次,增强覆盖可靠性
Format 3 FR1 839 更长CP,超大覆盖(SUL场景)
Format A1/A2/A3 FR2 139 短序列,小覆盖毫米波
Format B1/B4 FR2 139 不同CP/GT组合
Format C0/C2 FR2 139 极短,超低时延场景

设计直觉:覆盖距离越远,信号传播时间越长,就需要越长的CP来"吸收"时延差。而序列重复发送可以提升检测概率——好比敲门敲得越久,里面的人越容易听到。


四步随机接入(CBRA)全流程详解

基于竞争的随机接入(Contention-Based Random Access, CBRA)是最常见的随机接入方式。完整信令流程如下:

sequenceDiagram
    participant UE as 手机(UE)
    participant gNB as 基站(gNB)

    Note over UE: 选择随机前导码<br/>计算发送功率
    UE->>gNB: Msg1: PRACH前导码<br/>(RA-RNTI标识RO位置)
    Note over gNB: 检测前导码<br/>估计TA值

    gNB->>UE: Msg2: RAR(随机接入响应)<br/>PDCCH(RA-RNTI) → PDSCH<br/>含: TA, TC-RNTI, UL Grant
    Note over UE: 应用TA调整上行定时<br/>使用TC-RNTI作为临时身份

    UE->>gNB: Msg3: 调度传输<br/>PUSCH(TC-RNTI)<br/>携带UE身份(RRCSetupRequest)
    Note over gNB: 记录UE身份<br/>分配C-RNTI

    gNB->>UE: Msg4: 竞争解决<br/>PDSCH(TC-RNTI→C-RNTI)<br/>含: 竞争解决ID + RRCSetup
    Note over UE: 比对竞争解决ID<br/>匹配→接入成功

Msg1:手机敲门——发送PRACH前导码

手机从SIB1广播消息中获取PRACH配置参数后,会:

  1. 选择前导码:从可用前导码池中随机选一个索引。
  2. 确定发送时机:根据prach-ConfigurationIndex确定PRACH时机(RACH Occasion, RO)的时频位置。
  3. 计算发送功率:采用开环功率控制:

$$P_{PRACH} = \min{P_{CMAX}, P_{target} + PL}$$

其中 $P_{target}$ 是基站期望接收的前导码目标功率(由参数preambleReceivedTargetPower配置),$PL$ 是手机估算的路径损耗。

如果没收到RAR怎么办? 手机会执行功率爬升(Power Ramping):每次重发前导码时,功率增加powerRampingStep(通常2dB或4dB),最多重发preambleTransMax次。好比敲门没人应,就一次比一次敲得大声。

RA-RNTI的计算:Msg1本身不携带UE身份,但基站通过前导码发送的时频位置(RO)来标识这次接入请求。RA-RNTI的计算公式为:

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

其中 $s_{id}$ 是PRACH时机的第一个OFDM符号索引(0~13),$t_{id}$ 是时隙索引(0~79),$f_{id}$ 是频域RO索引(0~7),$ul_{carrier_id}$ 是上行载波标识(NUL=0, SUL=1)。

Msg2:基站回应——随机接入响应(RAR)

基站检测到前导码后,会在一个RAR时间窗口内回复随机接入响应(RAR)。RAR的调度流程是:

  1. 基站在PDCCH上发送DCI Format 1_0,用对应的RA-RNTI加扰。
  2. 手机用自己计算的RA-RNTI去盲检PDCCH,找到匹配的DCI。
  3. 根据DCI中的资源指示,在PDSCH上读取RAR消息。

RAR消息中包含的关键信息:

字段 作用 类比
TA(Timing Advance) 上行定时提前量,校准手机发送时间 告诉你"你说话晚了多少,提前一点"
TC-RNTI 临时C-RNTI,作为手机的临时身份 发给你一张临时工牌
UL Grant 为Msg3分配的上行资源(时频位置、MCS) 给你安排一个发言时段
RAPID 前导码ID,确认基站检测到的是哪个前导码 确认"我听到了你敲的那下门"

TA的物理含义:电磁波从手机到基站有传播时延。如果不补偿,不同距离的手机发送的上行信号到达基站时就不对齐,会造成符号间干扰。TA命令告诉手机需要提前多少微秒发送信号,使得所有手机的上行信号同时到达基站。

Msg3:手机自报家门——调度传输

手机收到Msg2后,知道了该用什么时间频率发送,也获得了临时身份TC-RNTI。现在需要告诉基站"我是谁":

Msg3的关键作用是参与竞争解决。因为多个手机可能恰好在同一个RO上选了同一个前导码(碰撞!),基站需要通过Msg3中的UE身份来区分到底是谁在接入。

Msg4:一锤定音——竞争解决

基站在Msg4中回传竞争解决身份(Contention Resolution Identity),其实就是把Msg3中UE发送的身份信息原封不动或经处理后回传。

flowchart TD
    A["UE发送Msg1: 选择前导码#23"] --> B["gNB检测到前导码#23"]
    B --> C["但此时UE-A和UE-B<br/>都选了前导码#23!"]
    C --> D["gNB发送Msg2: RAR<br/>UE-A和UE-B都以为在叫自己"]
    D --> E["UE-A发送Msg3: 身份A<br/>UE-B发送Msg3: 身份B"]
    E --> F["gNB收到Msg3<br/>选择其中一个(如UE-A)"]
    F --> G["gNB发送Msg4: 竞争解决<br/>携带UE-A的身份"]
    G --> H{"UE-A检查Msg4身份"}
    H -->|"匹配!"| I["UE-A接入成功 ✅"]
    G --> J{"UE-B检查Msg4身份"}
    J -->|"不匹配"| K["UE-B竞争失败 ❌<br/>退避后重新发起RA"]

竞争失败的UE不会立刻再次尝试,而是等待一个退避时间(Backoff Indicator),这个时间由基站在Msg2中可选下发,目的是错开多个失败UE的重试时机,避免再次碰撞。


非竞争随机接入(CFRA):VIP快速通道

并非所有随机接入都需要竞争。在某些场景下,基站可以给手机分配一个专用前导码,确保不会和其他手机碰撞:

sequenceDiagram
    participant UE as 手机(UE)
    participant gNB as 基站(gNB)

    Note over gNB: 通过RRC重配或PDCCH order<br/>分配专用前导码
    gNB->>UE: Msg0: 专用前导码分配<br/>(含: preamble index + RO)
    Note over UE: 使用指定前导码<br/>在指定RO发送
    UE->>gNB: Msg1: 专用前导码(无碰撞)
    Note over gNB: 检测到专用前导码<br/>直接确定UE身份
    gNB->>UE: Msg2: RAR(含TA, UL Grant)
    Note over UE: 获得上行同步<br/>接入完成!

CFRA省掉了Msg3和Msg4,因为专用前导码本身就标识了UE身份——就像VIP号码牌,不存在认错人的可能。

CFRA的典型应用场景:

场景 专用前导码如何下发
切换 源基站通过Xn/F1接口向目标基站请求专用前导码,目标基站通过HO Command转给UE
下行数据到达(RRC_INACTIVE) 基站通过PDCCH order触发UE发起CFRA
波束失败恢复 基站在新波束上为UE分配专用前导码
上行失步恢复 基站通过PDCCH order指定专用前导码

两步随机接入(2-Step RACH):更快更省

3GPP Release 16引入了两步随机接入,将四步合并为两步:

4-Step RACH 2-Step RACH
Msg1 前导码 MsgA = 前导码 + PUSCH payload
Msg2 RAR —
Msg3 调度传输 —
Msg4 竞争解决 MsgB = RAR + 竞争解决
延迟 ~4次往返 ~2次往返
信令开销 高 低
适用场景 通用场景 小包、IoT、URLLC、FR2波束恢复

MsgA的结构:手机在PRACH上发送前导码的同时,在紧随其后的PUSCH上发送负载(如RRCSetupRequest)。这要求网络预先配置好PRACH和PUSCH之间的映射关系。

MsgB的三种响应:

  1. 成功:基站同时检测到前导码和PUSCH payload,返回包含TA和竞争解决的MsgB——接入完成。
  2. 回退(Fallback):基站只检测到前导码但没解码PUSCH,返回传统RAR,UE退回到Msg3/Msg4流程。
  3. 失败:UE没收到MsgB或收到不匹配的响应,执行退避后重试。

2-Step RACH的设计哲学:在网络负载较低、信道条件较好的场景下,一次联合传输的成功概率很高,没必要分四步走。但在负载高、干扰大的场景下,四步流程更稳健。因此2-Step RACH通常需要具备回退到4-Step的能力。


PRACH资源配置:敲门的时间和地点

基站通过SIB1中的RACH-ConfigCommon和RACH-ConfigGeneric向所有手机广播PRACH配置参数:

参数 含义
prach-ConfigurationIndex 查表确定前导码格式、发送周期、子帧/符号位置
msg1-FrequencyStart PRACH在频域的起始位置(PRB偏移)
msg1-SubcarrierSpacing PRACH的子载波间隔(1.25kHz或5kHz for FR1)
zeroCorrelationZoneConfig 查表得到NCS值,决定循环移位间隔
rootSequenceIndex 起始根序列索引
numberOfRA-Preambles 用于CBRA的前导码数量(≤64)
powerRampingStep 功率爬升步长(0/2/4/6 dB)
preambleReceivedTargetPower 基站期望接收的前导码功率
preambleTransMax 最大前导码重发次数
ra-ResponseWindow RAR接收窗口长度(slot数)

RACH Occasion(RO) 是手机可以发送PRACH的时频资源格子。网络通过prach-ConfigurationIndex查表来确定每个帧中哪些子帧/时隙/符号包含RO。频域上,RO占6个连续PRB。

SSB与RO的关联:手机在选择RO时,会根据测量到的SSB信号质量(RSRP),选择一个波束方向对应的RO发送前导码。这样基站收到前导码时,就知道手机在哪个波束方向上——便于后续的波束赋形通信。这个映射关系由参数ssb-perRACH-OccasionAndCB-PreamblesPerSSB配置。


功率控制与退避机制

前导码功率爬升

手机第一次发送PRACH前导码时使用基准功率。如果没收到Msg2(RAR超时),就提高功率重试:

$$P_{PRACH}^{(n)} = \min{P_{CMAX},\ P_{target} + PL + (n-1) \times \Delta P}$$

其中 $n$ 是前导码发送次数,$\Delta P$ 是功率爬升步长。

工程启示:如果手机反复功率爬升到最大仍无法接入,可能原因包括:

退避机制

竞争失败后,手机在重试前需要等待一个随机退避时间:

$$T_{backoff} = rand(0, BI)$$

BI(Backoff Indicator)由基站在Msg2中可选下发,取值范围为0~960ms。退避的目的是避免多台手机在同一时刻再次碰撞——就像餐厅门口多位顾客同时被叫号失败后,各自随机等待不同时间再排队。


实战连接:工程师调试随机接入

1. PRACH规划中的根序列分配

在网络规划中,相邻小区不能使用相同的根序列索引(否则会导致前导码混淆)。根序列索引需要按照一定的复用距离进行分配——类似PCI规划,需要避免冲突和混淆。

调试要点: - 检查根序列索引分配是否满足复用距离 - 检查NCS配置是否匹配小区半径(覆盖大的小区需要更大的NCS) - 检查前导码池是否足够(高负载场景下64个前导码可能不够)

2. RAR超时分析

如果大量UE报告"随机接入失败,RAR超时",可能原因: - 基站PRACH检测能力不足(硬件问题) - 上行干扰导致前导码检测失败 - RAR窗口配置过短 - PDCCH拥塞(无法调度RAR)

3. 前导码碰撞率优化

在密集城区或大规模IoT部署场景,前导码碰撞概率会显著上升: - 监控指标:PRACH尝试次数/成功率、Msg3/Msg4交互延迟 - 优化手段:增加RO密度、扩大前导码池(减少每SSB的前导码数以增加SSB-RO映射)、启用2-Step RACH

4. 2-Step RACH的适用场景判断

2-Step RACH并非总是优于4-Step。在以下情况下2-Step更优: - 小数据包传输(IoT上报、URLLC) - 良好信道条件(RSRP高) - 中低负载场景

在高负载、高干扰场景下,2-Step的MsgA成功率下降,频繁回退到4-Step反而增加开销。


CBRA vs CFRA vs 2-Step RACH全景对比

维度 CBRA(4-Step) CFRA 2-Step RACH
步数 4步 3步(含Msg0) 2步
前导码选择 UE随机选择 gNB专用分配 UE随机选择
碰撞可能性 有 无 有(但概率可降低)
延迟 中 低 最低
信令开销 高 低 最低
适用场景 初始接入、RRC重建 切换、波束恢复 IoT、URLLC、小包
引入版本 Rel-15 Rel-15 Rel-16
回退能力 向高层报告失败 N/A 回退到4-Step

常见问题

Q: PRACH前导码和DM-RS有什么区别?不都是"参考信号"吗?

A: 它们的本质区别在于目的和发送时机。PRACH前导码是在没有上行同步的情况下发送的,目的是让基站检测到UE的存在并估算TA;DM-RS是在已经同步的PUSCH/PUCCH中嵌入的,目的是让基站做信道估计以解调数据。打个比方,PRACH是"敲门",DM-RS是"说话时的背景音"帮助对方听清你的话。

Q: 一个小区最多能同时接入多少手机?

A: 这取决于前导码池大小(最多64个)和RO的密度。每个RO在同一时刻最多支持64个不同的前导码。如果网络配置了密集的RO(例如每5ms一个),理论上每秒可以支持数千次随机接入尝试。但实际容量受限于碰撞概率和基站处理能力。在IoT密集场景下,可能需要通过2-Step RACH或扩展前导码资源来提升容量。

Q: 为什么Msg3已经发了UE身份,还需要Msg4做竞争解决?

A: 因为Msg3可能在基站侧发生碰撞(多个UE在同一个UL Grant上发送,基站只解码出其中一个)。Msg4的目的是让每个参与竞争的UE都能明确知道自己是否"中奖"——没中奖的UE可以尽快退避重试,而不是傻等。这是一种"广播式确认"的设计,比"逐个通知"更高效。

Q: 2-Step RACH会完全替代4-Step RACH吗?

A: 不会。两者是互补关系。2-Step RACH在小包、低负载、好信道条件下优势明显;但在高负载、干扰复杂的场景下,4-Step RACH的渐进式流程更稳健。3GPP标准要求2-Step RACH必须支持回退到4-Step,说明两者将长期共存。

Q: PRACH的功率爬升会一直增加功率吗?

A: 不会。功率爬升受两个约束:一是preambleTransMax限制了最大重发次数(通常4~8次);二是手机最大发射功率 $P_{CMAX}$ 封顶。到达任一限制后,如果仍然接入失败,MAC层会向上层报告随机接入问题,可能触发RRC重建或进入空闲态。


参考来源

  1. 5G NR PRACH: Function, Contents, and Physical Layer Processing — RF Wireless World,PRACH物理层处理流程详解
  2. 手搓5G NR PRACH收发链路:MATLAB代码+协议对照,从ZC序列到前导检测 — 知乎,ZC序列生成与检测的完整实现
  3. 5G NR PRACH 随机接入前导序列 — CSDN,前导码生成与NCS规划详解
  4. NR PRACH Preamble生成过程及根序列与循环移位计算 — 阿里云开发者社区,完整实例拆解
  5. LTE PRACH前导码格式、ZC序列的生成规则与规划 — 51CTO,ZC序列与PRACH规划的底层原理(4G/5G通用概念)

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