首页 › deep-tech › 5G核心网SBA:微服务思维改造通信网

5G核心网服务化架构:为什么5GC像微服务应用

如果你做过互联网后端开发,一定听过"微服务"这个词——把一个大单体应用拆成多个独立服务,各自部署、各自扩容,通过API互相调用。而如果你是通信工程师,可能觉得这套东西跟核心网八竿子打不着。

但5G核心网(5GC)干了一件颠覆性的事:它把整个核心网设计成了微服务架构。

这不是比喻,而是3GPP在标准中明确定义的设计范式——SBA(Service-Based Architecture,服务化架构)。每个网元不再是"设备",而是一个"服务";网元之间不再是专用信令接口,而是HTTP/2的RESTful API。

今天这篇文章,我们从"为什么"出发,搞清楚SBA的设计逻辑。


一、先看4G:点对点架构的痛点

要理解5G为什么改成SBA,先得明白4G EPC的架构有什么问题。

1.1 4G EPC的"专线电话"模型

4G核心网采用的是点对点(Point-to-Point)参考点架构。每个网元之间有一根"专线":

MME ←─S6a─→ HSS
MME ←─S11─→ S-GW
S-GW ←─S5─→ P-GW
P-GW ←─Gx─→ PCRF
MME ←─S1-MME─→ eNodeB
S-GW ←─S1-U─→ eNodeB

这就像公司里每个部门之间有一部专用电话——人事部和财务部之间的电话,跟财务部和销售部之间的电话,是完全不同的型号、不同的号码本、不同的拨号规则。

1.2 点对点架构的三大痛点

痛点 具体表现
协议碎片化 S6a用Diameter,S11用GTPv2-C,Gx也用Diameter但字典不同,每个接口一套协议栈
紧耦合 MME要同时支持跟HSS、S-GW、eNodeB的多种协议,改一个接口可能影响其他功能
扩展困难 想加一个新网元?得定义新参考点、新协议、新消息——标准制定周期按年计

更致命的是运维层面:每个网元是一个"大盒子",扩容只能整台扩。如果某地注册量暴增需要扩MME,但MME、S-GW、P-GW可能是同一台物理设备(合并部署),你没法只扩MME的容量。

graph TD
    subgraph "4G EPC: 点对点架构"
        MME4G[MME<br/>Diameter + GTPv2-C]
        HSS4G[HSS<br/>Diameter]
        SGW4G[S-GW<br/>GTPv2-C + GTP-U]
        PGW4G[P-GW<br/>Diameter + GTP-U]
        PCRF4G[PCRF<br/>Diameter]

        MME4G <-->|"S6a<br/>Diameter"| HSS4G
        MME4G <-->|"S11<br/>GTPv2-C"| SGW4G
        SGW4G <-->|"S5<br/>GTPv2-C/GTP-U"| PGW4G
        PGW4G <-->|"Gx<br/>Diameter"| PCRF4G
    end

    style MME4G fill:#f9f,stroke:#333
    style PGW4G fill:#ff9,stroke:#333
    style PCRF4G fill:#9ff,stroke:#333

核心矛盾:4G EPC是"通信人设计给通信人用的",协议复杂、门槛高、扩展慢。到了5G时代,要面对eMBB(大带宽)、URLLC(低时延)、mMTC(大连接)三种截然不同的场景,再用这种刚性架构根本撑不住。


二、5G的解法:SBA服务化架构

2.1 一个类比:从"专线电话"到"微信通讯录"

4G的网元之间像打专线电话——你得知道对方的号码(IP地址)、说对方能听懂的语言(特定协议)。

5G SBA的思路是:像微信通讯录一样管理所有网元。

  1. 每个网元上线后,先到"通讯录"(NRF)注册自己的信息
  2. 需要找别的网元时,去"通讯录"查询
  3. 查到后,用统一的"微信消息"(HTTP/2 REST API)直接联系
graph TD
    subgraph "5GC SBA: 服务化架构"
        NRF5G["NRF<br/>📍 服务注册与发现中心"]
        AMF5G["AMF<br/>接入与移动性管理"]
        SMF5G["SMF<br/>会话管理"]
        UDM5G["UDM<br/>统一数据管理"]
        PCF5G["PCF<br/>策略控制"]
        AUSF5G["AUSF<br/>认证服务"]
        UPF5G["UPF<br/>用户面功能"]

        AMF5G -->|"注册/发现"| NRF5G
        SMF5G -->|"注册/发现"| NRF5G
        UDM5G -->|"注册/发现"| NRF5G
        PCF5G -->|"注册/发现"| NRF5G
        AUSF5G -->|"注册/发现"| NRF5G

        AMF5G -.->|"HTTP/2<br/>Nsmf"| SMF5G
        AMF5G -.->|"HTTP/2<br/>Nudm"| UDM5G
        SMF5G -.->|"HTTP/2<br/>Npcf"| PCF5G
        SMF5G ===>"N4<br/>GTP/SEPP"| UPF5G
    end

    style NRF5G fill:#f96,stroke:#333,stroke-width:3px
    style AMF5G fill:#6cf,stroke:#333
    style SMF5G fill:#6f6,stroke:#333
    style UPF5G fill:#ff6,stroke:#333

