想象一个快递分拣中心的场景:老王既是调度员又是搬运工——他一边接电话安排路线,一边亲自搬箱子。平时还行,但一到"双11",订单暴增,老王忙不过来,包裹堆积如山。老板一拍大腿:"把调度和搬货拆开!"于是小张专门接电话、排路线、处理异常;老王只管搬货。小张坐在总部的办公室里,老王则被派到了各个小区门口的快递站。
这个场景,就是5G核心网"控制面与用户面分离"(CUPS, Control and User Plane Separation)最直白的类比。SMF是小张——只动嘴(下发规则),UPF是老王——只动手(转发数据包)。
但问题来了:4G时代不也有MME(纯控制面)吗?为什么5G还要大张旗鼓地谈"分离"?分离之后,SMF到底怎么"遥控"UPF?一个手机上网的会话,背后涉及几种UPF部署方式?这些正是本文要回答的问题。
| 维度 | 控制面(Control Plane) | 用户面(User Plane) |
|---|---|---|
| 本质 | 信令——"管事的指令" | 数据——"干活的载荷" |
| 类比 | 公司的管理层:制定策略、审批流程、分配资源 | 公司的执行层:搬运货物、加工产品 |
| 流量特征 | 小包、低频、但对可靠性要求极高 | 大包、高频、对带宽和时延要求极高 |
| 核心网元 | AMF(接入管理)、SMF(会话管理)、PCF(策略控制)、AUSF(认证) | UPF(用户面功能) |
| 关键接口 | N1(UE↔AMF的NAS)、N11(AMF↔SMF)、N7(SMF↔PCF) | N3(gNB↔UPF)、N6(UPF↔数据网络)、N9(UPF↔UPF) |
| 协议 | HTTP/2(SBI服务化接口)、NAS、NGAP | GTP-U、PFCP |
| 扩展需求 | 按用户数和信令量扩展 | 按带宽和流量扩展 |
控制面决定"数据包该怎么走",用户面负责"照着规则把包转走"。
这个分工看似简单,但从4G到5G,实现方式发生了根本性变化。4G的S-GW和P-GW是控制面功能和用户面功能耦合在一起的"一体机";5G则从架构设计之初就把两者彻底拆开——SMF只管规则,UPF只管转发。
┌─────────────────────────────────────────────┐
│ 4G EPC(传统) │
│ │
│ ┌─────┐ ┌──────────────────────────┐ │
│ │ MME │ │ S-GW / P-GW │ │
│ │(纯CP)│ │ ┌───────┐ ┌────────┐ │ │
│ └──┬──┘ │ │ CP功能 │ │ UP功能 │ │ │
│ │ │ │(承载管理│ │(数据转发│ │ │
│ │ │ │ 策略执行│ │ 计费统计│ │ │
│ │ │ └───────┘ └────────┘ │ │
│ └────────► 耦合在一起,无法独立部署 │ │
│ └──────────────────────────┘ │
└─────────────────────────────────────────────┘
在4G中,MME确实是纯控制面,但S-GW和P-GW内部混合了控制面和用户面功能。这导致: - 扩容时必须整体扩(即使只是带宽不够,也要连带控制面资源一起扩) - S/P-GW必须集中部署,无法把用户面功能单独下沉到边缘 - 网络切片难以实现(不同切片需要独立的用户面,但网关控制面共享困难)
3GPP在Release 14引入了CUPS(Control and User Plane Separation),把S-GW拆成SGW-C和SGW-U,P-GW拆成PGW-C和PGW-U,中间用Sx接口(PFCP协议)连接。这是"补丁式"的分离——在已有架构上打补丁。
┌───────────────────────────────────────────────────┐
│ 5G核心网(5GC) │
│ │
│ ┌──────────────────┐ ┌────────────────┐ │
│ │ 控制面(集中) │ │ 用户面(分布) │ │
│ │ │ │ │ │
│ │ ┌─────┐┌─────┐ │ N4 │ ┌───┐┌───┐ │ │
│ │ │ AMF ││ SMF │ │═════════│ │UPF││UPF│ │ │
│ │ └─────┘└─────┘ │ (PFCP) │ │(边)││(中)│ │ │
│ │ ┌─────┐┌─────┐ │ │ └─┬─┘└─┬─┘ │ │
│ │ │ PCF ││AUSF │ │ │ │ │ │ │
│ │ └─────┘└─────┘ │ │ N6 N6 │ │
│ │ ┌─────┐ │ │ │ │ │ │
│ │ │ UDM │ │ │ 本地 公网 │ │
│ │ └─────┘ │ │ MEC DN │ │
│ └──────────────────┘ └────────────────┘ │
└───────────────────────────────────────────────────┘
5G的核心网从设计之初就原生实现了CP-UP分离: - SMF(控制面)通过N4接口(PFCP协议)远程操控UPF(用户面) - UPF可以像"快递站"一样分布式部署在任何位置 - 控制面网元集中部署在大区数据中心
| 对比维度 | 4G EPC | 4G CUPS (Rel-14) | 5GC (Rel-15+) |
|---|---|---|---|
| 分离程度 | 部分分离(MME独立,S/P-GW耦合) | 补丁式分离(拆分S/P-GW) | 原生完全分离 |
| 控制面接口 | GTP-C、Diameter | Sx(PFCP) | N4(PFCP)+ SBI(HTTP/2) |
| 用户面部署 | 只能集中 | 可部分分布 | 完全灵活分布 |
| 网络切片 | 不支持 | 有限支持 | 原生支持 |
| 边缘计算 | 困难 | 可能但复杂 | 原生支持(UL-CL/BP) |
| 接口风格 | 点对点 | 点对点 | 服务化(SBI)+ N4 |
分离之后,SMF和UPF之间需要一个"遥控通道"——这就是N4接口,使用的协议叫PFCP(Packet Forwarding Control Protocol,包转发控制协议)。
sequenceDiagram
participant SMF
participant UPF
Note over SMF,UPF: 第一层:PFCP关联(Association)
SMF->>UPF: PFCP Association Setup Request
UPF-->>SMF: PFCP Association Setup Response
Note over SMF,UPF: 建立节点级连接<br/>交换节点能力、恢复时间戳
Note over SMF,UPF: 第二层:PFCP会话(Session)
SMF->>UPF: PFCP Session Establishment Request
Note right of UPF: 包含PDR/FAR/QER/URR规则
UPF-->>SMF: PFCP Session Establishment Response
SMF->>UPF: PFCP Session Modification Request
Note right of UPF: 修改/增加/删除规则
UPF-->>SMF: PFCP Session Modification Response
SMF->>UPF: PFCP Session Deletion Request
UPF-->>SMF: PFCP Session Deletion Response
SMF通过N4接口给UPF下发五类规则,共同定义了"数据包怎么识别、怎么处理、怎么计量":
| 规则类型 | 全称 | 一句话解释 | 类比 |
|---|---|---|---|
| PDR | Packet Detection Rule | 怎么识别一个包 | 快递单号扫描规则 |
| FAR | Forwarding Action Rule | 识别后怎么处理(转发/丢弃/缓存) | 快递分拣指令 |
| QER | QoS Enforcement Rule | 按什么质量标准处理 | 加急/普通标记 |
| URR | Usage Reporting Rule | 怎么计量和上报 | 水表/电表读数 |
| BAR | Buffering Action Rule | 缓存策略(如手机空闲时缓存下行数据) | 快件暂存柜规则 |
数据包到达UPF
│
┌─────▼─────┐
│ PDR │ ← 匹配:UE IP?TEID?SDF过滤器?
│ (识别包) │
└─────┬─────┘
│ 匹配成功
┌───────────┼───────────┐
│ │ │
┌─────▼─────┐ ┌──▼───┐ ┌────▼────┐
│ FAR │ │ QER │ │ URR │
│ 转发/丢弃/ │ │ QoS │ │ 流量 │
│ 缓存 │ │ 限速 │ │ 统计 │
└─────┬─────┘ └──┬───┘ └────┬────┘
│ │ │
└───────────┼──────────┘
│
┌─────▼─────┐
│ 数据包发出 │ → 下一跳(N6/N3/N9)
└───────────┘
举个具体例子:手机建立PDU会话后,SMF向UPF下发规则——
UPF收到包后,只需要机械地执行这些规则——它不需要理解"什么是PDU会话",不需要知道"这是哪个UE",只要照规则干活就行。
好问题。5G控制面网元之间(如AMF↔SMF)用的是HTTP/2(SBI服务化接口),但SMF↔UPF之间却用PFCP。原因:
| 维度 | HTTP/2 (SBI) | PFCP |
|---|---|---|
| 设计目标 | 通用Web服务调用 | 专用包转发控制 |
| 性能 | JSON解析开销较大 | 二进制编码,轻量高效 |
| 交互模式 | 请求-响应 | 请求-响应 + 主动上报 |
| 适用场景 | NF之间高层业务逻辑 | SMF↔UPF高频实时规则操作 |
| 会话规模 | 每秒数百至数千级 | 每秒数十万级PFCP会话操作 |
简单说:N4接口承载的是海量、高频的规则操作,PFCP的轻量二进制协议比HTTP/2+JSON更适合这个场景。
CP-UP分离最直接的价值,就是让UPF可以灵活部署。在现网中,UPF有三种典型部署模式:
最基础的部署方式——所有UPF集中在大区数据中心。
graph LR
UE[手机] --> gNB[gNodeB]
gNB -->|N3 GTP-U| UPF_C[集中UPF<br/>大区DC]
UPF_C -->|N6| Internet[互联网]
SMF[SMF<br/>控制面] -.->|N4 PFCP| UPF_C
style SMF fill:#FFE0B2
style UPF_C fill:#C8E6C9
适用场景:普通移动互联网业务,对时延不敏感。
UPF下沉到边缘数据中心,本地业务本地处理,不需要绕回中心。
graph TD
UE[手机] --> gNB[gNodeB]
gNB -->|N3| ULCL[UL-CL UPF<br/>边缘DC]
ULCL -->|本地流量| PSA_L[边缘UPF/PSA2<br/>本地DN]
ULCL -->|非本地流量| PSA_C[中心UPF/PSA1<br/>大区DC]
PSA_L -->|N6| MEC[MEC平台<br/>本地应用]
PSA_C -->|N6| Internet[互联网]
SMF[SMF] -.->|N4| ULCL
SMF -.->|N4| PSA_L
SMF -.->|N4| PSA_C
style SMF fill:#FFE0B2
style ULCL fill:#BBDEFB
style PSA_L fill:#C8E6C9
style PSA_C fill:#C8E6C9
关键概念——UL-CL(Uplink Classifier,上行分类器):
UL-CL是一个特殊的UPF功能,它像一个"岔路口": - 收到上行数据包后,根据过滤规则(目的IP、FQDN等)判断 - 本地业务流量(如工厂内网、园区应用)→转发到本地UPF(PSA2)→本地MEC - 互联网流量 →转发到中心UPF(PSA1)→互联网
手机完全感知不到UL-CL的存在——对UE来说,它只知道有一个PDU会话,不知道背后可能有两三个UPF在工作。
为特定企业或切片部署专用UPF,与其他流量物理隔离。
graph LR
UE1[普通用户手机] --> gNB1[gNodeB]
UE2[企业专用终端] --> gNB2[gNodeB]
gNB1 -->|N3| UPF_P[公众UPF]
gNB2 -->|N3| UPF_E[企业专用UPF<br/>园区机房]
UPF_P -->|N6| Internet[互联网]
UPF_E -->|N6| Enterprise[企业内网<br/>数据不出园区]
SMF[SMF] -.->|N4| UPF_P
SMF -.->|N4| UPF_E
style UPF_E fill:#F8BBD0
style UPF_P fill:#C8E6C9
适用场景:5G专网、工业互联网、数据不出园区的安全要求。
| 维度 | 集中式UPF | 边缘UL-CL分流 | 专用UPF |
|---|---|---|---|
| UPF数量 | 1个(集中) | 2-3个(UL-CL + PSA1 + PSA2) | 1个(专用) |
| 时延 | 较高(15-30ms) | 极低(1-5ms,本地业务) | 低(就近部署) |
| 部署位置 | 大区DC | 边缘DC + 大区DC | 企业园区/基站侧 |
| 复杂度 | 低 | 中(UL-CL规则配置) | 中(独立管理) |
| 典型场景 | 普通公众业务 | AR/VR、V2X、智慧工厂 | 5G专网、企业专线 |
| SMF控制 | 单一N4会话 | 多个N4会话联动 | 独立N4会话 |
把前面所有概念串起来,看一部手机从开机到上网的完整流程:
sequenceDiagram
participant UE as 手机(UE)
participant gNB as gNodeB
participant AMF as AMF(控制面)
participant SMF as SMF(控制面)
participant PCF as PCF(策略)
participant UPF as UPF(用户面)
participant DN as 互联网(DN)
Note over UE,DN: ===== 第一步:注册(纯控制面)=====
UE->>gNB: 注册请求(Registration Request)
gNB->>AMF: NGAP: Initial UE Message
AMF->>AMF: 鉴权、安全流程
AMF-->>UE: 注册接受
Note over UE,DN: ===== 第二步:PDU会话建立(控制面准备)=====
UE->>AMF: PDU Session Establishment Request
AMF->>SMF: Nsmf_PDUSession_CreateSMContext
SMF->>PCF: Npcf_SMPolicyControl_Create
PCF-->>SMF: 返回QoS策略规则
Note over UE,DN: ===== 第三步:N4会话建立(控制面→用户面)=====
SMF->>UPF: PFCP Session Establishment Request<br/>(下发PDR/FAR/QER/URR)
UPF-->>SMF: PFCP Session Establishment Response
Note over UE,DN: ===== 第四步:用户面隧道建立 =====
SMF->>AMF: N2 SM Information(N3隧道信息)
AMF->>gNB: NGAP: PDU Session Resource Setup
gNB-->>AMF: 返回gNB侧隧道信息
AMF->>SMF: 转发gNB隧道信息
SMF->>UPF: PFCP Session Modification(更新FAR)
Note over UE,DN: ===== 第五步:用户面数据传输 =====
UE->>gNB: 上行数据包(视频请求)
gNB->>UPF: N3: GTP-U隧道
UPF->>UPF: PDR匹配→FAR转发→QER限速
UPF->>DN: N6: 转发到互联网
DN-->>UPF: 下行数据包(视频流)
UPF->>gNB: N3: GTP-U隧道
gNB-->>UE: 下行数据到达
Note over UE,DN: 控制面只在建立/修改/释放时介入<br/>数据传输阶段:用户面独立工作
关键理解: 1. 注册阶段:纯控制面,AMF处理,用户面不参与 2. 会话建立阶段:SMF从PCF获取策略,通过N4向UPF下发规则 3. 数据传输阶段:数据包直接走 UE → gNB → UPF → 互联网,控制面完全不介入 4. 会话修改/释放:控制面再次介入(如切换时更新隧道、手机关机时释放会话)
这是核心网工程师最常遇到的场景。当用户投诉"上不了网"时:
| 故障现象 | 可能的控制面问题 | 可能的用户面问题 |
|---|---|---|
| 完全无法上网 | AMF注册失败、SMF选择失败 | N3/N4隧道未建立 |
| 能上网但很慢 | PCF策略下发错误、QoS参数异常 | UPF转发性能瓶颈、QER限速配置错 |
| 部分应用能用、部分不行 | 会话建立成功但规则不完整 | PDR匹配规则遗漏、FAR转发目的错误 |
| 切换后断网 | SMF未及时更新隧道 | UPF锚点未正确切换 |
排查口诀:先看控制面(信令流程是否完成),再看用户面(隧道和规则是否正确)。
SMF在建立PDU会话时需要选择UPF,选择依据包括: - DNN(Data Network Name,相当于4G的APN):不同DNN可能对应不同UPF - S-NSSAI(网络切片标识):不同切片有不同UPF池 - UE位置(TAI Tracking Area):选择就近的UPF - 负荷:UPF当前负载情况 - AF影响:应用功能可以通过NEF/PCF影响UPF选择
在MEC项目中配置UL-CL时,常见问题: - 过滤规则写错:把本该本地分流的流量发到了中心UPF(用户抱怨时延高) - DNS未配套修改:UL-CL把流量分到了本地,但DNS仍解析到远端IP(白分了) - 忘记配置下行合并:上行分了两路,下行回来时UL-CL不知道怎么合并给UE
回到"为什么"这个核心问题。CP-UP分离不是3GPP拍脑袋的决定,而是由5G三大场景的根本需求驱动的:
| 5G场景 | 核心需求 | 为什么需要CP-UP分离 |
|---|---|---|
| eMBB(增强移动宽带) | 带宽极大 | 用户面需要独立扩展,不能被控制面拖慢 |
| URLLC(低时延高可靠) | 时延极低 | UPF必须下沉到边缘,控制面可以留在中心 |
| mMTC(海量物联) | 连接数极大 | 控制面需要处理海量信令,不能被用户面拖累 |
如果控制面和用户面耦合在一起(像4G S/P-GW),就无法同时满足"控制面集中管理"和"用户面就近部署"这对矛盾需求。分离是唯一的解法。
更深一层:分离让控制面软件化、用户面可编程。UPF可以运行在通用服务器(COTS)上,可以用DPDK、eBPF、SmartNIC加速,可以容器化部署——这些在4G时代的"一体机"网关上是做不到的。
Q: CP-UP分离和CU-DU分离是什么关系? A: 两者是不同层面的分离。CU-DU是无线接入网(RAN)内部的分离,把基站的集中单元和分布单元拆开。CP-UP分离是核心网的控制面和用户面分离。一个管无线侧,一个管核心网侧,互不冲突。事实上,5G可以同时使用CU-DU分离和CP-UP分离。
Q: 一个PDU会话最多能有几个UPF? A: 标准允许一个PDU会话关联最多3个UPF:1个UL-CL(或BP)+ 2个PSA(PDU Session Anchor)。在I-SMF(中间SMF)漫游场景下甚至可以更多。但现网最常见的还是1个集中UPF,或UL-CL + 2个PSA的三UPF架构。
Q: UPF切换时(如移动到另一个边缘DC),业务会断吗? A: 取决于SSC模式(Session and Service Continuity)。SSC Mode 1保持UPF锚点不变(不断,但可能绕远路);SSC Mode 2先断旧会话再建新会话(会短暂中断);SSC Mode 3先建新会话再断旧会话(双连接过渡,不中断)。运营商根据业务需求选择。
Q: 4G的CUPS和5G的CP-UP分离有本质区别吗? A: 核心思想相同(都是控制面远程操控用户面),但实现不同。4G CUPS是在已有EPC上"打补丁"拆分S/P-GW;5G是从零设计的原生分离架构,控制面全部用SBI(HTTP/2)服务化接口,用户面用N4/PFCP,支持UL-CL/BP多UPF分流、网络切片等高级特性。
Q: UPF能用开源软件实现吗? A: 可以。Open5GS、free5GC、OMEC等项目都有开源UPF实现。商用产品则有华为、中兴、爱立信、诺基亚、Mavenir等厂商的UPF。开源UPF适合学习和小规模部署,商用UPF在性能(DPDK加速、SmartNIC offload)、可靠性(HA、容灾)方面更成熟。
本文由「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 等场景全覆盖。
