OpenAirInterface 5G Core Network Configuration¶
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 Function | Repository | Location |
|---|---|---|
| AMF | (Gitlab) cn5g/oai-cn5g-amf | etc/config.yaml |
| AUSF | (Gitlab) cn5g/oai-cn5g-ausf | etc/config.yaml |
| NRF | (Gitlab) cn5g/oai-cn5g-nrf | etc/config.yaml |
| NSSF | (Gitlab) cn5g/oai-cn5g-nssf | etc/config.yaml |
| PCF | (Gitlab) cn5g/oai-cn5g-pcf | etc/config.yaml |
| SMF | (Gitlab) cn5g/oai-cn5g-smf | etc/config.yaml |
| UDM | (Gitlab) cn5g/oai-cn5g-udm | etc/config.yaml |
| UDR | (Gitlab) cn5g/oai-cn5g-udr | etc/config.yaml |
| UPF | (Gitlab) cn5g/oai-cn5g-upf | etc/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:
| Name | Description | Relevant NFs |
|---|---|---|
log_lvl |
Log Level | All |
register_nf |
Register NF | All |
http_version |
HTTP Version | All |
nfs |
NFs | All |
database |
Database | AMF, UDR |
dnns |
DNNs | SMF, UPF |
amf |
AMF | AMF |
smf |
SMF | SMF |
pcf |
PCF | PCF |
nssf |
NSSF | NSSF |
upf |
UPF | UPF |
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:
generalausfamfnrfnssfpcfsmfudmudrupf
Each key can take the following values:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Log Level | String | Set the log level | debug, info, warn, error, off |
info |
Yes |
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.
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Register NF | Bool | Set yes to register to NRF and use NF discovery mechanism | yes, no (and other YAML boolean values) |
no |
Yes |
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.
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| HTTP Version | Int | Set the HTTP version of client and server | 1, 1.1, 2 |
1 |
Yes |
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:
ausfamfnrfnssfpcfsmfudmudrupf
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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Host | String | Hostname or IP of the NF | Any hostname or an IPv4 address in dotted decimal representation | Depends on NF | Yes |
| Port | Int | Port of the SBI interface | Any integer between 1 and 65535 |
80 |
Yes |
| API Version | String | API version used for SBI communication | v1, v2 |
v1 |
Yes |
| Interface name | String | Host interface to serve HTTP server | Any string | eth0 |
Only 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:
| Key | Host default value | Read by NFs | Mandatory |
|---|---|---|---|
ausf |
oai-ausf |
AUSF, AMF | Only if AUSF is used (enable_simple_scenario in AMF is off) |
amf |
oai-amf |
AMF, SMF | Yes |
nrf |
oai-nrf |
All NFs | If register_nf is on |
nssf |
oai-nssf |
NSSF, AMF | Only if NSSF is used |
pcf |
oai-pcf |
PCF, SMF | Only if PCF is used (use_local_pcc_rules in SMF is off) |
smf |
oai-smf |
SMF, AMF | Yes |
udm |
oai-udm |
UDM, AMF, SMF | Only if UDM is used (enable_simple_scenario in AMF is off) |
udr |
oai-udr |
UDR, UDM, AUSF | Only if UDR is used (enable_simple_scenario in AMF is off) |
upf |
oai-upf |
UPF | Only 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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Port | Int | Port of the N2 interface | Any integer between 1 and 65535 |
38412 |
Yes |
| Interface name | String | Host interface to serve N2 server | Any string | eth0 |
Yes |
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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Port | Int | Port of the N4 interface | Any integer between 1 and 65535 |
8805 |
Yes |
| Interface name | String | Host interface to serve N4 server | Any string | eth0 |
Yes |
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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| N3 Port | Int | Port of the N3 GTP-u interface | Any integer between 1 and 65535 |
2152 |
Yes |
| N3 Interface Name | String | Host interface to receive GTP packets | Any string | eth0 |
Yes |
| N4 Port | Int | Port of the N4 interface | Any integer between 1 and 65535 |
8805 |
Yes |
| N4 Interface Name | String | Host interface to serve N4 server | Any string | eth0 |
Yes |
| N6 Interface Name | String | Host interface to receive IP traffic from DN | Any string | eth0 |
Yes |
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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| DB Host | String | Host of the database to connect | Any string | mysql |
Yes |
| DB Port | Int | Port of the database to connect | Any integer between 1 and 65535 |
For mysql: 3306, for mongodb: 27017, for cassandra: 9042 |
Yes |
| DB User | String | User to authenticate to the database | Any string | root |
Yes |
| DB Type | String | Type of the database (e.g. mysql) |
mysql, cassandra, mongodb |
mysql |
Yes |
| DB Password | String | Password to authenticate to the database | Any string | linux |
Yes |
| DB Name | String | Name of the database to use | Any string | oai_db |
Yes |
| Timeout | Int | Timeout for successful connection to DB on startup | Any integer | 300 | Yes |
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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| DNN | String | DNN to be used by SMF, UPF and communicated by the UE | Any string | default |
Yes |
| PDU Session Type | String | Type of the PDU session (currently only IPV4 supported by SMF and OAI-UPF) | IPV4, IPV4V6, IPV6 |
IPV4 |
Yes |
| IPv4 Subnet | String | IPv4 subnet which is used to assign UE IPv4 addresses for PDU sessions | IP address in CIDR format: Host in dotted decimal followed by /suffix | 12.1.1.0/24 |
Only for IPV4 and IPV4V6 |
| IPv6 Prefix | String | IPv6 prefix which is used to assign UE IPv6 addresses for PDU sessions | Any value | Only 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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| AMF Name | String | AMF Name used in AMF NF profile | Any string | No | |
| PID Directory | String | Directory where AMF stores the PID | Any string | /var/run |
Yes |
| Enable Simple Scenario | Bool | If 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) |
no |
Yes |
| Enable NSSF | Bool | If set to yes, AMF will use NSSF | yes, no (and other YAML boolean values) |
no |
Yes |
| Enable SMF Selection | Bool | If set to yes, AMF will use NRF discovery mechanism to select SMF | yes, no (and other YAML boolean values) |
no |
Yes |
| Relative Capacity | Int | Relative capacity communicated over NGAP to gNB | Any integer between 0 and 255 |
10 |
Yes |
| Statistics Timer Interval | Int | Interval for logging AMF statistics | Any integer between 5 and 600 |
20 |
Yes |
| Emergency Support | Bool | Indicate towards UE if emergency registration is supported | yes, no (and other YAML boolean values) |
no |
Yes |
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.
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| GUAMI MCC | String | MCC Part of GUAMI | 3-digit decimal string | 001 |
Yes |
| GUAMI MNC | String | MNC Part of GUAMI | 2 or 3-digit decimal string | 01 |
Yes |
| AMF Region ID | String | AMF Region ID of GUAMI | 2-digit hex string (8 bits length) | FF |
Yes |
| AMF Set ID | String | AMF Set ID of GUAMI | 3-digit hex string (10 bits length), where first digit is limited to values 0 to 3 (see 3GPP TS 23.003/29.571) | 001 |
Yes |
| AMF Pointer | String | AMF Pointer of GUAMI | 2-digit hex string (6 bits length), where first digit is limited to values 0 to 3 (see 3GPP TS 23.003) | 01 |
Yes |
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).
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| PLMN MCC | String | MCC of supported PLMN | 3-digit decimal string | 001 |
Yes |
| PLMN MNC | String | MNC of supported PLMN | 2 or 3-digit decimal string | 01 |
Yes |
| TAC | Int | TAC of supported PLMN | Any integer between 1 and 16777213 (FFFFFD) |
1 |
Yes |
| SST | Int | SST of SNSSAI | Any integer between 0 and 255 |
1 |
Yes |
| SD | String | SD of SNSSAI | 6-digit hex string (24 bits length) | FFFFFF |
No |
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.
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Integrity Algorithm | String | Supported integrity algorithm, used for security mode command messages | NIA0, NIA1, NIA2, NIA3, NIA4, NIA5, NIA6, NIA7 |
Yes | |
| Encryption Algorithm | String | Supported encryption algorithm, used for security mode command messages | NEA0, NEA1, NEA2, NEA3, NEA4, NEA5, NEA6, NEA7 |
Yes |
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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| UE MTU | Int | UE MTU, signaled to the UE via PCO | Any integer between 1 and 65535 |
1500 |
Yes |
| Use Local Subscription Info | Bool | If 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 NFs |
yes, no (and other YAML boolean values) |
no |
Yes |
| Use Local PCC rules | Bool | If 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 NFs |
yes, no (and other YAML boolean values) |
yes |
Yes |
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.
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| UPF Host | String | Host of the UPF | Any hostname or an IPv4 address in dotted decimal representation | Only if NRF registration is disabled | |
| UPF Port | Int | Port of the UPF N4 interface | Any integer between 1 and 65535 |
8805 |
Only if NRF registration is disabled |
| Enable Usage Reporting | Bool | If set to yes, SMF will request UPF to send usage reports by using Usage Report Rules (URRs) in PFCP Session Establishment | yes, no (and other YAML boolean values) |
no |
No |
| Enable DL PDR in PFCP Session Establishment | Bool | If 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 behavior | yes, no (and other YAML boolean values) |
no |
No |
| Local N3 IPv4 | String | If 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 representation | No | |
| UPF Info | Struct | This 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.510 |
No |
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.
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Primary DNS IPv4 | String | Primary DNS IPv4, signaled to the UE via PCO | IPv4 address in dotted decimal representation | 8.8.8.8 |
Yes |
| Primary DNS IPv6 | String | Primary DNS IPv6, signaled to the UE via PCO | Any string | No | |
| Secondary DNS IPv4 | String | Secondary DNS IPv4, signaled to the UE via PCO | IPv4 address in dotted decimal representation | 1.1.1.1 |
No |
| Secondary DNS IPv6 | String | Secondary DNS IPv6, signaled to the UE via PCO | Any string | No |
IMS configuration¶
The ims section allows you to configure P-CSCF IP addresses which are signaled to the UE via PCO.
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| P-CSCF IPv4 | String | IPv4 address of P-CSCF for IMS, signaled to the UE via PCO | IPv4 address in dotted decimal representation | 127.0.0.1 |
No |
| P-CSCF IPv6 | String | IPv6 address of P-CSCF for IMS, signaled to the UE via PCO | Any string | No |
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
SmfInfodatatype from 3GPP TS 29.510. Therefore, you also have to use thecamelCasenotation. 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.
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| SST | Int | SST of SNSSAI | Any integer between 0 and 255 |
1 |
Only if local subscription info is used |
| SD | String | SD of SNSSAI | 6-digit hex string | FFFFFF |
Only if local subscription info is used |
| DNN | String | DNN to be used for this slice subscription. The DNN should match the dnn of a configured DNN in DNNs |
Any string | default |
Only if local subscription info is used |
| SSC Mode | Int | Session and Service Continuity Mode | Any integer between 1 and 3 |
1 |
Only if local subscription info is used |
| 5QI | Int | 5QI of QoS profile | Any integer between 1 and 254 |
9 |
Only if local subscription info is used |
| Priority | Int | Priority of QoS profile | Any integer between 1 and 127 |
1 |
Only if local subscription info is used |
| ARP Priority | Int | Priority of ARP | Any integer between 1 and 15 |
1 |
Only if local subscription info is used |
| ARP Preempt Capability | String | Preemption capability of ARP | Any string | NOT_PREEMPT |
Only if local subscription info is used |
| ARP Preempt Vulnerability | String | Preemption vulnerability of ARP | Any string | NOT_PREEMPTABLE |
Only if local subscription info is used |
| Session AMBR UL | String | Session AMBR for uplink | Any string | 1000Mbps |
Only if local subscription info is used |
| Session AMBR DL | String | Session AMBR for downlink | Any string | 1000Mbps |
Only 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
imsDNN. 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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Policy Decisions Path | String | Path to the policy decisions directory | Any string | /openair-pcf/policies/policy_decisions |
Yes |
| PCC Rules Path | String | Path to the PCC rules directory | Any string | /openair-pcf/policies/pcc_rules |
Yes |
| Traffic Rules Path | String | Path to the traffic rules directory | Any string | /openair-pcf/policies/traffic_rules |
No |
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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Slice Config Path | String | Path to the slice configuration | Any string | /openair-nssf/etc/nssf_slice_config.yaml |
Yes |
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:
| Name | Type | Description | Allowed values | Default value | Mandatory |
|---|---|---|---|---|---|
| Enable BPF Datapath | bool | If set to yes, BPF is used for the datapath, otherwise simple switch is used | yes, no (and other YAML boolean values) |
no |
Yes |
| Enable SNAT | bool | If set to yes, Source NAT is done for the UE IP address | yes, no (and other YAML boolean values) |
no |
Yes |
| Remote N6 Gateway | string | The N6 next-hop where uplink traffic should be sent | Any string | No | |
| SMF Hostname | string | Host of the SMF to send PFCP association to | Any string | Only 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\"}]}}');