首页 › core-network › 5G PCF PCC规则下发拆解

5G PCF 策略控制会话管理与 PCC 规则下发机制全链拆解

一、为什么 PCF 是 5GC 的"指挥中枢"

在 5G 系统(5GS)中,策略与计费控制(Policy and Charging Control, PCC) 是把"商业意图"翻译成"网络行为"的核心枢纽。无论是运营商的资费套餐、AF(应用功能)下发的低时延业务需求,还是网络切片的 SLA 保障,最终都要落到一个具体的网元——PCF(Policy Control Function) 上做决策,再以 PCC 规则(PCC Rule) 的形式下发到 SMF,由 SMF 翻译成 QoS Flow,最终在 UPF 与 (R)AN 上执行。

PCF 在架构上等价于 4G EPC 中的 PCRF,但有一个本质区别:5GC 全面采用 SBI(Service Based Interface,基于服务的接口),PCF 对外暴露的是标准化 RESTful 服务,而非 4G 时代的 Diameter Gx 接口。这使得 PCF 的每一次策略决策,都是一次清晰的 HTTP/2 资源操作,可被云原生地编排、负载均衡和抓包分析。

本文聚焦 TS 23.502 §4.3.2.2.1(PDU 会话建立)中 PCF 的具体交互,结合 TS 29.513(Npcf_SMPolicyControl 服务)、TS 29.512(策略数据模型)、TS 23.503(PCC 架构)和 TS 23.501 §5.7.1(QoS Flow 绑定),把 SM Policy Association 建立 → SmPolicyDecision 下发 → PCC 规则到 QoS Flow 的绑定执行 这条全链路拆解到底。

二、PCC 架构与关键接口全景

5G 的 PCC 体系由控制面(PCF、SMF)与数据面(UPF)协同构成,PCF 通过两条核心服务对外提供策略:

服务(SBI) 接口 消费者 规范 作用域
Npcf_SMPolicyControl N7 SMF TS 29.513 会话级 QoS、门控、计费策略
Npcf_AMPolicyControl N15 AMF TS 29.514 接入与移动性策略(业务区限制、RFSP)
Npcf_BDTPolicyControl N7 SMF TS 29.513 背景数据传送策略
Npcf_PolicyAuthorization N5/N30 AF/NEF TS 29.514 AF 请求业务 QoS/门控授权

此外,PCF 还会通过 Nudr(UDR)获取签约策略数据,通过 Nudm_SDM 获取用户数据,通过 NEF/CHF 与外部交互。本文聚焦最核心的 Npcf_SMPolicyControl(N7)。

下图给出策略决策的来源与下发全景:

graph LR
    UDM[UDM<br/>签约策略] -->|签约数据| PCF
    AF[AF<br/>业务QoS需求] -->|N5/N30| PCF
    NEF[NEF<br/>第三方能力开放] -->|N30| PCF
    UDR[UDR<br/>策略数据存储] -->|Nudr| PCF
    CHF[CHF<br/>计费/配额] <-.计费关联.-> PCF

    PCF[PCF<br/>策略决策中心]
    PCF -->|N7 SBI<br/>SmPolicyDecision| SMF
    SMF -->|PCC Rule→QoS Flow绑定| UPF
    SMF -->|QoS规则下发N1| UE
    SMF -->|QFI/QoS参数NGAP| RAN[gNB]

    style PCF fill:#d4edda,stroke:#28a745,stroke-width:2px
    style SMF fill:#cce5ff,stroke:#007bff
    style UPF fill:#fff3cd,stroke:#ffc107

三、SM Policy Association 建立完整信令时序

SM Policy Association 是 SMF 与 PCF 之间围绕一个 PDU 会话建立的一个策略会话(association),生命周期与该 PDU 会话绑定。其建立时机嵌在 PDU 会话建立流程(TS 23.502 §4.3.2.2.1) 的第 6~7 步之间。完整时序如下:

