首页 › deep-tech › 图解5G RRC状态机与挂起恢复

图解5G RRC状态机:为什么手机需要“第三种睡姿”

本文为通信原理科普系列第3篇。阅读对象:有1-3年经验的无线/核心网工程师。

一、从一个日常问题说起:手机不睡觉,电池撑不过半天

你有没有想过一个问题:手机待机时,基站到底知不知道你在哪?

答案是:既知道,也不知道。网络不需要你“时刻在线”——如果你的手机像电脑一样保持一条永远激活的无线连接,光是周期性的反馈、测量、信道探测就会把电池在几个小时内耗光。但另一方面,微信来消息了、运营商要给你打电话了,网络又必须在几秒内找到你。

这就产生了永恒的三角矛盾:

quadrantChart
    title 无线连接设计的三个互相制约的目标
    x-axis "省电(低功耗)" --> "费电(高功耗)"
    y-axis "慢速响应" --> "快速响应"
    "深度睡眠": [0.1, 0.15]
    "保持在线": [0.95, 0.95]
    "折中方案": [0.45, 0.6]

为了平衡这对矛盾,移动通信系统设计了一套状态机:让手机在不同状态之间迁移,每个状态保留不同程度的“在线痕迹”,消耗不同的电量,换取不同的响应速度。

4G只设计了两种状态:RRC_IDLE(空闲态) 和 RRC_CONNECTED(连接态)。而5G做了一个非常精巧的改进——在两者之间加了一个“半睡半醒”的中间态:RRC_INACTIVE(非激活态)。这个状态是5G状态机里最有设计智慧的部分,也是本文的主角。

二、先建立直觉:三种状态就像三种“睡姿”

用住宿来类比三种RRC状态:

状态 类比 发生了什么
RRC_CONNECTED 正在客房住着 有专属房间,随叫随到,服务(数据传输)即时响应
RRC_INACTIVE 退房了但行李寄存在前台 人走了(省电),但前台还留着你的登记信息和行李(UE上下文),回来只需报个暗号就能秒速入住
RRC_IDLE 彻底退房走人 前台什么都没留,再回来要重新登记、重新办手续(完整的连接建立)

这个“行李寄存”就是理解RRC_INACTIVE的关键——网络并没有完全忘掉你,只是冻结了你。

三、状态机全景图

stateDiagram-v2
    [*] --> IDLE: 开机/附着
    IDLE --> CONNECTED: RRCSetup<br/>(连接建立,全新上下文)
    CONNECTED --> IDLE: RRCRelease<br/>(释放一切,上下文丢弃)
    CONNECTED --> INACTIVE: RRCRelease带suspendConfig<br/>(挂起,上下文保留)
    INACTIVE --> CONNECTED: RRCResume<br/>(恢复,上下文取回)
    INACTIVE --> IDLE: 异常/超时<br/>(上下文最终丢弃)

    IDLE : 小区重选 + CN寻呼
    IDLE : 无UE上下文,核心网记住位置(跟踪区)
    INACTIVE : 小区重选 + RAN寻呼
    INACTIVE : gNB保留UE上下文 + RNA管理
    CONNECTED : 测量上报 + 切换
    CONNECTED : 双向数据传输,专用资源

注意两条关键的转换边:

四、三态全面对比

维度 RRC_IDLE RRC_INACTIVE RRC_CONNECTED
UE上下文 不保留(核心网仅有签约信息) gNB完整保留,UE持有恢复标识 基站和UE均激活维护
寻呼由谁发起 核心网(AMF)通过5GC寻呼 基站(gNB)发起RAN寻呼,核心网寻呼也可能叠加 不需要寻呼
移动性 小区重选(UE自主) 小区重选(UE自主) 测量上报+切换(网络控制)
位置管理 跟踪区(TA)更新,报给核心网 RNA更新,报给接入网 不需要,切换时网络实时掌握
DRX 空闲态DRX,周期可达秒级 可配置非激活态DRX,可更长(含eDRX扩展) 密集DRX,周期通常几十毫秒
恢复到数据传输 全新连接建立(十几条信令) 1~2条信令快速恢复 无需转换
端到端可达性 数秒级 数百毫秒级 毫秒级
功耗 最低 低(介于两者之间) 最高

为什么5G要费这么大劲造出第三个状态?答案藏在业务形态的变化里。

五、为什么4G不需要,5G必须有

4G时代的主流业务是“人找人”:打电话、刷网页。用户的行为模式是长连接——要么一直在传数据,要么干脆闲置很久。

