把4G核心网想象成一家老式工厂:每个车间(网元)之间都拉了一根专用电话线。MME要找HSS查用户数据,就得提前铺好一条S6a专线;MME要找SGW建承载,得铺S11专线。车间越多,线缆越乱——而且每根线的“插头形状”都不一样:S6a说的是Diameter方言,S11说的是GTPv2-C方言,S1-MME又是S1AP方言。想给工厂新添一个车间?对不起,你得让它和所有老车间各拉一根线,还得给每个老车间改装一个新插座。
5G核心网(5GC)把这家工厂改成了淘宝商城模式:每个网元不再互相拉专线,而是把自家的能力包装成一个个“商品”(服务)挂到平台上,附带一份标准化的“商品详情页”(服务描述)。任何网元想找人干活,先去平台的“搜索框”(NRF)里搜一下——"哪家能做会话管理?”,平台返回一串候选商家的店铺地址,然后买家直接进店交易。全程只说一种“普通话”:HTTP/2 + JSON。
这就是服务化架构(Service-Based Architecture, SBA)。它不只是换了个协议那么简单,而是把核心网从“硬连线的机器”变成了“可插拔的服务集合”。本文要回答三个问题:为什么必须改?SBA到底改了什么?一次真实的服务发现是怎么跑通的?
4G的EPC是典型的参考点(reference point)架构:任意两个需要交互的网元之间,都要定义一条专属接口。假设网络里有 $n$ 个网元,最坏情况下接口数量是:
$$N_{interfaces} = \frac{n(n-1)}{2}$$
4G时代网元种类大约十来个(MME、SGW、PGW、HSS、PCRF、IMS的CSCF们……),两两组合后,一张EPC架构图上密密麻麻画着二十多条花花绿绿的接口线。每条接口都要单独定义协议栈、消息流程和错误码。结果是:
4G信令的主力协议Diameter诞生于2000年代初。它是二进制编码、基于AVP(属性值对)的协议,扩展一条新消息需要定义新的命令码和AVP字典,不同厂商的字典对不齐就会出现互操作问题。更麻烦的是Diameter基于TCP长连接 + 逐跳代理转发,调试抓包必须依赖专门的解码工具,一条消息里的AVP顺序、嵌套关系看的人眼花缭乱。
而同期互联网世界已经全面转向RESTful API:文本可读、工具链成熟(curl、Postman、Wireshark的HTTP解码都是现成的)、任何语言都能调用。电信业做了一个顺理成章的决定——核心网信令向互联网的接口风格靠拢。
5G的旗舰特性网络切片,要求运营商能为不同业务(eMBB/uRLLC/mIoT)并行运营多张逻辑核心网。如果核心网还是一堆点对点焊死的网元,切片就成了痴人说梦。只有当每个网元都变成可独立部署、可按需组合、通过统一总线互访的“乐高积木”,切片才能做到“按单拼装”。3GPP在5G系统概览中明确指出:5GC基于SBA框架,架构元素以网络功能(NF)而非传统网元来定义,任何NF通过统一框架接口向其他被授权的NF提供服务,以获得模块化与可复用性——这正是为切片和虚拟化铺路。
在SBA里,AMF、SMF这些角色不再叫“网元设备”,而叫网络功能(Network Function, NF)。关键变化在于:一个NF对外的能力被进一步拆分成若干NF服务(NF Service)。例如SMF对外的服务包括会话管理(建立/修改/释放PDU会话)等,每个服务通过一个服务化接口(SBI)暴露,接口路径形如 /nsmf-pdusession/v1/...——看到nsmf这个前缀,你就知道这是SMF家的服务。
这带来一个微妙的转变:调用方关心的是“服务名”,而不是“某台具体设备”。就像你点外卖时只搜“黄焖鸡米饭”,并不关心是哪家分店、几个厨师在做。
5G的SBI统一采用HTTP/2承载,消息体用JSON编码,生产环境普遍叠加TLS加密。为什么选HTTP/2而不是HTTP/1.1?核心在于多路复用(Multiplexing):
HTTP/1.1的一条TCP连接同一时刻只能跑一个请求,前面的请求不回来,后面的就得排队(队头阻塞)。核心网信令是典型的高并发小消息场景——一个AMF同时伺服成千上万UE,如果每个请求都排队,时延会失控。HTTP/2把一条连接切成多个双向“流(stream)",每个请求占一个流,彼此并行互不阻塞:
$$T_{total} \approx \max(T_1, T_2, \dots, T_n) \quad \text{(HTTP/2 并行)} \;\; vs \;\; T_{total} \approx \sum_{i=1}^{n} T_i \quad \text{(HTTP/1.1 串行)}$$
再加上HPACK头部压缩(信令消息头往往比身体还长)和SCTP之上类似的可靠性设计思路,HTTP/2成为电信信令与互联网生态之间的最大公约数。
网络存储功能(NRF)是SBA的中枢。用3GPP官方的描述:NRF为NF及其服务提供注册、去注册和更新的支持。它的角色类似微服务世界的服务注册中心(如Consul、Eureka),更通俗地说——它是5G核心网的“114查号台 + 黄页 + 门卫”三合一:
下表列出5GC信令面的主要NF及其职责,并给出4G时代的“血统渊源”(依据3GPP官方系统概览整理):
| NF | 全称 | 干什么活 | 4G/更早对应物 |
|---|---|---|---|
| AMF | 接入与移动性管理功能 | 终端注册、连接管理、移动性、NAS信令终结 | MME(部分) |
| SMF | 会话管理功能 | PDU会话建立/修改/释放、IP地址分配、选UPF | MME+PGW-C(控制面部分) |
| UPF | 用户面功能 | 用户数据转发、QoS执行、计费采样 | SGW-U+PGW-U |
| UDM | 统一数据管理 | 用户签约数据、鉴权凭据管理 | HSS(更早是2G的HLR) |
| AUSF | 鉴权服务功能 | 执行5G鉴权流程 | MME/HSS的鉴权职能 |
| PCF | 策略控制功能 | 下发会话/接入/移动性策略 | PCRF |
| NRF | 网络存储功能 | NF注册、发现、授权 | 无对应物,全新角色 |
| NEF | 网络开放功能 | 把网络能力安全地开放给第三方 | SCEF(IoT方向) |
| NSSF | 网络切片选择功能 | 为UE选择合适的切片实例 | 无对应物,全新角色 |
| AF | 应用功能 | 与核心网交互的应用层(运营商自有或第三方) | ASF/第三方AF |
注意两个“全新角色”——NRF和NSSF——恰恰是SBA和切片这两大架构革新的直接产物:架构改造先行,才能承载业务创新。
graph TB
subgraph EPC4G ["4G EPC:点对点网状(参考点架构)"]
MME
SGW["SGW"]
PGW["PGW"]
HSS
PCRF
MME -- "S11 (GTPv2-C)" --> SGW
MME -- "S6a (Diameter)" --> HSS
SGW -- "S5 (GTPv2-C)" --> PGW
PGW -- "Gx (Diameter)" --> PCRF
PGW -- "S6b (Diameter)" --> HSS
MME -- "S10 (GTPv2-C)" --> MME
end
subgraph SBA5G ["5G 5GC:服务化总线(星型+直连)"]
NRF(("NRF<br/>注册/发现/授权"))
AMF2["AMF"]
SMF2["SMF"]
UDM2["UDM"]
PCF2["PCF"]
AMF2 -- "①注册 (Namf/Nnrf)" --> NRF
SMF2 -- "①注册" --> NRF
UDM2 -- "①注册" --> NRF
PCF2 -- "①注册" --> NRF
AMF2 -- "②查询NRF后③直连调用" --> SMF2
SMF2 -- "②③直连调用" --> UDM2
SMF2 -- "②③直连调用" --> PCF2
end
上图的要点:NRF只负责“牵线”,不负责“传话”。注册和发现走NRF,而真正的业务调用是消费者NF直连生产者NF的HTTP/2连接——NRF不是SIP代理那样的信令中转节点,这个误解后面还会提到。
来看SBA最核心的工作流。场景:手机开机注册后发起PDU会话建立,AMF需要找到SMF来处理,SMF又需要向UDM取签约数据。整个调用链如下:
sequenceDiagram
autonumber
participant UE as UE (手机)
participant AMF as AMF (消费者)
participant NRF as NRF (注册中心)
participant SMF as SMF (生产者)
participant UDM as UDM (生产者)
Note over NRF,UDM: 阶段〇:开机后的"商家入驻"(仅上线时执行一次)
SMF->>NRF: NFRegister (NF Profile: NF类型、服务列表、FQDN、PLMN、容量)
NRF-->>SMF: 201 Created (分配NF Instance ID, 心跳周期)
loop 保活
SMF->>NRF: NFStatusUpdate / 心跳 (NFUpdate)
end
Note over UE,UDM: 阶段一:发现(找谁干活)
UE->>AMF: 注册请求 / PDU会话建立请求
AMF->>NRF: NFDiscovery请求<br/>(目标NF类型=SMF, S-NSSAI切片, DNN, TAI, PLMN)
NRF-->>AMF: 候选SMF列表 (含FQDN/IP、apiPrefix、优先级、可用性)
Note over AMF: 结果可缓存,后续请求免查询
Note over UE,UDM: 阶段二:授权(拿到门禁卡)
AMF->>NRF: OAuth2 AccessTokenRequest (声明: 我要调SMF的x服务)
NRF-->>AMF: Access Token (含授权范围与有效期)
Note over UE,UDM: 阶段三:调用(直连交易)
AMF->>SMF: POST /nsmf-pdusession/v1/pdu-sessions<br/>HTTP/2 + JSON + Bearer Token
SMF-->>AMF: 201 Created (会话上下文)
Note over UE,UDM: 阶段四:生产者反向发现消费者
SMF->>NRF: NFDiscovery (目标NF类型=UDM)
NRF-->>SMF: UDM实例列表
SMF->>UDM: GET /nudm-sdm/v1/.../session-management-data
UDM-->>SMF: 签约数据 (JSON)
这张时序图里有四个值得咀嚼的设计细节:
① 注册是有“档案”的。 NF Profile不只是一个IP地址,它包含NF类型、暴露的服务清单、支持的切片(S-NSSAI)、归属PLMN、容量权重、优先级等一整套描述。正因为档案够“立体”,发现环节才能做出精细的选择——比如同一个SMF池里,优先挑离UE当前位置最近的、负载权重最高的那个。这本质上就是把4G时代写死在网元配置文件里的静态选择逻辑,变成了运行时的动态决策。
② 发现结果可以缓存。 AMF拿到SMF列表后不必每次都去问NRF,缓存起来直接用。这和DNS的缓存思想一模一样——代价是NF下线时可能出现“脏数据”,所以NF主动去注册时要执行 deregister,异常宕机则靠NRF的注册有效期(心跳超时即剔除)兜底。
③ 生产者也会反过来当消费者。 SBA里没有天然的“上级下级”关系,SMF取UDM数据时自己是消费者。这种对等架构打破了4G时代严格的层级(MME永远是被HSS“服务”的一方),任何NF既是服务提供者也可能是消费者。
④ 订阅制通知。 除了拉模式(查询),NRF还支持推模式:消费者可以提前向NRF订阅“某类NF的状态变化事件”,一旦某个SMF注册或故障退出,NRF主动推送通知。这让核心网第一次具备了“服务拓扑可感知”的运维能力。
4G末期3GPP其实已经意识到架构问题,推出了CUPS(控制面与用户面分离):把SGW/PGW拆成控制面(SGW-C/PGW-C)和用户面(SGW-U/PGW-U),中间用一条新接口连接。但4G的CUPS仍是点对点思路——控制面网元靠静态配置知道该连哪些用户面网元。
5GC把这个思想贯彻到底:SMF(控制面)与UPF(用户面)之间确实保留了点对点的N4接口(GTP-U用户数据走N3/N9,控制信令N4由SMF下发转发规则),但选哪个UPF这件事,交给了NRF的动态发现。从“静态绑定”到“动态选择”,是从CUPS 1.0到SBA的本质跨越——这也是5GC能把UPF下沉到园区、工厂边缘(边缘计算)的前提:只要UPF向就近的NRF注册,SMF就能按DNN/切片/位置筛选出“离用户最近的转发点”。
如果你想亲手拆一台5G核心网,开源项目free5GC是个绝佳标本:它的每个NF(amf、smf、nrf、udm……)都是独立进程/独立容器,用compose一键拉起时你会看到十几个容器各自监听自己的HTTP/2端口,webconsole单独一个——SBA的“服务可独立部署”在这里具象化了。商用核心网(华为/爱立信/中兴)在云化部署时同样如此:一个NF往往是Kubernetes里的一组Pod,扩缩容按服务粒度进行。
| 陷阱 | 现象 | 根因与排查 |
|---|---|---|
| NRF注册成功但发现返回空 | AMF报“找不到SMF” | 检查双方的PLMN、S-NSSAI、DNN是否匹配——发现是按条件过滤的,档案对不上就搜不到 |
| FQDN解析失败 | 调用阶段连接超时 | NF Profile里登记的是FQDN而非IP,核心网内部DNS解析不通;先dig验证 |
| OAuth2令牌被拒 | HTTP 401/403 | NRF签发的token有过期时间,时钟不同步(NTP没配好)会导致刚拿到的token就“过期” |
| apiPrefix版本不匹配 | HTTP 404 | 生产者升级后URL里的版本段(如v1→v2)变了,消费者没跟着升级 |
| 长连接中断后信令堆积 | 时延尖刺 | HTTP/2连接被防火墙静默回收,需配置应用层心跳/keepalive |
抓包工具链也完全换代了:4G抓Diameter要专门的解码器,5G抓SBI就是抓HTTP/2——Wireshark直接按HTTP2过滤器解析JSON,甚至能直接看到PDU会话参数。可读性大幅提升,但也意味着敏感信息明文可见,生产环境务必开启TLS。
很多人(包括不少有经验的工程师)以为“既然叫服务化,那AMF调用SMF的流量要经过NRF中转”。不是的。NRF只参与注册、发现、授权三个环节,业务消息从不流经NRF。NRF挂了会怎样?已建立的调用不受影响,已缓存的发现结果继续可用,只有“新NF上线”和“缓存失效后的重新发现”才会受阻。这也是为什么NRF可以适度集中部署而不成为信令瓶颈。
| 维度 | 4G EPC(参考点架构) | 5G 5GC(服务化架构) |
|---|---|---|
| 组织单元 | 网元设备 | 网络功能NF,且NF可细分为多个服务 |
| 接口形态 | 两两专用参考点(S6a、S11、Gx…) | 统一SBI总线(HTTP/2+JSON+TLS) |
| 协议方言 | Diameter、GTPv2-C、S1AP混用 | 统一RESTful风格,路径自带语义(/nsmf-pdusession) |
| 找对方的方式 | 静态配置(DNS+运维录入) | NRF动态注册/发现+缓存 |
| 状态感知 | 无(网元挂了靠告警) | NF状态订阅与事件通知 |
| 耦合度 | 强耦合,替换网元需动多方配置 | 松耦合,按服务粒度替换扩容 |
| 部署形态 | 专用硬件为主 | 云原生友好(虚拟机/容器/K8s) |
| 安全模型 | 逐跳Diameter安全(IPSec/TLS可选) | OAuth2令牌授权+TLS成体系 |
| 切片支持 | 无 | 发现按切片过滤,天然支持多切片并行 |
Q1: SBA和微服务架构是什么关系? A: SBA大量借鉴了互联网微服务的设计(注册中心、REST API、无状态水平扩展、对等调用),可以理解为“电信业定制版微服务”。但两者有关键差异:微服务通常服务粒度极细、内部通信随意选型;而SBA的“服务”粒度是3GPP标准化的(每个NF服务的接口、消息、参数都有规范定义),且强制HTTP/2+JSON+OAuth2的统一技术栈——为的是跨厂商互操作,这是电信业区别于互联网的生命线。
Q2: NRF挂了核心网就瘫痪吗? A: 短期内不会。已建立的NF间直连调用不经过NRF,已缓存的发现结果仍然有效。影响的是增量操作:新NF上线注册不了、缓存过期后无法重新发现、新token签发不了。所以NRF通常集群化部署,但它的可用性要求低于AMF/SMF这类必经节点。
Q3: 为什么用户面UPF“不在”SBA总线里? A: SBA是控制面的架构。用户数据走的是GTP-U隧道(N3/N9接口),追求的是线速转发和确定性时延,每包都查表转发,不适合HTTP这种开销较大的应用层协议。但UPF的控制决策(选谁、怎么转发)由SMF通过N4下发,而“SMF如何找到合适的UPF”这件事由NRF动态发现完成——所以UPF是“活在SBA体系边上、受SBA指挥”的特殊角色。
Q4: 发现请求里为什么要带切片(S-NSSAI)和DNN? A: 因为5G允许同一张物理网里并行跑多个逻辑核心网(切片)。同一个DNN的会话,在eMBB切片和uRLLC切片里必须由不同的SMF实例处理(时延/可靠性要求完全不同)。发现请求携带这些参数,NRF才能把“路由决策”做到服务发现这一层——相当于在查号台就完成了选路,而不是先随便接通再说。
Q5: 学SBA对日常运维有什么直接用处? A: 三个直接收益:一是看懂核心网配置——现代5GC的配置文件里大量出现“指向NRF的地址、本NF的FQDN、支持的切片列表”这些SBA概念;二是信令排查降维——SBI信令就是HTTP/2报文,抓包可读性远高于Diameter;三是理解故障传播链——“用户无法建会话”这类问题,排查路径变成:注册了吗(NRF里有档案吗)→ 发现得到吗(过滤条件匹配吗)→ 调用通吗(FQDN/DNS/TLS/令牌)→ 业务错吗(生产者返回的业务错误码)。
本文由「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 等场景全覆盖。
