聚焦 3GPP TS 38.413 Section 8.4.1,从 InitialContextSetupRequest 的 IE 编排,到 gNB 派生 KgNB、激活 AS 安全、建立 N3 用户面隧道,再到 Failure 回退路径的完整机制解析。
在 5G SA 网络中,UE 从 RRC_IDLE 进入 RRC_CONNECTED 后,NG-RAN(gNB)侧并不是立刻就能正常调度这个 UE 的——它手里此刻只有一个从空口建立起来的 RRC 连接和一组临时标识,完全没有 UE 的安全上下文、签约限制、切片信息,更没有用户面资源。把这些信息一次性"灌"进 gNB 的那个动作,就是 NGAP 的 Initial Context Setup(初始上下文建立) 流程。它是注册、业务请求、首个 PDU 会话建立背后真正的"地基工程",几乎所有上行 NAS 信令在 gNB 侧能被正确处理的前提,都是这条流程成功完成。
本文以 TS 38.413 V18.6.0(Release 18)§8.4.1 为主线,逐 IE 拆解请求/响应/失败三条消息,并给出 Mermaid 时序图、IE 结构图、状态机图,最后落到抓包识别与故障排查。
很多初学者会疑惑:UE 的上下文不是在 AMF 里就有吗?为什么 gNB 还要单独建一份?
答案在于 5G 的安全架构是分层的。TS 33.501 把密钥层级设计为:
K (USIM) → KSEAF → KAMF (在 AMF) → KgNB (在 gNB) → KRRCint / KRRCenc / KUPint / KUPenc
KAMF 永远不会离开核心网;但要让 gNB 对空口的 RRC 信令和用户面数据做加密与完整性保护,gNB 必须持有一把由 KAMF 派生出来的 KgNB。这把钥匙,连同 UE 的安全能力、签约速率上限、移动性限制、切片权限等,必须由 AMF 主动"推"给 gNB——这个"推送"动作就是 Initial Context Setup。它的核心设计意图有三个:
SecurityKey(256 bit,由 KAMF 进一步派生),真正用于空口的 KgNB 在 gNB 内部生成,USIM 主密钥 K 永远不离开卡;Initial Context Setup 永远由 AMF 发起,gNB 没有资格主动要求(这与 4G E-UTRA 的 S1 设计一致)。但 gNB 可以通过 Initial UE Message 里的 UE Context Request 指示位"暗示"AMF:"我这边需要建上下文"。具体触发场景有:
| 触发场景 | 说明 |
|---|---|
| 注册流程(带 UE Context Request) | Initial UE Message 中 UE Context Request = "required",AMF 鉴权通过后必发 ICS Request |
| 注册流程(不带指示) | 即使 gNB 没置位,只要 AMF 已获得 SUPI 且决定接受注册,AMF 也会主动触发 |
| 首个 PDU 会话建立 | UE 发起 PDU Session Establishment,SMF 通过 N1N2MessageTransfer 把资源建立请求交给 AMF,AMF 用 ICS Request 的 PDU Session Resource Setup List 一并下发(合并流程) |
| 业务请求(带数据) | UE 处于 CM-IDLE 时发起 Service Request,若 gNB 侧尚无上下文(如换 gNB 后重连),AMF 触发 ICS |
值得注意的是第三种"合并流程"——这是 5G 为降低首业务时延的关键优化。AMF 完全可以先发 ICS 建立上下文,等响应回来再单独发一条 PDU Session Resource Setup;但标准允许(且厂商普遍实现)把 PDU 会话资源建立请求塞进 ICS Request 的 PDUSessionResourceSetupListCxtReq,gNB 一次性把 RRC DRB、N3 隧道都建好,少一个 N2 往返。
下面这张时序图刻画了一次"注册 + 合并 PDU 会话建立"的典型组合,也是抓包中最常见的形态:
sequenceDiagram
participant UE
participant gNB as NG-RAN (gNB)
participant AMF
participant SMF
participant UPF
UE->>gNB: RRC SetupRequest / RRCSetupComplete<br/>(NAS: Registration Request)
gNB->>AMF: NGAP Initial UE Message<br/>(RAN UE NGAP ID, NAS PDU,<br/>UE Context Request = required)
Note over AMF: 5G AKA 鉴权<br/>向 UDM 取签约、向 PCF 取策略<br/>选择切片、分配 AMF UE NGAP ID
AMF->>gNB: NGAP Initial Context Setup Request<br/>(SecurityKey, UE Security Capabilities,<br/>UE-AMBR, Allowed NSSAI,<br/>Mobility Restriction List,<br/>Subscriber Profile ID for RFSP,<br/>UE Radio Capability,<br/>PDUSessionResourceSetupListCxtReq)
Note over gNB: 由 SecurityKey 派生 KgNB<br/>选定 AS 加密/完整性算法<br/>构建 UE context
gNB->>UE: RRC SecurityModeCommand<br/>(selected algorithms)
UE->>gNB: RRC SecurityModeComplete
Note over gNB: 启用 SRB1/2 加密与完整性保护
gNB->>UE: RRC Reconfiguration<br/>(建立 DRB, 承载 NAS Registration Accept)
UE->>gNB: RRC ReconfigurationComplete
gNB->>SMF: (经AMF) N2 SM 信息已就绪
SMF->>UPF: N4 Session Establishment/Modification<br/>(N3 F-TEID 对端地址)
gNB->>AMF: NGAP Initial Context Setup Response<br/>(每 PDU Session 的 N3 TNL:<br/>gNB N3 IP + TEID,<br/>PDUSessionResourceSetupListCxtRsp)
Note over UPF,gNB: N3 GTP-U 隧道打通<br/>上下行用户面就绪
UE->>AMF: NAS Registration Complete (经 gNB UL NAS Transport)
几个时序上的关键点需要特别说明:
SecurityKey 是 256 bit 的中间密钥,gNB 据此派生 KgNB,再派生 KRRCint/KRRCenc/KUPint/KUPenc。只有等 AS Security Mode Command 完成后,Registration Accept 这条 NAS 消息才能安全地通过受保护的 SRB 传递给 UE。InitialContextSetupRequest 的 ASN.1 容器结构(TS 38.413 §9.2)可概括如下。注意 IE 的 Presence(出现性) 分为 Mandatory(M,必含)、Optional(O,可选)、Conditional(C,条件出现)三类,条件出现是理解整条流程灵活性的关键。
graph TD
A["InitialContextSetupRequest<br/>AMF → NG-RAN"] --> M1["AMF UE NGAP ID (M)"]
A --> M2["RAN UE NGAP ID (M)"]
A --> M3["GUAMI (M) <br/>定位 AMF 实例"]
A --> S1["SecurityKey (M, 256bit)<br/>派生 KgNB 的根"]
A --> S2["UE Security Capabilities (M)<br/>NR/EUTRA 算法位图"]
A --> S3["SecurityAlgorithm / Index…"]
A --> AM["UE Aggregate Maximum Bit Rate (C)<br/>非 GBR 流聚合速率上限"]
A --> NS["Allowed NSSAI (C)<br/>本 PLMN 允许切片"]
A --> MOB["Mobility Restriction List (C)<br/>Serving/Equiv PLMN, 禁区"]
A --> RFSP["Subscriber Profile ID for RFSP (O)<br/>频点/选网优先级索引"]
A --> RC["UE Radio Capability (O)<br/>AMF 缓存的无线能力 blob"]
A --> RCP["UE Radio Capability for Paging (O)"]
A --> PS["PDUSessionResourceSetupListCxtReq (C)<br/>合并建立的用户面资源"]
A --> LOC["Location Reporting Request (O)<br/>请求上报 UE 位置"]
A --> CI["Core Network Assistance Info (O)<br/>RRC Inactive 辅助参数"]
A --> TR["Trace Activation (O)"]
A --> IMEI["Masked IMEISV (O)"]
下表对最关键的 IE 做参数级说明:
| IE 名称 | Presence | 长度/取值 | 作用与设计意图 |
|---|---|---|---|
| SecurityKey | M | 256 bit 比特串 | gNB 用它派生 KgNB 及全部 AS 密钥;每次新建上下文都会换新值(前向安全) |
| UE Security Capabilities | M | 算法位图 | UE 支持的 NR/E-UTRA 完整性与加密算法列表,gNB 据此选定 AS 算法 |
| UE Aggregate Maximum Bit Rate | C | UL/DL 速率 | 跨所有 non-GBR QoS flow 的聚合上限,gNB 调度器据此限速 |
| Allowed NSSAI | C | S-NSSAI 列表 | 本接入允许的切片,gNB 据此区分用户面与 QoS 处理 |
| Mobility Restriction List | C | PLMN/TA 列表 | 服务 PLMN、等效 PLMN、禁止 TA/PLMN,用于后续切换判决 |
| Subscriber Profile ID for RFSP | O | 整数索引 | 指向 OAM 的频点优先级表,影响空闲态小区重选权重 |
| UE Radio Capability | O | 不透明容器 | UE 的 5G 无线能力,AMF 缓存复用,避免空口重复上报 |
| PDUSessionResourceSetupListCxtReq | C | 列表 | 合并建立用户面:每个条目含 PDU Session ID + 透明传输容器 |
这里要重点解释两个"容易被忽略但极关键"的 IE:
1. SecurityKey 与前向安全。 每次 AMF 发起 Initial Context Setup(包括 UE 重选到新 gNB 后的重建上下文),都会基于当前 KAMF 以及上行/下行 NAS COUNT 重新计算并下发一个新的 SecurityKey。这意味着即便旧 gNB 的密钥被攻破,也无法解密新 gNB 上的流量——这就是 5G 相对 4G 强化的"空口前向安全"。
2. UE Radio Capability 缓存。 4G 时代 UE 每次建立连接都要把几 KB 的 UE-EUTRA-Capability 通过空口上报,严重浪费无线资源。5G 改由 AMF 缓存(在首次注册时通过 UE Capability Enquiry 取得),后续 gNB 通过 ICS Request 的 UE Radio Capability 直接带回。抓包时你会看到:第一次注册有空口的 UE Capability Information 上行,之后重连就只有 NGAP 的下行 blob,这是判别"是否首次注册"的快速特征。
PDUSessionResourceSetupListCxtReq 是 Initial Context Setup 中最复杂的部分。它采用了 5G N2 接口一个普遍的设计——透明容器(Transparent Container / IE Transfer):
这种设计的好处是 N2 接口关注点分离:AMF 只管 UE 的接入与移动,SMF 只管会话与 QoS,二者通过 AMF 做"邮差"。下表对比 ICS Request 与独立 PDU Session Resource Setup 在承载内容上的差异:
| 维度 | ICS Request 携带的资源建立 | 独立 PDU Session Resource Setup |
|---|---|---|
| 触发 | UE 进入连接态且 AMF 持有待建会话 | 已连接 UE 新建/修改会话 |
| 是否含安全上下文 | 是(SecurityKey 等) | 否 |
| 容器 | PDUSessionResourceSetupListCxtReq | PDUSessionResourceSetupListSUReq |
| 目的 | 上下文 + 用户面一步到位 | 仅增量建立/调整用户面 |
gNB 对容器内每个 QoS flow 的处理:解析 5QI → 映射到 DRB(多个 flow 可复用一个 DRB)→ 在空口用 RRC Reconfiguration 配 DRB → 在 N3 用 GTP-U 隧道串接 UPF。
gNB 完成 UE context 构建和资源准备后,回 InitialContextSetupResponse:
| IE 名称 | Presence | 说明 |
|---|---|---|
| AMF UE NGAP ID | M | 关联请求 |
| RAN UE NGAP ID | M | 关联请求 |
| PDUSessionResourceSetupListCxtRsp | C | 每个 PDU Session 的 gNB N3 地址(IP + TEID),供 UPF 发上行包 |
| PDUSessionResourceFailedToSetupListCxtFail | C | 建立失败的会话及 Cause,逐会话上报 |
| CriticalityDiagnostics | O | 协议解码诊断 |
关键设计:部分成功机制。 Initial Context Setup 本身要么成功要么失败,但它内嵌的 PDU 会话资源建立支持逐会话的成功/失败。也就是说,UE 上下文可以成功建立,而其中的 1 个 PDU 会话资源建立失败——gNB 在 Response 里用两个列表分别回报成功与失败的会话,AMF/SMF 据此对失败的会话单独走释放或重试,不影响整体上下文。这是工程上避免"一颗老鼠屎坏一锅汤"的精细处理。
失败时 gNB 回 InitialContextSetupFailure,核心是 Cause(必含):
flowchart LR
F["InitialContextSetupFailure"] --> C["Cause (M)"]
C --> C1["radioNetwork:<br/>setup-unsuccessful,<br/>radio-connection-with-UE-lost"]
C --> C2["transport:<br/>tnl-failed /<br/>up layer缺 N3 资源"]
C --> C3["protocol:<br/>IE 缺失/不一致"]
C --> C4["misc / nas"]
F --> D["CriticalityDiagnostics (O)"]
F -. 失败后 .-> R["gNB 清理已建资源<br/>AMF 视 Cause 决定:<br/>重试 / 释放 / 降级"]
从 NGAP 角度看,UE 关联逻辑 NG 连接(UE-associated logical NG-connection)经历如下状态:
stateDiagram-v2
[*] --> NoContext: Initial UE Message<br/>(RAN UE NGAP ID 分配)
NoContext --> ContextExists: InitialContextSetupRequest 接收
ContextExists --> Established: InitialContextSetupResponse/Complete
Established --> Established: UE Context Modification<br/>(增量更新)
Established --> Suspended: UE Context Suspend<br/>(转 RRC_INACTIVE)
Suspended --> Established: UE Context Resume
Established --> Released: UE Context Release
Suspended --> Released: UE Context Release
ContextExists --> NoContext: InitialContextSetupFailure<br/>(清理)
Released --> [*]
Initial Context Setup 完成后,UE 在 gNB 侧进入"已建上下文"状态,此后 AMF 若要修改(如更新 UE-AMBR、切换 PDU 会话、更新切片),用的是 UE Context Modification(§8.4.3)而非重新建;要把 UE 推入 RRC_INACTIVE 省电,用 UE Context Suspend(§8.10),唤醒用 UE Context Resume。可以说 ICS 是这条状态机的"出生证"。
sctp.port == 38412(NGAP 承载在 SCTP,端口 38412),再 ngap 展开。ngap.procedureCode == 14(InitialContextSetup 的 Procedure Code 在 TS 38.413 §9.x 定义为 14)。下行方向 AMF→gNB。InitiatingMessage → value → InitialContextSetupRequest,确认含 securityKey、uESecurityCapabilities、uEAggregateMaximumBitRate。InitialContextSetupResponse,展开 PDUSessionResourceSetupResponse 看 gNB 的 N3 F-TEID。| 故障现象 | 可能根因 | 排查方向 |
|---|---|---|
收到 ICS Failure,Cause = transport |
gNB 到 UPF 的 N3 隧道建不起来(路由/防火墙/F-TEID 配置错) | 检查 gNB N3 IP 可达性、GTP-U 端口 2152、UPF 侧 N4 会话是否已下发 N3 TEID |
Cause = radio-connection-with-UE-lost |
UE 在 AS 安全激活前掉线(弱覆盖、终端 bug) | 查 RRC SetupComplete 后是否有 SecurityModeCommand,若无则 UE 早已失联 |
| AS Security Mode Command 失败 | SecurityKey 与 UE 侧 KAMF 不一致,或算法位图匹配不上 | 对比 ICS Request 的 securityKey 与 UE 鉴权完成的 KAMF;核查 UE 与 gNB 支持的算法交集是否为空 |
| PDU 会话建不起来但上下文 OK | ICS Response 里出现 PDUSessionResourceFailedToSetupListCxtFail | 单独排查该会话的 5QI 配置、QoS flow 到 DRB 映射、N3 资源 |
| 业务通但速率被卡死 | UE-AMBR 下发值过小或 gNB 未生效 | 查 ICS Request 的 uEAggregateMaximumBitRate,比对 SMF 下发的 Session-AMBR |
| ## 九、设计哲学小结 |
Initial Context Setup 表面上是一条"AMF 给 gNB 送配置"的消息,但它凝聚了 5G 三大架构决策:
KgNB 不出 gNB,实现细粒度前向安全;理解了这条流程,5G 接入侧绝大多数信令异常都能顺藤摸瓜定位到根因。
Q1: Initial Context Setup 和 UE Context Modification 有什么区别? A: ICS 是"从无到有"建立完整 UE 上下文(含安全密钥、首次激活 AS 安全),一个 UE 生命周期里只在每次进入连接态且 gNB 无上下文时发生;UE Context Modification 是在已有上下文基础上"增量更新"(改 UE-AMBR、增删 PDU 会话、更新切片),不涉及密钥重派生。
Q2: 为什么有时抓不到 Initial Context Setup Request,却能正常上网? A: 若 UE 已在该 gNB 建过上下文(如 CM-CONNECTED 内的连续业务),无需重建;或该 gNB 仍持有 RRC_INACTIVE 挂起的上下文,UE 重连走的是 UE Context Resume 而非 ICS。另外 ICS 是 AMF 单发流程,gNB 无对应请求消息,初次看包容易漏掉 AMF→gNB 这条下行消息。
Q3: SecurityKey 和 KgNB 是一回事吗?
A: 不是。SecurityKey 是 AMF 基于 KAMF 下发给 gNB 的 256 bit 中间密钥;gNB 收到后才在内部派生出 KgNB,再派生空口的 KRRCint/KRRCenc/KUPint/KUPenc。也就是说真正用于加密用户面数据的是 KUPenc,离 SecurityKey 还有两步派生。
Q4: PDU 会话资源建立失败会导致整个注册失败吗?
A: 不会。ICS 支持逐会话的部分成功:UE 上下文与安全可以成功建立,而其中某个 PDU 会话资源失败时,gNB 在 Response 里用 PDUSessionResourceFailedToSetupListCxtFail 单独上报,AMF/SMF 只对该会话做处理,注册流程照常完成。
Q5: NSA(非独立组网)里有这条流程吗? A: NSA 下 UE 先经 LTE 锚点接入,5G 侧通过 E-UTRA-NR 双连接(EN-DC)的 SgNB Addition 流程增加 5G 腔,走的是 X2/Xn 的 SgNBAddition 而非 NGAP ICS。NGAP 的 Initial Context Setup 是 SA(独立组网)特有的 N2 流程。
本文由「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 等场景全覆盖。
