<!-- title: RRC重建：断链后的自动愈合 -->

你正打着电话穿过一条隧道，信号突然"啪"地断了——但仅过了零点几秒，通话又神奇地续上了，号码没变、对方没挂。这一瞬间的"自动回血"，背后正是移动通信里最不起眼却最关键的一道安全网：**RRC连接重建（RRC Connection Re-establishment）**。

在已经讲过的切换、寻呼、注册之外，移动性管理还有一条"事故处理通道"。切换是常态下的"接力赛"，而RRC重建是接力棒掉地上之后的那只"急救手"。今天这一轮，我们就把这条事故通道的信令时序、安全传承和调试陷阱一次拆透。

## 一、先有直觉：为什么不能"重新打一次电话"

打个比方。你在公司开视频会议（=已建立的RRC连接 + 承载数据的DRB），网络突然卡死。你有两个选择：

- **方案A**：关掉会议软件，重新登录、重新输入会议号、重新共享屏幕、重新邀请所有人——这相当于**重新发起注册和RRC建立**，安全认证、密钥协商、承载建立全走一遍，耗时上百毫秒甚至更久，通话基本断掉重连。
- **方案B**：软件自动检测到卡顿，凭着你还没过期的"会议令牌"（=安全上下文），悄悄换一条线路重连，原来的会议号、参会人都还在，只差最后补一个握手——这就是**RRC重建**。

显然方案B更快、更省电、对用户更友好。RRC重建的本质，就是**在不重新做完整鉴权的前提下，尽可能快地恢复一条已经"断"掉的RRC连接**，把业务中断时间从"重新入网"的秒级压缩到几十到几百毫秒。

但这里有个前提：网络必须还能"认出"你是谁，而且你们手里还握着同一把"令牌"（安全密钥）。这正是理解整个流程的钥匙。

## 二、RRC重建在状态机里的位置

5G里UE有三个RRC状态：IDLE（空闲）、INACTIVE（非激活）、CONNECTED（连接态）。重建只发生在**CONNECTED态**——因为只有连接态下才"有一条值得挽救的连接"。

```mermaid
stateDiagram-v2
    [*] --> IDLE: 开机
    IDLE --> CONNECTED: RRC建立/注册
    CONNECTED --> INACTIVE: RRC释放(挂起)
    INACTIVE --> CONNECTED: RRC恢复(Resume)
    CONNECTED --> CONNECTED: 切换(正常接力)
    CONNECTED --> 重建中: RLF/切换失败/重配失败/完整性失败
    重建中 --> CONNECTED: 重建成功(SRB1先恢复)
    重建中 --> IDLE: 重建失败/超时(T301)
    note right of 重建中
        核心目标: 不重新鉴权
        尽量保住已有承载和安全上下文
    end note
```

注意那条从CONNECTED到"重建中"的箭头——它不是用户主动触发的，而是**故障检测**触发的。重建是被动响应，这点和切换（网络主动调度）很不一样。

## 三、谁会按下重建按钮：四种触发条件

UE不会无缘无故重建。按下这个"事故按钮"的，通常是下面四种情况之一，每一种都对应一条不同的"病因"：

| 触发原因（ReestablishmentCause） | 病因 | 典型场景 |
|---|---|---|
| `reconfigurationFailure` | 收到RRC重配消息后，UE发现自己执行不了（比如配置了不支持的能力） | 切换后配置异常、新测量配置出错 |
| `handoverFailure` | 切换没在规定时间内完成，T304超时 | 目标小区信号突然变差、随机接入失败 |
| `rejectionFailure`（NR）/ `otherFailure` | 无线链路失败RLF，物理层长期不同步 | 隧道、电梯、快速衰落、被遮挡 |
| 完整性校验失败 | SRB上的信令被篡改或解不开 | 安全密钥不同步、强干扰 |

其中**RLF是最常见、最值得深挖的触发源**，所以我们要先搞清楚：UE凭什么判定"这条链路已经没救了"？

## 四、RLF的判定：一组定时器与计数器的合议

物理层每个时隙都在评估无线质量。当连续若干个时隙都解不出参考信号，物理层就向RRC层报一个**"out-of-sync"（失步）**指示。RRC层用两个计数器和两个定时器来合议：