sequenceDiagram
    autonumber
    participant UE
    participant AMF
    participant SMF
    participant PCF
    participant UPF
    participant RAN as gNB

    Note over UE,RAN: 前置:注册完成,UE发起PDU会话建立
    UE->>AMF: NAS PDU Session Establishment Request<br/>(DNN, S-NSSAI, Request Type)
    AMF->>SMF: Nsmf_PDUSession_CreateSMContext<br/>(SUPI, DNN, S-NSSAI, PCF Id?)
    Note over SMF: SMF选择PCF(本地配置或NRF发现)
    SMF->>PCF: Npcf_SMPolicyControl POST /sm-policies<br/>(SUPI, DNN, S-NSSAI, IPv4, IPv6Prefix,<br/>SubscSessAmbr, notifUri, pdusessionid,<br/>subsDefQos, ipv4FrameRouteList)
    Note over PCF: PCF评估签约+运营商策略+AF订阅
    PCF->>UDR: Nudr_Query策略数据(可选)
    PCF-->>SMF: 201 Created + SmPolicyDecision<br/>(sessRules, pccRules, qosDecs,<br/>chgDecs, umDecs, policyCtrlReqTriggers)
    Note over SMF: SMF执行PCC Rule→QoS Flow绑定
    SMF->>UPF: N4 PFCP Session Establishment<br/>(PDR/FAR/QER/URR安装, 门控/限速/计费)
    SMF->>RAN: N2 PDU Session Resource Setup<br/>(PDU Session Res Setup List, QFI, QoS Flow parms)
    SMF->>AMF: N1 SM容器: PDU Session Establishment Accept<br/>(QoS Rules, Session AMBR)
    AMF->>UE: 转发 NAS 消息
    UE-->>AMF: 上行数据已可传输
    Note over SMF,PCF: 运行期:触发条件命中→SM Policy Update
    SMF->>PCF: POST /sm-policies/{id}/update<br/>(policyCtrlReqTriggers报告)
    PCF-->>SMF: SmPolicyUpdate / SmPolicyDecision
    Note over SMF,PCF: 网络侧主动变更→PolicyUpdateNotification
    PCF->>SMF: POST {notifUri}/update (callback)<br/>(更新/删除PCC规则)
    Note over SMF,PCF: 会话释放→删除关联
    SMF->>PCF: DELETE /sm-policies/{id}
    PCF-->>SMF: 204 No Content

逐步解析关键信息元素

第 3 步 POST /sm-policies(SMF → PCF) 是 SM Policy Association 建立的请求消息,其请求体为 SmPolicyContext,核心 IE 如下:

IE(请求方向) 含义 作用
supi 用户永久标识 PCF 据此查 UDR/UDM 签约
pduSessionId PDU 会话标识 关联策略到具体会话
pduSessionType IPv4/IPv6/Ethernet 影响计费与门控类型
dnn 数据网络名 决定 APN 级策略
snssai 网络切片标识 切片级策略匹配
ipv4Address / ipv6AddressPrefix UE IP 计费、门控、监控绑定
subsSessAmbr 签约会话 AMBR 默认 Session Rule 限速依据
subsDefQos 签约默认 QoS(5QI/ARP) 默认 QoS Flow 的 QoS
notifUri 回调 URI PCF 主动推送策略变更用
altNotifIpv4/6Addrs 冗余回调地址 SMF 集群冗余保障
subsPlmnVar / ratType PLMN/接入类型 漫游与异构接入差异化

第 4 步 SmPolicyDecision(PCF → SMF) 是整个策略下发机制的"灵魂",其结构由 TS 29.512 定义,是一个组合对象,包含若干并列的策略元素集合。

四、SmPolicyDecision 数据结构深度拆解

SmPolicyDecision 并不是一张扁平的规则表,而是按"职责分离"原则拆成多个独立数组,SMF 再通过 qosId/chgId/pccRuleId 等引用键将它们组合使用。这种设计的好处是:QoS 参数、计费参数、门控参数可以独立更新而不必重传整个规则。

