你新入职一家公司,第一天走到前台,第一句话是什么?“你好,我是新来的员工,工号XXX,请给我安排工位。”前台确认身份后发给你门禁卡,从此你在这栋楼里有了正式身份。
手机开机入网的第一步,几乎就是一场一模一样的“前台报到”:手机和基站互相不认识、上行时间完全没对齐,手机必须先用一种特殊的“敲门信号”让基站注意到自己,这个敲门过程就叫随机接入(Random Access,工程上常简称 RACH)。它是所有移动通信流程里出场率最高的过程之一:开机要它、切换要它、掉线恢复要它。理解了它,你看接入类投诉、切换失败、掉线问题就有了第一把钥匙。
先想一个问题:手机开机后,怎么和基站建立联系?
下行方向其实不难。 基站一刻不停地广播同步信号,手机只要搜到、锁定、读系统消息,下行就同步上了。整个过程是“广播—接收”,不需要任何协商。
上行方向麻烦大了。 无线电波以光速传播,但不是零时延。距离基站 1 公里的手机,信号要跑约 3.3 微秒;距离 10 公里的,要跑 33 微秒。基站要求所有上行信号都落在统一的时间网格上,如果各手机按各自的时间发送,近处手机和远处手机的信号就会互相踩踏、无法解调。
那能不能像下行一样,基站广播一个“标准时间”,大家照着对?问题在于:这个时间偏移量因人而异,离基站远近不同,需要提前发送的量就不同。基站必须先“听见”某个手机,测出它的时间偏差,再把修正量(定时提前,Timing Advance,TA)单独告诉它。
于是死锁出现了:
打破死锁的办法,就是随机接入:手机先用一种不需要精确同步、靠设计本身就能抗偏差的特殊信号敲门。这个信号必须满足三个苛刻条件:
能满足这三个条件还能被可靠检测的信号,工程师们选中了数学中一个漂亮的序列——这个我们后面细讲。
随机接入远不止开机用。只要出现“上行没同步”或“没有专用上行资源”的情况,手机都得重新敲门:
flowchart TB
R["随机接入的触发场景"] --> C1["初始接入:开机选网"]
R --> C2["状态转换:空闲态转连接态"]
R --> C3["切换:进入新小区的第一步"]
R --> C4["失步恢复:上行失步又有数据要发"]
R --> C5["调度请求无资源:主动上门要授权"]
逐条翻译成工程师语言:
可以看到:随机接入是所有上行流程的“最低门槛入口”。这个设计思路很典型——先保证有一条永远可用的兜底通道,再在上面叠加各种优化路径。
随机接入分两种模式:竞争式(CBRA,人人可抢)和非竞争式(CFRA,基站指定专用资源)。先把最常用的竞争式讲透,它的完整交互是经典的“四步曲”:
sequenceDiagram
participant U as UE
participant G as 基站
U->>G: Msg1 发送前导码(从64个里随机挑一个)
G->>U: Msg2 随机接入响应 RAR(含TA和上行授权)
Note over U: 记录定时提前 拿到临时身份 TC-RNTI
U->>G: Msg3 发送真实身份(RRC连接请求)
G->>U: Msg4 竞争解决(点名谁成功了)
Note over U: 胜者 TC-RNTI 转正为 C-RNTI 敲门结束
手机从小区广播的前导码集合里随机挑一个,在约定的时频资源(PRACH 信道)上发出去。注意此时手机并没有告诉基站“我是谁”——它只递了一张写有编号的号码牌。这就是“随机”二字的来源:选哪个前导码、在哪个时机发送,都是手机自己做主的。
基站检测到前导码后,干三件事:测量它到达的时间偏差(算出 TA)、在下行控制信道上用 RA-RNTI 呼叫、把响应消息发下来。响应里装着三样东西:
| 内容 | 作用 | 类比 |
|---|---|---|
| 定时提前 TA | 修正上行时间偏差 | 前台告诉你“你的表慢了 3 分 20 秒” |
| 上行授权 | 批准一段上行资源发下一条消息 | 给你一张发言登记表 |
| 临时身份 TC-RNTI | 本小区内临时的门牌号 | 临时访客证 |
这里有个精妙设计值得展开:RA-RNTI 不是分配的,是算出来的。它由 PRACH 信道所在的时频位置通过固定公式推导,手机和基站各自独立计算,不需要任何信令传递。手机发完 Msg1 后,只在自己使用的那个时频位置对应的 RA-RNTI 上盲检响应。多部手机只要用了同一个时机,就会监听同一个 RA-RNTI——这个伏笔马上会在冲突环节看到它的作用。
此外,Msg2 响应有明确的时间窗口(响应窗口)。手机发出 Msg1 后在这个窗口内等响应,超时未收到就判定本轮失败,准备下一轮。
拿到授权后,手机在指定的上行资源上发送自己的真实身份——通常是 RRC 连接请求,里面带着一个全网唯一的标识(比如来自 SIM 的永久标识推导值)。从这一步起,基站在 MAC 层才第一次知道“这是哪部手机”,后续的注册、鉴权流程才能展开。
如果只有一部手机在敲门,流程到此就顺理成章。但无线环境里,多部手机完全可能选了同一个前导码、在同一个时机发送——基站只能检测出“一份”前导码能量,并把同一个 TA 和 TC-RNTI 回给所有参与者。灾难现场就此形成:
flowchart TB
A["UE1 选中前导码 17"] --> B["在同一个PRACH时机发送"]
C["UE2 也选中前导码 17"] --> B
B --> D["基站只检测到一份前导码能量"]
D --> E["Msg2 对两者使用同一个 TA 与 TC-RNTI"]
E --> F["UE1 与 UE2 用相同身份的时频资源发 Msg3"]
F --> G["Msg4 只能点名一个胜利者"]
G -->|内容与UE1的身份匹配| H["UE1 成功 TC-RNTI 转正"]
G -->|标识不符或一直收不到| I["UE2 失败 退避后重新随机"]
Msg4 的竞争解决逻辑是“对暗号”:胜者的 Msg3 内容(或其标识)会出现在 Msg4 里,谁能对上暗号谁就赢。失败者收到的 Msg4 对不上号,或者干脆什么都收不到,只能按基站广播的退避指示(Backoff Indicator)随机等待一段时间,然后重新从 Msg1 开始。每一轮失败后发送功率还会抬高一档,这就是后面要讲的功率爬坡。
胜者的临时身份 TC-RNTI 在这一刻“转正”为正式的 C-RNTI,此后手机在小区内的一切上行调度都挂在这个身份下。整场“前台报到”宣告完成。
Msg1 用的前导码不是随便一段数据,而是 Zadoff-Chu 序列(下称 ZC 序列)截取生成的。它有两个人见人爱的性质:
性质一:恒模。 序列每个点的幅度完全相同。这意味着发送时功放始终工作在最舒服的满幅状态,既不会削峰失真,也最大化了发送能量——对一部只想“轻轻敲下门”的手机来说,能量效率就是生命线。
性质二:理想的循环自相关。 序列和它自己的循环移位版本做相关,只要移位量不为零,相关值严格为零。用公式说话,长度为 $L_{RA}$、根序号为 $u$ 的 ZC 序列定义为:
$$x_u(n) = e^{-j \pi u n(n+1) / L_{RA}}, \quad 0 \le n \le L_{RA}-1$$
它的循环自相关只在零移位处有峰值:
$$\sum_{n=0}^{L_{RA}-1} x_u(n) \cdot x_u^{*}\big((n+m) \bmod L_{RA}\big) = 0, \quad m \neq 0$$
这个性质的工程价值 enormous:基站做相关检测时,不仅知道“有人敲门”,还能从峰值出现的位置直接读出“电波跑了多久”——因为时间偏差会表现为相关峰的偏移。TA 的测量就是这么来的,不需要任何额外开销。
更进一步,利用零自相关,把同一条 ZC 序列做不同的循环移位,就得到多条互不干扰的新序列。工程上的生成逻辑是:
flowchart LR
Z["一条ZC根序列"] --> S1["循环移位 0 格"]
Z --> S2["循环移位 1 格"]
Z --> S3["循环移位 2 格 依次类推"]
S1 --> P["一批互不干扰的前导码"]
S2 --> P
S3 --> P
P --> N["一个根不够 再取下一条根序列 凑满 64 个"]
每个小区的 PRACH 时机上配置 64 个前导码,由一条或多条根序列的循环移位拼出。这里出现了一对漂亮的工程权衡:
所以小区半径越大、移动速度越高,需要预留的保护移位越大,根序列消耗越快。这不是纸面推论,它直接催生了现网中最经典的一类规划难题——后文实战部分细说。
顺带一提,短前导码的序列长度是 139 点,长前导码是 839 点。序列越长,可容纳的循环移位空间越大,这直接决定了两者的覆盖分工,见下表:
| 特性 | 长前导码 | 短前导码 |
|---|---|---|
| 序列长度 | 839 点 | 139 点 |
| 子载波间隔 | 1.25 或 5 kHz | 15 / 30 / 60 / 120 kHz |
| 时间占用 | 毫秒级长突发,保护间隔长 | 更短的突发,结构灵活 |
| 覆盖能力 | 大,可容纳大往返时延 | 相对小 |
| 典型场景 | 广覆盖宏站、高铁高速场景 | 中短覆盖部署、高频小站 |
直觉记忆法:格式越长,门铃响得越久,基站越有耐心等远方和高速用户的回声。高铁场景手机相对基站的径向速度极高,多普勒和时延变化剧烈,只有足够长的前导码才能扛得住,这就是长格式中专门有面向高速场景变体的原因。
竞争式接入有个天然痛点:切换时如果让手机在新小区随机挑前导码,万一撞车失败,切换就会中断甚至掉话——而切换恰恰是对时延和成功率最敏感的场景。
解决方案是非竞争式随机接入(CFRA):源基站在切换命令里直接指定目标小区的一个专用前导码给这台手机。这个前导码不在广播的公共竞争集合里,别人抢不到、撞不了,手机发出去基站几乎必然能收到,两步就完成同步:
| 维度 | 竞争式 CBRA | 非竞争式 CFRA |
|---|---|---|
| 前导码来源 | 手机从公共集合随机挑 | 基站通过专用信令指定 |
| 冲突风险 | 存在,需要 Msg3/Msg4 解决 | 基本没有 |
| 交互步数 | 4 步 | 2 步(Msg1 + Msg2 即达目的) |
| 典型场景 | 开机、状态转换、失步恢复、SR 失败 | 切换、按需到达等基站可预知的场景 |
| 资源代价 | 无需预安排,随时可用 | 基站要为专用前导码留额度 |
理解两种模式的分界线其实是一句话:基站能不能预判“谁马上要来敲门”。能预判(切换、定位),就用专用资源消灭冲突;不能预判(开机、失步),就只能开放竞争。值得注意的是,专用前导码是从 64 个里划出来的,划得太多公共竞争集合就变小,所以这也是一对资源权衡。
另外,竞争式的“四步”在 5G 时代出现了精简版:两步随机接入,把 Msg1 和 Msg3 打包成一条(MsgA)、Msg2 和 Msg4 打包成一条(MsgB)。原理上它用更高的发射功率和更复杂的信道设计换取交互次数减半,目标直指时延敏感场景。它是四步流程的“压缩算法”,底层的同步、身份上报、冲突解决思想完全一致。
随机接入的发送功率没法靠基站闭环控制——此时手机还没有建立起被调度的关系。于是采用最朴素的开环策略:逐轮加码。
$$P_{\text{next}} = \min\big{\, P_{\text{max}},\; P_{\text{target}} + (N_{\text{attempt}} - 1) \times \Delta_{\text{ramp}} \,\big}$$
其中 $P_{\text{target}}$ 是基站广播的初始目标功率加上路损补偿项,$\Delta_{\text{ramp}}$ 是爬坡步长(典型可配置为 2 dB 一档),$N_{\text{attempt}}$ 是当前第几轮尝试,$P_{\text{max}}$ 是手机发射能力上限。
为什么设计成“每轮固定抬高一档”而不是“尽力一发”?因为第一轮失败的原因无法区分:可能功率不够,也可能根本就是冲突。固定步长的爬坡在“弱信号”和“高冲突”两种病因间做了优雅的折中——信号弱的手机几轮后功率上来了自然成功;冲突双方一起抬功率,谁也不会被永远压制,退避随机的存在又让它们逐渐错开时机。
理解原理的回报在排查时兑现。接入类问题在网优日常中占比极高,而排查的核心是判断故障卡在哪一步:
第一类:Msg1 无响应(RAR 超时)。 手机发了前导码但等不到回应。常见病因:弱覆盖(前导码能量不足以到达);PRACH 时频资源被强干扰污染;手机功率已达上限仍不足。日志特征是反复重发后放弃。
第二类:收到 RAR 但 Msg4 过不去。 前导码到了、TA 也发了,卡在竞争解决。典型病因是冲突率高——大量用户挤在少量前导码上互相踩踏。对策不是加功率,而是把公共前导码集合扩大、检查 CFRA 是否占用了过多前导码、调整退避参数。
第三类:假成功——幽灵 TA。 这是最隐蔽的一类:相邻小区如果配置了相同或重叠的根序列组,A 小区的基站可能把 B 小区用户发来的前导码误检测为自己的,算出一个完全错误的 TA。用户“接入成功”但上行永远偏移,表现为莫名其妙的掉话和上行质量差。这就是前文根序列权衡的现实版:根序列规划必须保证相邻小区使用的循环移位空间互不重叠,高速大小区因为消耗根序列快,规划余量更紧张。
给读者一张速查表:
| 观测现象 | 最可能卡点 | 首查方向 |
|---|---|---|
| 前导码发送计数高,RAR 计数低 | 上行覆盖或 PRACH 干扰 | 弱覆盖路段、干扰源、发射功率上限 |
| RAR 正常,接入成功率低 | 竞争冲突 | 前导码分配、公共集合大小、退避参数 |
| 接入成功但 TA 值离谱或跳变 | 根序列冲突 | 邻区根序列规划重叠检查 |
| 切换时接入失败集中在某小区 | 该小区无 CFRA 专用前导码或已耗尽 | 专用前导码配置与占用统计 |
还有一个高频误解值得点名:“接入失败 = 信号差”并不成立。信号满格但根序列冲突、前导码耗尽、干扰打在 PRACH 资源上,都会造成“看得见基站、敲不开门”。反过来,把 PRACH 问题当覆盖问题去疯狂加站、调天线,往往药不对症。定位到 Msg 流程的哪一步,比笼统的信号强度测试有效得多。
Q: 随机接入和调度请求(SR)都是“申请上行资源”,区别在哪里? A: 前提完全不同。调度请求要求手机已经上行同步、已经有正式的 C-RNTI,本质是在专用资源上举一下手(1 比特性质的信号),基站看到后单独分配授权。随机接入则是“三无”状态——无同步、无身份、无专用资源——时的兜底通道。所以流程上 SR 轻快得多,只有当 SR 不可用时手机才会退回随机接入。
Q: 为什么 Msg1 不直接携带手机身份,非要四步? A: Msg1 的使命是“在完全未同步的状态下被检测到”,它必须采用恒模、自相关尖锐的专用序列,本来就装不下身份信息。而且身份要在拿到上行授权、时间对齐之后才能可靠发送。四步流程实际上是“先同步、再授权、后报身份、最后确认”的依赖链,每一步都是前一步的输出。
Q: 切换为什么几乎都用非竞争式接入? A: 因为切换时源基站和目标基站可以提前协调,完全有条件给手机发一张“专用号码牌”。切换失败的代价是掉话,而竞争式接入存在撞车重试的不确定性,重试的时间开销对切换这种毫秒级敏感的流程不可接受。用一点专用前导码资源换切换成功率,是笔划算的买卖。
Q: 响应窗口是不是设得越长越保险? A: 不是。窗口越长,失败的手机在重试前空等的时间越久,接入时延被拉长;窗口太短又可能漏掉正常的响应。它是时延与可靠性的折中参数,现网调整时应结合小区覆盖半径(响应到达最晚时间)与负载情况,而不是一味求保险。
Q: 5G 的两步接入是全新原理吗? A: 不是。它把“前导码+身份”合并在一条消息、“响应+竞争解决”合并在回程消息,物理信道设计更复杂、对信噪比要求更高,但同步、授权、身份上报、冲突解决的逻辑内核与四步完全同源。可以理解为:为时延敏感场景,把四步流程做了一次“打包压缩”。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。