5G时代的业务被重新洗牌了:

  1. 突发小包业务爆发。即时消息、状态同步、IoT传感器上报、App后台心跳——特征是“传一下、停一下”。每次只传几十字节,间隔几秒到几分钟。
  2. 如果只有两态,代价很高: - 频繁挂起→彻底释放:每次都要重走完整建立流程,信令风暴,时延大; - 干脆不释放、一直连着:基站资源和手机电量都扛不住。
  3. URLLC和低时延要求:工业控制类业务要求连接恢复时间短到毫秒级,传统的“IDLE→完整建链”根本来不及。

于是5G的解法是:把“释放”拆成两档。轻度的、很快会回来的,挂起(suspend);重度的、短时间内不回来的,彻底释放(release)。RRC_INACTIVE就是那道“介于开和关之间的半开状态”。

从信令成本看这个设计的价值:

$$\text{恢复成本比} = \frac{N_{\text{resume}}}{N_{\text{setup}}} \approx \frac{2}{10+}$$

从十几条信令(含随机接入、RRC建立、NAS层认证/安全激活、承载建立)压缩到两条左右,恢复时延从秒级降到百毫秒级,同时UE不需要维持专用无线资源——这就是“既省电又快”的数学本质。

六、挂起机制:上下文到底存在哪

这是RRC_INACTIVE最精妙的部分。当基站决定挂起一个UE时,它做三件事:

flowchart TB
    subgraph GNB["gNB(基站侧)"]
        A["UE Context 完整保留<br/>包括:AS安全密钥、承载配置、<br/>能力信息、PDU会话信息"]
    end
    subgraph UE["UE(手机侧)"]
        B["保存 resumeIdentity(I-RNTI)<br/>保存 nextHopChainingCount<br/>保存自己的AS安全上下文"]
    end
    subgraph AIR["空口"]
        C["RRCRelease 消息<br/>+ suspendConfig 字段<br/>(含DRX配置、RNA标识、恢复标识)"]
    end
    GNB -->|下发| AIR
    AIR -->|接收| UE

要点解读:

1. 双方各自保存“一半”的状态。 基站保存完整的UE上下文;手机只保存一个很短的恢复标识(I-RNTI,短格式24比特、长格式40比特)加上自己的安全上下文。这个I-RNTI就像寄存行李时给你的取件码——凭它回来,不用重新登记。

2. 安全是“接续”而非“重建”。 挂起时双方约定了一个密钥更新参数(nextHopChainingCount),恢复时手机用旧的AS密钥推导出新的AS密钥。整个过程不需要核心网重新跑一遍认证——这是恢复速度快的核心原因之一。

3. 核心网完全不知情。 挂起/恢复纯粹是UE和gNB之间的接入层(AS)行为,AMF全程无感。这个设计减少了核心网信令负载,但也埋下了一个工程隐患(后面讲)。

七、恢复流程时序图

sequenceDiagram
    participant UE as UE
    participant gNB as gNB(原基站)
    participant gNB2 as gNB(新基站)
    participant AMF as AMF

    Note over UE,gNB: === 挂起阶段 ===
    gNB->>UE: RRCRelease(含suspendConfig + I-RNTI)
    Note over UE: 进入INACTIVE<br/>启动周期性RNA更新定时器
    Note over gNB: 保留完整UE Context

    Note over UE,gNB2: === 恢复阶段(假设UE换了小区)===
    UE->>gNB2: RRCResumeRequest(携带I-RNTI + 恢复MAC-I校验)
    alt I-RNTI指向本基站
        gNB2->>gNB2: 本地取回UE Context
        gNB2->>UE: RRCResume(安全命令 + SRB1恢复)
        UE->>gNB2: RRCResumeComplete
    else I-RNTI指向别的基站
        gNB2->>gNB: 经Xn接口取回UE Context
        gNB-->>gNB2: 返回上下文
        gNB2->>UE: RRCResume
        UE->>gNB2: RRCResumeComplete
    end
    Note over gNB2,AMF: 若需要(如恢复用户面承载)<br/>gNB2与AMF之间做上下文同步

三个工程细节值得注意:

八、RNA:为“半睡”状态量身定做的跟踪区

IDLE态下,核心网通过跟踪区(TA)管理UE位置——UE跨TA才发TAU。但INACTIVE态如果继续用TA,会遇到一个结构性问题:INACTIVE的移动性是UE自主的小区重选,基站完全不知道UE走到了哪里。