classDiagram
    class SmPolicyDecision {
        +assocId: string
        +sessRules: SessionRule[]
        +pccRules: PccRule[]
        +qosDecs: QosData[]
        +chgDecs: ChargingData[]
        +umDecs: UsageMonitoringData[]
        +policyCtrlReqTriggers: PolicyCtrlReqTrigger[]
        +qosFlowUsage: enum
        +ueIPv4Reserv / ueIPv6Reserv
    }
    class SessionRule {
        +policyRuleId
        +refQosData: qosId
        +refCondData
        +sessRulesFlags
        +authSessAmbr
        +authDefQos
    }
    class PccRule {
        +pccRuleId
        +refQosData: qosId
        +refChgData: chgId
        +refUmData: umId
        +refAccData
        +precedence: int
        +appRef
        +flowInfos: FlowInformation[]
        +urlCodec
        +gateStatus: OPEN/CLOSED
    }
    class QosData {
        +qosId
        +5qi: int
        +arp: ARP
        +maxbrUl/Dl: bit rate
        +gbrUl/Dl: bit rate
        +qnc: bool
        +priorityLevel
        +averWindow
        +maxDataBurstVol
    }
    class ChargingData {
        +chgId
        +ratingGroup
        +offLin / onLine: bool
        +meteringMethod
        +reportingLevel
    }

    SmPolicyDecision "1" o-- "*" SessionRule
    SmPolicyDecision "1" o-- "*" PccRule
    SmPolicyDecision "1" o-- "*" QosData
    SmPolicyDecision "1" o-- "*" ChargingData
    PccRule --> QosData : refQosData
    PccRule --> ChargingData : refChgData
    SessionRule --> QosData : refQosData

PCC Rule 关键 IE 参数说明

PCC Rule(PccRule)是 SmPolicyDecision 中最核心的策略单元,下表逐一说明其关键字段:

PCC Rule IE 类型 含义与设计意图
pccRuleId string 规则唯一标识,SMF/UPF 用作安装键
precedence int 过滤匹配优先级,值越小优先级越高;多个规则匹配同一流时取最高优先
refQosData qosId 引用 QosData,提供 5QI/ARP/GBR/MBR
refChgData chgId 引用计费数据(计费键/评级组)
refUmData umId 引用使用量监控(流量配额)
flowInfos list SDF 过滤器集合(IP 5 元组:源/目的 IP、端口、协议),定义本规则管控的业务流
appRef AppId 基于应用检测(ADC)匹配,无需精确 5 元组
gateStatus OPEN/CLOSED 门控状态,CLOSED 时 UPF 丢弃匹配分组
urlCodec string URL 级别匹配(深度业务识别)
ruleStatus ACTIVE/INACTIVE 规则是否立即生效

设计意图剖析:5G 把 QoS、门控、计费三类参数从 PCC Rule 中"剥离"成独立对象,再用引用键关联,是相比 4G 的一个重要演进。4G 的 PCC Rule 把 QCI/ARP/MBR/GBR/Gate/ChargingKey 全塞进一条规则;5G 拆分后,运营商在更新"限速参数"时只需重传 qosDecs 数组,无需重传整套规则,显著降低了 N7 信令开销——这对高频策略变更的 5G 切片/边缘场景尤为关键。

五、核心机制:PCC Rule 到 QoS Flow 的绑定算法

PCC 规则下发的最终落点是创建/修改 QoS Flow。SMF 收到 SmPolicyDecision 后,并不是简单地为每条 PCC Rule 新建一个 QoS Flow,而是执行 TS 23.501 §5.7.1 定义的 QoS Flow 绑定(QoS Flow Binding) 算法。这是整个策略执行机制中最精妙、也最容易被误解的一环。

绑定参数

SMF 把以下 PCC Rule 派生参数作为"绑定指纹",判断一条已有 QoS Flow 是否可复用:

绑定参数 来源 作用
5QI QosData QoS 等级,决定是否同流
ARP QosData 分配保留优先级(抢占/被抢占)
Priority Level QosData 调度优先级(若 5QI 非标准化)
QNC QosData QoS 通知控制标志
Averaging Window QosData GBR 平均窗口
Maximum Data Burst Volume QosData 最大数据突发量

绑定决策流程

flowchart TD
    A[SMF收到新PCC Rule] --> B{是否为默认QoS规则<br/>PCF指定绑定默认流?}
    B -->|是| C[绑定到默认QoS Flow<br/>关联DNN默认路由]
    B -->|否| D{是否存在QoS Flow<br/>其QoS参数与绑定指纹完全一致?}
    D -->|是| E[复用该QoS Flow<br/>绑定PCC Rule到已有流<br/>不新建N4/N2资源]
    D -->|否| F{5QI是否为GBR类型?}
    F -->|是 GBR 5QI| G[新建GBR QoS Flow<br/>携带GBR/MBR<br/>触发PDU会话修改/资源预留]
    F -->|否 Non-GBR 5QI| H[新建Non-GBR QoS Flow<br/>受Session-AMBR约束<br/>无独立带宽保证]
    G --> I[执行QoS Flow建立:<br/>N4 PFCP安装QER/PDR<br/>N2 QoS Flow Setup<br/>N1 QoS Rule下发UE]
    H --> I
    E --> J[仅更新PDR/SDF过滤器绑定<br/>无需新建N2资源]
    C --> J

    style A fill:#e3f2fd
    style G fill:#fff9c4
    style H fill:#f1f8e9
    style I fill:#d4edda

