1. Basics

August 11, 2026 ยท View on GitHub

OpenAirInterface 5G Core Network Configuration

TABLE OF CONTENTS

[[TOC]]

Use the document outline or your Markdown viewer to navigate between sections.

1. Basics

All the OAI NFs are configured using a YAML configuration file. This document describes the structure, the allowed values and the default values.

Location of the configuration file

When you are using the docker-compose deployment, the configuration file is located inside the container:

/openair-<nf-name>/etc/config.yaml

Each of the NF repositories has an example documentation, which is also copied in the Docker image during build:

Network FunctionRepositoryLocation
AMFoai-cn5g-amfetc/config.yaml
AUSFoai-cn5g-ausfetc/config.yaml
NRFoai-cn5g-nrfetc/config.yaml
NSSFoai-cn5g-nssfetc/config.yaml
PCFoai-cn5g-pcfetc/config.yaml
SMFoai-cn5g-smfetc/config.yaml
UDMoai-cn5g-udmetc/config.yaml
UDRoai-cn5g-udretc/config.yaml
UPFoai-cn5g-upfetc/config.yaml

When you are using a bare-metal deployment, you have to tell the NF which file to load, for example for SMF:

./smf -c /your/path/to/config.yaml -o

Example configurations

The docker-compose folder contains example configurations, which are used by the tutorials described in docs.

You can have a look at the docker-compose/conf folder to see real-world examples of how the OAI 5GC NFs can be configured.

Validation

Each configuration is validated during startup of the NF. In case of a wrong configuration, an error is printed and the NF does not start. Therefore, please make sure that all the Docker containers started successfully.

2. Description of Configuration

The configuration is designed in a way so that you can have one config.yaml file to configure all your NFs. The file has different sections and some of these sections are not relevant for all NFs. Each section is described in the following chapters. The following table gives an overview:

NameDescriptionRelevant NFs
log_lvlLog LevelAll
register_nfRegister NFAll
http_versionHTTP VersionAll
nfsNFsAll
databaseDatabaseAMF, UDR
dnnsDNNsSMF, UPF
amfAMFAMF
smfSMFSMF
pcfPCFPCF
nssfNSSFNSSF
upfUPFUPF

The default values described in this document are the values that are taken by the NF if you do not specify them in the configuration file. If there is no default value here, you need to configure it.

When a default value is provided, but the value is indicated as "mandatory", it means that it is essential for the NF to function, but we provide default values to make the configuration easier.

Log Level

The log_level key configures the log level of the NF. It is a dictionary that can contain the following keys:

  • general
  • ausf
  • amf
  • nrf
  • nssf
  • pcf
  • smf
  • udm
  • udr
  • upf

Each key can take the following values:

NameTypeDescriptionAllowed valuesDefault valueMandatory
Log LevelStringSet the log leveldebug, info, warn, error, offinfoYes

Here, you can configure different log levels for different NFs. Each NF reads its value, e.g. the SMF reads the smf key. When you configure general, it is the basic configuration for all NFs. Thus, if you want to enable debug level for SMF, but want to have info log level for all other NFs, you can have the following configuration:

log_level:
  general: info
  smf: debug

Register NF

The register_nf key follows the same principles as the Log Level, it also allows you to configure a general configuration and an NF-specific configuration. Here, you can configure if an NF should register to NRF. It is important to note that if one NF registers to NRF, it expects other NFs to register towards NRF. This means that a registered NF will use the NRF discovery or event notification mechanism.

NameTypeDescriptionAllowed valuesDefault valueMandatory
Register NFBoolSet yes to register to NRF and use NF discovery mechanismyes, no (and other YAML boolean values)noYes

HTTP Version

With the http_version key, you can configure which HTTP version should be used for the client and the server. The NF will only launch one HTTP server, serving either HTTP version 1 or version 2. Currently, there is no difference between 1 and 1.1, as all our servers use HTTP version 1.1.

NameTypeDescriptionAllowed valuesDefault valueMandatory
HTTP VersionIntSet the HTTP version of client and server1, 1.1, 21Yes

NFs

The nfs section allows you to configure SBI and other interfaces for each NF.

It is a dictionary that can contain the following keys:

  • ausf
  • amf
  • nrf
  • nssf
  • pcf
  • smf
  • udm
  • udr
  • upf

Each key defines an interface configuration that looks as follows:

