Description
Performance-oriented Congestion Control (PCC) is a comprehensive framework within 3GPP standards that provides dynamic policy control and charging functionality for IP-based services. It is a cornerstone of the Evolved Packet Core (EPC) in LTE and 5G systems, though its origins trace back to Release 7. The PCC architecture centralizes decision-making for QoS and charging, allowing network operators to apply precise controls per user and per service flow. At its heart, PCC involves key functional entities: the Policy and Charging Rules Function (PCRF), the Policy and Charging Enforcement Function (PCEF), the Application Function (AF), and the Subscription Profile Repository (SPR) or Unified Data Repository (UDR). These elements work in concert to authorize resources, enforce policies, and ensure appropriate charging based on real-time inputs.
The PCC framework operates through a series of standardized interfaces, primarily the Gx interface between PCRF and PCEF, the Rx interface between PCRF and AF, and the Sy interface between PCRF and OCS (Online Charging System). How it works begins with the establishment of an IP-CAN (IP Connectivity Access Network) session by the User Equipment (UE). The PCEF, typically residing in the Packet Data Network Gateway (PGW) in LTE or the SMF/UPF in 5G, detects the session and requests policy rules from the PCRF via Gx. The PCRF then makes decisions by consolidating information from multiple sources: subscriber data from SPR/UDR (e.g., allowed services, QoS profiles), service information from AF (e.g., required bandwidth for a video stream), and network status from internal policies or the Traffic Detection Function (TDF). It then provisions these decisions as PCC rules to the PCEF for enforcement.
Key components of PCC include PCC rules, which are sets of information enabling the detection of a service data flow and defining parameters for its treatment. Each PCC rule contains a rule identifier, service data flow filters (e.g., 5-tuple IP filters), precedence, QoS parameters (QCI, ARP, bitrates), charging information (metering method, charging key), and enforcement actions. The PCEF uses these rules to perform deep packet inspection (DPI) to identify flows, apply QoS marking (setting DSCP or allocating bearer resources), rate limit, and generate charging data records (CDRs) or interact with online charging systems. This allows for granular control, such as prioritizing VoIP traffic over best-effort web browsing or applying zero-rating for specific applications.
PCC's role extends beyond basic QoS; it is integral to network slicing, edge computing, and network automation in 5G. In 5G Core, the Policy Control Function (PCF) assumes the PCRF role, interacting with the Session Management Function (SMF) via the N7 interface. PCC principles enable dynamic policy adjustments based on network slicing SLAs, location changes, or congestion events. For instance, during network congestion, PCC can throttle non-essential traffic or offer sponsored data services. The framework supports both static policies (pre-configured) and dynamic policies (session-specific), providing flexibility for operators to innovate with service offerings while maintaining network performance and monetization.
Purpose & Motivation
PCC was created to address the limitations of static, pre-configured policy and charging mechanisms in earlier mobile data networks (e.g., GPRS). Before PCC, QoS and charging were often based on simple APN (Access Point Name) settings or subscriber profiles without real-time adaptability. This rigidity made it difficult for operators to offer differentiated services, manage network congestion dynamically, or implement sophisticated charging models like tiered data plans, zero-rating, or sponsored data. The explosion of IP-based services (video streaming, VoIP, IoT) in the mid-2000s demanded a more agile system that could respond to application needs and network conditions in real time.
The primary problem PCC solves is the efficient and monetizable management of scarce network resources amidst diverse traffic types. It enables operators to enforce policies that align with business objectives—for example, ensuring premium subscribers experience high-quality video while limiting heavy users during congestion. PCC also facilitates service innovation by allowing third-party application providers to interact with the network via the AF (e.g., through the Rx interface) to request specific QoS for their services, enabling partnerships and new revenue streams. This was a paradigm shift from network-as-a-pipe to network-as-a-service.
Historically, PCC's development in Release 7 was motivated by the convergence of IMS (IP Multimedia Subsystem) and non-IMS services over packet-switched domains. It provided a unified policy control framework for both, replacing earlier disjointed mechanisms like the Go interface for IMS. As networks evolved to LTE and 5G, PCC became even more critical due to increased data volumes, low-latency requirements, and network slicing. It addressed the need for automation in policy decision-making, reducing operational overhead and enabling real-time charging for on-demand services. PCC thus underpins modern mobile broadband economics, allowing operators to balance performance, fairness, and profitability in a competitive landscape.
Key Features
- Dynamic policy decision and enforcement per service data flow
- Integration with subscriber data, application requests, and network status
- Support for both online and offline charging integration
- Granular QoS control including QCI, ARP, and bandwidth parameters
- Deep packet inspection capabilities for service flow detection
- Standardized interfaces (Gx, Rx, Sy) for multi-vendor interoperability
Evolution Across Releases
PCC was initially introduced in Release 7 as part of the WCDMA/HSPA and early SAE/LTE work. It defined the core architecture with PCRF, PCEF, and AF, establishing dynamic policy and charging control for IP-based services, including IMS and non-IMS applications, via the Gx and Rx interfaces.
Defining Specifications
| Specification | Title |
|---|---|
| TS 23.060 | 3GPP TS 23.060 |
| TS 23.203 | 3GPP TS 23.203 |
| TS 23.207 | 3GPP TS 23.207 |
| TS 23.228 | 3GPP TS 23.228 |
| TS 23.282 | 3GPP TS 23.282 |
| TS 23.379 | 3GPP TS 23.379 |
| TS 23.401 | 3GPP TS 23.401 |
| TS 23.434 | 3GPP TS 23.434 |
| TS 23.468 | 3GPP TS 23.468 |
| TS 23.503 | 3GPP TS 23.503 |
| TS 23.701 | 3GPP TS 23.701 |
| TS 23.722 | 3GPP TS 23.722 |
| TS 23.780 | 3GPP TS 23.780 |
| TS 23.799 | 3GPP TS 23.799 |
| TS 23.803 | 3GPP TS 23.803 |
| TS 23.975 | 3GPP TS 23.975 |
| TS 24.229 | 3GPP TS 24.229 |
| TS 24.281 | 3GPP TS 24.281 |
| TS 24.379 | 3GPP TS 24.379 |
| TS 24.980 | 3GPP TS 24.980 |
| TS 26.501 | 3GPP TS 26.501 |
| TS 26.510 | 3GPP TS 26.510 |
| TS 26.512 | 3GPP TS 26.512 |
| TS 26.802 | 3GPP TS 26.802 |
| TS 26.804 | 3GPP TS 26.804 |
| TS 26.822 | 3GPP TS 26.822 |
| TS 26.924 | 3GPP TS 26.924 |
| TS 26.928 | 3GPP TS 26.928 |
| TS 26.998 | 3GPP TS 26.998 |
| TS 28.318 | 3GPP TS 28.318 |
| TS 29.061 | 3GPP TS 29.061 |
| TS 29.201 | 3GPP TS 29.201 |
| TS 29.213 | 3GPP TS 29.213 |
| TS 29.214 | 3GPP TS 29.214 |
| TS 29.215 | 3GPP TS 29.215 |
| TS 29.217 | 3GPP TS 29.217 |
| TS 29.244 | 3GPP TS 29.244 |
| TS 29.512 | 3GPP TS 29.512 |
| TS 29.513 | 3GPP TS 29.513 |
| TS 29.514 | 3GPP TS 29.514 |
| TS 29.806 | 3GPP TS 29.806 |
| TS 29.809 | 3GPP TS 29.809 |
| TS 29.810 | 3GPP TS 29.810 |
| TS 29.816 | 3GPP TS 29.816 |
| TS 29.817 | 3GPP TS 29.817 |
| TS 29.827 | 3GPP TS 29.827 |
| TS 29.866 | 3GPP TS 29.866 |
| TS 29.890 | 3GPP TS 29.890 |
| TS 32.251 | 3GPP TR 32.251 |
| TS 32.255 | 3GPP TR 32.255 |
| TS 32.279 | 3GPP TR 32.279 |
| TS 32.296 | 3GPP TR 32.296 |
| TS 32.298 | 3GPP TR 32.298 |
| TS 32.409 | 3GPP TR 32.409 |
| TS 32.808 | 3GPP TR 32.808 |
| TS 32.843 | 3GPP TR 32.843 |
| TS 32.862 | 3GPP TR 32.862 |
| TS 33.827 | 3GPP TR 33.827 |
| TS 36.101 | 3GPP TR 36.101 |
| TS 36.300 | 3GPP TR 36.300 |
| TS 36.714 | 3GPP TR 36.714 |
| TS 36.715 | 3GPP TR 36.715 |
| TS 36.716 | 3GPP TR 36.716 |
| TS 36.833 | 3GPP TR 36.833 |
| TS 37.579 | 3GPP TR 37.579 |
| TS 37.901 | 3GPP TR 37.901 |
| TS 38.133 | 3GPP TR 38.133 |
| TS 38.716 | 3GPP TR 38.716 |
| TS 38.717 | 3GPP TR 38.717 |