算法要点解读:

  1. 复用优先:SMF 优先判断能否把新 PCC Rule 绑定到一条 QoS 参数完全相同的已有 QoS Flow。若可复用,则只需在 UPF 更新 PDR(包检测规则)的 SDF 过滤器绑定,不触发空口 N2 信令,这对减少信令风暴意义重大。

  2. GBR 与 Non-GBR 分流:若绑定指纹无匹配流,则按 5QI 类型新建。GBR 类型(如 5QI=1 语音、5QI=2/3/4 会话类、5QI=82~85 URLLC)会建立带独立带宽保证的 GBR QoS Flow,触发空口资源预留(gNB 准入控制);Non-GBR 流则共享 Session-AMBR,无独立保证。

  3. 默认 QoS Flow 特殊处理:每个 PDU 会话有且仅有一个"默认 QoS Flow",承载默认路由与默认计费策略,生命周期与会话相同,不可单独删除(除非删会话)。PCF 可显式指定某条 PCC Rule 绑定到默认流。

这一绑定算法解释了一个常见的现网困惑:为什么 PCF 下发了 10 条 PCC 规则,gNB 上却只看到 3 个 QoS Flow? 因为参数相同的规则被复用了。

六、动态 PCC 规则下发与策略控制请求触发条件

SM Policy Association 建立后并非静态。PCF 与 SMF 通过两类交互维持策略的动态性:

下表列出常见的 Policy Control Request Trigger(PCRT):

PCRT 触发条件 PCF 典型响应
PLMN_CHANGE UE 漫游到新 PLMN 调整漫游计费/路由策略
ACCESS_TYPE_CHANGE 3GPP↔Non-3GPP 切换 变更 QoS 参数与门控
PDU_SESSION_TYPE PDU 会话类型变化 重算计费策略
QOS_FLOW_ALLOCATION_FAILURE GBR 流准入失败 降级 QoS 或通知 AF
UE_IP_CHANGE UE IP 地址变更 更新门控/监控绑定
USAGE_REPORT 使用量达到阈值 续费配额或限速
RAT_CHANGE 接入技术变化(NR↔LTE) 调整 5QI 映射
REFLECTIVE_QOS 反射 QoS 触发 决定是否下发 RQI
SAT_BACKHAUL 卫星回传链路变化 特殊时延容错策略

七、实战连接:抓包识别与故障排查

抓包如何识别这个流程

N7 接口是 HTTP/2 over TLS 的 SBI,在抓包工具(Wireshark/tshark)中按以下特征过滤:

  1. 协议过滤:http2 且 http2.headers.authority 含 PCF 域名/IP。
  2. URI 过滤:请求行含 /npcf-smpolicycontrol/v1/sm-policies。
  3. 关联 SM Policy:用 pduSessionId + supi 关联同一会话的 Establish/Update/Delete。
  4. JSON 解析:SmPolicyDecision 是 JSON 请求体,Wireshark 可展开 pccRules、qosDecs、sessRules 数组。
  5. 端到端关联:N7 下发后,紧接着应在 N4(PFCP)看到 PFCP Session Establishment Request 含对应 QFI 的 QER,在 N2 看到 PDU Session Resource Setup Request。

常见故障点