host: <hostname>
sbi:
  port: <port>
  api_version: <api_version>
  interface_name: <interface_name>

The allowed values are described in the following table:

NameTypeDescriptionAllowed valuesDefault valueMandatory
HostStringHostname or IP of the NFAny hostname or an IPv4 address in dotted decimal representationDepends on NFYes
PortIntPort of the SBI interfaceAny integer between 1 and 6553580Yes
API VersionStringAPI version used for SBI communicationv1, v2v1Yes
Interface nameStringHost interface to serve HTTP serverAny stringeth0Only for the local interface

The interface name is only relevant for the local NF, e.g., SMF only takes the interface name from the smf key. If the interface cannot be read or does not exist, the NF will terminate.

The host value is different for each NF key. Also, not all the keys are read by all NFs. The following table describes this:

KeyHost default valueRead by NFsMandatory
ausfoai-ausfAUSF, AMFOnly if AUSF is used (enable_simple_scenario in AMF is off)
amfoai-amfAMF, SMFYes
nrfoai-nrfAll NFsIf register_nf is on
nssfoai-nssfNSSF, AMFOnly if NSSF is used
pcfoai-pcfPCF, SMFOnly if PCF is used (use_local_pcc_rules in SMF is off)
smfoai-smfSMF, AMFYes
udmoai-udmUDM, AMF, SMFOnly if UDM is used (enable_simple_scenario in AMF is off)
udroai-udrUDR, UDM, AUSFOnly if UDR is used (enable_simple_scenario in AMF is off)
upfoai-upfUPFOnly for OAI-UPF, not for VPP-UPF

The NF will only parse and validate the NF key if necessary. For example, if register NF is set, it will rely on NF discovery and does not read remote hosts from nfs. It does, however, take the api_version from the nfs configuration. The local interface configuration is always taken from nfs. Hence, even if you use NF registration and discovery, you need to configure the values here to be read for the local interfaces (e.g., smf from SMF or nrf from NRF).

AMF specific NF configuration

AMF has an SBI interface and also a N2 interface. The amf key can be configured as follows:

host: <hostname>
sbi:
  port: <port>
  api_version: <api_version>
  interface_name: <interface_name>
n2:
  port: <port>
  interface_name: <interface_name>

The description of the N2 interface is as follows:

NameTypeDescriptionAllowed valuesDefault valueMandatory
PortIntPort of the N2 interfaceAny integer between 1 and 6553538412Yes
Interface nameStringHost interface to serve N2 serverAny stringeth0Yes

SMF specific NF configuration

Similar to the AMF, the SMF configures an N4 interface. The smf key can be configured as follows:

host: <hostname>
sbi:
  port: <port>
  api_version: <api_version>
  interface_name: <interface_name>
n4:
  port: <port>
  interface_name: <interface_name>

The description of the N4 interface is as follows:

NameTypeDescriptionAllowed valuesDefault valueMandatory
PortIntPort of the N4 interfaceAny integer between 1 and 655358805Yes
Interface nameStringHost interface to serve N4 serverAny stringeth0Yes

UPF specific NF configuration

The UPF serves more interfaces. The upf key can be configured as follows:

host: <hostname>
sbi:
  port: <port>
  api_version: <api_version>
  interface_name: <interface_name>
n3:
  interface_name: <n3_interface_name>
  port: <n3_port>
n4:
  interface_name: <n4_interface_name>
  port: <n4_port>
n6:
  interface_name: <n6_interface_name>

The description of the N3, N4 and N6 interfaces of UPF is as follows:

NameTypeDescriptionAllowed valuesDefault valueMandatory
N3 PortIntPort of the N3 GTP-u interfaceAny integer between 1 and 655352152Yes
N3 Interface NameStringHost interface to receive GTP packetsAny stringeth0Yes
N4 PortIntPort of the N4 interfaceAny integer between 1 and 655358805Yes
N4 Interface NameStringHost interface to serve N4 serverAny stringeth0Yes
N6 Interface NameStringHost interface to receive IP traffic from DNAny stringeth0Yes

Please note that the N6 interface does not require a port configuration.

Database

The database section allows you to configure how to connect to the database.

It can be configured as follows:

database:
  host: <db_host>
  port: <db_port>
  user: <db_user>
  type: <db_type>
  password: <db_pw>
  database_name: <db_name>
  connection_timeout: <timeout>

