第289篇:5G 核心网 N4 接口与 UPF 分流
关键词:N4接口、PFCP、UPF、会话管理、流量分流、5G核心网、SMF、本地分流
一、引言
在5G核心网架构中,N4接口是控制面网元SMF(Session Management Function)与用户面网元UPF(User Plane Function)之间的核心接口。N4接口基于PFCP(Packet Forwarding Control Protocol)协议,由SMF通过N4下发流量转发规则、QoS策略和路由策略到UPF,实现用户面流量的精细化控制。
UPF分流(Traffic Offload)是5G网络实现MEC(Multi-access Edge Computing)和DNN(Data Network Name)分流的核心能力,允许将不同业务的用户流量引导至不同的数据网络出口,满足低时延、数据本地化等需求。
二、N4 接口与 PFCP 协议
2.1 N4 接口功能
N4接口承载SMF到UPF的控制信令,主要功能包括:
| 功能 | 说明 | 涉及的PFCP消息 |
|---|---|---|
| PDR管理 | 创建/更新/删除包检测规则 | Session Modification |
| FAR管理 | 创建/更新/删除转发动作规则 | Session Modification |
| QER管理 | 创建/更新/删除报文检测规则 | Session Modification |
| URER管理 | 创建/更新/删除上报规则 | Session Modification |
| BAR管理 | 创建/更新/删除缓冲动作规则 | Session Modification |
| 会话建立 | 建立PFCP会话关联 | Session Establishment |
| 会话释放 | 释放PFCP会话关联 | Session Deletion |
2.2 PFCP 消息类型
| PFCP消息 | 方向 | 用途 |
|---|---|---|
| Session Establishment Request/Response | SMF→UPF / UPF→SMF | 建立PFCP会话,下发初始规则 |
| Session Modification Request/Response | SMF→UPF / UPF→SMF | 修改会话规则(PDR/FAR/QER) |
| Session Deletion Request/Response | SMF→UPF / UPF→SMF | 删除PFCP会话 |
| Heartbeat Request/Response | 双向 | 心跳检测 |
| Association Setup Request/Response | UPF→SMF / SMF→UPF | 建立PFCP关联 |
| Node Report Request | UPF→SMF | UPF主动上报事件 |

2.3 PFCP 规则体系
PFCP规则是UPF执行用户面转发的核心依据:
| 规则类型 | 全称 | 功能 |
|---|---|---|
| PDR | Packet Detection Rule | 报文检测规则:匹配条件(五元组、DNN、S-NSSAI等) |
| FAR | Forwarding Action Rule | 转发动作规则:转发/丢弃/缓冲/引导 |
| QER | QoS Enforcement Rule | QoS执行规则:速率限制、统计 |
| URER | Usage Reporting Rule | 用量上报规则:触发用量统计上报 |
| BAR | Buffering Action Rule | 缓冲规则:缓冲报文直到特定条件满足 |
| MDR | Metering Rule | 计量规则:按特定维度计量流量 |
规则关联关系:
| 关联 | 说明 |
|---|---|
| PDR → FAR | PDR匹配成功后关联一个FAR执行转发 |
| PDR → QER | PDR匹配成功后关联QER执行QoS控制 |
| PDR → URER | PDR匹配成功后关联URER进行用量统计 |
| FAR → 下一跳FAR | 一个FAR可以指向下一个FAR实现多跳转发 |
三、UPF 分流架构
3.1 UPF 分流场景
| 分流场景 | 说明 | 实现方式 |
|---|---|---|
| DNN分流 | 不同DNN的流量路由到不同数据网络 | SMF根据DNN选择不同UPF |
| SSC模式分流 | 不同SSC模式的会话选择不同UPF | SMF根据SSC模式选择UPF |
| 本地分流 | 业务流量本地卸载到MEC | UPF本地 breakout |
| 业务分流 | 基于URL/应用类型分流 | UPF基于PDR匹配URL分流 |
| 切片分流 | 不同切片的流量路由到不同UPF | SMF根据S-NSSAI选择UPF |
| IPv4/IPv6分流 | IPv4和IPv6流量分别处理 | 双栈UPF分别处理 |
3.2 UPF 本地分流(MEC Offload)