2.2 SBA的三个核心设计原则

设计原则 含义 4G对应
服务化接口(SBI) 所有NF用统一的HTTP/2 + JSON通信 每个接口用不同协议(Diameter/GTP/CAP)
服务注册与发现 通过NRF动态注册、查询NF 静态配置或DNS路由
模块化NF 每个NF是独立服务,可独立部署、扩缩容 网元是大型一体机

三、NRF:通信网的"服务注册中心"

NRF(Network Repository Function)是SBA架构中最关键的新增网元。如果你熟悉微服务,它就是5G版的Eureka/Consul/Nacos。

3.1 NRF的工作流程

sequenceDiagram
    participant AMF as AMF (网络功能A)
    participant NRF as NRF (注册中心)
    participant SMF as SMF (网络功能B)

    Note over AMF,NRF: 第一阶段:服务注册
    AMF->>NRF: PUT /nnrf-nfm/v1/nf-instances/{id}<br/>注册NF Profile (类型/服务/切片/地址)
    NRF-->>AMF: 201 Created (注册成功)

    Note over SMF,NRF: SMF也完成注册
    SMF->>NRF: PUT /nnrf-nfm/v1/nf-instances/{id}<br/>注册NF Profile
    NRF-->>SMF: 201 Created

    Note over AMF,NRF: 第二阶段:服务发现
    AMF->>NRF: GET /nnrf-disc/v1/nf-instances<br/>?target-nf-type=SMF&sNssais=...
    NRF-->>AMF: 200 OK (返回SMF列表)

    Note over AMF,SMF: 第三阶段:直接服务调用
    AMF->>SMF: POST /nsmf-pdusession/v1/sm-contexts<br/>创建PDU会话上下文
    SMF-->>AMF: 201 Created (SmContextRef)

    Note over AMF,NRF: 心跳保活
    AMF->>NRF: PATCH /nnrf-nfm/v1/nf-instances/{id}<br/>(周期性心跳)
    NRF-->>AMF: 204 No Content

3.2 NF Profile里有什么?

每个NF向NRF注册时,会提交一份"简历"(NF Profile),关键字段包括:

字段 说明 示例
nfInstanceId NF的唯一标识(UUID) 550e8400-e29b-41d4-a716-446655440000
nfType 网络功能类型 AMF, SMF, UPF, PCF, UDM
serviceName[] 提供的服务列表 Nsmf_PDU_Session, Nsmf_Event_Exposure
sNssaiList[] 支持的网络切片 SST:1, SD:010203
plmnList[] 所属PLMN MCC:460, MNC:00
ipv4Addresses[] 服务端点地址 10.0.1.5
capacity 容量权重(用于负载均衡) 100
priority 优先级 10

3.3 为什么NRF的设计很聪明?

问题:假设某城市新开了一个SMF实例来应对流量高峰,传统做法需要修改AMF的配置文件,指向新的SMF地址。

SBA的做法:新SMF启动后自动向NRF注册,AMF下次查询NRF时自然就能发现它。零配置、零人工干预。

这就像新开了一家餐厅,不需要满大街贴广告——只要在美团上注册了,顾客搜索时自然就能找到。


四、SBI通信模型:HTTP/2如何替代Diameter

4.1 统一协议栈

4G EPC的控制面用了至少三种协议:

接口 协议 用途
S6a (MME-HSS) Diameter 用户认证、签约数据
S11 (MME-SGW) GTPv2-C 承载管理
Gx (PCRF-PGW) Diameter 策略控制
Rx (PCRF-AF) Diameter 应用层策略

5GC做了什么?全部统一成HTTP/2 + JSON。

$$ \text{4G: } \underbrace{\text{Diameter}}{\text{S6a}} + \underbrace{\text{GTPv2-C}}}} + \underbrace{\text{Diameter}{\text{Gx}} \implies \text{5G: } \underbrace{\text{HTTP/2 + JSON}} $$}

4.2 SBI接口命名规则

每个NF的服务接口以 N + 小写NF名 命名:

NF SBI接口名 关键服务操作
AMF Namf Namf_Communication, Namf_EventExposure
SMF Nsmf Nsmf_PDUSession, Nsmf_EventExposure
UDM Nudm Nudm_UECM, Nudm_SDM, Nudm_Auth
PCF Npcf Npcf_SMPolicyControl, Npcf_AMPolicyControl
NRF Nnrf Nnrf_NFManagement, Nnrf_NFDiscovery
AUSF Nausf Nausf_UEAuthentication
NSSF Nnssf Nnssf_NSSelection