The allowed values are described in the following table:

NameTypeDescriptionAllowed valuesDefault valueMandatory
DB HostStringHost of the database to connectAny stringmysqlYes
DB PortIntPort of the database to connectAny integer between 1 and 65535For mysql: 3306, for mongodb: 27017, for cassandra: 9042Yes
DB UserStringUser to authenticate to the databaseAny stringrootYes
DB TypeStringType of the database (e.g. mysql)mysql, cassandra, mongodbmysqlYes
DB PasswordStringPassword to authenticate to the databaseAny stringlinuxYes
DB NameStringName of the database to useAny stringoai_dbYes
TimeoutIntTimeout for successful connection to DB on startupAny integer300Yes

The values you provide for the database connection will be used to connect to the database. In case of a misconfiguration, you will be informed (e.g., when the DB host is not reachable or you provided a wrong password).

DNNs

In the dnns section you can configure DNNs, which are used by SMF and UPF. It is a list of DNN configurations. Each DNN configuration can configure the following values:

dnn: <dnn_name>
pdu_session_type: <pdu_type>
ipv4_subnet: <ipv4_subnet>
ipv6_prefix: <ipv6_prefix>
ue_dns:
  primary_ipv4: <primary_dns_v4>
  primary_ipv6: <primary_dns_v6>
  secondary_ipv4: <secondary_dns_v4>
  secondary_ipv6: <secondary_dns_v6>

The ue_dns key is only used by SMF and there is no default value. If you do not provide anything here, the ue_dns configuration from SMF is used. Here, you can configure different DNS servers per DNN.

The allowed values are described in the following table:

NameTypeDescriptionAllowed valuesDefault valueMandatory
DNNStringDNN to be used by SMF, UPF and communicated by the UEAny stringdefaultYes
PDU Session TypeStringType of the PDU session (currently only IPV4 supported by SMF and OAI-UPF)IPV4, IPV4V6, IPV6IPV4Yes
IPv4 SubnetStringIPv4 subnet which is used to assign UE IPv4 addresses for PDU sessionsIP address in CIDR format: Host in dotted decimal followed by /suffix12.1.1.0/24Only for IPV4 and IPV4V6
IPv6 PrefixStringIPv6 prefix which is used to assign UE IPv6 addresses for PDU sessionsAny valueOnly for IPV6 and IPV4V6 (not yet supported on SMF)

If you do not configure any DNN in the dnns section, or you remove the dnns section completely, the following default DNN is configured:

dnn: default
pdu_session_type: IPV4
ipv4_subnet: 12.1.1.0/24

Otherwise, your configuration takes precedence and the default DNN is removed.

AMF

The amf section is used to configure the behavior of AMF.

You can configure the following values:

amf:
  pid_directory: <pid_directory>
  amf_name: <amf_name>
  support_features_options:
    enable_simple_scenario: <enable_simple_scenario>
    enable_nssf: <enable_nssf>
    enable_smf_selection: <enable_smf_selection>
  relative_capacity: <relative_capacity>
  statistics_timer_interval: <statistics_timer_interval>
  emergency_support: <emergency_support>
  # In this list, you can configure several served GUAMIs
  served_guami_list:
    - mcc: <guami_mcc>
      mnc: <guami_mnc>
      amf_region_id: <amf_region_id>
      amf_set_id: <amf_set_id>
      amf_pointer: <amf_pointer>
  # In this list, you can configure several supported PLMNs
  plmn_support_list:
    - mcc: <plmn_mcc>
      mnc: <plmn_mnc>
      tac: <tac>
      # In this list, you can configure several NSSAIs per PLMN
      nssai:
        - sst: <sst>
          sd: <sd>
  # In this list, you can configure all the supported integrity algorithms
  supported_integrity_algorithms:
    - <int_algorithm>
  # In this list, you can configure all the supported encryption algorithms
  supported_encryption_algorithms:
    - <enc_algorithm>

Basic configuration

The allowed values of the AMF basic configuration are described in the following table:

NameTypeDescriptionAllowed valuesDefault valueMandatory
AMF NameStringAMF Name used in AMF NF profileAny stringNo
PID DirectoryStringDirectory where AMF stores the PIDAny string/var/runYes
Enable Simple ScenarioBoolIf set to yes, AMF will not use AUSF/UDM/UDR, but use an internal implementation for authentication and authorization procedures. Also, it will not register to NRF.yes, no (and other YAML boolean values)noYes
Enable NSSFBoolIf set to yes, AMF will use NSSFyes, no (and other YAML boolean values)noYes
Enable SMF SelectionBoolIf set to yes, AMF will use NRF discovery mechanism to select SMFyes, no (and other YAML boolean values)noYes
Relative CapacityIntRelative capacity communicated over NGAP to gNBAny integer between 0 and 25510Yes
Statistics Timer IntervalIntInterval for logging AMF statisticsAny integer between 5 and 60020Yes
Emergency SupportBoolIndicate towards UE if emergency registration is supportedyes, no (and other YAML boolean values)noYes

GUAMI configuration

In the served_guami_list section, you can configure a list of Globally Unique AMF IDs (GUAMI) that are supported by this AMF.

NameTypeDescriptionAllowed valuesDefault valueMandatory
GUAMI MCCStringMCC Part of GUAMI3-digit decimal string001Yes
GUAMI MNCStringMNC Part of GUAMI2 or 3-digit decimal string01Yes
AMF Region IDStringAMF Region ID of GUAMI2-digit hex string (8 bits length)FFYes
AMF Set IDStringAMF Set ID of GUAMI3-digit hex string (10 bits length), where first digit is limited to values 0 to 3 (see 3GPP TS 23.003/29.571)001Yes
AMF PointerStringAMF Pointer of GUAMI2-digit hex string (6 bits length), where first digit is limited to values 0 to 3 (see 3GPP TS 23.003)01Yes

PLMN configuration

In the plmn section, you can configure the list of PLMNs that this AMF supports, together with the served TAC and slicing information (SST and SD).

NameTypeDescriptionAllowed valuesDefault valueMandatory
PLMN MCCStringMCC of supported PLMN3-digit decimal string001Yes
PLMN MNCStringMNC of supported PLMN2 or 3-digit decimal string01Yes
TACIntTAC of supported PLMNAny integer between 1 and 16777213 (FFFFFD)1Yes
SSTIntSST of SNSSAIAny integer between 0 and 2551Yes
SDStringSD of SNSSAI6-digit hex string (24 bits length)FFFFFFNo

When configuring hex values for AMF, you need to skip the leading 0x notation. Our reasoning behind this design decision is that we want to follow 3GPP as close as possible.

When configuring AMF, you have to be careful to configure the GUAMI, PLMN and NSSAIs correctly. Upon NGAP Setup between gNB and AMF and also during UE registration, the requested PLMN and NSSAI is verified. In case it is not configured by AMF, AMF will reply with a registration reject message or reject the NG setup request. Thus, you have to properly configure these values according to gNB and UE. The same is true for the TAC.

Integrity protection and encryption algorithms

The sections supported_integrity_algorithms and supported_encryption_algorithms let you configure the integrity protection and confidentiality protection.

NameTypeDescriptionAllowed valuesDefault valueMandatory
Integrity AlgorithmStringSupported integrity algorithm, used for security mode command messagesNIA0, NIA1, NIA2, NIA3, NIA4, NIA5, NIA6, NIA7Yes
Encryption AlgorithmStringSupported encryption algorithm, used for security mode command messagesNEA0, NEA1, NEA2, NEA3, NEA4, NEA5, NEA6, NEA7Yes

If you do not configure any integrity algorithms, AMF will take the following default configuration:

supported_integrity_algorithms:
  - "NIA0"
  - "NIA1"
  - "NIA2"

If you do not configure any encryption algorithm, AMF will take the following default configuration:

supported_encryption_algorithms:
  - "NEA0"
  - "NEA1"
  - "NEA2"

Please note that the order of supported integrity/encryption algorithms matters.

SMF

The smf section is used to configure the behavior of the SMF.

You can configure the following values:

ue_mtu: <ue_mtu>
support_features:
  use_local_subscription_info: <use_local_subscription_info>
  use_local_pcc_rules: <use_local_pcc_rules>
upfs:
  - host: <upf_host>
    port: <upf_port>
    config:
      enable_usage_reporting: <enable_usage_reporting>
      enable_dl_pdr_in_pfcp_session_establishment: <enable_dl_pdr_in_pfcp_session_establishment>
      n3_local_ipv4: <n3_local_ipv4>
    upf_info: # UPF Info according to 3GPP TS 29.510
