在传统的 5G PDU Session 中,用户面路径是一条单向链:UE → (R)AN → UPF(PSA) → DN。PSA(PDU Session Anchor,PDU 会话锚点)UPF 是唯一与 N6 数据网络接口相连的节点,所有上下行流量都汇聚到这一个集中式锚点。这种"单锚点、长迂回"的拓扑对普通互联网业务无害,但面对 MEC(多接入边缘计算)场景就出了根本性矛盾:
一个典型的矛盾场景——AR 眼镜的低时延渲染业务部署在本地边缘 MEC 应用服务器(AS),但 UE 的 PSA 锚在省中心的核心网 UPF。结果是:上行包从基站穿越城域/骨干网到达省中心 PSA,再从省中心折返回边缘 MEC AS,一来一回徒增 20–40ms 的回程时延,彻底抵消了 MEC 的低时延价值。
要解决这个矛盾,3GPP 没有选择"为 MEC 单独建一张专网"这种粗暴方案,而是在不改变 UE 单一 PDU Session、单一 IP 地址的前提下,在用户面路径中间插入一个"分流节点"。这个节点能识别业务流,把去往本地 MEC 的流量从最近的边缘 PSA 上 N6 出去,把去往中央互联网的流量仍送到集中 PSA 上 N6 出去。这个分流节点就是 Uplink Classifier(UL CL,上行分类器) 或 Branching Point(BP,分支点)。
二者的规范定义在 TS 23.501 Section 5.6.4,信令流程主要落在 TS 23.502 Section 4.3.5 系列,而真正决定"哪些包分流到哪里"的规则,是通过 N4 接口的 PFCP 协议(TS 29.244) 下发到 UPF 的。本文聚焦的就是这条从 SMF 规则决策 → N4 PFCP 下发 → UPF 数据面选择性转发的全链机制。
很多资料把 UL CL 和 BP 混为一谈,但它们在 TS 23.501 中是两个明确区分的功能,触发条件和适用场景不同。理解这个区别是后续分析 N4 规则的前提。
| 维度 | Uplink Classifier (UL CL) | Branching Point (BP) |
|---|---|---|
| 规范章节 | TS 23.501 §5.6.4.2 | TS 23.501 §5.6.4.1 |
| 触发输入 | Traffic Filter(业务过滤器:IP 五元组/Application ID/FQDN) | IPv6 Multi-homing(多个 IPv6 前缀) |
| 决策依据 | 业务流特征(深度匹配) | IP 前缀/地址(基于前缀路由) |
| 适用场景 | MEC 本地分流(按业务分流) | IPv6 多归属(一个会话多前缀,如同时接入多个运营商 DN) |
| 典型部署位置 | I-UPF(中间 UPF) | I-UPF / PSA |
| 上下行处理 | 上下行均参与(早期仅上行,Rel-16 后下行同样支持) | 上下行均分支 |
| N4 规则差异 | 多套 PDR/FAR 按 SDF Filter 区分 | 多套 PDR/FAR 按 UE IP 前缀区分 |
一个关键的设计意图:UL CL 是"按业务分流",BP 是"按地址分支"。在绝大多数 MEC 商用部署中,用的是 UL CL——因为运营商需要按"是不是访问本地 MEC 应用"这个业务特征来分流,而不是按 UE 有几个 IP 地址。下文如无特别说明,均以 UL CL 为分析对象,并在 N4 规则层面指出两者规则结构的共性。
理解 UL CL 机制,先要厘清插入后的用户面拓扑。一个 PDU Session 在插入 UL CL 后,从"单链"变成"树形":
graph TD
UE[UE<br/>单一IP: 10.0.0.5] -->|N3 GTP-U| gNB[(gNB)]
gNB -->|N3| IUPF[UL CL UPF<br/>分流节点<br/>中间UPF]
IUPF -->|N9 本地业务流| LPSA[Local PSA UPF<br/>边缘锚点]
IUPF -->|N9 中央业务流| CPSA[Central PSA UPF<br/>集中锚点]
LPSA -->|N6 本地分流| MEC[MEC AS<br/>边缘应用服务器]
CPSA -->|N6 默认路由| Internet[Internet/中央DN]
style IUPF fill:#fff3cd,stroke:#d39e00,stroke-width:2px
style LPSA fill:#d4edda,stroke:#28a745
style CPSA fill:#cce5ff,stroke:#007bff
节点角色说明:
设计意图很清晰:保持 UE 侧的"单一性"(单一 PDU Session、单一 UE IP、单一 N3 F-TEID),把复杂性全部下沉到网络侧的 UL CL 节点。这样 UE 无需感知分流,UE 协议栈零改动,这是 UL CL 相比 SSC Mode 3(重建会话、换 IP)的核心优势。
UL CL"按什么分流、分流到哪里",全部由 SMF 通过 N4 接口的 PFCP 协议(TS 29.244)下发的规则集决定。这套规则引擎是整个机制的"大脑"。核心规则实体有五种,构成一个有向匹配-执行管线:
flowchart LR
subgraph 入口["入站匹配"]
PDR1[PDR #1<br/>匹配: UE-IP + 本地业务Filter<br/>PDI → Application-ID=EAS]
PDR2[PDR #2<br/>匹配: UE-IP + 通配Filter<br/>PDI → SDF Filter=any]
end
PDR1 -->|关联| FAR1[FAR #1<br/>Apply-Action=FORW<br/>Outer-Header→Local PSA<br/>N9隧道]
PDR2 -->|关联| FAR2[FAR #2<br/>Apply-Action=FORW<br/>Outer-Header→Central PSA<br/>N9隧道]
FAR1 --> QER1[QER<br/>QoS执行<br/>Gate/MBR/QRBI]
FAR2 --> QER2[QER<br/>QoS执行]
QER1 --> URR1[URR<br/>用量上报<br/>本地业务计量]
QER2 --> URR2[URR<br/>用量上报]
style PDR1 fill:#fff3cd
style FAR1 fill:#d4edda
规则实体职责(均定义于 TS 29.244):
UL CL 分流的核心技巧:在 UL CL UPF 上,SMF 会下发至少两套 PDR/FAR。一套高优先级 PDR 精确匹配本地 MEC 业务(如目的 IP = MEC AS 的 IP 段,或 Application ID 标识的特定业务),关联到一个指向 Local PSA 的 FAR(Apply Action=FORW,Outer Header 指向 Local PSA 的 N9 F-TEID);另一套低优先级"兜底"PDR 用通配 filter 匹配所有其他流量,关联到指向 Central PSA 的 FAR。这就是"业务分流"在数据面的实现本质。
下面以网络触发(NEF/AF 经 PCF 策略下发,或 UE 移动触发)的 UL CL 插入为典型场景,画出从策略触发到数据面生效的全链时序。该流程主要涉及 TS 23.502 §4.3.5.3(UE/网络发起的 PDU Session Modification)与 §4.3.5.7(BP/UL CL 与新增 PSA 的同时变更),N4 消息遵循 TS 29.244 §7.x PFCP 流程。
sequenceDiagram
autonumber
participant UE
participant RAN as gNB
participant AMF
participant SMF
participant PCF
participant ULCL as UL CL UPF<br/>(I-UPF)
participant LPSA as Local PSA UPF
participant CPSA as Central PSA UPF
participant MEC as MEC AS
Note over UE,SMF: 初始状态:PDU Session 已锚定 Central PSA,正常上网
AF->>PCF: 1a. 策略触发(经NEF或直接)<br/>Application=本地业务需本地分流
PCF->>SMF: 1b. SM Policy Association Modification<br/>PCC Rule: 流量过滤器→本地路由
Note over SMF: 2. SMF决策:选择Local PSA,决定插入UL CL
SMF->>LPSA: 3. N4 PFCP Session Estab. Req<br/>下发PDR/FAR(N6→MEC)、URR
LPSA-->>SMF: 3a. N4 PFCP Session Estab. Resp<br/>分配Local N9 F-TEID
SMF->>ULCL: 4. N4 PFCP Session Modification Req<br/>新增PDR#1(本地业务→Local PSA TEID)<br/>+PDR#2(兜底→Central PSA TEID)
ULCL-->>SMF: 4a. N4 PFCP Session Modification Resp<br/>确认规则生效
Note over ULCL: 4b. 数据面分支点激活:<br/>两条转发规则就绪
SMF->>CPSA: 5. N4 PFCP Session Mod. Req<br/>更新下行FAR(N9→指向UL CL而非RAN)
CPSA-->>SMF: 5a. N4 PFCP Session Mod. Resp
SMF->>AMF: 6. Nsmf_PDUSession_UpdateSMContext Req<br/>请求更新N3隧道(如需)
AMF->>RAN: 7. N2 PDU Session Resource Modify<br/>(可选,若N3变更)
RAN-->>AMF: 7a. N2 Response
AMF-->>SMF: 7b. Nsmf Response
SMF->>UE: 8. PDU Session Modification Command<br/>(多数情况空, UE无感知)
Note over UE,MEC: 9. 数据面生效:本地业务经UL CL→Local PSA→MEC<br/>互联网业务经UL CL→Central PSA→Internet
UE->>ULCL: 9a. 上行包(本地业务)→命中PDR#1
ULCL->>LPSA: 9b. N9转发
LPSA->>MEC: 9c. N6本地分流到达
逐步解析关键消息与 IE:
消息①(PCF→SMF,策略触发):这是分流的"起搏器"。当 AF(应用功能,常部署在 MEC 平台)通过 NEF 或直接向 PCF 发起流量影响请求,PCF 计算出 PCC Rule,其中携带 Traffic Filter Data(业务过滤器,IP 五元组或 Application ID)和 Routing Requirement(路由要求,如指示本地路由)。SMF 据此知道"哪些业务要分流"。
消息②(SMF 决策):SMF 是规则的"编排者"。它需要做三件事——决定插入 UL CL、选择 Local PSA(基于 DNAI——Data Network Access Identifier,数据网络接入标识,TS 23.501 §5.6.6)、确定 UL CL UPF。DNAI 是连接 5GC 与 MEC 编排的关键标识,标识 UPF 到某个 DN(本地 MEC)的接入点。
消息③(N4 → Local PSA):PFCP Session Establishment Request,下发 Local PSA 的规则。关键 IE:
- Create PDR(IE type 0x2):PDI 中 Source Interface=Core(针对 MEC 下行)/ F-TEID(接收 N9);
- Create FAR(0x3):Apply Action=FORW,Forwarding Parameters 中 Outer Header Creation 描述 N6 非隧道出口,Destination Interface=SGi-LAN(0x2),指向 MEC AS;
- Create URR(0xa):计量本地流量供计费。
- Create FAR Resp 返回 Local PSA 在 N9 侧分配的 F-TEID,供 UL CL 转发时填入外层头。
消息④(N4 → UL CL,核心动作):PFCP Session Modification Request,这是分流的实质。SMF 向 UL CL UPF 下发两套新增 PDR/FAR:
- PDR#1(高优先级,Precedence 小):PDI = {UE IP + SDF Filter(本地业务五元组) 或 Application ID(本地业务)},关联 FAR#1:Apply Action=FORW,Outer Header Creation = {GTP-U, Local PSA 的 N9 IP + 消息③返回的 N9 F-TEID};
- PDR#2(低优先级,Precedence 大,兜底):PDI = {UE IP + 通配 Filter},关联 FAR#2:Apply Action=FORW,Outer Header Creation = {GTP-U, Central PSA 的 N9 F-TEID}。
- UPF 回 PFCP Session Modification Response,规则即时生效。注意:N4 是事务型协议,SMF 收到 Response 后规则才确认下发完成。
消息⑤(N4 → Central PSA):下行方向的"回程修正"。原来 Central PSA 的下行 FAR 直接指向 RAN(N3),插入 UL CL 后,需要把 Central PSA 的下行 Outer Header 改为指向 UL CL 的 N9 F-TEID,否则下行互联网包会绕过 UL CL 直达 RAN,UE 侧没问题,但破坏了"所有流量过 UL CL"的计量一致性。
消息⑥–⑧(更新 N3,可选):若 UL CL 插入伴随 N3 隧道变更(如 UE 移动到新 I-UPF),需要 N2 PDU Session Resource Modify 更新 gNB 侧的 N3 F-TEID;若 UL CL 与原 I-UPF 合设、N3 不变,则跳过。
消息⑧(→UE):多数 UL CL 插入场景对 UE 透明,UE 不需要收到任何 Modification Command,因为 UE 的 IP、PDU Session ID、N3 F-TEID 都没变。这正是 UL CL 设计的精髓——网络侧拓扑变化对 UE 不可见。
下表汇总 N4 规则中的核心 IE 及其在 UL CL 场景的取值含义(字段编号与定义见 TS 29.244 §7.5):
| IE 名称 | 编号 | 关键字段/取值 | UL CL 场景含义 |
|---|---|---|---|
| PDI | 0x1 | Source Interface / F-TEID / UE IP / SDF Filter / Application ID | 决定"匹配谁"。本地业务用 Application ID 或精确 SDF Filter |
| Create PDR | 0x2 | Precedence / PDI / Outer Header Removal | Precedence 越小优先级越高,本地 PDR 必须高于兜底 PDR |
| Apply Action | 0x5 | FORW / DROP / BUFF / NOCP / DUPL | 分流用 FORW;NOCP 用于下行通知触发场景 |
| Create FAR | 0x3 | Apply Action / Forwarding Parameters | 决定"送到哪",区分去 Local PSA 还是 Central PSA |
| Forwarding Parameters | 0x4 | Outer Header Creation / Destination Interface | N9 隧道用 GTP-U 头;N6 用非隧道,Destination Interface=SGi-LAN |
| Outer Header Creation | 0x84 | TEID / IP / GTP-U vs 非 GTP | UL CL→Local PSA 的 N9 F-TEID 是分流的核心指针 |
| Create QER | 0xa | Gate Status / MBR / QFI | 本地业务与中央业务可差异化 QoS |
| Create URR | 0xc | Measurement Method / Reporting Triggers | 分别计量本地/中央流量,支撑差异化计费 |
| F-TEID | 0x21 | TEID + IP | N3/N9 隧道端点标识,分流路径的"路牌" |
| UE IP Address | 0x93 | IPv4/IPv6 | PDR 匹配条件,锁定本会话 UE |
从 UPF 数据面看,插入 UL CL 后,每一个上行包都要经过一条固定的"匹配-转发"决策管线。下图描述这一状态机逻辑:
stateDiagram-v2
[*] --> 收到上行包: N3方向(gNB→UL CL)
收到上行包 --> 剥外层头: 移除N3 GTP-U
剥外层头 --> PDR匹配: 按Precedence从高到低
PDR匹配 --> 命中本地PDR: 目的IP/MAC匹配本地业务过滤器?
PDR匹配 --> 命中兜底PDR: 仅匹配UE_IP(其余通配)
命中本地PDR --> 执行FAR#1: Apply=FORW
命中兜底PDR --> 执行FAR#2: Apply=FORW
执行FAR#1 --> 加N9外层头: 目标=Local PSA TEID
执行FAR#2 --> 加N9外层头: 目标=Central PSA TEID
加N9外层头 --> 发往Local PSA: N9隧道
加N9外层头 --> 发往Central PSA: N9隧道
发往Local PSA --> [*]: 经N6到达MEC AS
发往Central PSA --> [*]: 经N6到达Internet
下行回程逻辑对称:Local PSA / Central PSA 收到 DN 侧下行包后,各自按自己的 FAR(Outer Header 指向 UL CL 的 N9 F-TEID)发往 UL CL;UL CL 收到后剥 N9 头,命中"Core→Access"的下行 PDR,重新封装 N3 GTP-U(指向 gNB 的 DL F-TEID)发往 UE。这样 UE 看到的仍是一条连贯的 N3 隧道,完全无感知分流。
实战排错中,UL CL 分流问题常常表现为"业务没走到本地 MEC"或"流量串绕"。抓包识别要点:
pfcp,查找 PFCP Session Modification Request,展开 Create PDR 与 Create FAR,确认存在两套规则、Precedence 顺序正确、Outer Header Creation 的 TEID 指向正确的 PSA。gtp && udp.port==2152,对比本地业务包的目的 IP(外层 IP)应为 Local PSA 的 N9 IP,而互联网包应为 Central PSA 的 N9 IP。若本地业务包的外层目的 IP 仍是 Central PSA,说明 UL CL 的 PDR#1 未命中或 FAR 指向错误。常见故障点: - PDR Precedence 配置错误:兜底 PDR 优先级高于本地 PDR,导致所有流量都走中央,本地 MEC 永远收不到业务——这是最高频故障,表现为 Local PSA URR 计量为零。 - SDF Filter 与实际业务不匹配:AF 下发的过滤器(如端口号)与 UE 实际业务端口不符,PDR#1 永不命中。需核对 PCF PCC Rule 的 Traffic Filter Data。 - DNAI/UPF 选择错误:SMF 选错了 Local PSA(跨地域),分流反而增加时延,违背 MEC 初衷。 - Outer Header TEID 不一致:FAR#1 的 TEID 与 Local PSA 实际分配的 N9 F-TEID 不符,导致 GTP-U 包被丢弃,表现为业务不通。
| 方案 | 是否换 IP | UE 是否感知 | 切换时延 | 规则位置 | 典型场景 |
|---|---|---|---|---|---|
| UL CL/BP(本文) | 否 | 否 | 极低 | N4 PDR/FAR(数据面) | MEC 按业务本地分流 |
| SSC Mode 3 锚点重定位 | 是 | 是(重建会话) | 较高 | 控制面重建 PDU Session | UE 移动跨大区换锚点 |
| LADN | 否 | 否(仅特定区域可用) | 无 | SMF 位置校验 + 普通 PSA | 区域性专网数据网络 |
| IPv6 Multi-homing BP | 多前缀 | 是(多 IPv6 地址) | 中 | N4 按前缀分支 | 多 DN 并发接入 |
| 本地 N6 breakout(无 UL CL) | 否 | 否 | 低 | 单 PSA 多 N6 | 简单边缘出口 |
UL CL 的独特价值在于"业务粒度分流 + UE 完全透明"的双重优势,代价是 UL CL UPF 的规则复杂度和算力开销。
Q1: UL CL UPF 和 Local PSA UPF 必须是两个不同的 UPF 吗? A: 不必须。逻辑上是两个角色(分流节点 + 边缘锚点),但商用中合设是最常见形态——同一物理 UPF 同时承担 UL CL 和 Local PSA,省去 N9 隧道跳数,时延最低。分离部署多见于演示/学习环境。
Q2: UL CL 和 Branching Point 在 N4 规则上有什么实质区别? A: 规则结构几乎相同(都是多套 PDR/FAR),区别在匹配条件:UL CL 的 PDR 用 SDF Filter / Application ID(业务特征)匹配;BP 的 PDR 用 UE IP 的不同前缀(IPv6 Multi-homing 的多前缀)匹配。简单记:UL CL 按"业务",BP 按"地址"。
Q3: UE 会感知到 UL CL 的插入或删除吗? A: 典型情况下完全无感知。UE 的 IP、PDU Session ID、N3 F-TEID 都不变,无需收发任何 Modification Command。只有在 UL CL 插入伴随 N3 隧道变更(如跨 I-UPF 移动)时,UE 才会收到 N2 层的资源修改。
Q4: 为什么本地业务的 PDR Precedence 必须比兜底 PDR 高? A: PDR 按 Precedence 从小到大(高→低)匹配,命中即停。若兜底 PDR(通配)优先级更高,所有包会先命中它全部走中央 PSA,本地 PDR 永不执行。所以精确匹配的本地 PDR 必须设更小的 Precedence 值。
Q5: UL CL 与已覆盖的 SSC Mode 3 锚点重定位冲突吗? A: 不冲突,是互补的两个维度。SSC Mode 3 是控制面的"重建会话换锚点换 IP"机制;UL CL 是数据面的"在现有会话中间插入分流节点不换 IP"机制。MEC 低时延分流优先用 UL CL(无感、低时延),UE 大范围移动跨锚点时才用 SSC Mode 3。
本文由「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 等场景全覆盖。