故障现象 可能原因 排查思路
PCF 返回 4xx,PDU 会话建立失败 subsDefQos 取不到/UDR 签约缺失 查 SMF→UDR 鉴权取数、查 UDM/UDR 签约 QoS
PCC 规则下发但 QoS Flow 不生效 绑定算法选了复用旧流,SDF 过滤器未更新 核对 flowInfos 5 元组、UPF PDR 安装状态
GBR 业务卡顿 gNB 准入失败但 SMF 未收到 QOS_FLOW_ALLOCATION_FAILURE 确认 PCRT 是否下发、QNC 是否置位
计费错配 refChgData 引用的 ratingGroup 错误 对比 CHF 话单与 PCC 规则计费键
策略未更新 notifUri 回调失败(SMF 集群漂移) 检查回调 URI 与 altNotifIpv4Addrs 冗余
## 八、与 4G PCRF 的对比
维度 4G PCRF(Gx) 5G PCF(N7)
接口协议 Diameter(TCP/SCTP) HTTP/2 RESTful SBI
策略关联 IP-CAN Session SM Policy Association
规则载体 单条 PCC Rule 内含全部参数 拆分为 qosDecs/chgDecs 等独立数组,引用关联
QoS 单元 EPS Bearer QoS Flow(绑定算法更精细)
计费联动 通过 Gy/Gx 通过 CHF(Nchg)/N7 引用 chgDecs
切片感知 无(基于 APN) 原生 S-NSSAI 感知
动态推送 Gx RAR(Re-Auth-Request) PolicyUpdateNotification 回调

九、常见问题

Q1: SmPolicyDecision 里的 sessRules、pccRules、qosDecs 三者是什么关系? A: sessRules(会话规则)定义会话级默认策略(默认 QoS Flow、会话 AMBR);pccRules(PCC 规则)定义具体业务流策略;两者都不直接内含 QoS 参数,而是通过 refQosData 引用 qosDecs(QoS 数据数组)中的具体 5QI/ARP/GBR/MBR。这种"规则壳 + 参数对象"的引用解耦,是 5G PCC 相比 4G 的核心演进。

Q2: 一条 PCC Rule 是否一定对应一个新的 QoS Flow? A: 不一定。SMF 会按 QoS Flow 绑定算法(TS 23.501 §5.7.1)判断:若已有 QoS Flow 的 5QI/ARP/Priority/QNC/Averaging Window/MDBV 与新规则派生参数完全一致,则复用该流,仅在 UPF 更新 PDR 绑定,不新建 N2 资源。这就是为什么 PCF 下发多条规则,空口 QoS Flow 数量可能远少于规则数。

Q3: PCF 如何在不等 SMF 请求的情况下主动变更策略? A: SMF 在建立 SM Policy Association 时把 notifUri 注册给 PCF。当 AF 通过 N5/N30 发起新业务请求、或签约变更、或计费配额耗尽时,PCF 调用 PolicyUpdateNotification(POST {notifUri}/update)主动 install/modify/remove PCC 规则,SMF 再执行绑定与 PDU 会话修改。

Q4: 抓包时如何确认策略真正下发到了用户面? A: 在 N7 看到 SmPolicyDecision 后,必须在 N4(PFCP)看到对应的 QER(QoS Enforcement Rule,含 GBR/MBR/限速)和 PDR(含 SDF 过滤器与 QFI)安装,并在 N2 看到 QoS Flow 资源建立。仅 N7 成功而 N4 缺失,属于"策略存在于控制面但未落到用户面"的典型故障——3glteinfo 将其概括为"A policy update that never reaches the UPF is not real enforcement, only paperwork."

Q5: GBR QoS Flow 与 Non-GBR QoS Flow 在策略执行上有何本质区别? A: GBR 流(如 5QI=1/2/3/4/82~85)携带独立的 GBR/MBR,会触发 gNB 准入控制与空口资源预留,提供带宽保证;Non-GBR 流没有独立保证,多个 Non-GBR 流共享 Session-AMBR。PCF 通过 PCC Rule 引用的 QosData 中 5QI 是否为 GBR 类型,决定 SMF 走哪条绑定分支。

参考来源

  1. 3GPP TS 29.513 — Policy and Charging Control signalling flows; Stage 3 — Npcf_SMPolicyControl 服务定义、SmPolicyDecision、PolicyUpdateNotification
  2. 3GPP TS 23.503 — Policy and Charging Control System; Stage 2(ETSI 镜像)— PCC 架构、PCC Rule、Policy Decision 总体定义
  3. 3GLTEInfo — 5G PCC Policy Enforcement Call Flow — 端到端策略执行流程、节点角色、故障排查模式
  4. telecomHall — 5G QoS Flow Binding Process — PCC Rule 到 QoS Flow 绑定参数与算法详解
  5. free5GC — Mapping PCC Rules into Session Rules — 开源实现视角下 PCC Rule 到 Session Rule 映射机制

本文由「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 等场景全覆盖。

51学通信知识星球海报-扫码加入