ue_dns:
  primary_ipv4: <primary_dns_v4>
  primary_ipv6: <primary_dns_v6>
  secondary_ipv4: <secondary_dns_v4>
  secondary_ipv6: <secondary_dns_v6>
ims:
  pcscf_ipv4: <pcscf_ipv4>
  pcscf_ipv6: <pcscf_ipv6>
smf_info: # SMF Info according to 3GPP TS 29.510
local_subscription_infos:
  - single_nssai:
      sst: <sst>
      sd: <sd>
    dnn: <dnn>
    ssc_mode: <ssc_mode>
    qos_profile:
      5qi: <5qi>
      priority: <priority>
      arp_priority: <arp_priority>
      arp_preempt_capability: <arp_preempt_capability>
      arp_preempt_vulnerability: <arp_preempt_vulnerability>
      session_ambr_ul: <session_ambr_ul>
      session_ambr_dl: <session_ambr_dl>

Basic configuration

The allowed values and the description of the basic configuration of SMF are described in the following table:

NameTypeDescriptionAllowed valuesDefault valueMandatory
UE MTUIntUE MTU, signaled to the UE via PCOAny integer between 1 and 655351500Yes
Use Local Subscription InfoBoolIf set to yes, SMF will use the information from local_subscription_infos, otherwise the subscriber profile is requested from UDM. In this case, you have to provide udm in NFsyes, no (and other YAML boolean values)noYes
Use Local PCC rulesBoolIf set to no, SMF will get PCC rules from PCF. Local PCC Rules on SMF are not supported yet. In this case, you have to provide pcf in NFsyes, no (and other YAML boolean values)yesYes

UPF configuration

The upfs section allows you to configure a list of different UPFs. Please note that most values are only read if you disable NF registration. Only the values from the config section are used by SMF in case you enable NRF. SMF aligns the host you configure here with the UPF host from the NRF information to e.g., know whether to enable usage reporting.

NameTypeDescriptionAllowed valuesDefault valueMandatory
UPF HostStringHost of the UPFAny hostname or an IPv4 address in dotted decimal representationOnly if NRF registration is disabled
UPF PortIntPort of the UPF N4 interfaceAny integer between 1 and 655358805Only if NRF registration is disabled
Enable Usage ReportingBoolIf set to yes, SMF will request UPF to send usage reports by using Usage Report Rules (URRs) in PFCP Session Establishmentyes, no (and other YAML boolean values)noNo
Enable DL PDR in PFCP Session EstablishmentBoolIf set to yes, SMF will send DL rules during PFCP session establishment and update these rules with the gNB F-TEID in a session modification. Enable this if your UPF expects this behavioryes, no (and other YAML boolean values)noNo
Local N3 IPv4StringIf the UPF is not Release 16-compliant and does not support generating F-TEIDs, SMF will generate the F-TEID and use this IP address for the F-TEID.IPv4 address in dotted decimal representationNo
UPF InfoStructThis datatype is used to configure the UPF profile on SMF and is used when no NRF registration/discovery is disabled. It follows the UpfInfo definition of 3GPP TS 29.510, but only interfaceUpfInfoList is supported for now.UpfInfo from 29.510No

The UPF Info on SMF is currently very basic and supports only configuring the interface type and the network instance. If you omit this configuration, SMF adds the following default configuration:

interfaceUpfInfoList:
  - interfaceType: N3
    networkInstance: access.oai.org
  - interfaceType: N6
    networkInstance: core.oai.org

In case you do not configure upfs and you set register_nf: no, SMF will use a default UPF:

host: oai-upf
port: 8805
config:
  enable_usage_reporting: no
  enable_dl_pdr_in_pfcp_session_establishment: no
upf_info:
  interfaceUpfInfoList:
    - interfaceType: N3
      networkInstance: access.oai.org
    - interfaceType: N6
      networkInstance: core.oai.org

UE DNS configuration

The ue_dns section allows you to configure the DNS which is signaled to the UE via PCO. Please note that this is the global DNS configuration. If you provide a DNS for a specific DNN, the DNN-specific DNS configuration takes precedence.

