5G核心网排查为什么比EPC时代难?本文用一次真实的现网处置案例(细节已脱敏、数值取整)回答这个问题:某省5GC晚高峰PDU会话建立成功率突降5个百分点,无线侧与核心网口径打架、N4接口防火墙回程被丢,最终靠“对口径、抓信令、复现收敛”三板斧在70分钟内收敛。文章给出定界流程图、抓包点速查表、5GSM拒绝原因对照和一套可以落地的运维工具链与十条军规,供核心网一线工程师直接套用。
干了十几年核心网的工程师都有体感:EPC时代查故障,抓一个GTP-C v2包(UDP 2123端口),看cause value,基本能定位到八九不离十。二进制协议、状态机明确、网元边界清晰,MME和SGW之间谁没回话,抓包一看便知。
到了5GC,游戏规则变了三件事:
第一,控制面从“链路”变成了“服务”。 SBI走HTTP/2加JSON,NF之间通过NRF动态注册和发现,今天SMF调UDM走的是实例A,明天可能就是实例B。链路固定时代积累的“拓扑式排障直觉”失效了。
第二,部署形态从虚机变成了容器。 微服务化之后,一个SMF可能是几十个Pod,Kubernetes的调度、探针重启、滚动升级都会“制造”瞬断。日志分散在几十个容器里,没有聚合平台基本是盲人摸象。
第三,接口数量翻倍,协议栈混杂。 N2是SCTP上的NGAP(38412端口),N3/N9是GTP-U(2152端口),N4是PFCP(UDP 8805端口),SBI又是TCP/TLS上的HTTP/2——一次会话建立要横跨四五种协议栈,断在哪一跳,考验的不是单个协议知识,而是分层定界能力。
| 维度 | EPC时代 | 5GC时代 |
|---|---|---|
| 控制面协议 | GTP-C v2(UDP 2123)、Diameter | SBI:HTTP/2 + JSON,服务化接口 |
| 定界依据 | GTP-C cause、Diameter结果码 | HTTP状态码 + ProblemDetails + 5GSM cause |
| 网元关系 | 链路静态配置,拓扑固定 | NRF动态注册发现,实例随时漂移 |
| 部署形态 | 虚机/专用设备,边界清晰 | 容器微服务,一个网元几十个实例 |
| 排查盲区 | 相对少,抓单点包即可 | 防火墙/LB会话表、容器网络、NRF选路 |
| 典型工具 | GTP-C抓包 + 网元告警 | 跨接口抓包 + 分布式日志/指标/Trace |
一句话总结:EPC排障是“查电路”,5GC排障是“查服务调用链”。
下面这个案例来自某省5GC现网,按惯例做了脱敏,数值取整,但过程和根因原汁原味。
某月中旬,一批新建UPF刚完成扩容割接,承接全省约8%的PDU会话流量。割接当晚20:47,网管告警:PDU会话建立成功率从99.2%一路下滑到94.1%,跌了5.1个百分点,且持续走低没有自愈迹象。客服侧同时开始出现“信号满格打不开网页”的零星投诉,量级不大,但趋势向上。
| 时间 | 事件 | 动作 |
|---|---|---|
| 20:47 | 成功率越过阈值告警 | 值班启动应急,先看告警面板 |
| 20:52 | 发现无线侧统计成功率99.0%正常,核心网侧94.1% | 意识到口径打架,先对口径 |
| 21:02 | 对齐口径:核心网口径含SMF拒绝场景,锁定差异在SMF | 随机抽取失败话单 |
| 21:08 | 单用户Trace显示:NAS层PDU会话建立请求发出后收到拒绝 | 定界到核心网侧 |
| 21:15 | SMF日志批量出现N4会话建立超时 | 检查SMF与UPF之间链路 |
| 21:20 | SMF侧抓包:PFCP请求反复重发、无响应 | 抓包点成对部署到UPF侧 |
| 21:28 | UPF侧抓包:请求已收到且已回复,响应出不了机房 | 定界到传输安全设备 |
| 21:35 | 确认:新UPF回程流量经另一台防火墙,无会话表项被丢 | 应急旁路防火墙策略 |
| 21:50 | 成功率回升到99%以上 | 进入观察期,次日组织复盘 |
第一步:对口径,别急着动手。 网管上无线口径的“会话建立成功率”基于NGAP的PDU Session Resource Setup应答统计,核心网口径基于SMF侧5GSM层统计。这次故障恰好发生在SMF之后的N4环节,无线口径完全无感,两边差了5个百分点。如果一开始就盯着无线侧指标找问题,方向就全错了。先花10分钟对口径,往往能省下两小时的无用功。
第二步:单用户Trace优于全网抓包。 通过3GPP定义的信令跟踪机制(TS 32.421/32.423定义的Trace体系)锁定一个失败用户,看到完整链条:NAS请求正常到达SMF,SMF在N4侧超时后按失败处理,AMF下发会话建立拒绝。单用户视角把“哪个网元没回话”这个关键问题直接摆上了台面。
第三步:抓包点成对部署,一锤定音。 在SMF侧和UPF侧同时抓8805端口:
tcpdump -i any -w smf_n4.pcap udp port 8805,抓到PFCP Session Establishment Request以相同Sequence Number反复重发,无任何Response;根因水落石出: 割接时新UPF的回程路由调整,SMF发往UPF的请求走防火墙A,UPF返回SMF的响应走了防火墙B。PFCP基于UDP,没有连接概念,防火墙B上没有对应的会话表项,按策略默认丢弃所有“无首包记录”的UDP回包。请求过去了,响应回不来。
sequenceDiagram
participant UE as 终端UE
participant gNB
participant AMF
participant SMF
participant FW as 防火墙B
participant UPF
UE->>gNB: PDU会话建立请求(DNN、S-NSSAI)
gNB->>AMF: N2上行NAS传输
AMF->>SMF: N11创建SM上下文
SMF->>FW: PFCP会话建立请求(UDP 8805)
FW->>UPF: 请求经防火墙A转发成功
UPF--xFW: 响应走回程路由进入防火墙B
FW--xSMF: 无会话表项,响应被丢弃
SMF->>SMF: 等待超时后按相同序号重发
SMF--xAMF: N4超时,创建上下文失败
AMF--xUE: 会话建立拒绝
影响时段约70分钟,按当时话务量估算,约3.5万次会话建立尝试失败,涉及承接于新UPF资源池的约8%用户。无语音受影响(IMS会话走独立路径),无计费差错(失败会话未生成话单)。
整改四件事:
把上面案例沉淀成方法论,就是三句话:先对口径定界,再抓包取证,最后实验室复现闭环。
定界的本质是KPI树的逐层下钻。一次PDU会话建立(流程见3GPP TS 23.502第4.3.2.2节)要经过:UE→gNB(N1)→AMF(N2)→SMF(N11)→UDM/PCF(N10/N7签约与策略)→UPF(N4)→回N2给gNB→NAS应答UE。每一跳都有独立的观测量:
flowchart TD
A["成功率突降告警"] --> B["第一斧:对齐口径"]
B --> C["无线口径与核心网口径取交集"]
C --> D["单用户Trace锁定失败点"]
D --> E{"失败发生在哪一跳"}
E -->|"N2偶联"| F["查SCTP重传与Heartbeat"]
E -->|"N11"| G["查AMF与SMF互操作及NRF注册"]
E -->|"N4"| H["抓8805端口看请求响应配对"]
E -->|"N3或N9"| I["查GTP-U连通性、VLAN与MTU"]
F --> J["定位根因"]
G --> J
H --> J
I --> J
J --> K["第三斧:实验室复现"]
K --> L["灰度修复并基线化"]
两个容易踩的坑:
抓包点必须成对部署(请求侧+回程侧),这是本案例最大的教训。各接口速查:
| 接口 | 协议与端口 | 抓包关注点 |
|---|---|---|
| N2 | NGAP / SCTP 38412 | 偶联状态、T1重传、Heartbeat、NG Setup |
| N4 | PFCP / UDP 8805 | 请求与响应的Sequence Number配对、SEID、重发间隔 |
| N3/N9 | GTP-U / UDP 2152 | 内层IP连通性、QFI、分片与MTU |
| SBI | HTTP/2(TCP/TLS) | 3xxx/4xx/5xx状态码、ProblemDetails、stream阻塞 |
| N11 | SBI(AMF-SMF) | Nsmf_PDUSession_CreateSMContext成败 |
Wireshark对5GC协议族的支持已经相当成熟:NGAP、PFCP、GTP-U开箱即解;SBI部分,明文h2c流量可以直接Decode As HTTP/2,再按stream右键追踪单次调用;TLS流量需在网元侧导出密钥日志(SSLKEYLOGFILE方式)才能解开,这一点要提前和设备商确认支持方式。
MTU问题单独提醒:GTP-U外层封装开销约36字节(IPv4)到56字节(IPv6),N3/N9链路MTU与对端不一致时,大包分片丢失,表现为“小包通、大包死、网页打不开但能注册”——和本次案例的用户投诉表象几乎一样,定界时别忘了这一层。
现网上不敢试的操作,实验室里随便试。建议每个核心网维护团队常备一套开源复现环境:
| 工具 | 角色 | 实战用途 |
|---|---|---|
| Open5GS | 开源5GC(EPC/5GC双模) | 搭建AMF/SMF/UPF全功能实验室 |
| free5GC | 开源5GC(3GPP R15+) | SBI调用链研究、二次开发验证 |
| UERANSIM | gNB+UE模拟器 | 无需真基站即可跑通N2/N3/N1全流程 |
| Wireshark | 协议解码 | 5GC全协议栈分析 |
| tcpdump | 现网采集 | 配合交换机镜像口部署 |
| Prometheus + Grafana | 指标监控 | 核心网KPI可视化与阈值告警 |
| Loki / ELK | 日志聚合 | 容器化网元日志集中检索 |
| iperf3 / netshoot | 传输面验证 | MTU、路由、防火墙策略双向验证 |
本案例的根因就可以在实验室20分钟复现:两台虚拟UPF走不同防火墙路径,PFCP请求响应不对称,现象与现网完全一致。复现是排障闭环的终点,也是说服所有人“根因找到了”的唯一硬通货。标准允许多种实现,具体行为以各厂家官方文档为准,但PFCP双向通断这类传输层问题,任何厂家的实现都逃不开。
会话建立拒绝时,NAS层5GSM cause是最快的线索(完整列表见TS 24.501,以下为运维高频项摘录):
| 5GSM Cause | 含义 | 典型根因 |
|---|---|---|
| #26 | 资源不足 | UPF容量打满、许可(licence)未扩容 |
| #27 | 缺失或未知DNN | DNN拼写错误、未签约、网侧未配置 |
| #28 | 未知PDU会话类型 | 终端请求类型与网侧配置不一致 |
| #31 | 请求被拒绝,未指明原因 | 需结合SMF日志定位,常为内部处理失败 |
| #65 | 特定切片和DNN组合资源不足 | S-NSSAI未在全网元一致放通 |
高频根因清单,按我个人的现网遇见频率排序:
5GC把网络从“电路”解构成了“服务”,故障形态随之进化,但排障的底层逻辑从未改变:分层定界、证据说话、复现闭环。工具会过时,这三板斧不会。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。