在5G MEC(多接入边缘计算)部署中,用户面流量需要在靠近UE的边缘节点进行本地卸载,以降低端到端时延。3GPP在TS 23.501 V18.x中定义了两种核心的用户面分流功能:UL CL(Uplink Classifier,上行分类器)和BP(Branching Point,分支点)。二者虽然都服务于本地分流目标,但其工作机制、适用场景和信令流程存在本质差异。
本文基于TS 23.501 Section 5.8.2、TS 23.502 Section 4.3.2.2/4.23.5/4.23.9、TS 29.244 N4接口规范,对UL CL与BP的插入、分流、维护、删除全链路信令进行逐层拆解。
UL CL是一种UPF功能,位于PDU Session数据路径中间节点(I-UPF),根据SMF下发的流量过滤规则(SDF Filter)对上行报文进行分类,将匹配特定目的IP/端口/协议的流量转发至本地PSA(PDU Session Anchor),其余流量继续发往中心PSA。
关键特征(TS 23.501 Section 5.8.2.2): - 仅对上行流量执行过滤(下行方向为合并转发) - UE持有单一IP地址,不感知UL CL的存在 - 支持IPv4和IPv6类型的PDU Session - 分流决策粒度为SDF(Service Data Flow)级别
BP是另一种UPF功能,专用于IPv6 Multi-homing场景。它允许一个PDU Session关联多个IPv6前缀,每个前缀对应不同的PSA。BP根据上行报文的源IPv6前缀进行路由决策。
关键特征(TS 23.501 Section 5.8.2.3): - 双向过滤:上行基于源前缀,下行基于目的前缀 - UE持有多个IPv6地址/前缀(每PSA一个) - 仅支持IPv6 PDU Session - UE需要感知多归属,通过Router Advertisement获得多个前缀
UE ──► (R)AN ──┬─ I-UPF(UL CL) ──┬─► PSA1 ──► 中心DN/Internet
│ │
│ └─► PSA2 ──► 本地DN/MEC
│
└─ I-UPF(BP) ────┬─► PSA1 (IPv6 Prefix-1) ──► 中心DN
│
└─► PSA2 (IPv6 Prefix-2) ──► 本地MEC
| 对比维度 | UL CL | BP |
|---|---|---|
| TS编号 | 23.501 §5.8.2.2 | 23.501 §5.8.2.3 |
| 过滤方向 | 仅上行(DL为合并) | 双向 |
| 过滤依据 | SDF Filter(目的IP/端口) | IPv6源/目的前缀 |
| UE IP地址 | 单一地址 | 多个IPv6前缀 |
| UE感知 | 不感知 | 感知(多前缀) |
| PDU类型 | IPv4/IPv6/以太网 | 仅IPv6 |
| 典型场景 | 公众MEC(商场、场馆) | 企业园区专网 |
| 复杂度 | 低(UE不参与) | 高(需多前缀管理) |
UL CL的插入由SMF决策触发(TS 23.502 Section 4.3.2.2),可能的触发源包括:
以下为UE移动触发的UL CL插入完整信令流(TS 23.502 Section 4.3.2.2 + 4.23.5):
sequenceDiagram
participant UE
participant RAN
participant AMF
participant SMF
participant PCF
participant ULCL_UPF as I-UPF(UL CL)
participant PSA1 as PSA1(中心)
participant PSA2 as PSA2(本地/MEC)
Note over UE,PSA2: Step 0: PDU Session已建立,UE→PSA1直连
UE->>RAN: Mobility Registration Update
RAN->>AMF: N2 Mobility Registration(含UserLocationInfo)
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext<br/>(UserLocationInfo, AccessType)
Note over SMF: SMF检测到UE移入DNAI-2区域<br/>决定插入UL CL和PSA2
SMF->>PCF: Npcf_SMPolicyControl_Update<br/>(UserLocation, DNAI change)
PCF-->>SMF: Policy Decision(含Traffic Steering Info)
Note over SMF: SMF选择I-UPF(支持UL CL)和PSA2
SMF->>PSA2: N4 Session Establishment Request<br/>(PDR: UE IP→PSA2, FAR→N6 Local DN)
PSA2-->>SMF: N4 Session Establishment Response<br/>(F-TEID for N9 DL)
SMF->>ULCL_UPF: N4 Session Establishment Request<br/>(PDR1: SDF→Local, FAR→PSA2<br/>PDR2: Default, FAR→PSA1)
ULCL_UPF-->>SMF: N4 Session Establishment Response<br/>(F-TEID for N3/N9)
SMF->>PSA1: N4 Session Modification Request<br/>(更新FAR: DL→ULCL N9 tunnel)
PSA1-->>SMF: N4 Session Modification Response
SMF->>AMF: Nsmf_PDUSession_UpdateSMContext Response<br/>(N2 SM Info: UL CL N3 F-TEID)
AMF->>RAN: N2 PDU Session Resource Setup Request<br/>(UL CL N3 F-TEID)
RAN-->>AMF: N2 PDU Session Resource Setup Response<br/>(RAN N3 F-TEID)
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext<br/>(RAN N3 F-TEID)
SMF->>ULCL_UPF: N4 Session Modification Request<br/>(更新Access侧F-TEID为RAN)
ULCL_UPF-->>SMF: N4 Session Modification Response
Note over UE,PSA2: 数据路径建立:<br/>UE→RAN→UL CL→PSA1(中心)<br/>UE→RAN→UL CL→PSA2(本地MEC)
SMF向I-UPF(UL CL)下发两组PDR+FAR规则(TS 29.244 Section 7.5.2):
规则组1:本地流量转发
| IE名称 | 取值 | 说明 |
|---|---|---|
| PDR ID | PDR-1 | 本地流量检测规则 |
| Precedence | 100 | 高优先级 |
| PDI.Source Interface | ACCESS | 来自UE方向 |
| PDI.UE IP Address | 10.1.1.2 | UE的IP地址 |
| PDI.SDF Filter | permit out ip from any to 192.168.100.0/24 | 目的为本地DN的流量 |
| FAR ID | FAR-LOCAL | 关联本地转发动作 |
| FAR.Apply Action | FORW | 转发 |
| FAR.Destination Interface | CORE | 核心网侧 |
| FAR.Outer Header Creation | GTP-U/UDP/IPv4, TEID=0xAAA, IP=PSA2 | N9隧道至PSA2 |
规则组2:中心流量转发(Default)
| IE名称 | 取值 | 说明 |
|---|---|---|
| PDR ID | PDR-2 | 默认流量规则 |
| Precedence | 200 | 低优先级(兜底) |
| PDI.Source Interface | ACCESS | 来自UE方向 |
| PDI.UE IP Address | 10.1.1.2 | UE的IP地址 |
| FAR ID | FAR-CENTRAL | 关联中心转发动作 |
| FAR.Apply Action | FORW | 转发 |
| FAR.Destination Interface | CORE | 核心网侧 |
| FAR.Outer Header Creation | GTP-U/UDP/IPv4, TEID=0xBBB, IP=PSA1 | N9隧道至PSA1 |
stateDiagram-v2
[*] --> 收到上行报文
收到上行报文 --> 检查PDR1: 目的IP匹配本地DN?
检查PDR1: 目的IP匹配本地DN? --> 匹配: FAR-LOCAL转发至PSA2
检查PDR1: 目的IP匹配本地DN? --> 不匹配: 检查PDR2
检查PDR2 --> FAR-CENTRAL转发至PSA1
匹配: FAR-LOCAL转发至PSA2 --> [*]
FAR-CENTRAL转发至PSA1 --> [*]
下行方向,PSA1和PSA2各自将报文通过N9隧道发往UL CL UPF。UL CL UPF根据下行PDR将两个PSA的流量合并后通过N3隧道统一转发给(R)AN→UE。这一合并操作不需要额外的过滤逻辑,因为两个PSA的下行报文都是同一UE IP为目的地址。
BP的插入比UL CL更复杂,因为它涉及IPv6多前缀管理。TS 23.501 Section 5.6.4.3定义了Multi-homing PDU Session的建立流程。
sequenceDiagram
participant UE
participant RAN
participant AMF
participant SMF
participant BP_UPF as I-UPF(BP)
participant PSA1 as PSA1(Prefix-1)
participant PSA2 as PSA2(Prefix-2)
Note over UE,PSA2: PDU Session建立请求(IPv6 Multi-homing)
UE->>AMF: NAS PDU Session Establishment Request<br/>(DNN, S-NSSAI, PDU Type=IPv6)
AMF->>SMF: Nsmf_PDUSession_CreateSMContext
SMF->>PSA1: N4 Session Est.(PDR: Prefix-1, FAR: N6 DN1)
PSA1-->>SMF: N4 Response(F-TEID, IPv6 Prefix-1)
Note over SMF: SMF决策需要本地分流<br/>选择BP UPF和PSA2
SMF->>PSA2: N4 Session Est.(PDR: Prefix-2, FAR: N6 DN2/MEC)
PSA2-->>SMF: N4 Response(F-TEID, IPv6 Prefix-2)
SMF->>BP_UPF: N4 Session Est.<br/>(PDR1: Src Prefix-1→PSA1<br/>PDR2: Src Prefix-2→PSA2)
BP_UPF-->>SMF: N4 Response(F-TEID)
SMF->>AMF: CreateSMContext Response<br/>(N2 SM Info)
AMF->>RAN: N2 PDU Session Resource Setup
RAN-->>AMF: N2 Response
AMF->>SMF: UpdateSMContext(RAN F-TEID)
SMF-->>UE: NAS PDU Session Establishment Accept<br/>(Interface ID→Prefix-1)
Note over UE: UE通过Router Solicitation<br/>获得Prefix-2
UE->>PSA1: Router Solicitation(Prefix-1链路)
PSA1-->>UE: Router Advertisement(Prefix-1)
Note over SMF: SMF触发PSA2侧前缀分配
SMF->>BP_UPF: N4 Modification(下发Prefix-2 RA触发)
BP_UPF->>UE: Router Advertisement(Prefix-2)
Note over UE,PSA2: 数据路径:<br/>源Prefix-1→BP→PSA1→DN1<br/>源Prefix-2→BP→PSA2→MEC
BP UPF的核心过滤逻辑基于IPv6源地址前缀(上行)和IPv6目的地址前缀(下行):
| 方向 | PDR匹配条件 | FAR目标 |
|---|---|---|
| UL | Source Interface=ACCESS, Src IPv6 Prefix=2001:db8:1::/64 | → PSA1 N9 tunnel |
| UL | Source Interface=ACCESS, Src IPv6 Prefix=2001:db8:2::/64 | → PSA2 N9 tunnel |
| DL | Source Interface=CORE(PSA1), Dst IPv6 Prefix=2001:db8:1::/64 | → Access N3 tunnel |
| DL | Source Interface=CORE(PSA2), Dst IPv6 Prefix=2001:db8:2::/64 | → Access N3 tunnel |
这种双向前缀匹配确保了:UE使用Prefix-1发出的报文经PSA1到中心DN,使用Prefix-2发出的报文经PSA2到本地MEC,且下行报文能正确返回。
与UL CL不同,BP模式下UE必须明确知道多个前缀的存在,并决定应用层流量使用哪个前缀:
bind()系统调用选择源地址当UE移出Home-SMF服务的区域时,需要引入I-SMF(Intermediate SMF)来管理拜访地的用户面。TS 23.502 Section 4.23.9定义了I-SMF控制下的UL CL/BP插入流程。
flowchart TB
A[UE移入新TA区域] --> B{AMF检测超出<br/>H-SMF服务范围?}
B -->|是| C[选择I-SMF]
B -->|否| D[H-SMF直接管理<br/>UL CL/BP插入]
C --> E[I-SMF建立<br/>N4会话至I-UPF/UL CL]
E --> F[I-SMF通过<br/>N16a接口通知H-SMF]
F --> G[H-SMF更新PSA<br/>N4会话FAR]
G --> H[数据路径:<br/>UE→I-UPF/UL CL→PSA1/PSA2]
I-SMF场景的关键差异:
| 方面 | H-SMF直接管理 | I-SMF场景 |
|---|---|---|
| UL CL/BP选择 | H-SMF直接选择 | I-SMF选择I-UPF |
| N4会话管理 | H-SMF直接与UL CL通信 | I-SMF与I-UPF建立N4 |
| PSA管理 | H-SMF管理 | H-SMF仍管理PSA |
| 接口 | 无额外接口 | N16a(I-SMF↔H-SMF) |
| DNAI决策 | H-SMF本地策略 | I-SMF上报DNAI给H-SMF |
以TS 29.244 Section 7.5.2.2为基准,SMF向UL CL UPF发送的PFCP Session Establishment Request包含以下关键IE结构:
PFCP Session Establishment Request
├── Node ID (SMF标识)
├── F-SEID (SMF侧PFCP会话端点)
├── Create PDR (规则组1: 本地流量)
│ ├── PDR ID = 1
│ ├── Precedence = 100
│ ├── PDI (Packet Detection Information)
│ │ ├── Source Interface = ACCESS (0)
│ │ ├── F-TEID (UL CL N3/N9接收TEID)
│ │ ├── UE IP Address = 10.1.1.2
│ │ ├── SDF Filter
│ │ │ ├── Flow Description: "permit out ip from any to 192.168.100.0/24"
│ │ │ └── ToS Traffic Class: (可选)
│ │ └── Application ID: (可选,用于App检测)
│ ├── Outer Header Removal = GTP-U/UDP/IPv4
│ ├── FAR ID = 1
│ ├── QER ID(s) = (关联QoS规则)
│ └── URR ID(s) = (关联计费规则)
├── Create FAR (FAR-1: 本地转发)
│ ├── FAR ID = 1
│ ├── Apply Action = FORW (Forward)
│ └── Forwarding Parameters
│ ├── Destination Interface = CORE (1)
│ ├── Network Instance = "local.mec.dnn"
│ ├── Outer Header Creation
│ │ ├── Outer Header Type = GTP-U/UDP/IPv4
│ │ ├── TEID = 0xAAA (PSA2 N9 DL TEID)
│ │ └── IPv4 Address = PSA2_IP
│ └── Transportation Level Marking = DSCP value
├── Create PDR (规则组2: 中心流量)
│ ├── PDR ID = 2
│ ├── Precedence = 200 (低于规则组1)
│ ├── PDI
│ │ ├── Source Interface = ACCESS
│ │ ├── F-TEID (同上)
│ │ └── UE IP Address = 10.1.1.2
│ └── FAR ID = 2
├── Create FAR (FAR-2: 中心转发)
│ ├── FAR ID = 2
│ ├── Apply Action = FORW
│ └── Forwarding Parameters
│ ├── Destination Interface = CORE
│ ├── Outer Header Creation
│ │ ├── TEID = 0xBBB (PSA1 N9 DL TEID)
│ │ └── IPv4 Address = PSA1_IP
│ └── ...
└── Create QER / URR (可选)
BP模式下的PDI(Packet Detection Information)与UL CL有本质不同:
| IE | UL CL模式 | BP模式 |
|---|---|---|
| PDI过滤字段 | SDF Filter(目的IP/端口) | UE IPv6 Prefix(源前缀) |
| 匹配粒度 | 5-tuple或App ID | IPv6 /64前缀 |
| 下行过滤 | 不需要(仅合并) | Dst IPv6 Prefix |
| UE IP字段 | 单一IP地址 | 多个Interface ID |
BP的PDI中使用UE IP Address IE,但设置Type=2(IPv6 prefix而非完整地址),Prefix Length通常为/64。这使得BP的过滤效率极高——仅需匹配IPv6头部的前缀字段,无需深度包检测。
PFCP(N4)层面:
- 过滤器:pfcp || gtpv2
- 识别UL CL插入:查找PFCP Session Establishment中同时包含两个Create PDR且Precedence不同的消息
- 关键字段:SDF Filter内容、Outer Header Creation中的目的TEID/IP
- BP识别:PDI中包含IPv6 Prefix而非完整IP地址
GTP-U(N3/N9)层面:
- 过滤器:gtp && gtp.message == 0xff(GTP-U用户数据)
- 识别分流:同一UE IP的报文出现在两个不同的N9隧道中(TEID不同)
- 验证本地分流:确认目的为192.168.100.0/24的报文被转发至PSA2的TEID
NAS层面: - UL CL场景:NAS PDU Session Modification Command中不携带新IP地址 - BP场景:UE收到新的Router Advertisement消息(新增IPv6前缀)
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 本地流量未分流至MEC | SDF Filter配置错误或Precedence冲突 | 检查PFCP Session Est中PDR规则 |
| UE无法访问本地DN | PSA2的N6接口路由/DNS未配置 | 在PSA2上ping本地DN服务器 |
| UL CL插入后全部流量中断 | PSA1的N4 FAR未更新(DL仍直连RAN) | 检查PSA1的N4 Modification |
| BP场景UE未获得第二前缀 | RA消息被BP UPF拦截或未转发 | 抓包检查ICMPv6 RA |
| 分流后QoS降级 | UL CL UPF未正确配置QER | 检查QER中的MBR/GBR参数 |
| I-SMF场景数据面不通 | N16a接口DNAI信息未同步 | 检查I-SMF→H-SMF的N16a消息 |
| ## 八、设计意图与演进方向 |
3GPP设计UL CL和BP双机制的核心理由:
Q1: UL CL和BP能否同时用于同一个PDU Session? A: 不能。根据TS 23.501 Section 5.8.2,一个PDU Session同一时刻只能使用UL CL或BP其中一种分流机制。但可以在PDU Session生命周期内从一种切换到另一种(通过PDU Session Modification)。
Q2: UL CL插入时UE需要知道吗? A: 不需要。这是UL CL的核心优势——UE完全不感知中间UPF的插入和删除。SMF可能通过PDU Session Modification Command通知UE新的QoS规则,但UE不知道流量在中间被分流。
Q3: BP模式下应用如何选择使用哪个IPv6前缀?
A: 有两种方式:一是UE操作系统层面的URSP规则,根据应用ID/Traffic Descriptor自动绑定源地址;二是应用自身通过bind()系统调用显式指定源IPv6地址。
Q4: UL CL删除后流量如何回退? A: SMF执行反向操作:删除UL CL UPF的N4会话,修改PSA1的FAR使其直连RAN(恢复N3隧道),通知AMF更新N2资源。整个过程UE不感知。
Q5: UL CL UPF能否和PSA合设? A: 可以。在小型MEC部署中,UL CL功能可以与PSA2(本地UPF)合设在同一物理节点。此时N9隧道变成内部接口,降低时延。但UL CL与PSA1(中心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 等场景全覆盖。