如果复用TA,UE每跨一次TA都要惊动核心网做一次更新——这违背了“把核心网挡在门外”的设计初衷。所以5G发明了一个接入网自己的位置管理粒度:RNA(RAN-based Notification Area,基于RAN的通知区域)。

RNA和TA的关系

flowchart TB
    subgraph CN["核心网视角"]
        TA1["跟踪区 TA<br/>(较大粒度,IDLE态使用)<br/>AMF只知道UE在哪个TA"]
    end
    subgraph RAN["接入网视角"]
        RNA1["RNA(可小可大)<br/>(INACTIVE态使用)<br/>gNB知道UE在哪个RNA内"]
        C1["RNA配置方式1:<br/>一组小区列表"]
        C2["RNA配置方式2:<br/>N个小区"]
        C3["RNA配置方式3:<br/>N个小区 + 一个距离环<br/>(离开原小区超过N圈才更新)"]
        RNA1 --> C1
        RNA1 --> C2
        RNA1 --> C3
    end
    CN -.包含.-> RAN

三种RNA配置方式各有取舍:

方式 原理 优点 缺点
小区列表 显式下发RNA包含哪些小区 寻呼范围精确 小区多时消息体积大
N个小区 以服务小区为中心的N圈 配置简单 边界UE可能频繁更新
N小区+距离环 需同时离开原小区N次且距原小区超过一定圈数 减少边界乒乓更新 实现稍复杂

RNA更新(RNAU)什么时候触发

INACTIVE态的UE像IDLE态一样自主重选小区,但必须遵守RNA边界规则。触发RNAU的时机:

  1. 离开当前RNA——重选到一个不属于当前RNA的小区;
  2. 周期性RNAU定时器到期——哪怕一直不动,也要定期“报个平安”,让基站确认你还活着;
  3. 从INACTIVE态恢复连接时——顺带完成位置刷新。

RNAU的报文形式非常巧妙:它就是一条RRCResumeRequest,但里面带了一个resumeCause = rna-update(或类似的原因值)。基站收到后执行一次“快速挂起-恢复”循环,然后立刻再把UE挂回去。也就是说,RNA更新在协议上被建模成一次“假恢复”——复用了resume的信令骨架,不需要专门发明新流程。这种设计上的复用思想非常值得品味。

九、寻呼:两种状态,两套寻呼体系

寻呼是状态机设计的“最后一公里”——当有业务到达,网络如何唤醒UE?

flowchart TB
    D["下行数据/信令到达"] --> W{"UE当前状态?"}
    W -->|IDLE| P1["核心网寻呼<br/>AMF→所有相关gNB→空口Paging"]
    W -->|INACTIVE| P2{"数据来源?"}
    P2 -->|来自核心网,如语音| P3["路径切换时gNB发现UE在INACTIVE<br/>触发RAN寻呼(同时可能叠加CN寻呼)"]
    P2 -->|来自原gNB缓存的上行授权| P4["gNB直接在RNA内发起RAN寻呼<br/>(不惊动核心网)"]
    W -->|CONNECTED| P5["无需寻呼,直接调度"]
    P1 --> R["UE收到寻呼→发起连接建立/恢复"]
    P3 --> R
    P4 --> R

关键差异:

维度 IDLE态寻呼 INACTIVE态寻呼
发起者 AMF(核心网) gNB(接入网)
寻呼范围 整个TA列表 当前RNA
触发原因 核心网有话要送达 gNB有下行数据或需要上下文交互
UE响应动作 走RRCSetup完整建链 走RRCResume快速恢复
核心网参与 必须 可以完全不需要

寻呼时机(Paging Occasion)的数学:寻呼不是随时发的,UE为了省电只在特定的帧“睁眼看一下”。寻呼帧满足:

$$\text{SFN} \bmod T = \left\lfloor \frac{T}{N} \right\rfloor \cdot \left( \text{UE_ID} \bmod N \right)$$

其中 $T$ 是寻呼周期(DRX周期),$N$ 是一个周期内的寻呼组数,$\text{UE_ID}$ 由UE标识推导。这个公式把所有UE按ID均匀打散到不同的寻呼时机上,避免所有UE在同一帧醒来造成信令拥塞——这是把随机负载离散化、削峰填谷的经典设计。

INACTIVE态还允许配置比IDLE更长的DRX周期(甚至支持eDRX扩展),让省电上限更高——代价是被唤醒的响应时间更长。这是协议留给运营商的重要优化旋钮。

十、决策引擎:基站如何决定“挂起”还是“释放”