```mermaid
flowchart TD
    A[物理层持续解调失败] --> B[out-of-sync指示]
    B --> C{连续 N310 次?}
    C -->|否| Z[继续监测]
    C -->|是| D[启动 T310 定时器]
    D --> E{T310 运行中收到 in-sync?}
    E -->|连续 N311 次同步| Z
    E -->|一直不同步| F[T310 超时 → 判定 RLF]
    F --> G[启动 T311: 开始选小区]
    G --> H{找到合适小区?}
    H -->|是| I[发起 RRC 重建, 启动 T301]
    H -->|否, T311超时| J[回 IDLE 态]
    I --> K{T301 内收到重建响应?}
    K -->|是| L[重建成功]
    K -->|否| J
```

这套逻辑的精髓是"**给链路几次改正机会**"：

- **N310**：连续多少次失步才开始真正担心（默认常为几百上千次，给足容忍）。
- **T310**：担心之后，再宽限一段时间（典型1秒），看质量能否自行恢复。
- **N311**：只要这段时间里连续同步N311次，说明链路"病好了"，虚惊一场，T310停止。
- **T310真超时**：才正式宣告RLF。

RLF一旦宣告，UE启动**T311**进入"找下家"阶段，开始按信号强度选一个合适的小区。选定后，就正式发起重建，并启动**T301**等待网络的应答。如果T301或T311超时还没成功，UE只能认输，退回IDLE态重新入网。

> 一个常被忽略的细节：RLF发生在切换过程中时，还有个**T312**定时器配合——切换时若T310正在跑，会同时起T312，让RLF判定更"灵敏"，因为切换本来就是个高风险窗口，宁可早判定早补救。

## 五、完整信令时序：一场不到10条消息的急救

这是本文的核心。一次成功的RRC重建，信令精简到极致——前后不到10条消息，**全程不做完整鉴权**：

```mermaid
sequenceDiagram
    autonumber
    participant UE as UE(终端)
    participant gNB1 as 源gNB(原小区)
    participant gNB2 as 目标gNB(新小区)
    participant AMF as 核心网(AMF)

    Note over UE: RLF被判定 / 切换失败
    UE->>UE: T311选小区 → 选定gNB2
    UE->>gNB2: RRCReestablishmentRequest<br/>(经SRB1, CCCH)<br/>含: C-RNTI + 源PCI(=ReestabUE-Identity)<br/>+ ReestablishmentCause + ShortMAC-I
    Note over gNB2: gNB2不认识这个UE!
    gNB2->>gNB1: Xn: Retrieve UE Context Request<br/>(用源PCI+C-RNTI定位)
    gNB1->>gNB2: Xn: Retrieve UE Context Response<br/>(回传UE上下文 + 下一个安全密钥/转发地址)
    gNB2->>UE: RRCReestablishment<br/>含: 新C-RNTI + NextHopChainingCount<br/>+ SRB1恢复配置
    Note over UE: 用NH/NCC刷新密钥, 重激SRB1安全
    UE->>gNB2: RRCReestablishmentComplete
    Note over gNB2: SRB1已通, 但SRB2/DRB仍挂起
    gNB2->>UE: RRCReconfiguration<br/>(恢复SRB2/DRB + 重配测量)
    UE->>gNB2: RRCReconfigurationComplete
    gNB2->>AMF: Path Switch Request(切换数据路径)
    AMF-->>gNB2: Path Switch Response
    Note over UE,AMF: 业务恢复, 通话续上
```

逐条拆解这条时序，有几个设计极其精妙的地方：

**第2步为什么只发SRB1？** 重建请求走的是SRB1、用的CCCH（公共控制信道）。因为此刻DRB（数据承载）和SRB2都"挂"了，UE手里唯一还能发信令的就是SRB1。而且SRB1在重建前**没有激活加密**——因为旧密钥还没刷新，只能先用明文（带ShortMAC-I做防伪）发出求救信号。

