Description
Disjunctive Normal Form (DNF) is a canonical form of a logical formula consisting of a disjunction (OR operation) of one or more conjunctions (AND operations) of literals. In 3GPP standards, DNF is adopted as a structured data model to represent complex conditions or predicates in a standardized, unambiguous way. This is crucial for scenarios where network functions need to evaluate multiple criteria against a set of rules, such as in policy control, network exposure, or service parameter provisioning.
Within the 3GPP architecture, DNF is specified for use in APIs and information models, notably in the Common API Framework (CAPIF) and the Network Exposure Function (NEF). It provides a formal method to encode conditions like "(Condition A AND Condition B) OR (Condition C AND Condition D AND NOT Condition E)". Each literal within a conjunction can represent a specific network parameter, user attribute, location, time, or service characteristic. The entire DNF expression evaluates to TRUE if at least one of its constituent conjunctions evaluates to TRUE.
The role of DNF is to enable dynamic and flexible policy enforcement. For example, a service provider can define a policy for a new application where enhanced QoS is granted only if the user is in a specific location (literal 1) AND is subscribed to a premium plan (literal 2) AND the network slice is available (literal 3). This entire conjunction forms one clause. An alternative clause could be for roaming scenarios. By using DNF, the network can programmatically parse and evaluate these multi-dimensional conditions without ambiguity, which is essential for automation in 5G and beyond networks.
Purpose & Motivation
The purpose of standardizing Disjunctive Normal Form in 3GPP is to address the growing complexity of network policies and service requirements in 5G systems. Previous approaches often relied on proprietary or ad-hoc condition representations within network functions, which hindered interoperability and made automated policy management difficult. As networks evolved to support network slicing, edge computing, and diverse IoT services, the need for a robust, formal language to express intricate service logic became paramount.
DNF was introduced to provide a common, mathematically sound foundation for expressing conditions across different 3GPP domains. It solves the problem of ambiguity in policy rules, ensuring that a condition defined by one network function (e.g., a Policy Control Function) is interpreted identically by another (e.g., a Session Management Function). This is critical for end-to-end service assurance and for exposing network capabilities to third-party applications in a predictable manner through APIs like those provided by the NEF.
Historically, policy conditions were often hard-coded or described in natural language within specifications, leading to implementation variances. The adoption of DNF, starting in Release 15, aligns with the broader 3GPP move towards service-based architectures and software-defined networking principles, where dynamic, data-driven configuration is key. It provides the necessary formalism to enable machine-to-machine communication of complex business and operational rules.
Key Features
- Standardized logical expression format for unambiguous condition representation
- Supports complex combinations of AND, OR, and NOT operations
- Enables machine-readable policy and service requirement definitions
- Facilitates interoperability between different network functions and external applications
- Used in 3GPP APIs for network exposure and policy control (e.g., NEF, CAPIF)
- Provides a foundation for dynamic, automated network decision-making and service provisioning
Evolution Across Releases
Initial introduction of DNF as a standardized data type in 3GPP specifications, primarily within the Common API Framework (CAPIF, TS 29.222) and study items for network automation. It was defined to model conditions for API exposure and policy management, establishing the foundational syntax and usage principles.
Defining Specifications
| Specification | Title |
|---|---|
| TS 29.501 | 3GPP TS 29.501 |
| TS 38.810 | 3GPP TR 38.810 |
| TS 38.884 | 3GPP TR 38.884 |