边缘计算(MEC)是5G网络面向低时延、大带宽、本地化业务的核心能力,但其底层并不是凭空"把流量留在本地",而是依赖一套严密的用户面(UP)重配置信令。其中上行分类器(Uplink Classifier,UL CL)的插入与重定位,是5G系统(5GS)实现边缘本地分流(Local Breakout)的关键机制。本文聚焦 3GPP TS 23.502 clause 4.23.9 系列(UPF的(重)选择)以及 TS 23.501 clause 5.6.7(AF对流量路由的影响)和 TS 23.548(边缘计算增强)中的具体信令流程,逐步拆解UL CL插入触发的两条路径、N4会话规则如何实现"上下行分流"、PSA(PDU会话锚点)的状态迁移,以及抓包识别与故障排查要点。
在传统5G架构中,一个PDU会话只有一个PSA,所有上下行用户面数据都经由这个唯一的锚点UPF,通过N6接口进入中心数据网络(DN)。这种"集中式锚点"模型对于公网业务是合理的,但对以下场景存在严重问题:
5G给出的答案是:在PDU会话的现有数据路径中"插入"一个UL CL和一个本地PSA,让匹配特定业务流的上行报文在UL CL处被分类,转发到本地PSA的N6(直连边缘DN),而不匹配的流量继续走中心PSA。下行同理,来自两个PSA的下行报文在UL CL处汇聚后统一发给UE。
这套机制的设计精髓在于:它对UE完全透明。UE始终只感知到单一PDU会话、单一IP地址,所有的分流逻辑都在网络侧的N4规则中完成。这正是TS 23.502 clause 4.23.9把UL CL/BP/PSA操作独立成专门流程的原因。
在拆解信令之前,必须厘清四个容易混淆的概念。
| 概念 | 全称 | 定义(TS 23.501) | 作用 |
|---|---|---|---|
| PSA | PDU Session Anchor UPF | PDU会话的锚点UPF,分配UE IP、提供N6接口、是N3隧道的终点之一 | 会话的"家",承担IP锚点与DN连接 |
| UL CL | Uplink Classifier | 一个UPF功能,由SMF下发的检测规则(基于业务流过滤器)将上行流量分流到不同PSA | 业务流级分流(五元组/FQDN/S-NSSAI/DNN) |
| BP | Branching Point | 仅用于IPv4/IPv6多宿主(multi-homed)PDU会话,根据源IP前缀分流上行 | 前缀级分流(终端多前缀场景) |
| DNAI | Data Network Access Identifier | 标识一个用户面接入某DN的位置(即"哪个边缘站点") | SMF据此选择对应本地PSA |
关键区别:UL CL按"业务流"分流(UE只有一个IP),BP按"源前缀"分流(UE有多个IP前缀)。本文聚焦UL CL,因为它是MEC本地分流的主流形态,而BP主要用于多宿主边缘场景。
下图展示插入UL CL后的边缘用户面拓扑:
graph TD
UE[UE 单IP 透明]
RAN[(gNB / N3)]
ULCL{{UL CL / I-UPF<br/>检测+转发规则}}
PSA1[中心PSA UPF<br/>N6→中心DN]
PSA2[本地PSA UPF<br/>N6→边缘DN/EAS]
UE --> RAN
RAN -->|N3 GTP-U| ULCL
ULCL -->|N9 匹配本地业务| PSA2
ULCL -->|N9 不匹配 本地业务| PSA1
PSA2 -->|N6| EdgeDN[(边缘数据网络<br/>云游戏/AR服务器)]
PSA1 -->|N6| CentralDN[(中心Internet/企业内网)]
style ULCL fill:#ffe0b2,stroke:#e65100,stroke-width:2px
style PSA2 fill:#c8e6c9,stroke:#2e7d32
style PSA1 fill:#bbdefb,stroke:#1565c0
注意:UL CL既可以与本地PSA合设在同一物理UPF(单节点内分流),也可以是独立的中间UPF(I-UPF)。规范允许一个PDU会话最多配置两个PSA + 一个UL CL/BP。
3GPP为UL CL插入定义了两类触发源,对应"应用侧主动"和"终端侧被动"两种范式:
| 维度 | 路径A:AF流量影响 | 路径B:EASDF DNS解析触发 |
|---|---|---|
| 规范出处 | TS 23.501 clause 5.6.7 + TS 23.502 clause 4.3.6 | TS 23.548(Rel-17引入) |
| 触发方 | 第三方/运营商应用功能(AF) | UE发起的DNS查询 |
| 决策依据 | AF提供的DNAI + 业务流过滤器 | EASDF解析FQDN得到的EAS IP/DNAI |
| 何时生效 | 会话建立前或会话中持续影响 | UE实际访问域名时按需触发 |
| 典型场景 | 已知固定业务的本地化(视频、企业应用) | 终端动态选择最近EAS(云游戏、动态调度) |
下面分别拆解这两条路径的信令。
这是最经典的UL CL插入路径。当AF(例如运营商的视频平台或企业应用网关)希望某个业务流被路由到本地边缘站点时,它通过NEF向5GC下发流量影响请求。
sequenceDiagram
autonumber
participant AF
participant NEF
participant UDR
participant PCF
participant SMF
participant ULCL as UL CL UPF<br/>(I-UPF)
participant LPSA as 本地PSA UPF
participant RAN
Note over AF: 业务流过滤器 + DNAI + 时效
AF->>NEF: Nnef_TrafficInfluence_Create<br/>(App ID, DNAI, Routing Info, Temporal validity)
NEF->>NEF: AF授权校验 + 外部→内部映射
NEF->>UDR: Nudr_DataRepository_Create<br/>(应用数据, 关联DNN/S-NSSAI)
UDR-->>SMF: UDR订阅通知<br/>(匹配的PDU会话)
SMF->>PCF: Nsmf bindings 或策略请求<br/>(可选, 由PCC规则驱动)
PCF-->>SMF: SM Policy Association Update<br/>(PCC规则含UL CL指示+DNAI)
Note over SMF: 决策: 选择本地PSA, 规划UL CL
SMF->>LPSA: N4 Session Establishment<br/>(PDR/FAR, N6→边缘DN)
SMF->>ULCL: N4 Session Establishment<br/>(UL CL检测规则+双转发FAR)
Note right of ULCL: 检测匹配本地业务流<br/>→转发到本地PSA N9<br/>不匹配→转发到中心PSA
ULCL-->>SMF: N4 ACK (分配的N9 F-TEID)
LPSA-->>SMF: N4 ACK (N3/N6 F-TEID)
SMF->>RAN: N2 SM Information (PDU会话修改)<br/>(更新N3 UL F-TEID指向UL CL)
RAN-->>SMF: N2 SM ACK
SMF-->>AF: 通过NEF: UP Path Change 通知<br/>(Nsmf_EventExposure_Notify)<br/>"已路由到DNAI"
消息①:Nnef_TrafficInfluence_Create(TS 23.502 clause 4.3.6.2 / TS 29.522) AF提交给NEF的"流量影响数据"(TrafficInfluenceData)核心字段:
| IE | 含义 | 示例 |
|---|---|---|
afAppId |
AF应用标识,关联业务 | "MEC-Game-Streaming" |
afServiceId |
AF内服务标识 | 用于计费/策略细分 |
dnais |
目标DNAI列表 | "Edge-Site-Shanghai-Pudong-01" |
trafficFilters |
业务流过滤器(五元组/SDF) | src=UE_IP, dst=游戏服务器段, dport=8080 |
routingReq |
路由要求(Rel-17增强) | 含路由剖面(RouteProfile)+ RouteToLoc |
tempValidities |
时效窗口 | 仅在19:00-23:00生效 |
addrPreserInd |
是否需地址保持 | IPv6场景下保持UE前缀 |
upPathChgEvt |
上报路径变更事件订阅 | 通知AF分流何时生效 |
消息②③:NEF→UDR存储。NEF将外部AF标识映射为内部标识,写入UDR的应用数据存储。SMF此前已通过订阅(Nudr_DataRepository订阅)关注其负责的DNN/S-NSSAI组合下的变化,UDR变更时主动推送通知给相关SMF。这一设计让AF不必知道会话细节,符合SBI解耦原则。
消息④⑤:PCF策略驱动(可选但常见)。商用部署中,AF影响往往经PCF转化为PCC规则下发。PCF在SMPolicyAssociationUpdate中携带 routeToLocs(路由到位置)、upPathChgEvt、以及关键的 ulcl指示位。SMF据此明确知道"当前要插入UL CL而非普通PSA变更"。
消息⑥⑦:N4会话建立(TS 29.244,核心)。这是UL CL机制的"灵魂",详见下一节。
消息⑧:UP Path Change通知。SMF通过事件暴露(Nsmf_EventExposure_Notify),经NEF回告AF:"用户面已切换到DNAI",AF据此可触发应用层动作(如EAS重选)。
当业务流无法预先确定(如终端动态访问不同EAS域名),3GPP在Rel-17引入了EASDF(Edge Application Server Discovery Function),把UL CL的触发权交给"终端发起的DNS查询"。
game.edge.mnc.mcc.pub.3gppnetwork.org),上行报文经PSA转发给EASDF(而非公网DNS)。Neasdf_DNSContext_Notify 向SMF报告:DNS Context ID、解析出的EAS IP、对应的DNAI。sequenceDiagram
autonumber
participant UE
participant RAN
participant PSA as 中心PSA
participant EASDF
participant SMF
participant LPSA as 本地PSA
UE->>RAN: DNS Query (FQDN)
RAN->>PSA: N3 上行
PSA->>EASDF: 转发DNS Query
EASDF->>EASDF: 基于FQDN+UE位置 解析最近EAS
EASDF-->>UE: DNS Response (本地EAS IP)
EASDF->>SMF: Neasdf_DNSContext_Notify<br/>(EAS IP, DNAI, DNS Context ID)
SMF->>SMF: 决策: DNAI变化→插入UL CL
SMF->>LPSA: N4 Session Est (本地PSA)
SMF->>PSA: N4 Session Mod (加UL CL检测/转发规则)
Note over UE: 后续访问EAS IP的上行流<br/>在UL CL处分流到本地PSA
EASDF路径的价值在于按需触发:只有当UE真正访问边缘域名时才占用本地UPF资源,对运营商的UPF资源调度更经济。这也是Rel-17边缘计算能力相较Rel-16的标志性增强。
UL CL之所以能"按业务流分流",全部秘密在 N4会话规则(TS 29.244)中。一个PDR(Packet Detection Rule)匹配报文,一个FAR(Forwarding Action Rule)决定去哪。UL CL节点的关键在于:一个PDR匹配后,由不同FAR转发到两个方向。
graph TD
subgraph 入向检测
PDR1[PDR-UL<br/>F-TEID=N3来自gNB<br/>匹配: UE_IP+业务流过滤器]
end
subgraph 转发决策
FAR_A[FAR-A 本地方向<br/>OuterHeader=N9→本地PSA F-TEID]
FAR_B[FAR-B 中心方向<br/>OuterHeader=N9→中心PSA F-TEID]
end
subgraph QoS控制
QER[QER<br/>QFI=本地5QI<br/>Gate/MBR]
URR[URR 计费测量<br/>区分本地/中心流量]
end
PDR1 --> FAR_A
PDR1 --> FAR_B
PDR1 --> QER
PDR1 --> URR
style PDR1 fill:#ffe0b2,stroke:#e65100
style FAR_A fill:#c8e6c9,stroke:#2e7d32
style FAR_B fill:#bbdefb,stroke:#1565c0
| 规则类型 | 关键IE | 含义 | 在UL CL场景的作用 |
|---|---|---|---|
| PDR | F-TEID |
隧道端点标识 | 检测来自gNB的N3上行报文 |
UE IP addr |
终端IP | 匹配本会话所有报文 | |
SDF filter |
业务流过滤器 | 分流判据:命中→本地,未命中→中心 | |
QFI |
QoS流标识 | 区分不同QoS流的分流策略 | |
| FAR | Outer Header Creation |
外层封装(IP+TEID) | 决定转发到N3/N9/N6的哪个端点 |
Apply Action=Forward |
转发动作 | 双FAR实现"一进二出"分流 | |
Destination Interface |
目的接口 | Core/Access,区分上下行 | |
| QER | QFI |
关联QoS流 | 为本地业务施加专属QoS |
Gate Status |
门控 | 可按需开关本地分流 | |
| URR | Measurement Method |
测量方法 | 本地/中心流量分别计费统计 |
设计要点:UL CL节点的同一PDR关联两个FAR,正是"业务流分流"的协议级实现。SMF在 N4 Session Establishment/Modification Request 中通过 UL CL Information、BP Information 等信元告知UPF其承担的角色,UPF据此在数据面完成逐包分类与转发。
UL CL的可用性与PDU会话的会话与业务连续性(SSC)模式强相关(TS 23.501 clause 5.6.4)。许多故障的根源就在于SSC模式选错。
| SSC模式 | 锚点是否可变 | UL CL是否可用 | UE IP是否变化 | 适用MEC场景 |
|---|---|---|---|---|
| SSC mode 1 | 锚点固定不变 | ✅ 可用(在固定PSA之外加UL CL+本地PSA) | 不变 | 固定IP业务+本地卸载(推荐主力) |
| SSC mode 2 | 锚点可变,先断后建 | ✅(但会话中断) | 变化 | 容忍中断的场景 |
| SSC mode 3 | 锚点可变,无缝(先建后断,旧PSA重选) | ✅(PSA重选) | 变化(双锚点过渡) | 高移动性MEC、跨边缘连续性 |
关键结论:MEC本地分流首选SSC mode 1 + UL CL——这样UE IP不变、会话不中断、业务连续性最好。只有当UE移动跨出当前边缘站点覆盖且需更换锚点时,才依赖SSC mode 3的PSA重选(即clause 4.23.9.3"插入UL CL/BP、附加PSA并变更PSA"流程)。
从PDU会话生命周期的角度,UL CL相关操作构成一个清晰的状态机(对应TS 23.502 clause 4.23.9.1~4.23.9.4):
stateDiagram-v2
[*] --> 单PSA: 会话建立 (中心锚点)
单PSA --> 双PSA_ULCL: 插入UL CL+本地PSA<br/>clause 4.23.9.1
双PSA_ULCL --> 双PSA_ULCL: 业务流过滤器更新<br/>(N4 mod)
双PSA_ULCL --> 单PSA: 删除UL CL+本地PSA<br/>clause 4.23.9.2
双PSA_ULCL --> 双PSA_ULCL新锚: PSA重选(无缝)<br/>clause 4.23.9.3/4.23.9.4
双PSA_ULCL新锚 --> 单PSA: 业务结束回中心
note right of 双PSA_ULCL
AF/EASDF触发
N4双FAR分流生效
end note
note right of 双PSA_ULCL新锚
UE移动跨边缘站点
SSC mode 3无缝切换
end note
在实际网络运维与研发联调中,如何用抓包确认UL CL插入已生效?
1. N4接口(SMF↔UPF,PFCP)
用Wireshark过滤 pfcp,在 PFCP Session Establishment Request 中查找:
- Create PDR 节点中含 UE IP Address 与业务流 SDF Filter;
- Create FAR 节点中 Outer Header Creation 出现两个不同N9 F-TEID指向不同UPF;
- Create FAR 含 UL CL Information 或同一PDR关联多FAR。
2. SBI接口(N4控制之外的NEF/SMF/PCF)
- 检查 POST /traffic-influence(Nnef)请求体是否携带 dnais 与 routingReq;
- PCF POST /sm-policies/update 中是否下发 routeToLocs 与 ulcl=true。
3. N3/N9用户面(GTP-U) 在边缘UPF抓包,确认匹配业务流的报文其 GTP-U外层TEID 已指向本地PSA的N9隧道,而非中心PSA——这是分流生效的铁证。
4. DNS路径(EASDF场景)
抓 DNS Query/Response,确认UE的DNS查询目的地是EASDF(而非公网DNS),且Response中的IP为本地EAS网段。
| 现象 | 可能原因 | 排查思路 |
|---|---|---|
| UL CL插入后业务仍走中心 | 业务流过滤器(SDF)配置与实际报文五元组不匹配 | 核对N4 PDR的SDF filter,确认端口/协议/IP段 |
| UE访问边缘业务时延无改善 | 本地PSA与UL CL跨机房,N9链路本身长 | 检查UL CL与本地PSA是否合设或就近部署 |
| 分流后部分下行报文丢失 | 本地PSA下行FAR未正确配置N3回程TEID | 核对N4会话中下行方向Outer Header Creation |
| EASDF场景UL CL不触发 | EDC未启用/DNS未指向EASDF | 检查UE Configuration Update下发的DNS地址 |
| 跨边缘移动后业务中断 | SSC mode 1下锚点不变,UE已远离本地PSA | 评估改用SSC mode 3或部署更密的边缘站点 |
| AF下发DNAI后SMF无响应 | NEF授权/UDR订阅未生效 | 检查NEF授权策略与SMF的UDR订阅配置 |
Q1:UL CL和BP(Branching Point)到底有什么区别? A:UL CL按业务流(五元组/FQDN/S-NSSAI)分流,UE只有一个IP,适用于大多数MEC本地卸载场景;BP仅用于多宿主(multi-homed)PDU会话,UE拥有多个IPv6前缀(或多IPv4地址),按源前缀分流。MEC主流方案是UL CL。
Q2:为什么UL CL对UE是透明的? A:UE始终只感知一个PDU会话、一个IP地址。所有分流判据都由SMF下发到网络侧UPF的N4规则中完成,UE无需任何改动或感知。这也是5G相对4G LBO/SIPTO的架构优势。
Q3:SSC mode 1下能用UL CL吗?会话会中断吗? A:完全可以,且这是首选组合。SSC mode 1保持中心锚点不变,UL CL是在锚点之外插入的旁路,UE IP不变、会话不中断,业务连续性最佳。只有跨边缘站点的锚点重选才需要SSC mode 3。
Q4:EASDF和普通DNS server有什么不同?
A:普通DNS只返回域名对应的IP;EASDF额外具备与SMF的交互能力(Neasdf_DNSContext_Notify),它能感知UE位置并返回最近的本地EAS IP,同时通知SMF触发UL CL插入。EASDF是Rel-17为边缘计算量身定制的"会感知5GC位置的DNS"。
Q5:UL CL插入后,UE的IP地址会变吗? A:不会。无论UL CL插入、删除还是本地PSA切换,UE的IP地址始终由PSA(在UL CL场景下通常是中心PSA)分配并保持不变。这正是本地分流"对应用层无感"的关键。
本文由「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 等场景全覆盖。