进入INACTIVE不是UE说了算,而是基站单方面决策。核心逻辑是基于RRC不活动定时器(RRC inactivity timer):

flowchart TD
    A["UE停止数据传输"] --> B["启动/重置RRC不活动定时器"]
    B --> C{"定时器超时前<br/>有新数据?"}
    C -->|有| B
    C -->|超时| D{"基站策略判断"}
    D -->|"该UE历史行为<br/>是'短间隔突发型'"| E["挂起:RRCRelease + suspendConfig"]
    D -->|"该UE历史行为<br/>是'长时间不用'"| F["彻底释放:普通RRCRelease"]

基站的策略可以很简单(一刀切定时器),也可以很智能(参考UE过去几轮的“挂起后再活跃间隔”统计,动态选择挂起或释放)。这个决策完全在接入网本地完成,不需要问AMF——又一次体现了“5G把智能下推到边缘”的架构哲学。

十一、现网实战:工程师会在哪里碰到它

1. 参数优化场景

2. 信令抓包分析

在Uu口抓包看到这些关键字眼时,你就知道碰到了INACTIVE机制:

3. 核心网侧的“盲区”

由于挂起对AMF透明,核心网工程师排查“用户有数据但一直不通”的问题时,容易被误导:AMF以为用户还连着,实际UE在INACTIVE态且RAN寻呼没成功。跨无线/核心网的问题,要先对齐“双方各自认为的UE状态”,这是排障时的经典陷阱。

4. 常见误解

十二、一句话总结设计哲学

RRC_INACTIVE的本质,是把“连接”这个二元概念连续化了:

$$\text{在线程度} = f(\text{保留的上下文量},\ \text{恢复所需的信令数},\ \text{寻呼的主体与范围})$$

4G只有“全开”和“全关”两个端点;5G在中间加了一个可调节的中间点。手机睡得香,但网络给它留了一盏灯、一份档案、一个取件码——回来时不用重新登记,报上暗号就能立刻续住。这盏灯,就是5G为海量突发小包和低时延业务准备的答案。

常见问题

Q1: RRC_INACTIVE和RRC_IDLE的核心区别是什么? A: 一句话——IDLE是“网络忘了你的无线细节”,INACTIVE是“基站还记着,但让你睡了”。具体体现在三点:①INACTIVE下gNB保留完整UE上下文,恢复只需两条信令;②IDLE由核心网(AMF)寻呼、INACTIVE由基站发起RAN寻呼;③IDLE用TA做位置管理、INACTIVE用RNA。

Q2: 挂起(suspend)和释放(release)在信令上看起来一样,怎么区分? A: 都是通过RRCRelease消息下发的,区别在于消息里是否携带suspendConfig信息元素。带了就是挂起(进入INACTIVE),没带就是彻底释放(进入IDLE)。所以抓包时不能只看消息名,要看IE。

Q3: 为什么RNA更新要伪装成一次RRCResume,而不单独设计流程? A: 这是协议设计的复用智慧。RNAU需要的是“向基站报到+更新位置”,而RRCResume天然具备“让基站重新认识这个UE”的骨架。复用它意味着RNAU顺带完成了安全校验(恢复MAC-I验证)、上下文同步,不需要为RNAU单独发明一套鉴权机制。缺点是每次RNAU要付出一次resume+re-suspend的信令成本。

Q4: 恢复失败(resume被拒)的常见原因有哪些? A: 主要三类:①原基站的UE上下文因超时或资源回收已被删除;②I-RNTI在新基站查不到对应的上下文(跨站映射失败);③恢复MAC-I校验失败(安全上下文对不上)。失败后UE被指示回退到IDLE态走完整建链,表现为用户体感“突然卡了几秒”。

Q5: 运营商应该如何权衡RRC不活动定时器的长短? A: 看业务画像。对短视频/社交类用户占比高的网络,适当加长(减少无谓的挂起-恢复循环);对IoT和低频心跳类业务,缩短(尽快释放无线资源)。更精细的做法是基站按UE历史行为动态决策。这个参数是无线侧“用户体验 vs 资源效率”最直接的旋钮之一。

参考来源

  1. ShareTechnote - 5G/NR RRC State — 5G RRC三态、状态转换和挂起/恢复机制的经典图解教程站
  2. ShareTechnote - 5G/NR RRC — RRC消息(Setup/Release/Resume)字段级解析
  3. 《5G无线网络规划与设计》《移动通信》(教材) — 状态机、寻呼周期与DRX设计的公式与规划思路来源

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