Description
In 3GPP architecture, a Fully Qualified Domain Name (FQDN) is a fundamental identifier used within Uniform Resource Identifiers (URIs) to unambiguously locate resources in an IP network. An FQDN consists of a hostname and its parent domain(s), all the way up to the top-level domain (TLD), written as a dot-separated sequence (e.g., `nrf.epc.mnc001.mcc505.3gppnetwork.org`). It is 'fully qualified' because it leaves no ambiguity about the host's position in the DNS tree; it is an absolute path. Within 3GPP specifications, FQDNs are not just for web servers but are critically embedded in the service-based architecture (SBA) of the 5G Core (5GC) and the IP Multimedia Subsystem (IMS).
Mechanically, FQDNs work in conjunction with the Domain Name System (DNS). When a network function (NF), such as a Session Management Function (SMF), needs to communicate with another NF, like a Policy Control Function (PCF), it often constructs or is configured with a target FQDN. This FQDN follows a standardized naming convention defined by 3GPP (e.g., in TS 23.003). The requesting NF performs a DNS query (typically for NAPTR, SRV, or A/AAAA records) to resolve this FQDN into one or more IP addresses and port numbers where the service is reachable. This process, known as DNS-based Service Discovery, is central to the dynamic, scalable nature of cloud-native 5G cores, allowing for load balancing, redundancy, and seamless scaling of NFs.
The structure of an FQDN in 3GPP is highly organized. For example, an FQDN for a Network Repository Function (NRF) in a 5G network might be: `nrf.5gc.mnc<MNC>.mcc<MCC>.3gppnetwork.org`. This structure encodes the NF type (`nrf`), the network slice/instance (`5gc`), the Mobile Network Code (MNC), Mobile Country Code (MCC), and a dedicated 3GPP top-level domain. This hierarchical naming allows for logical organization and efficient DNS resolution. FQDNs are used in countless 3GPP procedures: for HTTP/2 service endpoints between NFs, for SIP routing in IMS (e.g., the home domain in a SIP URI like `sip:[email protected]`), for connecting to charging systems, policy servers, and for accessing application servers. They provide the essential layer of indirection that decovers the logical service identity from its physical IP location, enabling network agility and automation.
Purpose & Motivation
The adoption of FQDNs within 3GPP was driven by the industry's shift towards all-IP networks and web-based architectures. Early cellular systems relied on static, pre-configured point codes or IP addresses for node addressing, which were inflexible and difficult to manage at scale. As networks evolved towards IMS (3GPP Release 5/6) and later the cloud-native 5G Core, there was a critical need for a dynamic, scalable, and standardized way to discover and communicate with distributed network services. FQDNs, coupled with DNS, solve this problem by providing a globally unique, hierarchical naming system that supports discovery, load balancing, and failover.
The historical motivation lies in overcoming the limitations of hard-coded network topology. In a monolithic network, adding a new server required updating configuration on all peers. In a modern, microservices-based 5G core with auto-scaling and geographic redundancy, NFs can be instantiated and terminated dynamically. FQDNs allow a consumer NF to find a producer NF without knowing its exact IP address beforehand. The DNS resolution layer can return different IPs based on load, location (for edge computing), or service availability. This addresses key requirements for network automation, scalability, and resilience, making FQDNs a cornerstone technology for implementing the Service-Based Architecture (SBA) and enabling efficient network slicing, where different slices might resolve the same NF type (e.g., `smf`) to different instances based on the slice-specific FQDN.
Key Features
- Provides an absolute, unambiguous domain name for a host or network function
- Follows hierarchical 3GPP naming conventions encoding NF type, network, and PLMN
- Used within URIs for HTTP/2-based service interfaces in 5G SBA
- Essential for DNS-based service discovery and load balancing of NFs
- Enables dynamic network topology and cloud-native scalability
- Fundamental for SIP routing in IMS and for identifying application servers
Evolution Across Releases
Introduced in early 3GPP specifications, primarily in the context of GPRS and early IP services, for basic host identification and access point naming. Usage was foundational but not yet architecturally central, serving as a standard internet naming mechanism within emerging mobile data services.
Defining Specifications
| Specification | Title |
|---|---|
| TS 23.140 | 3GPP TS 23.140 |
| TS 23.179 | 3GPP TS 23.179 |
| TS 23.234 | 3GPP TS 23.234 |
| TS 23.402 | 3GPP TS 23.402 |
| TS 23.468 | 3GPP TS 23.468 |
| TS 23.501 | 3GPP TS 23.501 |
| TS 23.558 | 3GPP TS 23.558 |
| TS 23.700 | 3GPP TS 23.700 |
| TS 23.758 | 3GPP TS 23.758 |
| TS 23.799 | 3GPP TS 23.799 |
| TS 24.109 | 3GPP TS 24.109 |
| TS 24.147 | 3GPP TS 24.147 |
| TS 24.167 | 3GPP TS 24.167 |
| TS 24.228 | 3GPP TS 24.228 |
| TS 24.229 | 3GPP TS 24.229 |
| TS 24.234 | 3GPP TS 24.234 |
| TS 24.259 | 3GPP TS 24.259 |
| TS 24.301 | 3GPP TS 24.301 |
| TS 24.302 | 3GPP TS 24.302 |
| TS 24.312 | 3GPP TS 24.312 |
| TS 24.333 | 3GPP TS 24.333 |
| TS 24.334 | 3GPP TS 24.334 |
| TS 24.484 | 3GPP TS 24.484 |
| TS 24.501 | 3GPP TS 24.501 |
| TS 24.502 | 3GPP TS 24.502 |
| TS 24.514 | 3GPP TS 24.514 |
| TS 24.523 | 3GPP TS 24.523 |
| TS 24.526 | 3GPP TS 24.526 |
| TS 24.554 | 3GPP TS 24.554 |
| TS 24.555 | 3GPP TS 24.555 |
| TS 24.572 | 3GPP TS 24.572 |
| TS 24.583 | 3GPP TS 24.583 |
| TS 24.587 | 3GPP TS 24.587 |
| TS 24.819 | 3GPP TS 24.819 |
| TS 24.930 | 3GPP TS 24.930 |
| TS 26.247 | 3GPP TS 26.247 |
| TS 26.346 | 3GPP TS 26.346 |
| 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.891 | 3GPP TS 26.891 |
| TS 28.314 | 3GPP TS 28.314 |
| TS 28.538 | 3GPP TS 28.538 |
| TS 29.061 | 3GPP TS 29.061 |
| TS 29.109 | 3GPP TS 29.109 |
| TS 29.303 | 3GPP TS 29.303 |
| TS 29.503 | 3GPP TS 29.503 |
| TS 29.507 | 3GPP TS 29.507 |
| TS 29.508 | 3GPP TS 29.508 |
| TS 29.521 | 3GPP TS 29.521 |
| TS 29.522 | 3GPP TS 29.522 |
| TS 29.525 | 3GPP TS 29.525 |
| TS 29.558 | 3GPP TS 29.558 |
| TS 29.561 | 3GPP TS 29.561 |
| TS 29.562 | 3GPP TS 29.562 |
| TS 29.949 | 3GPP TS 29.949 |
| TS 31.102 | 3GPP TR 31.102 |
| TS 31.103 | 3GPP TR 31.103 |
| TS 31.104 | 3GPP TR 31.104 |
| TS 32.158 | 3GPP TR 32.158 |
| TS 32.299 | 3GPP TR 32.299 |
| TS 32.501 | 3GPP TR 32.501 |
| TS 32.593 | 3GPP TR 32.593 |
| TS 33.220 | 3GPP TR 33.220 |
| TS 33.222 | 3GPP TR 33.222 |
| TS 33.223 | 3GPP TR 33.223 |
| TS 33.320 | 3GPP TR 33.320 |
| TS 33.739 | 3GPP TR 33.739 |
| TS 33.820 | 3GPP TR 33.820 |
| TS 33.823 | 3GPP TR 33.823 |
| TS 33.835 | 3GPP TR 33.835 |
| TS 33.839 | 3GPP TR 33.839 |
| TS 33.980 | 3GPP TR 33.980 |
| TS 34.229 | 3GPP TR 34.229 |
| TS 43.318 | 3GPP TR 43.318 |
| TS 43.902 | 3GPP TR 43.902 |
| TS 44.318 | 3GPP TR 44.318 |