5G 核心网采用 PDU 会话锚点(PSA, PDU Session Anchor)模型:一条 PDU 会话的 UPF 锚点在建立时确定,N6 接口从锚点接入数据网络(DN)。这个模型简单、状态收敛,但带来一个天然矛盾——锚点选得早,业务在后面。
典型场景:用户在北京注册时建立 PDU 会话,锚点选在骨干核心机房;两小时后用户走进一个园区,园区边缘机房部署了 MEC 应用(如本地视频缓存、工业视觉质检、云游戏渲染服务器)。此时用户面路径是“基站 → 边缘 UPF(纯转发)→ 骨干锚点 → 回到园区边缘应用服务器”,业务流量在边缘机房进出了两次却绕行数百公里。时延、传输成本、数据本地化合规三项指标全部恶化。
3GPP 在 TS 23.501 clause 5.6.4.3 中给出的答案就是 UL CL(Uplink Classifier,上行分类器):SMF 在既有的 PDU 会话中动态插入一个具备分类转发能力的 UPF,把匹配特定过滤条件的上行流量导向一个新插入的本地 PSA(PSA2),其余流量仍走原锚点(PSA1);下行流量无论来自哪个 PSA,都经 UL CL 汇聚后送回 (R)AN。整个过程对 UE 完全透明——UE 不知道自己被分流了,全程没有任何 NAS 信令。
对应的信令流程定义在 TS 23.502 clause 4.3.5(PDU Session Anchor 插入/移除/变更系列流程),其中 clause 4.3.5.2 为"Insertion of an Uplink Classifier in a PDU session",clause 4.3.5.3 为对应的移除流程。本文以插入流程为主线逐跳拆解。
TS 23.501 clause 5.6.4 定义了一整套“控制用户面业务路由”的机制,UL CL 只是其中之一。理解它们之间的分工是读懂 5G 边缘分流的第一步:
| 机制 | 规范依据 | 适用场景 | UE 感知 | 核心原理 |
|---|---|---|---|---|
| UL CL 上行分类器 | TS 23.501 5.6.4.3 | IPv4/IPv6/双栈均可,按流分流 | 否(无NAS) | UPF 按 PDR 过滤器分类上行流,默认路径仍到 PSA1 |
| 分支点 BP(IPv6 多归属) | TS 23.501 5.6.4.2 / TS 23.502 4.3.5.1 | 仅 IPv6,按前缀分流 | 是(收到新 IPv6 前缀的路由通告) | UE 获得多个 IPv6 前缀,BP 按源前缀分流 |
| PSA 变更/重定位 | TS 23.501 5.6.4.1 / TS 23.502 4.3.5 | UE 离开原锚点服务区 | 否 | 整条会话的锚点换 UPF,中断窗口需数据转发补偿 |
| LADN 本地数据网络 | TS 23.501 5.6.5 | 业务只在特定区域可用 | 是(DNN 可用性信息) | 会话建立时就锚定本地 DN,离开区域则去激活 |
| AF 对路由的影响 | TS 23.501 5.6.7 | 上述机制的统一触发入口 | 否 | AF 经 NEF/PCF 注入 DNAI 偏好驱动 SMF 决策 |
关键设计取舍:BP 需要 UE 参与(多前缀、IPv6 多归属语义),而 UL CL 完全不需要。这就是为什么面向 MEC 的现网部署(尤其是存量非 IPv6 终端)几乎清一色选择 UL CL——代价是 UL CL 必须为上下行都保留中转路径,多一跳转发。
按 TS 23.501 5.6.4.3 的定位,UL CL 只做分类转发,不承担策略执行、计费采集、合法侦听等锚点类职责——计费仍在 PSA 上完成。这是一个容易被忽略的架构原则:分流点与业务锚点职责分离,避免中间节点成为有状态瓶颈。
UL CL 插入不是 SMF 随心所欲的行为,规范定义了一条完整的策略传导链(TS 23.501 clause 5.6.7,AF influence on traffic routing):
Nnef_TrafficInfluence_Create/Update(经 NEF,非可信 AF 需授权)向网络订阅/请求,携带:DNAI 列表、流量过滤器或应用标识、目标 UE(或全局)、以及UP 路径变更事件订阅(回调地址)。Npcf_SMPolicyControl_Update 下发 PCC 规则,其中包含“业务导流控制信息”(Traffic Steering Control Info:目标 DNAI、可选的 UPF 标识提示)。下面是完整时序。请特别注意:第 1–4 步是策略面,第 5–11 步是 N4/N2 控制面编排,UE 自始至终没有出现任何信令。
sequenceDiagram
autonumber
participant AF as AF/MEC平台
participant PCF as PCF
participant SMF as SMF
participant P1 as UPF(PSA1原锚点)
participant UC as UPF(ULCL)
participant P2 as UPF(PSA2本地)
participant AMF as AMF
participant RAN as (R)AN
Note over AF,RAN: 前提:PDU会话已建立,N3终结于PSA1,UE无感知
AF->>PCF: Nnef_TrafficInfluence(经NEF)<br/>DNAI列表+流过滤器+事件订阅
PCF->>SMF: Npcf_SMPolicyControl_Update<br/>PCC规则含导流控制信息
SMF->>SMF: 决策插入UL CL<br/>选网约束:S-NSSAI+DNN+DNAI+UE位置
SMF->>UC: N4 PFCP会话建立请求<br/>PDR/FAR/QER(含AN隧道信息)
UC-->>SMF: N4会话建立响应<br/>分配N3/N9 F-TEID
SMF->>P2: N4 PFCP会话建立请求<br/>PSA2的PDR/FAR
P2-->>SMF: 响应(分配N9 F-TEID)
SMF->>P1: N4 PFCP会话修改请求<br/>下行FAR改指向UL CL(N9)
P1-->>SMF: 响应
SMF->>AMF: Nsmf_PDUSession_UpdateSMContext响应<br/>N2 SM信息:新N3=ULCL地址/TEID
AMF->>RAN: NGAP PDU会话资源修改请求<br/>UL NG-U UP TNL信息
RAN->>AMF: NGAP PDU会话资源修改响应
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext请求
SMF->>UC: N4 PFCP会话修改请求<br/>刷新下行AN隧道/规则生效
UC-->>SMF: 响应
SMF-->>AF: 经NEF通知UP路径变更事件<br/>(新DNAI/UPF标识)
| 步骤 | 接口/协议 | 消息 | 关键 Information Element 及作用 |
|---|---|---|---|
| 1 | NEF-API | Nnef_TrafficInfluence_Create | dnaList(目标边缘位置)、trafficFilters、notificationUri(UP路径变更回调)、afAppId |
| 2 | Npcf-API | Npcf_SMPolicyControl_Update | PCC Rule 中 trafficSteeringContId、dnaI、upPathChgEvent(订阅项:提前通知/最终通知、UL/DL方向) |
| 5 | N4/PFCP (UDP 8805) | PFCP Session Establishment Request → UL CL | Create PDR×4(上行默认/上行分流/下行自PSA1/下行自PSA2)、Create FAR×4、可选 QER/URR;Source Interface=Access、Precedence、SDF Filter、Outer Header Construction |
| 7 | N4/PFCP | PFCP Session Establishment Request → PSA2 | Source Interface=Core(N6侧)、N9 F-TEID、Network Instance(DN实例);PSA2 只见“N9 进、N6 出”,不知道自己服务的是被分流的会话 |
| 9 | N4/PFCP | PFCP Session Modification Request → PSA1 | 修改下行 FAR:目的从 (R)AN 的 N3 F-TEID 改为 UL CL 的 N9 F-TEID(Outer Header Construction=GTP-U/N9)——这是路径倒换的原子操作 |
| 11 | Nsmf-API | Nsmf_PDUSession_UpdateSMContext Response | N2 SM Information 容器:携带新的 UL NG-U UP TNL 信息(UL CL 的 N3 地址+TEID) |
| 12 | NGAP (SCTP 38412) | PDU Session Resource Modify Request | UL NG-U UP TNL Information(新N3端点)、QoS Flow Modify List(可选,QoS随行调整时) |
| 16 | N4/PFCP | PFCP Session Modification Request → UL CL | 按需刷新下行 PDR 的 AN F-TEID 信息,确认规则最终生效 |
一个常被忽略的细节:(R)AN 的下行隧道信息(DL TNL)在本次流程中没有变化——RAN 只是被告知“以后上行发给 UL CL 而不是 PSA1”,它分配给 RAN→核心网方向的 GTP-U 端点保持不变。因此 UL CL 的下行 PDR 直接复用 SMF 会话上下文中已保存的 AN 隧道信息。这也解释了为什么不同厂商在“N4 规则何时生效”上存在编排差异(见第八节):有的实现先给 UL CL 预配好下行规则再触发 N2,有的在 N2 完成后再补配(流程第 16 步)。
UL CL 的全部行为由 N4 上下文中的 PDR(包检测规则)+ FAR(转发动作规则)定义,遵循 TS 29.244 的 PFCP 协议。其精髓在于 Precedence 排序 + 默认规则兜底:
flowchart TD
subgraph N4 ["N4 PFCP会话建立请求(ULCL)的IE构成 - TS 29.244"]
direction TB
PDR1["PDR#1 上行默认<br/>Precedence=较大值(低优先)<br/>Source Interface=Access<br/>匹配:任意"]
PDR2["PDR#2 上行分流<br/>Precedence=较小值(高优先)<br/>SDF过滤器(3/5元组)<br/>或目的IP/前缀、QFI"]
PDR3["PDR#3 下行自PSA1<br/>Source Interface=Core<br/>按N9 F-TEID匹配"]
PDR4["PDR#4 下行自PSA2<br/>Source Interface=Core<br/>按N9 F-TEID匹配"]
FAR1["FAR#1 转发PSA1<br/>Outer Header Construction<br/>GTP-U(N9)+QFI"]
FAR2["FAR#2 转发PSA2"]
FAR3["FAR#3 转发RAN<br/>AN F-TEID(N3)"]
FAR4["FAR#4 转发RAN"]
PDR1 --> FAR1
PDR2 --> FAR2
PDR3 --> FAR3
PDR4 --> FAR4
end
PKT["上行IP包"] --> PDR2
PDR2 -- "不匹配则回落" --> PDR1
按 TS 23.501 5.6.4.3,UL CL 的上行分类依据包括:目的 IP 地址/前缀、SDF 过滤器(3 元组或更精细,如完整 IP 五元组)、QFI。不匹配任何分流规则的流量一律转发 PSA1,保证业务连续性兜底。
QoS 的处理方式同样体现“薄中间节点”哲学:UL CL 不做 QoS 执行(不决定 DRB 映射、不做门控),但需要在 N9 转发时透传/复制 QFI 标记(通过 Outer Header Construction IE 的 QFI 标志位),使得 PSA2 回程的下行流量最终经 UL CL 送到 RAN 时仍携带正确 QFI,由 RAN 完成 QoS Flow 到 DRB 的映射。
stateDiagram-v2
[*] --> 单锚点: PDU会话建立(PSA1)
单锚点 --> ULCL已插入: SMF插入ULCL+PSA2
ULCL已插入 --> ULCL已插入: UE移动触发ULCL重定位<br/>(锚点不变)
ULCL已插入 --> 单锚点: ULCL移除
ULCL已插入 --> 锚点变更: 移除ULCL并切换锚点
锚点变更 --> [*]: 会话释放
UL CL 插入不是终态。当 UE 继续移动、走出本地 PSA/目标 DNAI 的服务范围时,SMF 需要回收路径。规范定义了两类操作:
移除(TS 23.502 4.3.5.3):插入流程的镜像——SMF 先通过 N4 把 PSA1 的下行 FAR 改回直连 (R)AN 的 N3 隧道,再触发 N2(PDU Session Resource Modify)把上行 N3 端点改回 PSA1,最后 N4 释放 UL CL(及可能的 PSA2)上下文。触发条件包括:UE 离开本地服务区、运营商配置的定时器到期、SMF 本地策略(如订阅变更)。
重定位(与 PSA 变更联动,TS 23.501 5.6.4.1/5.6.4.4):如果 N3 本就终结在 UL CL 上,UE 切换到新 RAN 且 SMF 决定更换 UL CL 时,流程类似“锚点变更”:新 UL CL 建立 → 数据可经旧 UL CL 到新 UL CL 的 N9 路径转发以压缩丢包 → N2 切换 N3 端点 → 旧 UL CL 释放。当 UE 移动到锚点覆盖不可达时,SMF 也可能改用插入 I-UPF(中间转发 UPF)的方案保持锚点不动,I-UPF 与 UL CL 的区别见 FAQ。
Outer Header Construction 指向两个不同网元的 N9 F-TEID,是 UL CL 的典型指纹。Wireshark 过滤:pfcp 后按 PDR ID 分组观察。UL NG-U UP TNL Information 的 IP 与初始建立的锚点不同——这基本就是 UL CL 插入(或锚点变更)。区分二者看 N4:有新 UPF 建立且旧锚点仍保留为 PSA,是 UL CL;旧锚点释放,是 PSA 变更。Npcf_SMPolicyControl_Update 往下游逐段核对。Q1: UL CL 和分支点 BP 的本质区别是什么? A: 分流依据与 UE 参与度不同。BP 依赖 IPv6 多归属:UE 获得两个前缀,按源前缀分流,UE 必须感知并配合(TS 23.501 5.6.4.2);UL CL 按过滤器(目的 IP/SDF/QFI)分类,UE 完全无感知,且 IPv4/IPv6/双栈都适用。现网 MEC 分流以 UL CL 为主。
Q2: UL CL 插入后,RAN 知道发生了什么吗? A: RAN 只知道“N3 上行端点换成了新 IP/TEID”(收到 NGAP PDU Session Resource Modify Request)。它不知道该 UPF 是 UL CL、也不知道存在第二个锚点。这保证了该机制对无线侧零改造。
Q3: UL CL 和 I-UPF 是一回事吗? A: 不是。I-UPF 是移动性管理中的中间转发节点,目的是让远端锚点在 UE 移动后仍可达,不区分业务流;UL CL 是业务路由优化节点,按流分流到两个锚点。一个 UPF 物理上可以同时承担两种逻辑角色。
Q4: 为什么 UL CL 上不做计费和策略执行? A: TS 23.501 5.6.4.3 将其定位为“薄分类器”:同一会话流量会因 UE 移动在不同 UL CL 间迁移,若在中间节点做有状态处理(计费、LI、深度策略),每次重定位都要迁移状态。锚点集中承担这些职责,UL CL 只做无状态转发,是可用性与合规性的平衡设计。
Q5: UL CL 与网络切片是什么关系? A: UL CL/PSA2 的选择受 S-NSSAI 约束——SMF 只能从该会话所属切片的 UPF 资源池中选择分流点,分流路径全程不跨切片,保证切片隔离性不被边缘分流破坏。
本文由「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 等场景全覆盖。