**第4、5步的"取上下文"是点睛之笔。** 目标gNB2根本不认识这个UE，凭什么相信它？答案是gNB2拿着UE自报的"身份证号"（源小区PCI + C-RNTI），通过Xn接口去找源gNB1核实。源gNB1一看："这确实是我刚丢的客户"，就把该UE的完整上下文（包括该用哪个密钥、有哪些承载、数据缓存转发地址）发给gNB2。**这就是"不重新鉴权"能成立的关键——上下文（含安全根）是从老东家手里"过户"过来的，而不是凭空再认证一次。**

**第6步的NextHopChainingCount（NCC）是安全的命门。** 它告诉UE"该用第几跳的密钥了"。收到它，UE就能用密钥派生函数（KDF）算出新密钥，重新激活SRB1的加密和完整性保护。

**第8步之后，业务其实还没完全恢复。** 重建完成只意味着SRB1通了，控制面接通了。真正承载你通话数据的DRB，要等第9步RRCReconfiguration才被"重新点亮"。所以从用户感受上，重建完成≠通话立即清晰，中间还差一个重配。

## 六、安全上下文的传承：密钥凭什么不重做

很多人误以为重建等于"换把新锁配新钥匙"，其实不是。重建的设计哲学是：**锁还是原来的体系，只是把钥匙"往下转一跳"**。

5G的接入层密钥 $K_{gNB}$ 不是每次都从头协商的，而是从一个根密钥经过"链式派生"逐跳更新的，靠两个参数驱动：**NH（Next Hop，下一跳值）**和**NCC（Next Hop Chaining Count，计数器）**。

派生关系可以简化理解为：

$$
K_{gNB}^{new} = \text{KDF}(K_{gNB}^{old}, \text{PCI}_{target}, \text{ARFCN}_{target}) \quad (\text{水平派生})
$$

$$
K_{gNB}^{new} = \text{KDF}(K_{AMF}^{NH}, N) \quad (\text{垂直派生, 用预存的NH链})
$$

UE和网络各自维护一条NH链和NCC计数。每次切换或重建，NCC向前走一步，双方用对应的NH派生出新 $K_{gNB}$，再进一步派生出SRB/DRB的加密密钥 $K_{RRCenc}$、$K_{RRCint}$ 等。**只要NCC对得上，双方就算出的就是同一把钥匙**——这就是为什么RRCReestablishment里必须携带NextHopChainingCount：它是在对齐"密码本翻到第几页"。

| 安全要素 | 重建时是否变化 | 说明 |
|---|---|---|
| 根密钥 $K_{AMF}$ | 不变 | 仍来自初始注册时的鉴权，无需重做AKA |
| 加密/完整性算法 | 不变 | 沿用之前协商的算法集 |
| NH / NCC | NCC+1 | 推进一跳，派生新 $K_{gNB}$ |
| C-RNTI | 变 | 目标小区分配新的无线标识 |
| ShortMAC-I | 现算 | 用旧密钥算出的"短鉴权码"，防止伪造请求 |

这种"换汤不换药"的传承，让重建避免了和核心网来回做鉴权交互，是它能在几十毫秒内完成的根本原因。

## 七、三条岔路：重建不是只有"成功"一种结局

刚才时序画的是最理想、也是最常见的"Xn取上下文成功"路径。实际上重建走到目标gNB2时，有三种结局：

```mermaid
flowchart TD
    M[UE向gNB2发重建请求] --> N{gNB2能取到UE上下文?}
    N -->|站内: 本就是源gNB| P[直接有上下文 → 重建成功]
    N -->|有Xn: 找源gNB要到了| Q[Xn取上下文成功 → 重建成功]
    N -->|无Xn / 源已删| R[取不到上下文 → 重建失败]
    R --> S[网络回RRCReject或无响应]
    S --> T[UE回IDLE, 重新入网]
    P --> U[业务恢复]
    Q --> U
```

- **站内重建**：UE恰好重建到了原来的源gNB（比如同一基站下RLF后回到原小区或同站邻区），上下文本就在手，最快。
- **站间+Xn**：如时序图所示，跨基站但Xn通，通过取上下文完成，最常见。
- **取不到上下文**：如果目标gNB和源gNB之间没有Xn，或源gNB已经把该UE上下文删了（超时），gNB2就**无法恢复这个连接**。此时它不会硬撑，而是拒绝或不应答，UE的T301超时后退回IDLE，老老实实重新注册。**这是个重要陷阱**：跨厂家、跨区域、Xn未配置的场景下，重建成功率会明显下降，掉话率上升。

