在 5G 系统(5GS)中,UE 的连接管理被划分为两个基本状态:CM-IDLE(空闲态)与 CM-CONNECTED(连接态)。UE 完成初始 Registration 后,为了省电和节省无线空口资源,绝大多数时间停留在 CM-IDLE 态,此时 N1(UE–AMF)NAS 信令连接、N2(AN–AMF)N2 连接、N3(AN–UPF)用户面隧道全部释放,仅保留 UE 与网络中的注册上下文与订阅数据。
然而一旦出现下列任一触发,UE 必须在毫秒级内"重新上线"并恢复用户面:
承担"从 CM-IDLE 重建 N1/N2/N3 一次到位"这一职责的,正是 Service Request 过程,定义在 TS 23.502 Section 4.2.3.2,其 NAS 层编解码定义在 TS 24.501 Section 5.6.1 与 9.11.3.46。它是 5GC 信令面频次最高、对端到端时延影响最大的过程之一——一次 VoNR 被叫的接续时延,几乎一半消耗在 Service Request 上。理解它的每一个 IE 和每一段交互,是核心网协议工程师与排错工程师的基本功。
本文聚焦 TS 23.502 R18 Section 4.2.3.2 中的 UE 触发型 Service Request(含与网络触发型的差异),逐消息、逐 IE 拆解,并给出抓包识别与典型故障点。
Service Request 是 CM-IDLE → CM-CONNECTED 的唯一标准入口(异常路径是隐式分离后的重新注册)。下图给出以 Service Request 为枢纽的状态迁移:
stateDiagram-v2
[*] --> RM_REGISTERED_CM_IDLE : Registration完成
RM_REGISTERED_CM_IDLE --> RM_REGISTERED_CM_CONNECTED : Service Request(UE触发)\nTS23.502 §4.2.3.2
RM_REGISTERED_CM_CONNECTED --> RM_REGISTERED_CM_IDLE : N1/N2释放(AN释放)\nTS23.502 §4.2.6
RM_REGISTERED_CM_CONNECTED --> RM_REGISTERED_CM_CONNECTED : Service Request(网络触发)\n恢复N3用户面
RM_REGISTERED_CM_IDLE --> RM_REGISTERED_CM_IDLE : Periodic Registration Update
RM_REGISTERED_CM_CONNECTED --> RM_DEREGISTERED : Deregistration
设计要点:5G 把"信令连接建立"与"用户面激活"合并到同一个过程里完成。这与 EPS 的 Service Request(TS 23.401)一脉相承,但 5G 借助 PDU Session 粒度的 Uplink data status / PDU session status / Allowed PDU session status 三个 IE,实现了按需、按会话粒度地重建用户面,避免一次性激活所有 PDU Session 造成信令风暴。
下图严格对应 TS 23.502 Section 4.2.3.2 Figure 4.2.3.2-1(UE 触发),并标注每条消息所属的接口与承载它的 RRC/N2 容器:
sequenceDiagram
autonumber
participant UE
participant AN as (R)AN/gNB
participant AMF
participant SMF
participant UPF
Note over UE: CM-IDLE, 上下行数据触发
UE->>AN: RRC Setup Request (含5G-S-TMSI)
AN->>UE: RRC Setup
UE->>AN: RRC SetupComplete<br/>(NAS: Service Request)
AN->>AMF: N2 INITIAL UE MESSAGE<br/>(NAS: Service Request)
Note over AMF: 校验有效安全上下文<br/>解析 Active/Uplink data status
loop 需激活的每个PDU Session
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext Req<br/>(PDU Session ID, Operation=Activate)
SMF->>UPF: N4 Session Modification Req<br/>(激活DL forwarding)
UPF-->>SMF: N4 Session Modification Rsp
SMF-->>AMF: Nsmf_PDUSession_UpdateSMContext Rsp<br/>(N2 SM: QoS Flow, N3 DL TEID)
end
AMF->>AN: N2 REQUEST (INITIAL CONTEXT SETUP REQUEST)<br/>(N2 SM info + NAS: Service Accept)
Note over AN: 空口安全模式+DRB建立
AN->>UE: RRC Reconfiguration (+ NAS: Service Accept)
AN-->>AMF: N2 REQUEST ACK<br/>(INITIAL CONTEXT SETUP RSP: N3 UL TEID)
loop 每个激活PDU Session
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext Req<br/>(N2 SM: AN N3 UL TEID)
SMF->>UPF: N4 Session Modification Req<br/>(下发AN N3 UL TEID)
UPF-->>SMF: N4 Session Modification Rsp
end
Note over UE,UPF: 上下行用户面打通
UE 在 CM-IDLE 态没有 RRC 连接,因此 Service Request 必须经历四步接入(4-step RACH):
RRC Setup Request 携带 UE 标识(首选 5G-S-TMSI,回退 random value),gNB 据此决定是否启动竞争解决;RRC Setup 给 UE 分配 C-RNTI 与 SRB1;RRCSetupComplete 的 selectedPLMN-Identity、registeredAMF 之上,把初始 NAS 消息(即 Service Request)放进 dedicatedNAS-Message 字段(TS 38.331);INITIAL UE MESSAGE(TS 38.413 Section 8.4)原样上交给 AMF,并带上 User Location Information、RRC Establishment Cause(如 mo-Signaling / mo-Data / mt-Access)。设计意图:Service Request NAS 消息本身不做完整性保护、不做加密(这是 5GMM 的特殊例外,TS 24.501 4.4.4.3),目的是让 gNB 与 AMF 能在尚未激活 N1 安全连接的 CM-IDLE 入口就识别并转发它。安全保证转由"上层有效安全上下文 + 后续 SMC"承担——AMF 收到 Service Request 后会用本地存储的 KAMF 派生密钥校验紧随其后的、被完整性保护的 NAS 信令,或在上下文不可用时触发 Authentication/SMC。
AMF 收到 Service Request 后执行三件事:
Uplink data status(UE 指明哪些 PDU Session 有待发上行数据)与 Allowed PDU session status(UE 指明哪些 PDU Session 在当前 Allowed Area 内允许激活),决定要激活的 PDU Session 子集;PDU session status(UE 侧 active 的 PDU Session 位图)与本地存储对比,对"网络侧 active、UE 侧 inactive"的 PDU Session 触发本地释放(Local Release),避免悬挂会话;Nsmf_PDUSession_UpdateSMContext Request,其中 Operation 取值为 ACTIVATE(TS 29.502 Section 5.2.2.3.5.1,表 6.1.6.3.3-1)。SMF 随即通过 N4 PFCP Session Modification Request(TS 29.244 Section 5.6)"恢复" UPF 的下行转发(激活已配置的 PDR/FAR,使下行缓存数据可发往 AN 方向)。先建后通的关键:UPF 在收到 N4 修改请求后才知道下行 N3 隧道(DL TEID)。但此时 AN 侧上行 N3 隧道(UL TEID)尚未确定——它要等 AMF 在 INITIAL CONTEXT SETUP REQUEST 里把 N2 SM 信息下发给 AN,AN 建立 DRB 后才能回填。因此用户面建立必须分两轮 N4 修改完成:第一轮让 UPF "准备好"下行,第二轮才把 AN 的 UL TEID 告诉 UPF。这种"半连接"窗口是 Service Request 时延的主要来源,也是排错时观察的重点。
Service Request 的"应答"不是 Service Request Accept,而是 Service Accept(TS 24.501 8.2.15)。它通过 N2 INITIAL CONTEXT SETUP REQUEST 携带,由 gNB 在 RRC Reconfiguration 透传给 UE。Service Accept 内含:
PDU session reactivation result:成功重新激活的 PDU Session 位图;PDU session reactivation result error cause:激活失败的 PDU Session 及 5GMM/5GSM cause;PDU session status(可选):网络侧最终状态,供 UE 二次对齐。此处决定 UE 后续走向的是 Service Request 中的 Active flag:
| Active flag | Service Accept 后行为 |
|---|---|
active(置位) |
N1 NAS 连接保持,UE 留在 CM-CONNECTED,继续后续业务(典型:UE 即将发起新 PDU Session Establishment) |
not active(未置,默认) |
用户面建立后,AMF/gNB 可在任意时刻触发 AN Release,UE 回到 CM-IDLE(典型:仅有少量上行数据要发) |
下表按 TS 24.501 Section 9.11.3.46 给出 Service Request 的 IE 构成与作用:
| IE(TS 24.501 9.11.3.x) | 类型 | 作用 | 必备性 |
|---|---|---|---|
| Extended protocol discriminator | M | 固定为 5GMM (0x7E) | M |
| Security header type | M | 指明本消息未完整性保护(0000) | M |
| Spare half octet | M | 占位 | M |
| ngKSI | M | 指示所用安全上下文标识 | M |
| Message type (0x7C) | M | Service Request 消息身份 | M |
| Active flag | 9.11.3.5 | 决定 N1 连接是否保持 | O |
| PDU session status | 9.11.3.41 | UE 侧 active 的 PDU Session 位图 | O |
| Uplink data status | 9.11.3.48 | UE 待发上行数据的 PDU Session 位图 | O |
| Allowed PDU session status | 9.11.3.47 | 当前 Allowed Area 内 UE 期望激活的 PDU Session 位图(R16) | O |
| NAS message container | 9.11.3.33 | 携带一条被完整性保护的上行 NAS 消息(如 Registration/Deregistration/5GSM 消息) | O |
下图将 Service Request 的 IE 组织成"信令头 + 会话意愿 + 搭车信令"三层结构,便于理解其设计:
flowchart TD
subgraph H["信令头层(不可省)"]
H1["Extended protocol discriminator=5GMM"]
H2["Security header type=未保护"]
H3["ngKSI 安全上下文索引"]
H4["Message type=0x7C"]
end
subgraph S["会话意愿层(按需)"]
S1["Active flag\n是否保持N1"]
S2["Uplink data status\n哪些有上行数据"]
S3["PDU session status\nUE侧active全集"]
S4["Allowed PDU session status\n允许激活子集"]
end
subgraph C["搭车信令层(可选)"]
C1["NAS message container\n带一条完整保护的NAS消息"]
end
H --> S --> C
这是 5G 相对 EPS 最精巧的演进之一,三者的逻辑关系如下:
PDU session status:UE 告诉网络"我手上还活着哪些会话"——用于清理悬挂会话;Uplink data status:UE 告诉网络"我现在急着发哪些会话的数据"——用于优先级激活;Allowed PDU session status:UE 告诉网络"在当前 Allowed Area 内我希望激活哪些"——用于漫游区域一致性(R16 引入,配合 LADN/区域受限 PDU Session)。AMF 的激活决策可形式化为:待激活 = Uplink data status ∪ Allowed PDU session status,再与 PDU session status(UE 侧确实 active)求交,剔除已被 UE 本地释放的会话。
这是协议工程师容易忽视、却极具工程价值的 IE。当 UE 想在恢复连接的同时立即发送一条需要完整性保护的 NAS 消息(如 Deregistration Request、移动性注册更新、甚至 PDU Session Establishment Request)时,可把它整体放进 NAS message container 一并发送。这样Service Request 一次往返就完成"建链 + 发信令"两件事,省去一次额外的 NAS 交互。
注意:NAS message container 内部的消息必须是完整性保护的(用已有 KAMF 派生),而 Service Request 外壳本身不保护——这一"外明内密"的设计,既满足 gNB 透明转发,又保证了搭车信令的完整性。
当网络有下行数据或下行信令时,AMF 先在 UE 的 Registration Area 内发 Paging(TS 23.502 4.2.3.3),UE 响应的 Service Request 即为网络触发型。它与 UE 触发型的主要差异:
Data Notification(N4),SMF 经 Namf_Communication_N1N2MessageTransfer 通知 AMF 触发 Paging;mt-Access,便于网络侧识别;Uplink data status 一般为空;| 维度 | UE 触发 Service Request | 网络触发 Service Request |
|---|---|---|
| 触发条件 | 上行数据/上行信令 | 下行数据(经 Paging)/下行 SMS |
| RRC Establishment Cause | mo-Data / mo-Signaling | mt-Access |
| 关键状态 IE | Uplink data status 主导 | 由 SMF 指定待激活 PDU Session |
| 典型时延敏感场景 | 上行业务首包、信令更新 | VoNR 被叫、下行 SMS over NAS |
| 完整性保护 | Service Request 不保护 | 同左(Paging 本身不保护) |
Service Request 失败时,AMF 返回 Service Reject(TS 24.501 8.2.16),携带 5GMM cause。常见 cause 与定位思路:
| 5GMM cause | 含义 | 排查方向 |
|---|---|---|
| #22 Congestion | 网络拥塞/AMF 过载 | 查 AMF 过载控制策略、Nnrf_NFStatusNotify 告警、是否触发 NAS backoff timer |
| #27 N1 mode not allowed | N1 模式不允许 | UE 是否被限制、区域/订阅配置 |
| 服务区/PLMN 不允许类(如 #11 PLMN not allowed) | 接入控制 | 查 UE 的 Equivalent PLMN、TA Restriction、Access and Mobility Policy |
| #9 / #10 身份派生失败/隐式分离 | 上下文丢失 | 查 UDM/UDR 订阅、AMF 是否已隐式分离该 UE |
在 Wireshark 中,Service Request 全流程可拆为三层:
ngap 且 ngap.procedureCode == initialUEMessage,NAS-PDU 字段解出即为 Service Request;Service request (0x7C),重点看 active flag、PDU session status、uplink data status 三个位图;PDU Session ID,看两轮 N4 Session Modification 是否都成功——若仅第一轮成功而第二轮 PFCP Session Modification Response 的 cause 非 Success,用户面将半通,表现为上行可达 UPF 而下行不通。最隐蔽的故障是"第一轮 N4 已下发、但 AN 回 N2 REQUEST ACK 失败或 AMF 未把 AN UL TEID 回传给 SMF"。此时 UPF 仍按旧 TEID 发下行,全部丢弃。抓包表现为:Service Accept 已到 UE,但下行 ping 不通、上行正常。排错的关键是检查 Nsmf_PDUSession_UpdateSMContext Request 是否携带 n2Info 中的 AN Tunnel Info(含 UL F-TEID),以及 SMF 是否在第二轮 N4 中正确更新。
Q1:Service Request 为什么不完整性保护,安全性如何保证?
A:CM-IDLE 入口处 N1 安全连接尚未激活,Service Request 必须以明文穿越 RRC/N2 才能被 gNB 透明转发。安全保证来自两点:一是它只携带"会话意愿"等无敏感性信息,不携带身份敏感字段(身份用 5G-GUTI 表达,且 SUCI 仅在 Registration 出现);二是后续的 NAS 信令与用户面建立均受已有 KAMF 派生的完整性/加密保护。若上下文可疑,AMF 可随时插入 Authentication + SMC。
Q2:PDU session status 与 Uplink data status 有何本质区别?
A:PDU session status 是"全集声明"——UE 告知网络自己仍持有的所有 active PDU Session,用于悬挂会话清理;Uplink data status 是"子集请求"——声明哪些 PDU Session 此刻有上行数据待发,驱动 AMF 优先激活它们。前者关乎一致性,后者关乎激活选择。
Q3:网络触发时 UE 不知道有下行数据,Service Request 里的 IE 怎么填?
A:UE 响应 Paging 而发起的 Service Request,Uplink data status 通常为空,PDU session status 仍按 UE 实际状态填写。激活哪些 PDU Session 由 AMF 根据 SMF 在 Namf_Communication_N1N2MessageTransfer 中指定的 PDU Session ID 决定,UE 的状态 IE 仅用于状态对齐而非激活驱动。
Q4:一次 Service Request 能激活多个 PDU Session 吗?
A:能。AMF 会对"待激活集合"中的每个 PDU Session 分别发 Nsmf_PDUSession_UpdateSMContext(Operation=ACTIVATE),并在 INITIAL CONTEXT SETUP REQUEST 中把多个 PDU Session 的 N2 SM 信息一并发给 AN,AN 一次性建立多个 DRB。Service Accept 中用 PDU session reactivation result 位图分别回报每个会话的激活结果。
Q5:Service Accept 后 UE 立即回 CM-IDLE 是 bug 吗?
A:不一定。若 Service Request 中 Active flag 未置位,且 AMF/gNB 的 RRC 不活动定时器较短,则在用户面建立、上下行数据放通后,网络会主动触发 AN Release 让 UE 回 CM-IDLE——这是正常的省电优化路径。仅当 Active flag=active 却仍被立即释放时,才需排查 AMF 是否正确解析 Active flag 或定时器配置是否过激。
本文由「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 等场景全覆盖。