NameTypeDescriptionAllowed valuesDefault valueMandatory
Primary DNS IPv4StringPrimary DNS IPv4, signaled to the UE via PCOIPv4 address in dotted decimal representation8.8.8.8Yes
Primary DNS IPv6StringPrimary DNS IPv6, signaled to the UE via PCOAny stringNo
Secondary DNS IPv4StringSecondary DNS IPv4, signaled to the UE via PCOIPv4 address in dotted decimal representation1.1.1.1No
Secondary DNS IPv6StringSecondary DNS IPv6, signaled to the UE via PCOAny stringNo

IMS configuration

The ims section allows you to configure P-CSCF IP addresses which are signaled to the UE via PCO.

NameTypeDescriptionAllowed valuesDefault valueMandatory
P-CSCF IPv4StringIPv4 address of P-CSCF for IMS, signaled to the UE via PCOIPv4 address in dotted decimal representation127.0.0.1No
P-CSCF IPv6StringIPv6 address of P-CSCF for IMS, signaled to the UE via PCOAny stringNo

SMF info configuration

The smf_info section is used to configure the SMF Info, which is sent as part of the NF profile upon NRF registration. Please note that the values follow the SmfInfo datatype from 3GPP TS 29.510. Therefore, you also have to use the camelCase notation. If you do not configure any SMF profile, the following default profile is set:

smf_info:
  sNssaiSmfInfoList:
    - sNssai:
        st: 1
        sd: FFFFFF
      dnnSmfInfoList:
        - dnn: "default"

Local subscription infos

The local_subscription_infos is only used if you enable use_local_subscription_infos. It is meant as an easy way to configure a default subscriber profile for a specific slice and DNN. You are not able to configure different profiles for different IMSIs/SUPIs. For this feature, you will need to use the UDM and set use_local_subscription_info: no. The same applies for advanced features such as static IP addresses or more QoS profiles.

NameTypeDescriptionAllowed valuesDefault valueMandatory
SSTIntSST of SNSSAIAny integer between 0 and 2551Only if local subscription info is used
SDStringSD of SNSSAI6-digit hex stringFFFFFFOnly if local subscription info is used
DNNStringDNN to be used for this slice subscription. The DNN should match the dnn of a configured DNN in DNNsAny stringdefaultOnly if local subscription info is used
SSC ModeIntSession and Service Continuity ModeAny integer between 1 and 31Only if local subscription info is used
5QIInt5QI of QoS profileAny integer between 1 and 2549Only if local subscription info is used
PriorityIntPriority of QoS profileAny integer between 1 and 1271Only if local subscription info is used
ARP PriorityIntPriority of ARPAny integer between 1 and 151Only if local subscription info is used
ARP Preempt CapabilityStringPreemption capability of ARPAny stringNOT_PREEMPTOnly if local subscription info is used
ARP Preempt VulnerabilityStringPreemption vulnerability of ARPAny stringNOT_PREEMPTABLEOnly if local subscription info is used
Session AMBR ULStringSession AMBR for uplinkAny string1000MbpsOnly if local subscription info is used
Session AMBR DLStringSession AMBR for downlinkAny string1000MbpsOnly if local subscription info is used

If you do not configure local_subscription_infos, SMF will use one default subscription info configuration:

single_nssai:
  sst: 1
  sd: FFFFFF
dnn: "default"
ssc_mode: 1
qos_profile:
  5qi: 9
  priority: 1
  arp_priority: 1
  arp_preempt_capability: "NOT_PREEMPT"
  arp_preempt_vulnerability: "NOT_PREEMPTABLE"
  session_ambr_ul: "1000Mbps"
  session_ambr_dl: "1000Mbps"

Note: In case you use a COTS UE, it is highly recommended to configure an ims DNN. Please see the examples on how to do that.

PCF

You can configure the directory where PCF policy configuration is stored:

local_policy:
  policy_decisions_path: <policy_decisions_path>
  pcc_rules_path: <pcc_rules_path>
  traffic_rules_path: <traffic_rules_path>

How to configure the policies for PCF itself is not covered in this document. You can see the policies folder for examples.

The allowed values of the PCF configuration are as follows:

NameTypeDescriptionAllowed valuesDefault valueMandatory
Policy Decisions PathStringPath to the policy decisions directoryAny string/openair-pcf/policies/policy_decisionsYes
PCC Rules PathStringPath to the PCC rules directoryAny string/openair-pcf/policies/pcc_rulesYes
Traffic Rules PathStringPath to the traffic rules directoryAny string/openair-pcf/policies/traffic_rulesNo