## 八、重建与切换：一条明线，一条暗线

讲过切换的"接力赛"之后，必须把切换和重建的关系讲清楚，否则容易混。它们是**明暗两条线**：

- **切换**是"计划内"的接力，网络提前在源、目标之间铺好路，UE带着目标小区的完整配置（HO Command）过去，是受控迁移。
- **重建**是"计划外"的急救，UE是被迫流浪到新小区，新小区对它一无所知，得现去查户口。

更关键的是：**切换失败时，重建是兜底网。** 当T304超时、切换没完成，UE并不会直接掉线，而是先尝试重建——如果能重建到某个合适小区，业务就保住了。这也是为什么日常优化里，"切换失败率"和"重建成功率"常常被放在一起看：前者高说明接力没接住，后者高说明掉下去的人又被捞起来了。

```mermaid
flowchart TD
    A[网络下发HO Command] --> B[UE启动T304, 去目标小区]
    B --> C{在T304内完成随机接入?}
    C -->|是| D[切换成功 ✅]
    C -->|否, T304超时| E[判定切换失败]
    E --> F[尝试RRC重建]
    F --> G{重建成功?}
    G -->|是| H[业务被救回 🆘→✅]
    G -->|否| I[掉话, 回IDLE ❌]
```

有了5G引入的**条件切换（CHO）**和**双激活协议栈（DAPS）**，切换窗口本身的鲁棒性大大提升，从源头上减少了"跌落到重建通道"的概率。但重建这道安全网依然保留——再稳的系统也要有兜底。

## 九、对比表：重建、建立、Resume、切换到底差在哪

初学者最容易把这几个RRC过程搅在一起。用一张表彻底区分：

| 维度 | RRC建立(Setup) | RRC恢复(Resume) | 切换(Handover) | **RRC重建(Reestablishment)** |
|---|---|---|---|---|
| 触发场景 | IDLE态首次/重新入网 | INACTIVE态被唤醒 | 连接态正常迁移 | **故障后的应急恢复** |
| 起始状态 | IDLE | INACTIVE | CONNECTED | CONNECTED(故障中) |
| 是否重新鉴权 | 是（与核心网AKA） | 否（用挂起的安全上下文） | 否 | **否（Xn过户上下文）** |
| 是否保住DRB | 全新建立 | 恢复挂起的承载 | 网络预配置迁移 | **SRB1先通，DRB靠重配** |
| 典型时延 | 最长（秒级） | 短 | 短（受控） | **中（几十~几百ms）** |
| 由谁主导 | UE | UE/网络 | **网络主导** | **UE被动发起** |

记住一行话：**建立是从零盖房，恢复是叫醒睡着的人，切换是计划搬家，重建是地震后抢修。**

## 十、实战调试：log里怎么认出一次重建

工程师在路测或信令分析仪里排查掉话，识别重建几乎是基本功。几个抓取要点：

1. **盯RRCReestablishmentRequest的cause值**。如果看到一连串 `otherFailure`，多半是覆盖/干扰导致的RLF；如果是 `handoverFailure`，重点查那次切换的目标小区配置和随机接入；`reconfigurationFailure` 则指向参数配置错误。
2. **看T310是否真超时**。有些"假掉话"其实是T310起过又被N311救回，log里会有out-of-sync/in-sync指示的来回。真RLF是T310走完了。
3. **核对Retrieve UE Context是否成功**。跨基站重建失败，往往卡在Xn取上下文这一步——如果重建请求后没有对应的RRCReestablishment响应，而是直接RRCReject或T301超时，十有八九是上下文取不到（Xn未配置或源基站已清上下文）。
4. **重建后数据是否续上**。重建Complete之后如果没有紧跟RRCReconfiguration去恢复DRB，用户会感觉"信号回来了但没声音"，要查DRB恢复这段。
5. **重建≠问题根因**。重建本身是"症状的急救"，不是病根。频繁重建说明覆盖或切换参数有深层问题，要把重建热点和RLF原因上报（NR支持RLF Report上报）联合分析。

