5G核心网控制面与用户面分离(CUPS)架构中,SMF(Session Management Function)与UPF(User Plane Function)之间通过N4接口交换PFCP(Packet Forwarding Control Protocol)信令。N4会话建立(PFCP Session Establishment)是PDU会话建立过程中最关键的"规则注入"环节——SMF将包检测规则(PDR)、转发动作规则(FAR)、QoS执行规则(QER)、使用量上报规则(URR)打包注入UPF,从而让UPF获得"识别、分类、转发、限速、计费"的完整数据面能力。
核心问题:SMF如何在一个PFCP Session Establishment Request消息中,将多套规则以正确的关联关系注入UPF?UPF又如何分配F-TEID并返回隧道信息?本文基于3GPP TS 29.244 V19.1.0(Release 19)和TS 23.502 V19.2.0 Section 4.3.2.2.1,逐IE拆解这一过程。
N4会话建立嵌套在UE触发的PDU Session Establishment流程中,位于SMF完成UPF选择之后、SMF向AMF返回N2 SM信息之前。其上下文关系如下:
sequenceDiagram
participant UE
participant RAN as (R)AN
participant AMF
participant SMF
participant UPF as UPF(PSA)
participant PCF
participant UDM
UE->>AMF: NAS PDU Session Establishment Request
Note right of AMF: DNN, S-NSSAI, PDU Session Type
AMF->>SMF: Namf_Communication_N1N2MessageTransfer<br/>(forward NAS)
SMF->>UDM: Nudm_SDM_Get (SM数据)
UDM-->>SMF: Subscription Data
SMF->>PCF: Npcf_SMPolicyControl_Create
PCF-->>SMF: PCC Rules (QoS, Charging)
rect rgb(255,240,220)
Note over SMF,UPF: ★ N4会话建立(本文聚焦) ★
SMF->>UPF: PFCP Session Establishment Request<br/>(PDR + FAR + QER + URR)
UPF-->>SMF: PFCP Session Establishment Response<br/>(F-TEID, Cause)
end
SMF-->>AMF: N1N2MessageTransfer Response<br/>(N2 SM Info + N1 SM Container)
AMF->>RAN: N2 PDU Session Resource Setup Request
RAN->>UE: RRC Reconfiguration (DRB建立)
RAN-->>AMF: N2 PDU Session Resource Setup Response
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext
SMF->>UPF: N4 Session Modification (AN Tunnel Info)
Note over SMF,UPF: 数据面通路打通
根据TS 29.244 Section 7.5.2,PFCP Session Establishment Request消息由以下顶层IE组成:
| IE名称 | 类型值 | 是否必选 | 说明 |
|---|---|---|---|
| Node ID | 60 | 必选 | SMF的节点标识(IP或FQDN) |
| F-SEID | 57 | 必选 | SMF侧的PFCP会话端点标识 |
| Create PDR | 1 | 必选(可多个) | 创建包检测规则 |
| Create FAR | 3 | 必选(可多个) | 创建转发动作规则 |
| Create QER | 5 | 条件必选 | 创建QoS执行规则 |
| Create URR | 7 | 条件必选 | 创建使用量上报规则 |
| Create BAR | 9 | 可选 | 创建缓存动作规则 |
| Create Traffic Endpoint | 127 | 可选 | 流量端点信息(Rel-16+) |
| PDN Type | 13 | 可选 | IPv4/IPv6/IPv4v6/Ethernet |
| User Plane Inactivity Timer | 114 | 可选 | 用户面不活动超时 |
关键设计原则:PDR是规则的入口,通过ID引用关联到FAR、QER、URR。UPF收到数据包后,先按PDR的Precedence值从小到大匹配,命中后执行关联的FAR/QER/URR。
graph TB
subgraph "PFCP Session Establishment Request"
subgraph "PDR #1 (UL)"
p1[PDR ID = 1]
p1_prec[Precedence = 100]
p1_pdi[PDI: Source=ACCESS<br/>F-TEID=SMF分配<br/>SDF Filter]
p1 -->|关联| far1[FAR ID = 1<br/>FORWARD→CORE]
p1 -->|关联| qer1[QER ID = 1<br/>QFI=9, Gate=OPEN<br/>MBR UL/DL]
end
subgraph "PDR #2 (DL)"
p2[PDR ID = 2]
p2_prec[Precedence = 100]
p2_pdi[PDI: Source=CORE<br/>UE IP Addr<br/>SDF Filter]
p2 -->|关联| far2[FAR ID = 2<br/>FORWARD→ACCESS]
p2 -->|关联| qer1
end
subgraph "PDR #3 (DL Default)"
p3[PDR ID = 3]
p3_prec[Precedence = 255]
p3_pdi[PDI: Source=CORE<br/>UE IP Addr]
p3 -->|关联| far2
end
end
PDR(Packet Detection Rule)是整个规则注入体系的入口点。TS 29.244 Section 7.5.2.2定义了其结构:
PDI(Packet Detection Information)是PDR的核心,决定了UPF如何识别一个数据包:
| PDI子IE | 说明 | UL PDR取值 | DL PDR取值 |
|---|---|---|---|
| Source Interface | 包来源方向 | ACCESS(来自AN) | CORE(来自DN) |
| F-TEID | GTP-U隧道端标识 | SMF分配TEID,UPF填充IP | UPF分配(Response返回) |
| UE IP Address | 用户IP | 可选(F-TEID已足够) | 必选(DN侧无隧道) |
| SDF Filter | 业务流过滤器 | 如 permit out ip from <UE_IP> to <DN> 80 |
对应下行方向 |
| Application ID | 应用识别 | 可选 | 可选(代替SDF Filter) |
Precedence(优先级):数值越小优先级越高。当多个PDR匹配同一数据包时,选择Precedence最小的。典型取值:
| Precedence范围 | 用途 | 设计意图 |
|---|---|---|
| 1-32 | 运营商专有业务 | 最高优先保障 |
| 33-64 | IMS语音/VoNR | 语音业务优先 |
| 65-128 | 普通签约业务 | SDF Filter匹配 |
| 129-254 | Default Bearer | 兜底匹配 |
| 255 | Lowest Default | 完全兜底 |
Outer Header Removal:UL PDR通常设置值为0(移除GTP-U/UDP/IP外层头),DL PDR通常不设置(需要保留或添加GTP-U封装)。
FAR决定了匹配到PDR的数据包应该执行什么动作:
| FAR子IE | 取值 | 说明 |
|---|---|---|
| Apply Action | FORWARD/DROP/BUFFER/NOTIFY/DUPLICATE | 最核心的4bit标志位 |
| Destination Interface | ACCESS / CORE / SGi-LAN / CP-function | FORWARD时的目标方向 |
| Network Instance | DNN字符串 | 路由到特定DN实例 |
| F-TEID | UPF分配或SMF指定 | GTP-U封装用的隧道端 |
| Outer Header Creation | GTP-U/UDP/IPv4等 | 封装外层头 |
典型配置模式:
QER(QoS Enforcement Rule)是5G QoS Flow到UPF执行面的映射桥梁:
| QER子IE | 说明 | 典型取值 |
|---|---|---|
| QER ID | 唯一标识 | 1 |
| Gate Status | OPEN/CLOSED | OPEN(放行) |
| Maximum Bit Rate (UL) | 上行最大速率 | 来自PCF授权的MBR |
| Maximum Bit Rate (DL) | 下行最大速率 | 来自PCF授权的MBR |
| Guaranteed Bit Rate (UL) | 上行保障速率 | 仅GBR QoS Flow |
| Guaranteed Bit Rate (DL) | 下行保障速率 | 仅GBR QoS Flow |
| QoS Flow Identifier (QFI) | 5QI到QoS Flow的映射 | 如QFI=9(non-GBR), QFI=1(GBR) |
| Packet Rate (UL/DL) | 包速率限制 | Rel-17+用于URLLC |
| DL Buffering Duration | 下行缓存时长 | 可选 |
N4会话建立中有一个重要的设计选择:F-TEID由谁分配?这直接影响信令交互次数和时延。
sequenceDiagram
participant SMF
participant UPF
rect rgb(220,240,255)
Note over SMF,UPF: 模式一:SMF预分配(CH=0)
SMF->>UPF: PFCP Session Est. Request<br/>PDR包含完整F-TEID(IP+TEID)
UPF-->>SMF: PFCP Session Est. Response<br/>无需返回F-TEID
Note right of SMF: 优点:Response更轻<br/>缺点:SMF需知道UPF IP
end
rect rgb(255,240,220)
Note over SMF,UPF: 模式二:UPF分配(CH=1)
SMF->>UPF: PFCP Session Est. Request<br/>PDR中F-TEID仅设CH=1
UPF-->>SMF: PFCP Session Est. Response<br/>返回UPF分配的F-TEID
Note right of SMF: 优点:SMF无需知道UPF IP<br/>缺点:需等Response
end
end
F-TEID IE中有一个关键bit:CH(Choose)= 1时,表示请求UPF自行分配F-TEID。
| 场景 | CH值 | 谁分配 | 为什么 |
|---|---|---|---|
| UL PDR, SMF预知UPF地址 | 0 | SMF | SMF已知UPF的N3地址 |
| DL PDR, UPF需要暴露N3地址 | 1 | UPF | UPF知道自己的N3接口地址 |
| UL PDR, SMF不知道UPF地址 | 1 | UPF | UPF动态分配 |
| I-UPF(中间UPF) | 1 | UPF | 中间UPF自行决定 |
设计意图:5G UPF可以有多组IP地址(N3/N9侧、N6侧),SMF不一定知道UPF会使用哪个接口的IP,因此让UPF自己分配更灵活。在SSC Mode 2/3的UPF重选场景中,新UPF的地址未知,CH=1是必须的。
UPF在成功处理PFCP Session Establishment Request后,返回Response消息(TS 29.244 Section 7.5.2.2):
| IE名称 | 说明 | 关键场景 |
|---|---|---|
| Cause | 成功/失败原因 | Success / RequestRejected |
| F-SEID | UPF侧会话端点 | UPF标识此会话 |
| Created PDR | PDR创建结果 | 包含UPF分配的F-TEID |
| Cause(per PDR) | 每条PDR的创建结果 | 粒度更细的失败诊断 |
| Usage Report | 可选,即时使用量 | URR触发 |
| F-TEID(in Created PDR) | UPF分配的隧道端 | DL PDR的N3 F-TEID |
stateDiagram-v2
[*] --> SMF_ConstructRules: SMF收到PCF PCC Rules
SMF_ConstructRules --> Send_PFCP_Est_Req: 构造PDR/FAR/QER/URR
Send_PFCP_Est_Req --> Wait_Response: 等待UPF响应
Wait_Response --> Success: Cause=Success
Wait_Response --> Failure: Cause=RequestRejected
Wait_Response --> PartialSuccess: 部分PDR失败
Success --> Check_FTEID: 提取UPF分配的F-TEID
Check_FTEID --> Build_N2SM: 构造N2 SM Information
Build_N2SM --> Send_N1N2_ToAMF: 发给AMF
Failure --> Select_NewUPF: 重选UPF
Select_NewUPF --> Send_PFCP_Est_Req
PartialSuccess --> EvaluateFailure: 评估失败PDR
EvaluateFailure --> Success: 核心PDR成功→继续
EvaluateFailure --> Failure: 核心PDR失败→重选
5G允许一个PDU会话内建立多个QoS Flow,每个Flow有不同的5QI。N4会话建立时,SMF需要为每个QoS Flow创建独立的PDR+QER组合。
典型配置(VoNR场景:1个Default + 1个IMS Signaling + 1个Voice):
| PDR ID | 方向 | Precedence | SDF Filter | 关联QER(QFI) | 关联FAR |
|---|---|---|---|---|---|
| 1 | UL | 50 | SIP信令(5060/5061) | QER1(QFI=5) | FAR1→CORE |
| 2 | DL | 50 | SIP信令(5060/5061) | QER1(QFI=5) | FAR2→ACCESS |
| 3 | UL | 30 | RTP语音(media) | QER2(QFI=1,GBR) | FAR1→CORE |
| 4 | DL | 30 | RTP语音(media) | QER2(QFI=1,GBR) | FAR2→ACCESS |
| 5 | UL | 255 | 无(匹配所有) | QER3(QFI=9) | FAR1→CORE |
| 6 | DL | 255 | 无(匹配所有) | QER3(QFI=9) | FAR2→ACCESS |
关键设计: - 语音RTP包Precedence=30,优先于SIP信令Precedence=50和Default的255 - QER2包含GBR保障参数,确保语音速率 - Default PDR作为兜底,QFI=9(non-GBR),Precedence=255
SMF在构造PFCP Session Establishment Request时,必须确保引用完整性:
graph TD
subgraph "规则引用校验"
PDR1_UL["PDR#1(UL)<br/>SIP→QFI5"] -->|"FAR ID"| FAR_UL["FAR#1<br/>FWD→CORE"]
PDR1_UL -->|"QER ID"| QER1["QER#1<br/>QFI=5,MBR"]
PDR1_UL -->|"URR ID"| URR1["URR#1<br/>Volume Threshold"]
PDR2_DL["PDR#2(DL)<br/>SIP→QFI5"] -->|"FAR ID"| FAR_DL["FAR#2<br/>FWD→ACCESS"]
PDR2_DL -->|"QER ID"| QER1
PDR3_UL["PDR#3(UL)<br/>RTP→QFI1"] -->|"FAR ID"| FAR_UL
PDR3_UL -->|"QER ID"| QER2["QER#2<br/>QFI=1,GBR"]
PDR4_DL["PDR#4(DL)<br/>RTP→QFI1"] -->|"FAR ID"| FAR_DL
PDR4_DL -->|"QER ID"| QER2
PDR5_UL["PDR#5(UL)<br/>Default→QFI9"] -->|"FAR ID"| FAR_UL
PDR5_UL -->|"QER ID"| QER3["QER#3<br/>QFI=9"]
PDR6_DL["PDR#6(DL)<br/>Default→QFI9"] -->|"FAR ID"| FAR_DL
PDR6_DL -->|"QER ID"| QER3
end
style PDR3_UL fill:#ff9999
style PDR4_DL fill:#ff9999
style PDR1_UL fill:#99ccff
style PDR2_DL fill:#99ccff
style PDR5_UL fill:#cccccc
style PDR6_DL fill:#cccccc
| 维度 | 5G N4 (TS 29.244) | 4G CUPS Sx (TS 29.244 R14) |
|---|---|---|
| 协议名 | PFCP | PFCP(同一协议,但功能差异) |
| 核心规则集 | PDR/FAR/QER/URR/BAR/MAR | 相同(但字段差异) |
| QoS映射 | QFI(QoS Flow Identifier) | EPS Bearer ID / TFT |
| 隧道封装 | GTP-U on N3/N9 | GTP-U on S1-U/S5/S8 |
| SDF Filter | 支持Ethernet PDU类型 | 仅IP类型 |
| F-TEID CH模式 | 支持(CH=1) | 支持 |
| UL CL/BP支持 | 原生支持(Rel-15+) | 不支持 |
| 时间敏感网络 | 支持(Rel-16+,QER增加Packet Rate) | 不支持 |
| 多路由 | FAR支持Duplicate + MAR | FAR仅Forward/Drop |
| Release | Rel-15~Rel-19持续增强 | Rel-14~Rel-15 |
核心差异解读:5G N4最大的增强在于QER引入QFI取代了EPS的Bearer级别QoS,以及FAR的Duplicate能力支持了URLLC冗余传输场景(TS 23.501 Section 5.33.2.1)。
# 过滤PFCP Session Establishment Request
pfcp.message_type_value == 50
# 过滤PFCP Session Establishment Response
pfcp.message_type_value == 51
# 过滤特定SEID的会话
pfcp.seid == 0x1234567890abcdef
# 过滤Create PDR中的F-TEID
pfcp.f_teid
# 过滤特定QFI
pfcp.qfi == 9
| 故障现象 | 可能原因 | 排错方法 |
|---|---|---|
| Cause=RequestRejected | UPF资源不足(会话数/流表满) | 检查UPF会话容量和流表使用率 |
| UPF不返回F-TEID | CH=1但UPF不支持自分配 | 检查UPF能力集(PFCP Association Setup中UPF返回的Feature) |
| 数据面不通 | FAR中Destination Interface配置错误 | 抓包确认UL→CORE, DL→ACCESS方向 |
| QoS不生效 | QER Gate Status=CLOSED | 检查PCF授权结果,Gate应为OPEN |
| 包匹配不到PDR | Precedence设置冲突 | 检查PDR优先级顺序和SDF Filter语法 |
| UPF丢弃默认包 | 无Default PDR(Precedence=255) | 确认至少有一条兜底PDR |
| N4 Session Est超时 | UPF PFCP端口不可达 | ping UPF PFCP端口(通常DSCP=48) |
| ## 九、N4会话修改与建立的协同博弈 |
N4会话建立并非一次性完成所有规则注入。实际部署中,Session Establishment + Session Modification的配合才是完整的数据面通路打通过程:
这种"先建后改"的设计,是因为SMF在N4 Session Establishment阶段还不知道(R)AN的隧道信息(要等N2交互后才知道),所以DL FAR的目标隧道地址在第一次Modification时才填充。
TS 29.244在Rel-18和Rel-19中引入了多项N4增强:
| 特性 | Release | 增强内容 |
|---|---|---|
| Ethernet PDU会话增强 | Rel-18 | 支持Ethernet类型的SDF Filter和MAC地址匹配 |
| 时间敏感通信(TSC) | Rel-18 | QER增加Port Management Information Container |
| ATPP(Anti-Spoofing) | Rel-18 | PDR增加Source MAC Address验证 |
| 网络切片增强 | Rel-18 | 支持S-NSSAI关联到Network Instance |
| Red Cap UE优化 | Rel-18 | PDR匹配简化 |
| 多路径传输 | Rel-19 | FAR支持多路径转发(MAR规则增强) |
| AI/ML流量识别 | Rel-19 | PDI增加ML-based Application Detection |
Q1: N4 Session Establishment中UL和DL方向是否必须各创建至少一个PDR?
A: 是的。根据TS 29.244,一个N4会话必须包含至少一个UL方向(Source Interface=ACCESS)和一个DL方向(Source Interface=CORE)的PDR,以确保双向数据通路。但在某些特殊场景(如仅下行推送),可能只创建DL PDR。
Q2: SDF Filter和Application ID在PDR中可以同时使用吗?
A: 不建议。TS 29.244规定PDI中的SDF Filter和Application ID是互斥的检测条件。如果同时存在,UPF的行为取决于实现。SDF Filter基于五元组精确匹配,Application ID基于DPI/深度包检测,适用于无法用五元组定义的应用流量。
Q3: UPF返回Cause=RequestRejected时,SMF应该如何处理?
A: TS 23.502 Section 4.3.2.2.1规定SMF应:①记录日志并上报网管;②如果有备选UPF(同S-NSSAI/DNN),触发UPF重选并重新发起N4 Session Establishment;③如果没有备选UPF,向UE返回PDU Session Establishment Reject(Cause=27 "Missing or unknown DNN"或Cause=67 "Insufficient resources")。
Q4: 多个QER引用同一个QFI时,UPF如何处理速率限制?
A: UPF在执行QoS速率限制时,会按照Session-AMBR(会话级聚合最大速率)和Flow-GBR/MBR(流级速率)两级执行。同一QFI的多个PDR引用的QER中的MBR应该一致(由SMF确保),UPF在实现上通常会对同一QFI的PDR共享速率计数器。
Q5: N4会话建立和PFCP Association Setup是什么关系?
A: PFCP Association Setup是节点级的握手(TS 29.244 Section 7.4.1),在N4会话建立之前完成。Association建立SMF与UPF之间的控制面连接,交换能力集(UPF Features、SMF Features)。N4 Session Establishment是会话级操作,在Association之上创建具体的PDU会话规则。一个Association可以承载多个N4 Session。
本文由「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 等场景全覆盖。