The paths you configure here are not validated upon reading the configuration, but PCF will try to open these directories on start and inform you if there was an issue and terminate the NF.

NSSF

You can configure the directory where NSSF slicing configuration is stored:

slice_config_path: <slice_config_path>

How to configure the slice configuration for NSSF itself is not covered in this document. You can see the nssf_slice_config.yaml file for an example.

The allowed values of the NSSF configuration are as follows:

NameTypeDescriptionAllowed valuesDefault valueMandatory
Slice Config PathStringPath to the slice configurationAny string/openair-nssf/etc/nssf_slice_config.yamlYes

The path you configure here is not validated upon reading the configuration, but NSSF will try to open this file on start and inform you when there is an issue and terminate the NF.

UPF

The upf section is used to configure the behavior of OAI-UPF.

You can configure the following values:

upf:
  support_features:
    enable_bpf_datapath: <enable_bpf_datapath>
    enable_snat: <enable_snat>
  remote_n6_gw: <remote_n6_gw>
  smfs:
    - <smf_hostname>
  # Here you can configure a list of supported NSSAIs/DNNs
  upf_info: # UPF Info according to 3GPP TS 29.510

The allowed values of the UPF configuration are as follows:

NameTypeDescriptionAllowed valuesDefault valueMandatory
Enable BPF DatapathboolIf set to yes, BPF is used for the datapath, otherwise simple switch is usedyes, no (and other YAML boolean values)noYes
Enable SNATboolIf set to yes, Source NAT is done for the UE IP addressyes, no (and other YAML boolean values)noYes
Remote N6 GatewaystringThe N6 next-hop where uplink traffic should be sentAny stringNo
SMF HostnamestringHost of the SMF to send PFCP association toAny stringOnly if register_nf is off

The upf_info follows UpfInfo from 3GPP TS 29.510 and is configured the same as in SMF. If you do not configure upf_info, the following default configuration is used:

upf_info:
  - sst: 1
    sd: FFFFFF
    dnnList:
      - dnn: "default"

3. MySQL database configuration

A user subscription should be present in the mysql database before trying to connect the UE. This can be done by adding the UE information in the oai_db2.sql file

First, you have to configure the authentication subscription:

INSERT INTO `AuthenticationSubscription` (`ueid`, `authenticationMethod`, `encPermanentKey`, `protectionParameterId`,
                                          `sequenceNumber`, `authenticationManagementField`, `algorithmId`, `encOpcKey`,
                                          `encTopcKey`, `vectorGenerationInHss`, `n5gcAuthMethod`,
                                          `rgAuthenticationInd`, `supi`)
VALUES ('208950000000031', '5G_AKA', '0C0A34601D4F07677303652C0462535B', '0C0A34601D4F07677303652C0462535B',
        '{\"sqn\": \"000000000020\", \"sqnScheme\": \"NON_TIME_BASED\", \"lastIndexes\": {\"ausf\": 0}}', '8000',
        'milenage', '63bfa50ee6523365ff14c1f45f88737d', NULL, NULL, NULL, NULL, '208950000000031');

If you configure use_local_subscription_info: no in SMF, you also have to add the session management subscription info for your UE in the database:

INSERT INTO `SessionManagementSubscriptionData` (`ueid`, `servingPlmnid`, `singleNssai`, `dnnConfigurations`)
VALUES ('208950000000031', '20895', '{\"sst\": 222, \"sd\": \"123\"}',
        '{\"default\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 6,\"arp\":{\"priorityLevel\": 1,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"NOT_PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"100Mbps\", \"downlink\":\"100Mbps\"}}}');

The dnnConfigurations column has to be defined in JSON and follows the dnnConfiguration type from 3GPP TS 29.503. Therefore, here you can configure your QoS profile and DNN configuration accordingly for this UE.

If, for example, you want to configure a static IP address for a UE, you can define the following:

INSERT INTO `SessionManagementSubscriptionData` (`ueid`, `servingPlmnid`, `singleNssai`, `dnnConfigurations`)
VALUES ('208950000000031', '20895', '{\"sst\": 222, \"sd\": \"123\"}',
        '{\"default\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 6,\"arp\":{\"priorityLevel\": 1,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"NOT_PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"100Mbps\", \"downlink\":\"100Mbps\"},\"staticIpAddress\":[{\"ipv4Addr\": \"12.1.1.4\"}]}}');