一个经典陷阱：**把重建成功当成"网络没问题"**。重建成功只代表兜底网生效了，恰恰说明前面有一次切换失败或RLF——重建越频繁，网络隐患越大，不能因为"用户没投诉掉话"就忽略。

## 常见问题

**Q1：RRC重建和RRC恢复（Resume）都是"不重新鉴权地恢复连接"，有什么本质区别？**
A：起点状态不同。Resume是从INACTIVE态唤醒，唤醒的是一条被网络主动"挂起"的连接，上下文完整保存在基站和UE侧，恢复极快。重建是从CONNECTED态的故障中自救，连接是被意外打断的，新基站往往没有上下文，需要现去Xn取。一句话：Resume是"叫醒睡着的人"，重建是"给昏迷的人急救"。

**Q2：为什么重建请求要用明文发，安全性怎么保证？**
A：因为发请求时新密钥还没派生出来，旧的SRB1安全已被打破，所以RRCReestablishmentRequest只能明文。但消息里带了一个**ShortMAC-I**——它是用旧的安全密钥对UE身份算出的短鉴权码。目标基站拿到后，结合从源基站取回的上下文验证ShortMAC-I，就能确认这个请求是真的UE发的、不是伪造的，从而堵住明文带来的伪造风险。

**Q3：如果目标基站和源基站之间没有Xn接口，重建会怎样？**
A：目标基站无法通过Xn取到UE上下文，也就无法恢复安全和承载，通常直接拒绝或不应答。UE的T301定时器超时后，只能退回IDLE态，重新发起注册和RRC建立，相当于"重新打一次电话"。这也是跨厂家、跨区域网络里重建成功率偏低、掉话率偏高的常见原因，优化时需重点核查Xn连通性。

**Q4：重建成功后，之前的通话数据会丢吗？**
A：取决于上下文过户时是否带了数据转发。如果源基站在Xn取上下文响应里配置了转发地址，缓存的下行数据会被转给目标基站，丢得少；如果没有转发或缓存已满，期间的数据会丢失。此外，重建只先恢复SRB1，DRB要等RRCReconfiguration，这段窗口期的用户面数据是中断的，所以即便信令重建成功，用户也可能感到短暂静音。

**Q5：T310、T311、T301这三个定时器分别在管什么事？**
A：分工明确：**T310**管"链路是否真没救了"（从开始怀疑到正式判RLF）；**T311**管"RLF之后选下家选多久"（给UE时间找合适小区）；**T301**管"重建请求发出去后等回应等多久"（超时则认输回IDLE）。三者接力，构成了从"故障检测→找新家→等待救援→认输放弃"的完整时间线。

## 参考来源

1. [5G NR RRC Reestablishment Procedure | NR Signaling Call Flow Tutorial — 3glteinfo](https://www.3glteinfo.com/call-flows/5g/rrc-reestablishment/) — 5G RRC重建的完整信令流程图与失败恢复机制教程
2. [RRC Reestablishment request in 5G NR | WirelessBrew](https://wirelessbrew.com/5g-nr/rrc-reestablishment-request-in-5g-nr/) — 重建请求的触发条件、关键IE与回退机制详解
3. [4G&5G: UE Radio Link Failure Detection methods & Supervision Timers — Mohamed Eladawi](https://www.mohamedeladawi.com/4g-5g-ue-radio-link-failure-detection-methods-supervision-timers/) — RLF检测、T310/T311/T301/T304等监督定时器的工作原理
4. [5G NR Mobility - RRC Connected Mode - Re-establishment procedure — iTelcoTech](https://www.itelcotech.com/blog/5g-nr-mobility-rrc-connected-mode-re-establishment-procedure) — 连接态移动性中重建过程的工程化解读
5. [Radio Link Failure Recovery Procedures in 5G NR — PatSnap Eureka](https://eureka.patsnap.com/article/radio-link-failure-recovery-procedures-in-5g-nr) — 5G NR中无线链路失败的检测与恢复机制综述

---
> 本文由「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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
