概述:5G核心网换成服务化架构(SBA)后,网元之间不再点对点写死地址,而是先到NRF“查户口”再通信。户口簿一旦出错——幽灵实例、漏申报的切片——故障就变得极难定位。本文以一次割接后专网切片批量建不了会话的脱敏案例为主线,拆解NFProfile关键字段、给出从抓包到REST探针的完整排障工具链,并沉淀一份可落地的割接后“户口核对”清单。
干了十几年核心网的人,肌肉记忆都是4G时代养成的:MME配置里写死S-GW地址池,SGSN和MME之间一对一对通GTP-C,加一个新网元,周边十几个网元的配置文件都要跟着改一遍。那是一个“拉专线”的时代——所有关系都是点对点静态配置,谁连谁、走哪个IP,全在配置文件里躺着。排障也简单粗暴:配置对了就通,不通就查配置。
5G服务化架构(SBA)把这套逻辑连根拔了。TS 23.501定义的架构里,每个网络功能(NF)把自己提供的能力以“服务”的形式暴露出来,彼此之间走HTTP/2+JSON的SBI接口通信。更关键的变化是寻址方式的颠覆:一个NF要找对端,不再查自己的配置文件,而是去问NRF(Network Repository Function,网络存储功能)——3GPP TS 29.510专门定义了这套“户口簿”机制。
流程说起来不复杂:
这个设计的好处显而易见:扩容时新实例自动注册上线,缩容时注销即可,全网无感知;故障切换从“改配置倒换”变成“NRF返回另一个实例”。但硬币的另一面是——过去分散在几十台设备上的配置错误,现在集中到了一张户口簿上。户口簿错了,错法比以前隐蔽得多,这是很多从4G转5G的运维同事最大的不适应。
把TS 29.510定义的NFProfile拆开看,每一栏都对应一类真实故障。我按排障时的重要性排个序:
| 字段 | 含义 | 排障时的意义 |
|---|---|---|
| nfType / nfInstanceId | 网元类型与唯一标识 | 判断返回的实例到底“是谁”,同一实例反复注册会产生多份记录 |
| nfStatus | REGISTERED / SUSPENDED / UNDISCOVERABLE | 头号嫌疑字段。已下电未注销的“幽灵实例”仍显示REGISTERED |
| ipv4Addresses / fqdn | 实例的服务地址 | 查询返回了,但地址不可达,等于查到了死人的住址 |
| sNssais / snssaiInfos(SMF) | 申报支持的切片及每切片的DNN信息 | 漏申报一个切片,该切片用户全部选不到SMF——本案例第二处伤 |
| validityTime | Profile有效期,到期前需发NFUpdate刷新 | 机制上NRF会在过期后把实例置为UNDISCOVERABLE,是幽灵实例的“自动清道夫”,但有效期长短各网自定 |
| capacity / priority | 容量权重与优先级 | 决定流量怎么分——幽灵实例权重没回收,流量就继续往死路上分 |
| supportedFeatures | 支持的特性集 | 两端特性协商不一致,请求会被对端以不支持拒掉 |
这里要特别强调nfStatus和validityTime的配合机制,它是理解本案例的钥匙。按TS 29.510的设计,NF注册后NRF会给Profile一个有效期,NF必须周期性发NFUpdate续期;一旦停止续期(比如实例被下电),NRF在有效期到点后应将其置为UNDISCOVERABLE,后续发现请求不再返回它。理论上这是一个自愈机制。但工程现实是:有效期配置各网差异很大,标准也允许多种实现,具体默认行为以各厂家官方文档为准——如果有效期配得长、或者网管上没人盯着清单,幽灵实例就能“活”好几个小时甚至更久,足够酿成一场事故。
还有一个运维容易忽略的点:注销也是生命周期的一部分。注册(Register)→续期(NFUpdate)→注销(NF-Deregister),三步缺一不可。而割接脚本十有八九只写了“新实例上线、旧实例下电”,下电用的是最粗暴的方式——直接关虚机。进程没了,注销请求自然没人发。
以下案例来自某省5G SA网络商用初期的真实排障经历,细节已做脱敏与融合处理,数字为便于叙述做了圆整。
背景:该省5G核心网设两个DC,SMF资源池共4个实例,承载公网eMBB用户和6家企业的专网切片(企业切片用独立的S-NSSAI,SD值不同)。周四晚例行割接窗口,计划对SMF池做一次版本升级:新版本以2个新实例上线,2个旧实例下电退役。
时间线:
| 时间 | 事件 | 关键动作 |
|---|---|---|
| 21:15 | 割接开始 | 冻结工单,按预置脚本执行 |
| 21:38 | 2个新SMF实例上线,2个旧实例直接关机回收 | 割接报告显示一切正常 |
| 21:52 | 拨测机器人告警:专网切片会话建立失败率飙到22% | 公网切片指标正常,NOC初步怀疑专网侧问题 |
| 22:05 | NOC初判 | 优先排查企业侧专线与终端,未执行回滚 |
| 22:40 | 无线侧排查完毕 | 基站KPI、NGAP建立正常,排除接入网 |
| 23:05 | 翻AMF日志 | Nsmf会话创建请求大量超时,失败集中且随机的分布 |
| 23:20 | SBI接口抓包 | NFDiscovery有返回,但返回的实例地址ping不通 |
| 23:52 | 直接调NRF的清单接口 | 发现注册清单里有8个SMF实例,预期只有4个 |
| 00:05 | 手工PATCH注销4个幽灵实例 | 失败率不降反升至100%——第二处伤现形 |
| 00:15 | 检查新实例NFProfile | snssaiInfos漏了专网切片(升级模板用了公网基线) |
| 00:25 | 补齐申报字段后,专网切片恢复 | 成功率回到99.5%,事件关闭 |
| 次日 | 复盘 | 固化三条整改措施(见第六节) |
影响评估:故障窗口2小时47分钟(21:38–00:25),期间专网切片方向累计约2.6万次会话建立尝试、约7300次失败,6家企业中4家的物联网与办公终端间歇性无法上网;公网手机用户成功率从99.6%小幅波动到99.1%,基本无感。这是一场典型的“隐形断网”——公网大盘绿得发亮,专网客户那头已经炸了锅,而那恰恰是SLA最贵、赔付条款最狠的用户。
值得玩味的是为什么失败率是22%而不是50%。SMF池4个预期实例中2个成了幽灵,理论上按容量轮询约一半请求会命中死实例;但AMF侧对发现结果有本地缓存和重选逻辑,一部分请求重试后命中活实例,对外表现就被“抹平”到了两成。这种不彻底的失败是最害人的故障形态——告警不炸、指标半红不红,很容易被当成参数抖动压下去。
复盘整个定位过程,真正起决定作用的是“三条时间线对齐”的方法:把拨测KPI曲线、AMF侧日志、NRF侧清单变化放到同一个时间轴上。23:05之前各家各查各的,进展缓慢;23:20完成对齐后,十分钟就锁定了方向——失败率抬升的起点精确地卡在21:38新实例上线那一刻,而那之后NRF清单里多了“活口”。
完整的故障链路可以用一张图说清:
sequenceDiagram
participant U as 终端
participant B as gNB
participant A as AMF
participant R as NRF
participant S as SMF
U->>B: 注册请求
B->>A: NGAP初始UE消息
A->>A: 鉴权通过 注册接受
U->>A: PDU会话建立请求
A->>R: NFDiscovery查询SMF
R-->>A: 返回幽灵实例的NFProfile
A->>S: Nsmf会话创建请求
Note over S: 该实例已下电两小时 无人应答
A-->>U: PDU会话建立失败
对应的排查决策树,建议存在每 responsibilities个NOC的预案库里:
flowchart TD
A["专网切片会话批量失败"] --> B{"用户注册是否正常"}
B -->|"正常"| C["看AMF的SMF选择日志"]
B -->|"异常"| D["查接入与鉴权链路"]
C --> E{"NRF发现请求返回什么"}
E -->|"返回为空"| F["查SMF注册申报的切片"]
E -->|"返回实例"| G["核对实例地址可达性"]
G --> H{"实例是否真实存活"}
H -->|"无响应"| I["比对注册清单与预期清单"]
I --> J["PATCH注销幽灵实例"]
F --> K["补齐NFProfile申报字段"]
J --> L["固化割接后户口核对巡检"]
K --> L
现场用到的三件工具,都是常规武器,组合起来才有杀伤力:
第一件,抓包看懂HTTP/2里的JSON。SBI走HTTP/2,明文h2c部署在内网很常见,用镜像口在AMF与NRF之间抓包,Wireshark新版本(4.x及以后)自带SBI解码能力,能把Namf、Nsmf这些服务调用的JSON报文解析成结构化字段,过滤协议名sbi即可。23:20那次抓包,我们看到discovery响应里返回的ipv4Addresses是旧实例的地址——设备早已回收,自然ping不通。
第二件,把NRF当数据库直接查。NRF本质是标准的REST服务,按TS 29.510定义,GET /nnrf-nfm/v1/nf-instances?nf-type=SMF 能列出全部注册实例,GET /nnrf-disc/v1/nf-instances?target-nf-type=SMF&requester-nf-type=AMF 能模拟一次发现请求。23:52那条清单查询一跑出来,8个实例对4个预期,全场安静了三秒。想在自己环境里练这套接口,Open5GS开源项目在笔记本上就能搭起来,仓库里NRF的实现和接口路径与规范一一对应。
第三件,认清报文里那些3gpp-Sbi-开头的自定义头。TS 29.500定义了一组3gpp-Sbi-*HTTP头部,比如携带路由绑定信息的3gpp-Sbi-Routing-Binding、标识生产者的3gpp-Sbi-Producer-Id。排障时这些头是“路条”——它能告诉你这个请求原本绑在哪个实例上,间接通信场景下尤其关键。当晚部分请求带着指向旧实例的路由绑定头,重试也打不回去,这也是失败分布看着“随机”的另一半原因。
00:05手工PATCH把4个幽灵实例置为UNDISCOVERABLE后,本以为大功告成——结果失败率瞬间冲到100%。这个反直觉的瞬间恰恰把第二处伤暴露了出来:新实例的NFProfile里,snssaiInfos漏申报了专网切片。此前专网会话部分能成功,靠的正是“还没注销干净”的旧实例——旧版本实例带着完整的切片申报在硬撑。注销幽灵等于拔掉了最后一根输血管,NRF发现请求返回空列表,AMF无SMF可选,会话全部拒绝,终端侧看到的正是5GSM原因值#27“缺失或未知DNN”一类拒因。
也就是说,当晚SMF池其实带着两处伤在运行:户口没注销(幽灵实例)+ 新户口内容错(切片漏申报)。第一处伤制造间歇性失败,第二处伤被第一处伤掩盖。修复顺序上也吃了亏——正确做法是先补齐新实例的申报字段,确认discovery能返回健康实例,再注销幽灵。反过来做的代价是多宕了十分钟。
根因归纳为四条:
另外还有一条隐性教训:当晚唯一能提前十几分钟抓住故障的信号,是分切片维度的会话建立成功率。公网大盘监控把专网的劣化平均掉了。6家企业的SLA价值占该省5G收入并不高,但故障放大系数极高——专网客户的一通投诉电话,分量顶得上十万个手机用户的静默重试。
把4G和5G的排障视角放在一起看,变化是结构性的:
| 维度 | 4G(点对点) | 5G SBA(服务化) |
|---|---|---|
| 寻址方式 | 配置文件写死对端地址 | 向NRF动态发现NFProfile |
| 故障域 | 单点配置错,影响固定一对网元 | 注册表错,可能放大为区域性故障 |
| 排障对象 | GTP-C/S1AP等专用协议 | HTTP/2里的JSON报文 |
| 常用武器 | 协议仪表、网管跟踪 | Wireshark SBI解码、REST探针、清单巡检 |
| 割接风险 | 配置回滚 | 生命周期闭环 + 基线字段核对 |
| 监控盲区 | 对端状态不可见 | 注册状态与实际存活性脱节 |
沉淀成三张可执行清单:
割接前——新实例配置模板与现网做字段级diff审计,sNssais、DNN列表、supportedFeatures逐项核对;预置“先补申报、后注销幽灵”的修复顺序。
割接中——注销必须走协议流程(NF-Deregister),禁止只关虚机;每下电一个实例,立刻查一次清单接口确认其状态变化。
割接后——固化“户口核对”巡检:GET /nnrf-nfm/v1/nf-instances 的返回与CMDB预期清单做差集,差集非空即告警;KPI按切片维度单列监控;把validityTime续期失败、nfStatus异常翻转纳入NRF侧事件告警。
从4G到5G,核心网的排障逻辑其实完成了一次范式转移:过去查“线”,现在查“账”。NRF把全网网元的关系收进一张动态户口簿,换来了弹性与自动化,也把最古老的运维真理放大了——账本本身就是最大的单点真相,账本的核对比任何性能指标都优先。那个周四夜里,2小时47分钟的故障,起因不过是两台虚机下电时少发了一个HTTP请求。SBA没有让运维变简单,它只是把“细心”从一个美德变成了一个系统需求。
本文由「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 等场景全覆盖。