3.3 分流规则配置示例
PDR/FAR 配置结构:
| 规则ID | 规则类型 | 匹配条件 | 动作 | 目标 |
|---|---|---|---|---|
| PDR-1 | PDR | DNN=meccdn, S-NSSAI=01 | 关联FAR-1 | 本地MEC |
| PDR-2 | PDR | DNN=internet | 关联FAR-2 | 互联网 |
| PDR-3 | PDR | URL=*.video.local | 关联FAR-1 | 本地MEC |
| FAR-1 | FAR | - | Forward | N6→MEC |
| FAR-2 | FAR | - | Forward | N6→Internet |
四、N4/PFCP 配置与调试
4.1 SMF 侧 N4 配置
# ===== SMF N4 接口配置 =====
# 1. 配置N4接口IP
interface Vlanif 100
description N4_Interface
ip address 10.200.0.1 255.255.255.0
# 2. 配置PFCP关联
pfc
local-address 10.200.0.1
# UPF对端地址
upf-address 10.200.0.2
# 3. 配置UPF信息
upf name UPF-CORE-01
address 10.200.0.2
# N4接口能力
n4-interface
s-nssai-list 01 02 03
dnn-list internet meccdn
upf name UPF-MEC-01
address 10.200.0.3
n4-interface
s-nssai-list 01
dnn-list meccdn
# 本地分流能力
local-breakout enable
# 4. 配置PFCP会话参数
pfc session
# 心跳间隔
heartbeat interval 30
# 会话超时
session timeout 3600
# 最大并行会话
max-sessions 1000000
4.2 UPF 侧 N4 配置
# ===== UPF N4 接口配置 =====
# 1. 配置N4接口IP
interface Vlanif 100
description N4_Interface
ip address 10.200.0.2 255.255.255.0
# 2. 配置PFCP
pfc
local-address 10.200.0.2
# SMF对端地址
smf-address 10.200.0.1
# 3. 配置N3接口(来自gNB的GTP-U)
interface Vlanif 200
description N3_Interface_gNB
ip address 10.300.0.2 255.255.255.0
# 4. 配置N6接口(到数据网络)
interface Vlanif 300
description N6_Interface_Internet
ip address 203.0.113.2 255.255.255.0
interface Vlanif 301
description N6_Interface_MEC
ip address 10.200.100.2 255.255.255.0
# 5. 配置本地分流规则
traffic-forwarding-rule 1
description MEC_Local_Offload
# 匹配DNN=meccdn
match dnn meccdn
# 转发到MEC网络
forward n6-interface Vlanif 301
traffic-forwarding-rule 2
description Internet_Default
# 默认转发到互联网
match dnn internet
forward n6-interface Vlanif 300
4.3 PFCP 会话建立调试
# ===== 查看PFCP会话状态 =====
# 查看PFCP关联状态
display pfc association
# SMF Address: 10.200.0.1
# State: Established
# Uptime: 1d 2h 30m
# 查看PFCP会话
display pfc session all
# Session ID: 12345678
# TEID: 0x00000001
# PDR Count: 3
# FAR Count: 3
# QER Count: 2
# 查看PDR详情
display pfc session session-id 12345678 pdr
# PDR ID: 1
# Precedence: 100
# Outer Header: GTP-U, TEID=0x00000001
# PD: DNN=internet, S-NSSAI=SST=1
# FAR ID: 1
# QER ID: 1, 2
#
# PDR ID: 2
# Precedence: 200
# Outer Header: GTP-U, TEID=0x00000001
# PD: DNN=meccdn
# FAR ID: 2
# QER ID: 3
# 查看FAR详情
display pfc session session-id 12345678 far
# FAR ID: 1
# Action: Forward
# Forwarding Parameters:
# TEID: 0x00000100
# Destination IP: 203.0.113.1
# Network Instance: N6_Internet
#
# FAR ID: 2
# Action: Forward
# Forwarding Parameters:
# TEID: 0x00000200
# Destination IP: 10.200.100.1
# Network Instance: N6_MEC
4.4 PFCP 信令追踪
# ===== PFCP 信令追踪 =====
# 启用PFCP消息日志
pfc logging enable
pfc logging level debug
# 查看PFCP消息
display pfc log buffer
# ===== PFCP Session Establishment Request =====
# From: SMF 10.200.0.1
# Session ID: 12345678
# PDR:
# PDR ID: 1
# Precedence: 100
# Packet Detection: DNN=internet
# FAR ID: 1
# FAR:
# FAR ID: 1
# Action: Forward
# TEID: 0x00000100
# Destination: 203.0.113.1
# ===== PFCP Session Establishment Response =====
# To: SMF 10.200.0.1
# Result: Success
# Cause: Request Accepted
五、实战案例
5.1 故障案例:PFCP 会话建立失败导致PDU会话无法建立
现象:某区域用户无法建立PDU会话,无法上网。
排查过程:
# 1. 查看UPF侧PFCP关联状态
display pfc association
# SMF 10.200.0.1: Established ✓
# SMF 10.200.0.11: Down ✗
# 2. 检查故障SMF的PFCP关联日志
display pfc association smf-address 10.200.0.11
# State: Down
# Last Error: Version Mismatch
# Local Version: PFCP v2
# Remote Version: PFCP v1
# 3. 根因分析
# 新部署的SMF运行的是旧版本软件
# PFCP协议版本为v1,而UPF要求v2
# 版本协商失败,关联建立失败
# 4. 修复
# 升级SMF软件到支持PFCP v2的版本
# 或在UPF侧配置兼容PFCP v1
pfc
version v1 v2 # 同时支持v1和v2
# 5. 验证
display pfc association
# SMF 10.200.0.11: Established ✓
根因:新部署的SMF运行旧版本软件,PFCP协议版本为v1,与UPF的v2不兼容,导致PFCP关联建立失败,无法下发PDR/FAR规则。
解决: 1. 升级SMF软件到支持PFCP v2的版本 2. 在UPF侧配置版本兼容模式(同时支持v1/v2) 3. 建立SMF/UPF版本兼容性矩阵,部署前验证版本匹配
5.2 故障案例:MEC 本地分流未生效
现象:配置了MEC本地分流,但用户流量仍然走中央云,未分流到本地MEC。
排查过程:
# 1. 查看PDR匹配情况
display pfc session session-id 87654321 pdr
# PDR ID: 1
# Precedence: 100
# PD: DNN=internet ← PDR1匹配的是internet
# FAR ID: 1 (→中央云)
#
# PDR ID: 2
# Precedence: 200 ← PDR2优先级较低
# PD: DNN=meccdn
# FAR ID: 2 (→MEC)
# 2. 检查用户实际使用的DNN
display pfc session session-id 87654321
# UE DNN: internet
# 用户注册时使用的DNN为"internet",而非"meccdn"
# 3. 根因分析
# 用户在AMF注册时请求的DNN为"internet"
# SMF根据DNN选择UPF和PDR规则
# 用户流量匹配到PDR-1(DNN=internet),转发到中央云
# MEC分流规则(PDR-2)未被匹配
# 4. 修复方案
# 方案A: 修改用户订阅的DNN为"meccdn"
# 方案B: 增加基于URL的PDR规则,将特定URL流量分流到MEC
# 采用方案B:
# 在SMF侧增加URL匹配的PDR
pfc session session-id 87654321
add-pdr
pdr-id 3
precedence 50 # 高优先级
packet-detection
application-detection-url "*.video.local"
far-id 2 # 转发到MEC
qer-id 3
根因:用户注册使用的DNN为"internet",MEC本地分流规则配置在DNN="meccdn"的PDR上,用户的实际流量无法匹配到MEC分流规则。
解决: 1. 增加基于URL/Application的PDR规则,高优先级匹配特定业务流量到MEC 2. 或者修改用户签约数据,将默认DNN设置为"meccdn" 3. 在UPF侧启用流量重定向(Traffic Redirect),将特定目的IP的流量重定向到MEC
5.3 故障案例:PFCP 心跳超时导致会话假死
现象:用户面数据偶发中断,PFCP会话状态显示正常但实际数据不通。
排查过程:
# 1. 检查PFCP心跳
display pfc association
# SMF 10.200.0.1: Established
# Heartbeat: Last Received 300s ago ← 心跳超时!
# 2. 检查SMF到UPF的网络连通性
ping 10.200.0.2 source 10.200.0.1
# 可达,但时延波动大(2-50ms)
# 3. 检查PFCP心跳超时配置
display pfc session
# Heartbeat Interval: 30s
# Max Unreachable Time: 120s
# 4. 根因分析
# N4接口链路质量较差,心跳报文偶尔延迟
# 当心跳延迟超过Max Unreachable Time(120s)
# PFCP关联进入"不可达"状态,但状态机未完全释放
# 导致PFCP会话"假死"
# 5. 修复
# 5a. 调整心跳参数
pfc session
heartbeat interval 10 # 缩短心跳间隔
max-unreachable-time 60 # 缩短不可达判定时间
# 5b. 优化N4链路
# 将N4接口迁移到独立的VLAN,避免与用户面竞争带宽
# 配置N4接口的QoS优先级为最高
interface Vlanif 100
qospd queue 1 wrr weight 1 # 最高优先级队列
根因:N4接口链路质量差导致PFCP心跳延迟,超过不可达判定时间后关联进入假死状态,PFCP会话无法正常运行。
解决: 1. 缩短PFCP心跳间隔和不可达判定时间 2. 将N4接口迁移到独立VLAN,避免与用户面竞争带宽 3. 配置N4接口的QoS优先级为最高,确保PFCP信令优先转发
六、总结
| 能力 | N4/PFCP 实现 | 效果 |
|---|---|---|
| 会话管理 | PFCP Session Establishment/Modification | SMF控制UPF的用户面行为 |
| 流量检测 | PDR匹配(五元组/DNN/URL/S-NSSAI) | 精确识别业务流量 |
| 流量转发 | FAR(Forward/Drop/Buffer/Redirect) | 灵活的转发策略 |
| QoS控制 | QER(GBR/MBR/统计) | 带宽保障和限制 |
| 用量统计 | URER(按DNN/S-NSSAI/时间/用量上报) | 精确计量和计费 |
| 最佳实践 | 说明 |
|---|---|
| PDR优先级规划 | 高优先级的PDR放在前面,避免规则冲突 |
| N4链路保护 | N4接口独立VLAN,高QoS优先级 |
| PFCP心跳优化 | 合理设置心跳间隔和超时时间 |
| 分流策略清晰 | DNN分流为主,URL/Application分流为辅 |
| 日志审计 | 启用PFCP日志,便于故障排查 |
思考
- PFCP协议中PDR的Precedence(优先级)字段取值范围为1-65535,数值越小优先级越高。当多条PDR匹配同一报文时,UPF如何选择执行的PDR?
- UPF的FAR支持"Forward"和"Duplicate"两种动作,"Duplicate"在什么场景下使用?与PFCP的"Buffer"动作有什么区别?
- 当SMF需要动态修改UPF的转发规则(如用户切换基站后N3 TEID变更)时,PFCP Session Modification的完整流程是什么?对正在传输的用户面数据有何影响?
下篇预告:第290篇:IP RAN 与移动回传网络