UPF Config
June 16, 2025 · View on GitHub
Description
Currently UPF have several config parameters shown below.
Parameters can be configured through command line interface, config files (YAML, JSON) or environment variables.
| Parameter | Description | yaml | env | cli arg | Defaults |
|---|---|---|---|---|---|
Interface name Mandatory | List of network interfaces handling N3 (GTP) & N6 (SGi) traffic. eUPF attaches XDP hook to every interface in this list. Format: [ifnameA, ifnameB, ...]. | interface_name | UPF_INTERFACE_NAME | --iface | lo |
N3 address Mandatory | IPv4 address for N3 interface | n3_address | UPF_N3_ADDRESS | --n3addr | 127.0.0.1 |
N9 address Optional | IPv4 address for N9 interface | n9_address | UPF_N9_ADDRESS | --n9addr | n3_address |
XDP mode Optional | XDP attach mode: ∘ generic – kernel-level (evaluation) ∘ native – driver-level ∘ offload – NIC-level (direct NIC execution). Refer to How XDP Works | xdp_attach_mode | UPF_XDP_ATTACH_MODE | --attach | generic |
API address Optional | Local address for serving REST API server | api_address | UPF_API_ADDRESS | --aaddr | :8080 |
PFCP address Optional | Local address that PFCP server will listen to | pfcp_address | UPF_PFCP_ADDRESS | --paddr | :8805 |
PFCP NodeID Optional | Local NodeID for PFCP protocol. Format is IPv4 address. | pfcp_node_id | UPF_PFCP_NODE_ID | --nodeid | 127.0.0.1 |
GTP peer Optional | List of gtp peer's address to send echo requests to. Format is [hostnameA:portA, hostnameB:portB, ...]. | gtp_peer | UPF_GTP_PEER | --peer | - |
Echo request iterval Optional | Echo request sending interval. Format is seconds. | echo_interval | UPF_ECHO_INTERVAL | --echo | 10 |
Metrics address Optional | Local address for serving Prometheus mertrics endpoint. | metrics_address | UPF_METRICS_ADDRESS | --maddr | :9090 |
QER map size Optional | Size of the QER eBPF map. Overrides value derived from max_sessions when set (non-zero). | qer_map_size | UPF_QER_MAP_SIZE | --qersize | 1024 |
FAR map size Optional | Size of the FAR eBPF map. Overrides value derived from max_sessions when set (non-zero). | far_map_size | UPF_FAR_MAP_SIZE | --farsize | 1024 |
PDR map size Optional | Size of the PDR eBPF map. Overrides value derived from max_sessions when set (non-zero). | pdr_map_size | UPF_PDR_MAP_SIZE | --pdrsize | 1024 |
URR map size Optional | Size of the URR eBPF map. Overrides value derived from max_sessions when set (non-zero). | urr_map_size | UPF_URR_MAP_SIZE | --urrsize | 1024 |
Max Sessions Optional | Maximum number of sessions. Automatically calculates map sizes (PDR = 2×max_sessions, FAR = PDR, QER = max_sessions, URR = 3×max_sessions) when no individual (qer_map_size, etc.) is set. | max_sessions | UPF_MAX_SESSIONS | --maxsessions | 65535 |
Logging level Optional | Logs having level <= selected level will be written to stdout | logging_level | UPF_LOGGING_LEVEL | --loglvl | info |
UEIP Feature Optional | Support for IP allocation option | feature_ueip | UPF_FEATURE_UEIP | --ueip | false |
FTUP Feature Optional | Support for TEID allocation option | feature_ftup | UPF_FEATURE_FTUP | --ftup | false |
UE IP Pool Optional | Pool of IP addresses, needed to allocate ip when the UEIP option is enabled | ueip_pool | UPF_UEIP_POOL | --ueippool | 10.60.0.0/24 |
TEID Pool Optional | Pool of TEIDs, needed to allocate TEID when the FTUP option is enabled | teid_pool | UPF_TEID_POOL | --teidpool | 65535 |
PFCP peers Optional | List of PFCP peers (SMF hostnames or IP addresses) which UPF will try to connect | pfcp_node | UPF_PFCP_NODE | --pfcpnode | - |
Association Setup timeout Optional | Timeout between Association Setup Requests initiated by UPF | association_setup_timeout | UPF_ASSOCIATION_SETUP_TIMEOUT | --astimeout | 5 |
We are using Viper for configuration handling, Viper uses the following precedence order. Each item takes precedence over the item below it:
- CLI argument
- environment variable
- configuration file value
- default value
NOTE: as of commit we are currently only support IPv4 NodeID.
Example configuration
Default values YAML
interface_name: [lo]
xdp_attach_mode: generic
api_address: :8080
pfcp_address: :8805
pfcp_node_id: 127.0.0.1
metrics_address: :9090
n3_address: 127.0.0.1
n9_address: 127.0.0.1
resize_ebpf_maps: true
qer_map_size: 1024
far_map_size: 1024
pdr_map_size: 1024
urr_map_size: 1024
feature_ueip: true
feature_ftup: true
ip_pool: 10.60.0.0/16
teid_pool: 65535
Environment variables
UPF_INTERFACE_NAME="[eth0, n6]"
UPF_XDP_ATTACH_MODE=generic
UPF_API_ADDRESS=:8081
UPF_PFCP_ADDRESS=:8806
UPF_METRICS_ADDRESS=:9091
UPF_PFCP_NODE_ID: 10.100.50.241 # address on n4 interface
UPF_N3_ADDRESS: 10.100.50.233
UPF_N9_ADDRESS: 10.100.50.233
CLI
eupf \
--iface n3 \
--iface n6 \
--attach generic \
--aaddr :8081 \
--paddr :8086 \
--nodeid 127.0.0.1 \
--maddr :9090 \
--n3addr 10.100.50.233