4.3 一个HTTP调用长什么样?

以AMF调用UDM获取用户签约数据为例:

GET /nudm-sdm/v2/{supi}/sm-data?dnn=internet&sNssai={...} HTTP/2
Host: udm.example.com
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
Accept: application/json

UDM的响应:

{
  "dnnConfigurations": {
    "internet": {
      "pduSessionTypes": {"defaultSessionType": "IPV4"},
      "sscModes": {"defaultSscMode": "SSC_MODE_1"},
      "sessionAmbr": {"uplink": "100Mbps", "downlink": "1Gbps"},
      "5gQosProfile": {"5qi": 9, "arp": {"priorityLevel": 15}}
    }
  }
}

没错,这就是标准的RESTful API——跟你在互联网公司调后端接口一模一样。


五、4G vs 5G:架构范式对比

5.1 核心差异一览

维度 4G EPC 5GC SBA
架构范式 点对点参考点模型 服务化总线模型
接口协议 Diameter/GTPv2-C/CAP等 统一HTTP/2 + JSON
服务发现 静态配置/DNS 动态NRF注册发现
耦合度 紧耦合(改接口牵动全局) 松耦合(NF独立演进)
扩缩容 整台设备扩容 按NF独立扩缩容
新功能引入 新接口+新协议+新标准 注册新服务到NRF即可
云原生适配 困难(VNF虚拟化) 天然适配(CNF容器化)
安全机制 各接口独立安全机制 统一OAuth2.0令牌

5.2 网元映射关系

graph LR
    subgraph "4G EPC 网元"
        M4G[MME]
        SG4G[S-GW]
        PG4G[P-GW]
        HSS4G[HSS]
        PCR4G[PCRF]
    end

    subgraph "5GC 网络功能"
        AM5G[AMF]
        SM5G[SMF]
        UP5G[UPF]
        UD5G[UDM]
        PC5G[PCF]
        AU5G[AUSF]
        NS5G[NSSF]
        NE5G[NEF]
        NR5G[NRF]
    end

    M4G ==>|"功能拆分"| AM5G
    M4G ==>|"功能拆分"| SM5G
    SG4G ==>|"合并演进"| UP5G
    PG4G ==>|"合并演进"| UP5G
    HSS4G ==>|"演进"| UD5G
    PCR4G ==>|"演进"| PC5G
    HSS4G -.->|"认证分离"| AU5G

    style NR5G fill:#f96,stroke:#333,stroke-width:3px
    style NS5G fill:#fc6,stroke:#333
    style NE5G fill:#6cf,stroke:#333

注意几个关键变化:

  1. MME被拆成AMF + SMF:4G的MME又管移动性又管会话,太胖了。5G把它拆成两个独立NF,各自扩容
  2. HSS演进为UDM + AUSF:数据管理和认证服务解耦
  3. 新增NRF、NSSF、NEF:这三个是SBA架构特有的,4G没有对应物

六、SBA如何支撑网络切片

网络切片是5G最重要的商业能力之一,而SBA是实现切片的技术基础。

6.1 切片选择流程

当手机发起注册时,AMF需要确定这个用户属于哪个切片:

sequenceDiagram
    participant UE as 手机(UE)
    participant AMF as AMF
    participant NSSF as NSSF
    participant NRF as NRF

    UE->>AMF: 注册请求<br/>(携带请求的S-NSSAI)
    AMF->>NSSF: 查询切片选择<br/>POST /nnssf-nsselection/v1/slices
    NSSF-->>AMF: 返回允许的切片信息<br/>(Allowed NSSAI + 目标NF列表)
    AMF->>NRF: 发现目标切片内的SMF<br/>GET /nnrf-disc/v1/nf-instances<br/>?target-nf-type=SMF&snssai=...
    NRF-->>AMF: 返回SMF实例列表
    Note over AMF: 选择对应切片的SMF<br/>建立PDU会话

6.2 关键理解:为什么没有SBA就没有切片?

在4G架构下,MME到S-GW的S11接口是固定的,P-GW到PCRF的Gx接口也是固定的。如果你想给URLLC业务单独建一个"切片",你需要在MME里硬编码路由规则,告诉它"这类业务去那个P-GW"。每加一个切片就要改一次配置。

在SBA架构下:

$$ \text{切片容量} = \sum_{i=1}^{N} \text{NF}_i \times \text{S-NSSAI}_j $$

每个NF实例打上切片标签,NRF按标签分发——这就是SBA实现切片的底层逻辑。


七、实战连接:工程师在现网中怎么用这些知识

7.1 抓包分析SBI信令

在5GC运维中,你会经常抓HTTP/2的包来排查问题:

# 抓取AMF到SMF的SBI信令
tcpdump -i eth0 -s 0 -w sbi.pcap \
  'tcp port 8080 and (((ip src 10.0.1.5) and (ip dst 10.0.2.10)) \
  or ((ip src 10.0.2.10) and (ip dst 10.0.1.5)))'

抓到的就是标准的HTTP/2请求,可以直接用Wireshark解析,看到JSON body里的具体字段——这比解析Diameter的AVP或GTPv2-C的IE要直观得多。

7.2 常见调试场景

场景 排查思路
UE注册失败 检查AMF→UDM的Nudm_UECM_Registration是否成功
PDU会话创建失败 检查AMF→SMF的Nsmf_PDUSession_CreateSMContext返回码
切片选择错误 检查AMF→NSSF的请求中S-NSSAI是否正确
NF发现失败 检查NRF中目标NF是否已注册、心跳是否正常
策略下发异常 检查SMF→PCF的Npcf_SMPolicyControl响应

7.3 常见误解

误解1:"SBA意味着所有接口都是HTTP/2"

事实:SBA只适用于控制面NF之间的SBI接口。用户面(N3/N9接口)仍然用GTP-U,AMF到基站(N2接口)用NGAP(类似S1-AP),SMF到UPF(N4接口)用PFCP(类似GTPv2-C的控制面演进)。

误解2:"NRF是单点故障"

事实:NRF本身可以集群部署,多个NRF实例共享数据库。而且NF查询NRF后会缓存结果,即使NRF短暂不可用,已缓存的NF信息仍然可以使用。

误解3:"HTTP/2比Diameter慢"

事实:HTTP/2支持多路复用(Multiplexing),在一个TCP连接上可以并行发送多个请求,而Diameter通常需要逐请求应答。在高并发场景下,HTTP/2的性能反而更好。


八、SBA与IT微服务的映射表

如果你有IT背景,这张表能帮你快速理解5GC SBA:

IT微服务概念 5GC SBA对应
Spring Cloud Eureka / Consul NRF(服务注册与发现)
RESTful API (JSON over HTTP) SBI(所有NF间通信)
API Gateway SCP(Service Communication Proxy,通信代理)
OAuth2 / JWT Token OAuth2.0(NF间通信授权)
Kubernetes Service Discovery NRF + K8s Service
Config Server UDR + UDM(统一数据存储)
Docker Container CNF(Cloud-native NF,容器化网元)
CI/CD Pipeline 5GC网元滚动升级

常见问题

Q: SBA和传统参考点架构能共存吗? A: 可以。5GC定义了两种表示方式——SBA模型(用于控制面NF间通信)和参考点模型(用于描述端到端信令流,如N1/N2/N3/N4)。两者是同一架构的不同视角,不是互相替代的关系。

Q: NRF挂了会怎样? A: 短期内影响有限。已注册的NF信息会被请求者缓存(通常有效期为几分钟到几十分钟),只有新的NF发现请求会失败。运维上,NRF通常采用主备或多活部署,数据库后端共享,可靠性很高。

Q: 为什么5GC不用gRPC而用HTTP/2 REST? A: 3GPP在设计SBA时(2016-2018年),gRPC还不成熟。HTTP/2 + JSON + OpenAPI是当时IT行业最通用的API标准,生态成熟、工具链完善、调试方便。实际上HTTP/2已经具备了多路复用和头部压缩能力,性能不是瓶颈。

Q: SCP(Service Communication Proxy)是什么? A: SCP是SBA架构中的可选组件,相当于IT领域的API Gateway/Service Mesh。它可以代理NF间的SBI通信,实现负载均衡、流量控制、安全策略等功能。有了SCP,NF可以不直接查询NRF,而是把请求发给SCP,由SCP完成发现和路由——这叫"间接通信"模式。

Q: SBA对5GC的性能有没有负面影响? A: HTTP/2 + JSON的编解码开销确实比二进制协议(如Diameter)稍大。但现代服务器的CPU处理能力远超需求,瓶颈通常在I/O而非编解码。实际现网测试表明,SBA的性能完全能满足5GC的需求。而且HTTP/2的多路复用特性反而减少了连接建立开销。


参考来源

  1. 5G核心网SBA架构解析与云化演进部署策略 - 阿里云开发者社区 — SBA架构全面解析与云化部署策略
  2. 5G初始注册流程详解:SBA架构NF发现 - 知乎 — 详细解读NF注册发现流程
  3. 5G核心网SBA架构 - 易百纳技术社区 — SBI接口命名规则与服务操作说明
  4. 服务化架构(SBA)在5G核心网中的关键作用 - 华为云社区 — 华为对SBA架构的深度解读
  5. SBA服务化架构:5G核心网最革命性的设计理念 - B站 — 视频教程讲解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 等场景全覆盖。

51学通信知识星球海报-扫码加入