4 NSSF Supported Features
This section explains about the NSSF supported features.
Note:
The performance and capacity of the NSSF system may vary based on the call model, Feature or Interface configuration, and underlying CNE and hardware environment.4.1 LCI and OCI Headers
Within the complex 5G architecture, network overload scenarios are common. The exchanges of data between producer and consumer Network Functions (NFs) often involve significant message and notification volumes, necessitating a precise approach to load balancing. This is imperative to prevent network failures triggered by overload conditions.
In such demanding scenarios, it becomes crucial for consumer NFs to be promptly informed when the producer NF approaches an overloaded state. This awareness enables consumer NFs to implement corrective actions proactively.
To address these challenges, the introduction of LCI and OCI Headers plays a pivotal role in optimizing communication between NSSF and its consumer NFs. They provide consumer NFs with real-time insights into the operational status of the NSSF resources, facilitating efficient traffic management.
These headers provide essential load and overload information for consumer NFs to optimize traffic distribution and take proactive measures during network overload scenarios.
The headers are integrated into outgoing responses, based on load levels at the Ingress Gateway. Serving as communication tools, they allow Network Functions (NFs) to share crucial load information, ensuring an architecture where 5G Core Network remains stable and high performing even during heavy load conditions.
LCI Header
The LCI header comprises overall load related information such as the timestamp of load data generation, the current load of the NF, and the scope of the load information. For example, there are two LCI headers:
- NF scope LCI header
- NF-service scope LCI header
Examples of LCI Headers
NF Scope LCI Header:
3gpp-sbi-lci: Timestamp: "Tue, 19 Sep 2023 13:47:41 UTC";
Load-Metric: 1%; NF-Instance: 9faf1bbc-6e4a-4454-a507-aef01a101a01
Service Scope LCI Header:
3gpp-sbi-lci: Timestamp:
"Mon, 25 Sep 2023 11:30:17 UTC"; Load-Metric: 0%; NF-Service-Instance:
ae870316-384d-458a-bd45-025c9e748976
OCI Header
The OCI header communicates information about overload conditions. This information encompasses the timestamp at which the overload condition was detected, the type of overload condition (such as, resource exhaustion), and the recommended action to be taken. For example, reducing the number of requests.
Both the LCI and OCI headers are incorporated in HTTP response messages without triggering additional signaling, ensuring a more efficient communication process. Here is how they help:
- The LCI header conveys the overall load of an NF, assisting in decisions regarding the acceptance or rejection of new requests to prevent further overload.
- In contrast, the OCI header communicates specific overload conditions, helping NFs take informed actions to mitigate these conditions.
- The LCI and OCI headers complement each other, allowing an NF to reduce the number of requests it sends to other NFs in response to an OCI header, even if its overall load is not yet overloaded.
- This proactive measure prevents overload conditions from spreading.
Examples of OCI Headers
NF Scope OCI Header:
3gpp-Sbi-Oci:Timestamp: "Mon, 02 May 2022 07:43:48 UTC";
Period-of-Validity: 30s; Overload-Reduction-Metric: 5.0%; NF-Instance:
5a7bd676-ceeb-44bb-95e0-f6a55a328b03
Service Scope OCI Header:
3gpp-Sbi-Oci:Timestamp: "Mon, 02 May 2022 07:43:48 UTC";
Period-of-Validity: 30s; Overload-Reduction-Metric: 5.0%; NF-Service-Instance:
5a7bd676-ceeb-44bb-95e0-f6a55a328b03
Use Cases
- As of now, LCI and OCI Headers are supported at the Ingress Gateway only; not at the Egress Gateway.
- NSSF can utilize the LCI header to signal its load information to the AMF (Access and Mobility Management Function). This information allows the AMF to make informed decisions about directing new User Equipment (UE) connections to the NSSF.
- Conversely, the NSSF can employ the OCI header to notify the Radio Access Network (RAN) of overload conditions, enabling the RAN to reduce the number of UEs it routes to NSSF.
Managing LCI and OCI Headers
Enable:
You can enable LCI and OCI Headers by performing the following Helm configurations globally and at the Ingress Gateway:
- Global Helm Configuration
- Enable: You can enable LCI and OCI Headers globally at the
Network Function (NF) level by setting the values of
nssfLciEnabled
andnssfOciEnabled
parameters astrue
, respectively.global: #=======================LCI/OCI header Global Values============================================ #Enabling LCI nssfLciEnabled: &lcienable true #Enabling OCI nssfOciEnabled: &ocienable true #====================================================================
- Enable: You can enable LCI and OCI Headers globally at the
Network Function (NF) level by setting the values of
- Ingress Gateway Helm Configuration
- Enable: You can enable LCI and OCI Headers globally
at Ingress Gateway level by setting the
lciHeaderConfig.enabled
andociHeaderConfig.enabled
parameters astrue
, respectively. - Configure: You can configure LCI and OCI Headers at
Ingress Gateway using the Helm based
configuration:
## This is mandatory for LCI and OCI feature as this is required by perf-info service to get the load information of the services from prometheus perf-info: configmapPerformance: prometheus: http://occne-prometheus-server.occne-infra ingress-gateway: #To remove the Producer header from Ingress Response when LCI is enabled globalRemoveResponseHeader: - name: *producer # ******** Sub-Section Start: LCI/OCI Ingress Gateway Parameters ************ #************************************************************************** # Engineering Parameter Start global: lciHeaderConfig: enabled: *lcienable # difference between previous threshold and current threshold for lci header will be added when the difference crosse the mentioned value loadThreshold: 30 # Validity period after which lci header will be added to reponse header if delta of threshold is not breached localLciHeaderValidity: 60000 #(value in milliseconds) ## This header needs to be same which is being sent along with request in microservice producerSvcIdHeader: *producer ociHeaderConfig: enabled: *ocienable ## This header needs to be same which is being sent along with reuest microservice producerSvcIdHeader: *producer validityPeriod: 10000 #(value in milliseconds) ## The range of the cpu load for which the ingress gateway will get notified regarding the criticality of the load. overloadConfigRange: #Note - minor, major and critical conditions should cover complete range of 0 to 100 both inclusive for it to be a valid config minor: "[75-80]" major: "[81-90]" critical: "[91-100]" ## The range of the cpu load which needs to be decreased from the consumer when a particular criticality has reached. reductionMetrics: minor: 5 #(Possible values 1 to 9 both inclusive) major: 15 #(Possible values 5 to 15 both inclusive) critical: 25 #(Possible values 10 to 50 both inclusive) nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a01" ## This is a mapping for service name to service instance id for which service the LCI and OCI headers needs to be enabled. Default values are given with 'ocnssf' as release name. It must be configured by operator in case release name is changed. ## only nsselection and nsavailability services should be configured. As these are the two services for which LCI/OCI headers is supported. ## Format is <releaseName>-<serviceName> . Eg: if release name is given 'ocnssf-test' then svc name should be 'ocnssf-test-nsselection' and 'ocnssf-test-nsavailability' svcToSvcInstanceIdMapping: - svcName: ocnssf-nsselection serviceInstanceId: "ae870316-384d-458a-bd45-025c9e748976" - svcName: ocnssf-nsavailability serviceInstanceId: "ae870316-384d-458a-bd45-025c9e748996" perfInfoConfig: ## the interval when perf-info will fetch the cpu load from prometheus pollingInterval: 5000 #(value in milliseconds) serviceName: "ocnssf-perf-info" port: 5905 perfInfoRequestMap: "/load" # Engineering Parameter End # ******** Sub-Section End: LCI/OCI Ingress Gateway Parameters ************ # ******** Sub-Section Start: DB credentials Ingress Gateway Parameters ************ #************************************************************************** dbConfig: dbHost: *dbHost dbPort: *dbPort secretName: *privDbSecret dbName: *provDB # Name of the Key configured for "DB Username" in Secret with following name: "<dbConfig.secretName>" dbUNameLiteral: mysql-username # Name of the Key configured for "DB Password" in Secret with following name: "<dbConfig.secretName>" dbPwdLiteral: mysql-password # Default is NDBCLUSTER dbEngine: *dbEngine # ******** Sub-Section End: DB credentials Ingress Gateway Parameters ************ #**************************************************************************
- Enable: You can enable LCI and OCI Headers globally
at Ingress Gateway level by setting the
For more information about the Helm parameters, see "Customizing NSSF" section in Oracle Communications Cloud Native Core, Network Slice Selection Function Installation, Upgrade, and Fault Recovery Guide.
Observe
Metrics
There are no new metrics for this feature.
KPIs
There are no new KPIs for this feature.
Alerts
There are no alerts generated for this feature.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.2 Server Header in NSSF
One of the core functionalities of the Network Slice Selection Function (NSSF) is to manage the security aspects of the 5G network. As part of this role, NSSF handles various requests from other network functions (NFs) and network entities over the HTTP protocol. On receiving these requests, NSSF validates and processes them before issuing responses to the requesting NFs or network entities.
In such scenarios, NFs and other network entities may encounter issues resulting in error responses. It becomes imperative for consumer NFs to pinpoint the source of the error, so they can undertake troubleshooting and corrective measures. The integration of this feature at NSSF helps to determine the originator of the error response.
This feature offers the support for Server Header in NSSF responses, which contain crucial information about the origin of an error response and the type of the error encountered. Thus, the Server Header enhances the behavior of NSSF while responding to requests, particularly the error responses.
Note:
This feature is applicable in scenarios where NSSF generates error responses. It does not affect normal response behavior.A Server Header starts with the value of NF Type, followed by a “-” and any other specific information, if needed, afterward. It is expected to be present in all NSSF responses in the following format:
<NF Type>-<Instance-Id>
Where,
<NF Type>
is the type of the NF.<NF Instance-Id>
is the unique identifier of the NF instance generating the response.
For example, the following combinations are applicable to NSSF:
NSSF-<NSSF's Instance-Id>
Where,
NSSF
is the <NF Type>.<NSSF's Instance-Id>
is the unique identifier of the NSSF instance generating the response.
Managing Server Header in NSSF
Enable:
By default, this feature is disabled. To enable it, REST API needs to be
invoked and the enabled
flag needs to be updated to
true
in the following URI:
/{nfType}/nf-common-component/v1/{serviceName}/serverheaderdetails
Example
Example of Request or Response Body to Enable Server Header:
{
"enabled": true,
"errorCodeSeriesId": "E1",
"configuration": {
"nfType": "NSSF",
"nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01"
}
}
Example of Request or Response Body to Disable Server Header:
{
"enabled": false,
"errorCodeSeriesId": "E1",
"configuration": {
"nfType": "NSSF",
"nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01"
}
}
Note:
-
enabled
is used to enable or disable the feature. -
nfType
andnfInstanceId
are used to form Server Header. - In the mentioned configuration, when sending a response to AMF,
the Server Header will be appended by the NSSF with the value
"
NSSF-9faf1bbc-6e4a-4454-a507-aef01a101a01
" - The values in the above example are samples. Ensure that you
update the values of the following parameters according to your deployment:
nfType
must be NSSF.errorCodeSeriesId
: A valid configured value.nfInstanceId
: NSSF's valid instance value. It must be same as NSSF's instance ID.
Configure
Perform the REST API configurations in the following sequence to configure this feature:
- Configure serverheaderdetails to enable the feature.
- Configure routesconfiguration to map route ID and its corresponding route-level configuration.
- Configure errorcodeserieslist to update the errorcodeserieslist that are used to list the configurable exception or error for an error scenario in Ingress Gateway.
For more details about REST APIs, see "REST API Configurations for Server Header Feature" in Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.
Observe
Metrics
There are no new metrics for this feature.
KPIs
There are no new KPIs for this feature.
Alerts
There are no alerts generated for this feature.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.3 Support for User-Agent Header
In 5G networks, producer Network Functions (NFs) cannot identify or validate a consumer on their own. To overcome this, 3GPP has introduced User-Agent headers, which are added to consumer service requests. This field is included in the HTTP (Hypertext Transfer Protocol) request that a consumer sends to the producer to identify itself and provide information about the NF making the request.
This feature enables the usage of the User-Agent Header in NSSF.
NSSF support the following inter-NF communication and service request functionalities:
- NSSF sends notifications to AMF.
- NSSF sends registration and heartbeat request to NRF.
- AMF in identifying the NSSF that sent the notification.
- NRF in identifying the NSSF that sent the subscription, registration, or heartbeat request to NRF.
Structure of an User-Agent Header
An User-Agent Header starts with the value of NF type, followed by a "-" and any other specific information, if needed afterwards. It is expected to be present in all the service requests and notification in the following formats:
- <NF Type>
- <NF Type>-<Instance-Id>
- <NF Type>-<Instance-Id> <FQDN>
Where,
- <NF Type> is the type of the NF.
- <Instance-Id> is the instance ID of the NF.
- <FQDN> is the FQDN of the NF.
For example: The following combinations are applicable to NSSF:
NSSF
NSSF-<NSSF's Instance-Id>
NSSF-<NSSF's Instance-Id> <NSSF's FQDN>
Note:
The onus is on operator to configure the values correctly as defined in the syntax explained above.Managing the Support for User-Agent Header
Enable:
- Use the following API
path:
/{nfType}/nf-common-component/v1/{serviceName}/useragentheader
- Set enabled as
true
. - Run the API using PUT method with the proposed values given in the
Rest API. For more information about API path, see "Configurations to Enable or
Disable User-Agent Header" section of "Egress Gateway REST APIs" in Oracle Communications Cloud Native Core, Network Slice Selection
Function REST
Specification Guide.
Given below is a sample REST API configuration to enable this feature:
{ "enabled": true, "nfType": "NSSF", "nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01", "nfFqdn": "nssf.oracle.com", "addFqdnToHeader": true, "overwriteHeader": true }
Note:
- In the mentioned configuration, when sending notifications to
AMF, the User-Agent Header will be appended by the NSSF with the value
NSSF-9faf1bbc-6e4a-4454-a507-aef01a101a01 nssf.oracle.com
. - The
nfInstanceId
andnfFqdn
values in the above example are samples. Ensure that you update the values of thenfInstanceId
andnfFqdn
parameters accordingly.
Observe
Metrics
The following metric is used to provide information about this feature:
oc_egressgateway_user_agent_consumer_total
: This metric is applicable whenever the feature is enabled and User-Agent Header is getting generated.
For information about the metrics, see Egress Gateway Metrics.
Alerts
There are no alerts generated for this feature.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.4 Ingress Gateway Pod Protection
This feature protects the Ingress Gateway pods from overloading due to uneven traffic distribution, traffic bursts, or congestion. During overload conditions, the Ingress Gateway pods may undergo stability issues. As a front end microservice for HTTP traffic, it is important for Ingress Gateway to have pod protection implemented.
The pod protection is performed based on the CPU consumption of the Ingress Gateway Pods as explained in the Congestion State Parameters. It is measured at different load states mentioned in the Ingress Gateway Load States.
Congestion State Parameters
In the Pod Protection feature, each Ingress Gateway microservice pod monitors its congestion state. This state is tracked in terms of CPU consumption, measured in nanoseconds, using Kubernetes cgroup (cpuacct.usage).
It is periodically monitored and calculated using the following formula. Then, it is compared against the CPU thresholds configured through the Rest API to determine the congestion state. For more information about the parameters, see Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.

Where,
CurrentCpuUsage is the counter reading at current periodic cycle.
LastCpuUsage is the counter reading at previous periodic cycle.
CurrentTime is the current time snapshot.
LastSampletime is the previous periodic cycle time snapshot.
CPUs is the total number of CPUs for a given pod.
Ingress Gateway Load States
The following states are used to detect overload conditions. This ensures the protection and mitigation of pods from entering an overload condition, while also facilitating necessary actions for recovery.

Note:
The transition can occur between any states based on the congestion parameters. The threshold for these congestion parameters is preconfigured and must not be changed.- Congested State: This is the upper bound state where the pod is
congested. This means one or more congestion parameters are above the configured
thresholds for the congested state. For more information about the configuration
using REST API, see Oracle Communications Cloud Native Core, Network Repository
Function REST Specification Guide. The pod can be transitioned to the Congested
State either from the Normal State or the DoC state. When the pod reaches this
state, the following actions are performed:
- new incoming HTTP2 connection requests are not accepted.
- the pod gradually decrements the number of concurrent streams
by updating SETTINGS_MAX_CONCURRENT_STREAMS parameter in a SETTINGS frame to
the configured
maxConcurrentStreamsPerCon
value at a regular interval. The concurrent streams are decremented based on the value configured indecrementBy
parameter. And, the regular interval is configured in thedecrementSamplingPeriod
parameter.
- Danger of Congestion (DOC): This is the intermediate state where
the pod is approaching a congested state. This means if CPU is above the configured
thresholds for the DoC state.
- any new incoming HTTP2 connection requests are not accepted.
- if the pod is transitioning from the Normal State to the DoC
state, the pod gradually decrements the number of concurrent streams by
updating SETTINGS_MAX_CONCURRENT_STREAMS parameter in a SETTINGS frame to
the configured
maxConcurrentStreamsPerCon
value at a regular interval. The concurrent streams are decremented based on the value configured indecrementBy
parameter. And, the regular interval is configured in thedecrementSamplingPeriod
parameter. - if the pod is transitioning from the Congested State to the DoC
state, the pod gradually increments the number of concurrent streams by
updating SETTINGS_MAX_CONCURRENT_STREAMS parameter in a SETTINGS frame to
the configured
maxConcurrentStreamsPerCon
value at a regular interval. The concurrent streams are incremented based on the value configured inincrementBy
parameter. And, the regular interval is configured in theincrementSamplingPeriod
parameter.
- Normal State: This is the lower bound state where all the
congestion parameters for the pod are below the configured thresholds for DoC and
Congested states. When the pod reaches this state, the following actions are
performed:
- the pod will continue accepting new incoming HTTP2 connection requests.
- the pod will continue accepting requests on the existing HTTP2 connections.
- in case the pod is transitioning from the Congested or DoC
state to Normal state, the pod gradually increments the number of concurrent
streams by updating SETTINGS_MAX_CONCURRENT_STREAMS parameter in a SETTINGS
frame to the configured
maxConcurrentStreamsPerCon
value at a regular interval. The concurrent streams are incremented based on the value configured inincrementBy
parameter. And, the regular interval is configured in theincrementSamplingPeriod
parameter.
To avoid toggling between these states due to traffic pattern, it is required for the pod to be in a particular state for a given period before transitioning to another state. The below configurations are used to define the period till which the pod has to be in a particular state:
stateChangeSampleCount
monitoringInterval
Formula for calculating the period is as follows:
(stateChangeSampleCount * monitoringInterval)
For more information about the configuration using REST API, see Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.
Managing Ingress Gateway Pod Protection
This section explains the procedure to enable and configure the feature.
Enable:
- Use the API path as {apiRoot}/nf-common-component/v1/{serviceName}/podprotection.
- Set enabled as
true
. - Set
congestionControl.enabled
totrue
. - Run the API using PUT method with the proposed values given in
the Rest API. For more information about API path, see "Configurations to
enable Ingress Gateway Pod Protection" section of "Ingress Gateway REST
APIs" in Oracle Communications Cloud Native Core, Network Slice Selection
Function REST Specification Guide.
Given below is a sample REST API configuration to enable this feature:
{ "enabled": true, "monitoringInterval": 100, "congestionControl": { "enabled": true, "stateChangeSampleCount": 10, "actionSamplingPeriod": 3, "states": [ { "name": "Normal", "weight": 0, "entryAction": [ { "action": "MaxConcurrentStreamsUpdate", "arguments": { "incrementBy": 30, "incrementByActionSamplingPeriod": 3, "maxConcurrentStreamsPerCon": 100 } }, { "action": "AcceptIncomingConnections", "arguments": { "accept": true } } ] }, { "name": "DoC", "weight": 1, "resourceThreshold": { "cpu": 60, "memory": 60, "pendingMessage": 5000 }, "entryAction": [ { "action": "AcceptIncomingConnections", "arguments": { "accept": false } }, { "action": "MaxConcurrentStreamsUpdate", "arguments": { "incrementBy": 30, "incrementByActionSamplingPeriod": 3, "decrementBy": 30, "decrementByActionSamplingPeriod": 1, "maxConcurrentStreamsPerCon": 50 } } ] }, { "name": "Congested", "weight": 2, "resourceThreshold": { "cpu": 75, "memory": 75, "pendingMessage": 7000 }, "entryAction": [ { "action": "AcceptIncomingConnections", "arguments": { "accept": false } }, { "action": "MaxConcurrentStreamsUpdate", "arguments": { "decrementBy": 30, "decrementByActionSamplingPeriod": 1, "maxConcurrentStreamsPerCon": 5 } } ] } ] } }
Observe
Metrics
The following metrics are used to provide information about this feature:
oc_ingressgateway_pod_congestion_state
: It is used to track congestion state of a pod.oc_ingressgateway_pod_resource_stress
: It tracks CPU, memory, and queue usage (as percentages) to determine the congestion state of the POD that is performing the calculations.oc_ingressgateway_pod_resource_state
: It tracks the congestion state of individual resources, which is calculated based on their usage and the configured threshold.oc_ingressgateway_incoming_pod_connections_rejected_total
: It tracks the number of connections dropped in the congested or Danger Of Congestion (DOC) state.
For information about the metrics, see Ingress Gateway Metrics.
Alerts
- OcnssfIngressGatewayPodCongestionStateWarning
- OcnssfIngressGatewayPodCongestionStateMajor
- OcnssfIngressGatewayPodResourceStateWarning
- OcnssfIngressGatewayPodResourceStateMajor
For more information about alerts, see NSSF Alerts.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.5 Monitoring the Availability of SCPs using SCP Health APIs
With the introduction of this feature, NSSF determines the availability and reachability status of all the SCPs configured either statically by the operator or through DNS SRV based selection of the SCP sets. With this feature, NRF determines the availability and reachability status of all SCPs irrespective of the configuration types. This feature is an enhancement to the existing SBI routing functionality. Egress Gateway microservice interacts with SCP on their health API endpoints using HTTP2 OPTIONS method. It monitors the health of configured SCP peers to ensure that the traffic is routed directly to the healthy peers. This enhancement avoids routing or rerouting towards unhealthy peers, thus minimizing the latency time.
Egress Gateway microservice maintains the health status of all available and unavailable SCPs. It maintains the latest health of SCPs by periodically monitoring and uses this data to route egress traffic to the healthy SCP.
Note:
- This is not a standalone feature but an add-on to the existing SBI Routing feature, which means this feature is activated only if the SBI Routing feature is enabled.
- Health monitoring can only be enabled for the peers which belong to a peerset associated with a SBI Routing filter.
Managing Monitoring the Availability of SCPs using SCP Health APIs
Prerequisites
- This feature works only when the SBI Routing feature is enabled.
Health monitoring can only be enabled for the SCP peers which belong to a peer
set associated with a SBI Routing filter. Not all peers are eligible for peer
health monitoring.
Note:
For more information, see DNS SRV based selection of the SCP sets. - Set the value of
sbiRoutingDefaultScheme
ashttp
. - Configure
peerconfiguration
to define the list of peers to which Egress Gateway can send request. - Configure
peerSetConfiguration
to logically group the peers into sets.Note:
peerIdentifier
must be the value of SCP peer configured inpeerConfiguration
.- You cannot configure multiple virtual hosts as peers in the same peer set.
- Configure or update
errorcriteriasets
. - Configure or update
erroractionsets
. - Configure the
priority
for each SCP peer in the set. Depending on the priority, it selects the primary, secondary, or tertiary SCP peers to route requests. - Configure
RoutesConfiguration
to add or update list of routes.Note:
- The ID of each route must match the route ID present in
Helm chart only if
routeConfigMode
is configured as HELM andsbiRoutingConfigMode
is configured as REST. - The configuration under
sbiRoutingConfiguration
corresponds to the SBI-Routing specific configuration.
- The ID of each route must match the route ID present in
Helm chart only if
- After above configurations, configure
peermonitoringconfiguration
to enable peer monitoring.Note:
By default,peermonitoringconfiguration
is set tofalse
inocnssf_custom_values_23.4.0.yaml
file. Configure the value astrue
through REST API to enable peer monitoring.
Note:
For more information about the parameters, see "Egress Gateway Parameters" under "Customizing NSSF" in Oracle Communications Cloud Native Core, Network Slice Selection Function Installation, Upgrade, and Fault Recovery Guide, or see "Egress Gateway REST APIs" in Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide for REST API based configurations.Configure or Enable
Configure Using Helm
ocnssf_custom_values_23.4.0.yaml
file:
peerConfiguration.healthApiPath
peerMonitoringConfiguration.enabled
peerMonitoringConfiguration.timeout
peerMonitoringConfiguration.frequency
peertMonitoringConfiguration.failureThreshold
peerMonitoringConfiguration.successThreshold
Here is a snippet from the ocnssf_custom_values_23.4.0.yaml
file for
configuring this feature:
peerConfiguration:
- id: peer1
host: ocats-amf-stubserver.changeme-ocats
port: 8080
apiPrefix: "/"
healthApiPath: "/health/v1"
...
peerMonitoringConfiguration:
enabled: true
timeout: 1000
frequency: 20000
failureThreshold: 3
successThreshold: 4
Caution:
If you have enabledpeermonitoringconfiguration
using Helm by setting its value as
true
in the ocnssf_custom_values_23.4.0.yaml
file, you cannot make any REST API
configurations related to this feature.
For more information about the Helm parameters, see Oracle Communications Cloud Native Core, Network Slice Selection Function Installation, Upgrade, and Fault Recovery Guide.
Configure Using REST API
You can also enable this feature using the REST API configurations in the following sequence:
- This feature works only when the SBI Routing feature is enabled. Health
monitoring can only be enabled for the SCP peers which belong to a peer set
associated with a SBI Routing filter. Not all peers are eligible for peer health
monitoring.
Note:
For more information, see DNS SRV based selection of the SCP sets. - Configure
peerconfiguration
to define the list of peers to which Egress Gateway can send request.Note:
peerconfiguration
must consist ofhealthApiPath
even thoughpeermonitoringconfiguration
is set tofalse
inocnssf_custom_values_23.4.0.yaml
file by default. - Configure
peersetconfiguration
to logically group the peers into sets.Note:
peerIdentifier
must be the value of SCP peer configured inpeerconfiguration
. - Configure the
priority
for each SCP peer in the set. Depending on the priority, it selects the primary, secondary, or tertiary SCP peers to route requests. - Configure or update
errorcriteriasets
. - Configure or update
erroractionsets
. - Configure
routesconfiguration
to add or update list of routes.Note:
- The ID of each route must match the route ID present in
Helm chart only if
routeConfigMode
is configured as HELM andsbiRoutingConfigMode
is configured as REST. - The configuration under
sbiRoutingConfiguration
corresponds to the SBI-Routing specific configuration.
- The ID of each route must match the route ID present in
Helm chart only if
- After above configurations, configure
peermonitoringconfiguration
astrue
to enable peer monitoring. By default,peermonitoringconfiguration
is set tofalse
in Helm.
For more information about REST API configurations, see "Egress Gateway REST APIs" in Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.
Observe
Metrics
The following metrics are used to provide information about this feature:
oc_egressgateway_peer_health_status
oc_egressgateway_peer_health_ping_request_total
oc_egressgateway_peer_health_ping_response_total
oc_egressgateway_peer_health_status_transitions_total
oc_egressgateway_peer_count
oc_egressgateway_peer_available_count
For information about the metrics, see NSSF Metrics.
Alerts
The following alerts are applicable for this feature:
- OcnssfScpMarkedAsUnavailable
- OcnssfAllScpMarkedAsUnavailable
For more information about the alerts, see NSSF Alerts.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.6 Support for Kubernetes Resource
4.6.1 Network Policies
Network Policies are an application-centric construct that allows you to specify how a pod is allowed to communicate with various network entities. To control communication between the cluster's pods and services and to determine which pods and services can access one another inside the cluster, it creates pod-level rules.
Previously, NSSF had the privilege to communicate with other namespaces, and pods of one namespace could communicate with others without any restriction. Now, namespace-level isolation is provided for the NSSF pods, and some scope of communications is allowed between the NSSF and pods outside the cluster. The network policies enforces access restrictions for all the applicable data flows except communication from Kubernetes node to pod for invoking container probe.
Managing Support for Network Policies
Enable
To use this feature, network policies need to be applied to the namespace in which NSSF is deployed.
Configure
You can configure this feature using Helm. For information about configuring Network Policy, see Oracle Communications Cloud Native Core, Network Slice Selection Function Installation, Upgrade, and Fault Recovery Guide.
Observe
here is no specific metrics and alerts required for the Network Policy feature.
4.7 Validation of WWW-Authenticate Response Header 4xx with NSSF
When access token validation is enabled, NSSF performs access-token validation of the access token that comes with service requests to it. With this enhancement, NSSF has added supports 3GPP specified 4XX application error codes for these access token checks.
- Validating if access token is present in the service request: If the access token is not present, NSSF returns 401 unauthorized error code together with the "WWW-Authenticate" header as specified in 3GPP 16.5 29.531.
- Validating if access token does not have the required scopes to
invoke the service operation: NSSF validates the scope IE in
AccessTokenClaims
(which is the name of the NSSF services for which the access token is authorized) against the NSSF Service that are accessed in this service request. If the validation fails, NSSF returns a 403 Forbidden error code together with the "WWW-Authenticate" header as specified in 3GPP 16.5 29.531.
Managing Validation of WWW-Authenticate Response Header 4xx with NSSF
Enable
This feature does not require any configuration. It is enabled by default when the NSSF is installed.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.8 Deleting Subscription on 404 SUBSCRIPITON_NOT_FOUND Response from AMF
This feature is an enhancement to the existing behavior of NSSF Notify Service Operation, which is used to update the NF Service Consumer (for example, AMF) of any change in status. It is done on a per TA basis for the S-NSSAIs available (unrestricted and restricted) per PLMN in the TA of a UE's serving PLMN.
Upon receiving a failure, the NF service consumer (AMF) returns some HTTP status codes
and NSSF retries the notification until it reaches the value of the
httpMaxRetries
or a success response is received from the AMF.
However, this behavior is not suitable when it comes to '404 Subscription Not Found'
failure. Waiting for the value of the httpMaxRetries
to get exhausted
will only create an unproductive delay.
When this feature is enabled, it eliminates the delay by simply logging the error and deleting the subscription when the AMF sends a '404 Subscription Not Found' response.
Note:
This behavior is applicable only when AMF responds with the '404 Subscription Not Found' error. It is not applicable to other failure scenarios.Managing Deleting Subscription on 404 SUBSCRIPITON_NOT_FOUND Response from AMF
Enable
To enable this feature, set the value of
deleteOnSubscriptionNotFound
parameter to true
under the NSSubscription
section in the ocnssf_custom_values_23.4.0.yaml file.
Observe
Metrics
The following metrics are used to provide information about this feature:
ocnssf_nssaiavailability_notification_delete_on_subscription_not_found
ocnssf_nssaiavailability_notification_db_error
For information about the Metrics, see NSSF Metrics.
Error Scenarios
The following error logs are generated for this feature:
Table 4-1 Error Scenarios
Scenario | Microservice | Request URL | Response Code/ Error Title | Log Snippet |
---|---|---|---|---|
Parameter deleteOnSubscriptionNotFound is true but unable to delete NssaiSubscription | NsSubscription | /nnssf-nssubscription/v1/nssai-availability/autoconfignotifications
/nnssf-nssubscription/v1/nssai-availability/notifications |
404 SUBSCRIPTION_NOT_FOUND |
|
NsSubcription recieves 404 SUBSCRIPTION_NOT_FOUND from client, Param deleteOnSubscriptionNotFound is true hence NssaiSubscription is deleted | NsSubscription | /nnssf-nssubscription/v1/nssai-availability/autoconfignotifications OR /nnssf-nssubscription/v1/nssai-availability/notifications | 404 SUBSCRIPTION_NOT_FOUND |
|
NsSubcription recieves 404 SUBSCRIPTION_NOT_FOUND from client, Param deleteOnSubscriptionNotFound is false hence NssaiSubscription is not deleted | NsSubscription | /nnssf-nssubscription/v1/nssai-availability/autoconfignotifications OR /nnssf-nssubscription/v1/nssai-availability/notifications | 404 SUBSCRIPTION_NOT_FOUND |
|
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.9 DNS SRV Based Selection of SCP in NSSF
NSSF selects Service Communication Proxy (SCP) for indirect communication of notifications using the static configurations done by the operator. This enhancement enables NSSF to learn SCP configuration from DNS SRV based FQDN, in addition to the already existing static manual configuration by the operator.
Egress Gateway (Egress Gateway) supports AlternateRoute Service, which NSSF is using to support DNS SRV based selection of SCP. It enables NSSF to resolve FQDN or Virtual FQDN to alternate FQDNs of SCP. Egress Gateway uses the virtual FQDN of SCP instances to query the AlternateRoute Service and get the list of alternate FQDNs with priorities assigned to each of them. Based on the priorities, Egress Gateway picks up the SCP instances for rerouting attempts.
The AlternateRoute Service allows the configuration of multiple sets of SCP instances in NSSF in contrast to only one static configuration in the previous scenario.
Managing DNS SRV Based Selection of SCP in NSSF
Enable
To enable DNS SRV, set the dnsSrvEnabled
parameter to
true
under the alternate-route
section in the
ocnssf_custom_values_23.4.0.yaml
file.
Configure
Configure Using Helm Parameters:
ocnssf_custom_values_23.4.0.yaml
as shown below:
dnsSrvEnabled: true
dnsSrvFqdnSetting.enabled: false
Note:
Flag to enable or disable the usage of custom patterns for the FQDN while triggering DNS-SRV query.dnsSrvFqdnSetting.pattern: "_{scheme}._tcp.{fqdn}."
sbiRoutingConfigMode: HELM
routeConfigMode: HELM
Note:
By default, the values ofsbiRoutingConfigMode
and routeConfigMode
are set to REST
in the ocnssf_custom_values_23.4.0.yaml
file. To
configure this feature using Helm, ensure that the values are set to
HELM
as shown above.
For more information about Helm parameters to configure DNS SRV and Alternate Routing Service, see "Alternate Route Microservice Parameters section" in Oracle Communications Cloud Native Core, Network Slice Selection Function Installation, Upgrade, and Fault Recovery Guide.
Configure Using REST API:
The feature related REST API configurations are performed at NSSF and Egress Gateway.
- Ensure that the value of
routeConfigMode
andsbiRoutingConfigMode
is set toREST
in theocnssf_custom_values_23.4.0.yaml
file, as shown below:sbiRoutingConfigMode: REST routeConfigMode: REST
Note:
By default, it is set toREST
. - Perform REST API configurations at Egress Gateway in the following
sequence:
- Configure
peerconfiguration
to define the list of peers to which Egress Gateway can send request.Note:
It is mandatory to configurepeerconfiguration
withhealthApiPath
if you want to enablepeermonitoringconfiguration
. - Configure
virtualHost
underpeerconfiguration
where the AMF query is sent. - Configure
peersetconfiguration
to logically group the peers into sets.peerIdentifier
must be the value of peer configured inpeerconfiguration
Note:
You cannot configure multiple virtual hosts as peers in the same peer set. - Configure the
Priority
for each peer in the set. Depending on the priority, it selects the primary, secondary, or tertiary peers to route requests. - Configure or update
errorcriteriasets
. - Configure or update
erroractionsets
. - Configure
routesconfiguration
to define the route and reroute parameters. If SBIRouting functionality is required, then configureSBIRoutingFilter
. If reroute mechanism is required for that route, then configureSBIReroute
filter with retries, methods, and statuses.Note:
peerSetIdentifier
must be the value configured duringpeersetconfiguration
. - Set the value of
enabled
undersbiRoutingConfiguration
totrue
to route the AMF queries through SCP configured in theid
attribute.Note:
peerconfiguration
andpeersetconfiguration
can be either set to empty list or populated with values. These attributes are used for routing only ifsbiRoutingConfiguration
is enabled for a particular route. - <Optional> You can also configure
peermonitoringconfiguration
using REST API. For more information about enabling or configuringpeermonitoringconfiguration
, see Monitoring the Availability of SCPs using SCP Health APIs.Note:
It is mandatory to configurepeerconfiguration
withhealthApiPath
ifpeermonitoringconfiguration
is enabled.
- Configure
- Perform the following REST API configurations at NSSF:
- Configure the
nssaiauth
Managed Object to enable the configuration of network slice authentication rules by configuring Grant status (Allowed_PLMN, Rejected_PLMN, or Rejected_TAC) for S-NSSAI on a per TAI basis.
- Configure the
For more information about REST API parameters and configuration, see Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.
Observe
Metrics
No new Metrics or KPIs were added to NSSF. However, the following Egress Gateway metrics for Alternate Route Service are used to provide the information about this feature:
oc_fqdn_alternate_route_total
oc_dns_srv_lookup_total
oc_alternate_route_resultset
oc_configclient_request_total
oc_configclient_response_total
For information about the Metrics, see Egress Gateway Metrics in NSSF Metrics.
Error Scenarios
No new logs are generated for this feature. However, it uses the following Egress Gateway error scenarios:
Table 4-2 Error Scenarios
Scenario | Microservice | Request URL | Response Code/ Error Title | Log Snippet |
---|---|---|---|---|
Sending Subscription notification failed due to UnknownHost exception | ocnssf-egress-gateway | /nnssf-configuration/v1/nssaiauth |
|
|
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.10 OAuth Access Token Based Authorization
NSSF supports Oauth 2.0, which is a security feature that NSSF uses to validate and authorize requests from allowed or valid consumers NFs. The consumer NF requests for access token from the issuer NRF, and uses this access token to send the request to NSSF. NSSF validates the requests and approves or discards it based on access token authorization received in the request. The access token is validated with the configured public key certificate in NSSF.
Before this enhancement, NSSF used NRF Instance ID to validate the access token, where Ingress Gateway stored public keys against NRF instance Id. This enhancement allows NSSF to use multiple public certificates for validating access tokens by adding support for Key-ID (K-ID) based access token validation, in addition to the existing NRF Instance ID based access token validation.
This enhancement now allows Ingress Gateway to operate in the following three different modes:
- K-ID based ONLY
- Ingress Gateway validates access token based on public keys indexed with key-id only.
- Instance ID based ONLY (DEFAULT)
- Ingress Gateway validates access token based on public keys indexed with NRF Instance ID in the issuer field.
- K-ID based with Instance ID based as fallback (KID_PREFERRED)
- Ingress Gateway validates access token based on public keys indexed with Key-ID. If Key-ID is not FOUND in Access token, Ingress Gateway attempts token validation using public keys indexed with NRF instance ID in the issuer field.
- Fallback happens only if the received access token is structured as
follows:
- Does not contain Key-ID
- Contains Key-ID but does not have public keys configured against the Key-ID
Managing OAuth Access Token Based Authorization Using Key-ID and NRF Instance ID
Prerequisites
This section describes the configurations required to enable access tokens before deploying NSSF.
Generating KeyPairs for NRF Instances
Note:
It is at the discretion of the user to create private keys and certificates, and it is not in the scope of NSSF. This section lists only samples to create KeyPairs.Using the OpenSSL tool, the user can generate private key and public certificates. The commands to generate the KeyPairs are as follows:
openssl ecparam -genkey -name prime256v1 -noout -out ec_private_key1.pem
openssl pkcs8 -topk8 -in ec_private_key1.pem -inform pem -out ec_private_key_pkcs8.pem -outform pem -nocrypt
openssl req -new -key ec_private_key_pkcs8.pem -x509 -nodes -days 365 -out 4bc0c762-0212-416a-bd94-b7f1fb348bd4.crt -subj "/C=IN/ST=KA/L=BLR/O=ORACLE/OU=CGBU/CN=ocnrf-endpoint.ocnrf.svc.cluster.local"
Note:
For ATS configuration details, see Configurations to Enable Access Token in Preinstallation Tasks of Cloud Native Core Network Slice Selection Function Installation and Upgrade Guide.Enabling and Configuring Access Token
To enable access token validation, configure both Helm-based and REST-based configurations on Ingress Gateway.
Configuration using Helm:
For Helm-based configuration, perform the following steps:
- Create a secret that stores NRF public key certificates using
the following
commands:
kubectl create secret generic <secret name> --from-file=<filename.crt> -n <Namespace>
For Example:
kubectl create secret generic oauthsecret --from-file=4bc0c762-0212-416a-bd94-b7f1fb348bd4.crt -n ocnssf
Note:
In the above command:
oauthsecret
is the secret nameocnssf
is the namespace4bc0c762-0212-416a-bd94-b7f1fb348bd4.crt
is the public key certificate
- Enable the
oauthValidatorEnabled
parameter on Ingress Gateway by setting its value totrue
. Further, configure the secret and namespace on Ingress Gateway in the OAUTH CONFIGURATION section of theocnssf_custom_values_23.4.0.yaml
file using the following fields:oauthValidatorEnabled
nfType
nfInstanceId
producerScope
allowedClockSkewSeconds
enableInstanceIdConfigHook
nrfPublicKeyKubeSecret
nrfPublicKeyKubeNamespace
validationType
producerPlmnMNC
producerPlmnMCC
oauthErrorConfigForValidationFailure
oauthErrorConfigForValidationFailure.errorCode
oauthErrorConfigForValidationFailure.errorTitle
oauthErrorConfigForValidationFailure.errorDescription
oauthErrorConfigForValidationFailure.errorCause
oauthErrorConfigForValidationFailure.redirectUrl
oauthErrorConfigForValidationFailure.retryAfter
oauthErrorConfigForValidationFailure.errorTrigger
oauthErrorConfigForValidationFailure.errorTrigger.exceptionType
Note:
4bc0c762-0212-416a-bd94-b7f1fb348bd4.crt
is the public key certificate and we can have any number of certificates in the secret.The following snippet represents the location of the mentioned parameter in the Helm file:Note:
The following snippet represents only the sample values. For more information on parameters and their supported values, see Ingress Gateway Parameters from Customizing NSSF chapter in Oracle Communications Cloud Native Core, Network Slice Selection Function Installation, Upgrade, and Fault Recovery Guide.#OAUTH CONFIGURATION oauthValidatorEnabled: true nfType: NSSF nfInstanceId: 9faf1bbc-6e4a-4454-a507-aef01a101a01 producerScope: nnssf-configuration allowedClockSkewSeconds: 0 enableInstanceIdConfigHook: true nrfPublicKeyKubeSecret: oauthsecret nrfPublicKeyKubeNamespace: ocnssf validationType: strict producerPlmnMNC: 14 producerPlmnMCC: 310 oauthErrorConfigForValidationFailure: errorCode: 401 errorTitle: "Validation failure" errorDescription: "UNAUTHORIZED" errorCause: "oAuth access Token validation failed" redirectUrl: retryAfter: errorTrigger: - exceptionType: OAUTH_CERT_EXPIRED errorCode: 408 errorCause: certificate has expired errorTitle: errorDescription: retryAfter: redirectUrl:- exceptionType: OAUTH_MISMATCH_IN_KID errorCode: 407 errorCause: kid configured does not match with the one present in the token errorTitle: errorDescription: retryAfter: redirectUrl: - exceptionType: OAUTH_PRODUCER_SCOPE_NOT_PRESENT errorCode: 406 errorCause: producer scope is not present in token errorTitle: errorDescription: retryAfter: redirectUrl: - exceptionType: OAUTH_PRODUCER_SCOPE_MISMATCH errorCode: 405 errorCause: produce scope in token does not match with the configuration errorTitle: errorDescription: retryAfter: redirectUrl: - exceptionType: OAUTH_MISMATCH_IN_NRF_INSTANCEID errorCode: 404 errorCause: nrf id configured does not match with the one present in the token errorTitle: errorDescription: retryAfter: redirectUrl: - exceptionType: OAUTH_PRODUCER_PLMNID_MISMATCH errorCode: 403 errorCause: producer plmn id in token does not match with the configuration errorTitle: errorDescription: retryAfter: redirectUrl: - exceptionType: OAUTH_AUDIENCE_NOT_PRESENT_OR_INVALID errorCode: 402 errorCause: audience in token does not match with the configuration errorTitle: errorDescription: retryAfter: redirectUrl: - exceptionType: OAUTH_TOKEN_INVALID errorCode: 401 errorCause: oauth token is corrupted errorTitle: errorDescription: retryAfter: redirectUrl:oauthErrorConfigOnTokenAbsence: errorCode: 400 errorTitle: "Token not present" errorDescription: "UNAUTHORIZED" errorCause: "oAuth access Token is not present" redirectUrl: retryAfter:
Configuration using REST API
After Helm configuration, send the REST requests to use configured public key certificates. Using REST-based configuration, you can distinguish between the certificates configured on different NRFs and can use these certificates to validate the token received from a specific NRF.
For more information about REST API configuration, see OAuth Validator Configuration section in Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.
Observe
- Added the following success measurements:
oc_oauth_nrf_request_total
oc_oauth_nrf_response_success_total
oc_oauth_token_cache_total
oc_oauth_validation_successful_total
oc_oauth_cert_expiryStatus
oc_oauth_cert_loadStatus
oc.oauth.keyid.count
- Added the following error measurements:
oc_oauth_nrf_response_failure_total
oc_oauth_request_failed_internal_total
oc_oauth_request_invalid_total
oc_oauth_validation_failure_total
oc.oauth.request.failed.cert.expiry
For information on Metrics and KPIs of NSSF, see NSSF Metrics and NSSF KPIs sections respectively.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.11 Overload Control based on Percentage Discards
The Overload Control feature protects the system from overload and maintains the overall health of NSSF. The system needs to not only detect overload conditions but also protect against the same. Further, it needs to mitigate against and avoid the system from entering into an overload condition by taking necessary actions for recovering from overload.
NSSF provides the following means for overload management:
- Predefined threshold load levels
- Tracks number of pending messages
- Tracks CPU and memory usage
- Enforce load shedding during various overload levels
Perf-info performs overload calculations based on the indicators:
- CPU Utilization
- Memory Utilization
- Pending Message Count
- Failure Count
The overload level is configured for the following NRF microservices:
- NSSelection
- NSAvailability
The Overload Manager module in Perf-info is configured or updated with the threshold
value for services. A configurable flag is available for sampling interval as
ocPolicyMapping.samplingPeriod
based on which Ingress Gateway
calculates rate per service in the current sampling period and applies appropriate
discard policies and actions in the subsequent sampling period.
Overload Manager triggers Rate Calculator to start calculating the rate of incoming requests per service per sampling period. Ingress Gateway receives a notification event per service with the calculated rates to the Overload Manager filter at the end of every sampling period. It applies an appropriate configured discard policy for a particular service based on the rate of requests.
Ingress Gateway calculates the number of requests to be dropped in the current sampling period based on configured percentage discard.
Overload Thresholds for each service is evaluated based on four metrics namely
cpu, svc_failure_count
, svc_pending_count
, and
memory
. Overload control is triggered if the thresholds for any one
metrics are reached.
Managing Overload Control based on Percentage Discards
Enable
To enable this feature, set the
global.performanceServiceEnable
parameter to
true
in the ocnssf_custom_values_23.4.0.yaml
file.
#Flag to Enable or Disable Performance Service. The flag is set to true to enable the overload control feature by default.
performanceServiceEnable: true
Configure
Configure using Helm Parameters:
- Set the
perf-info.overloadManager.enabled
parameter totrue
in theocnssf_custom_values_23.4.0.yaml
file.The following snippet represents the location of the mentioned parameter in the Helm file:overloadManager: ingressGatewayPort: *httpSignalPort #Flag to Enable or Disable overloadManager enabled: true
- Configure the Prometheus URI in
perf-info.configmapPerformance.prometheus
The following snippet represents the location of the mentioned parameter in the Helm file:perf-info configmapPerformance: prometheus: http://occne-prometheus-server.occne-infra:80
- Save the
ocnssf_custom_values_23.4.0.yaml
file. - Run helm upgrade, if you are enabling this feature after NSSF deployment. For more information on upgrade procedure, see Oracle Communications Cloud Native Core, Network Slice Selection Function Installation and Upgrade Guide.
Configure using REST API:
Note:
There are no REST configurations required at NSSF.Configure using CNC Console:
There are no CNC Console configurations for this feature.
Observe
Metrics
No new metrics added to NSSF for the Overload Control feature. However, the following Perf-info metrics are used to provide the information about overload control feature:
cgroup_cpu_nanoseconds
cgroup_memory_bytes
load_level
For information about Metrics, see Perf-info metrics for Overload Control in NSSF Metrics.
For information on Metrics and KPIs of NSSF, see NSSF Metrics and NSSF KPIs sections respectively.
Alerts
The following alerts are added for the Overload Control feature:
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.12 Autopopulation of Configuration Using NRF Content
NSSF responds with CandidateAMFList
(list of possible AMFs ) to
Initial Registration request. Currently, the computation of active AMFs in AMF Set is
done by one of the following methods:
- Discovery: For each registration NSSF sends a discovery message to NRF to get all active AMFs in a AMF-Set.
- Operator configuration: The operator has to ensure that all active AMFs are mapped to the AMF Set.
NSSF must maintain the information about AMF Set to AMF mapping in the database as it uses this information while responding to NSSelection initial registration query.
Before this enhancement, the operator was required to maintain this information manually in the database. This enhancement removes the need for the manual configuration by allowing NSSF to autoconfigure AMF information using NRF (Network Repository Function) whenever there is an update in the AMF Set data. NSSF automatically determines AMF information in a AMF-Set and autopopulate NSSF configuration using the information from NRF.
- For each initial registration, NSSF sends a discovery message to NRF to get AMFs in a AMF-Set.
- NSSF maintains AMF-Set (MCC-MNC-SetId-RegionId) to AMF list (List of AMFs, which
belong to a AMF-Set in NSSF DB) mapping.
- Subscription based on AMF-Set: NSSF sends a discovery and subscribe request to NRF based ontheAMF-Set configured by the operator and maintain AMF-Set to AMFs mapping in NSSF Database.
Hence, operator is now required to configure only AMF set. The information about active amfs are maintained by NSSF, as it is autoconfigured using NRF content. This resolves the issue of stale configuration and NSSF does not have to send discovery for each initial registration request, saving CPU and network bandwidth.
Managing Autopopulation of Configuration Using NRF Content
Enable
This section provides the procedure to enable this feature:
- Set the
nsconfig.nrf.subscription
parameter totrue
in theocnssf_custom_values_23.4.0.yaml
file.The following snippet represents the location of the mentioned parameter in the Helm file:nsconfig: nrf: subscription: false # Flag to enable Subscriptions towards NRF for AmfSet
- Set the
nsselection.features.candidateResolution
parameter to true in theocnssf_custom_values_23.4.0.yaml
file.The following snippet represents the location of the mentioned parameter in the Helm file:nsselection: features: candidateResolution : false #Flag to true and false to enable or disable Candidate Resolution feature
Note:
- When this feature is set to
false
, NSSF returnsTargetAMFSetId
andTargetAMFRegionId
for NSSelection GET request for Initial Register message and UE-Config update. - When this feature is set to
true
, NSSF computes and returns Candidate AMF list for NSSelection GET request for Initial Register message and UE-Config update.
Configure
Configure using Helm Parameters:
No additional helm configuration is required to enable this feature.
Configure using REST API:
There is no option to enable or disable this feature using REST API configuration.
nsconfig.nrf.subscription
is set to
true
in the ocnssf_custom_values_23.4.0.yaml
file.
Note:
- When
nsconfig.nrf.subscription
is set totrue
ocnssf_custom_values_23.4.0.yaml
file, even if corresponding AMF set is not configured for an NSI-Profile, this feature will work. - For more information on REST APIs, see Oracle Communications Cloud Native Core, REST API Guide.
Configure using CNC Console:
There are no CNC Console configurations for this feature.
Observe
Metrics
Added the following success measurements:
ocnssf_nsconfig_nrf_disc_success
ocnssf_subscription_nrf_tx
Added the following error measurements:
ocnssf_nsconfig_nrf_disc_error
ocnssf_discovery_nrf_tx_failed
ocnssf_subscription_nrf_tx_failed
For information on Metrics and KPIs of NSSF, see NSSF Metrics and NSSF KPIs sections respectively.
Alerts
There are no new alerts for this feature.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.13 Auto-Population of Configuration Based on NSAvailability Update
AMF updates supported S-NSSAI for NSSF on a per TA basis using NSAvailability data. NSSF uses this data to update its configuration as per operator's configuration.
Currently, the data received from Nnssf_NSSAIAvailability
update is not replicated to the provisional configuration (site-specific database).
However, the data are crucial, as they are used in Nnssf_NSSelection
service's operations. It is mandatory for an operator to configure NSAvailability data
for each location that NSSF supports, or all S-NSSAIs that NSSF supports or
restricts. The operator is required to configure not only the allowed S-NSSAI
information from the AMF but also the restricted S-NSSAIs per TAC per PLMN. It can be
done using CNC Console or REST based methods.
After this enhancement, the operator need not to configure the allowed S-NSSAIs, as it will be updated automatically based on the NSAvailability update from the AMF. However, the operator still needs to configure the restricted S-NSSAI information per TAC per PLMN, as it is not a part of the NSAvailability update.
Further, it allows NSSF to do following tasks in the NSAvailability update:
- Configure
nssai_auth
: If S-NSSAI is not already configured innssai_auth
table for that TAI, irrespective of the Grant Allowed, NSSF creates S-NSSAI entry onnssai_auth
table. - Configure
nss_rule
: If S-NSSAI is supported in one TAI, NSSF it configures annssai_auth
. Otherwise, NSSF configures annss_rule
for the accessType 3GPP. - Delete S-NSSAI entry: When an AMF sends a delete request on
NSAvailability update, NSSF checks if the AMF in the particular region supports
the given S-NSSAI. If no AMFs in the particular geographical region supports a given
S-NSSAI, NSSF deletes the corresponding
nssai_auth
and allnss_rule
corresponding to thatnssai_auth
.
NSSF adds nssai_auth
and the only one kind of
nss_rule
, which is accessType 3GPP. If an operator needs to support
an S-NSSAI for a accessType Non 3GPP, then they must add an
nss_rule
.
Managing Auto-Population of Configuration Based on NSAvailability Update
Enable
There is no option to enable or disable this feature. If all the prerequisites are met, it will be autoenabled at the time of installation or after upgrade to the target version.
Configure
Operator must configure the following for this feature to work:
- Configure PLMN Level NSI Profile for each supported PLMN, as
nssai_auth
autoconfiguration happens only when default profile is configured for the PLMN. For more information on REST based configuration, see PLMN Level NSI Profile in Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide. For more information on CNC Console based configuration, see PLMN Level NSI Profile in 'Configuring NSSF using CNC Console'. -
Configure
nss_rule
for SNSSAIs supported for Non 3GPP accessType. For more information on REST based configuration, see NSS Rule in Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide. For more information on CNC Console based configuration, see NSS Rule in 'Configuring NSSF using CNC Console'.
Observe
No new metrics or KPIs are generated for this feature. For information on other Metrics and KPIs of OCNSSF, see OCNSSF Metrics and OCNSSF KPIs sections respectively.
Error Scenarios
For Auto-Population of Configuration Based on NSAvailability Update, logs are generated for NSAvailability, when error is due to configuration in the PLMN Level NSI Profile.
Table 4-3 Error Scenarios
Scenario | Microservice | Response Code/ Error Title | Log Snippet |
---|---|---|---|
PLMN Level NSI Profile is not configured | Nnssf_NSSAIAvailability | Configuration issue: PLMN Level Profile is not
configured for <MCC> <MNC>
Unable to process nsavailability request 500 Response with details missing configuration. Unable to find PLMN level profile for <MCC> <MNC> |
|
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.14 Handover from EPS to 5G
The current market retains a broad mix of UEs in both 4G and 5G networks. These UEs move from one network to another network in multiple ways:
- From one 5G PLMN to another 5G PLMN (VPLMN), that is from one 5G network to another 5G network (also known as 5G to 5G roaming).
- From 4G network to 5G network inside the same "PLMN" (also known as EPS to 5G).
In both the scenarios, a slice mapping mechanism is required on the NSSF of a visited PLMN (VPLMN). This feature implements the support for EPS to 5G slice mapping in NSSF, that is the second case in the list given above.
When a UE moves from 4G network to a 5G network (EPS to 5G), a registration of UE is triggered in the 5G network. The AMF, which caters to UE in 4G, requests to MAP and figure out Authorized 5G S-NSSAIs for the UE. However, the EPS to 5G move is only possible when there are converged 4G-5G nodes on operator network.
Following are high-level scenarios for EPS to 5G movement of a UE:
Scenario 1: UE is moving from EPS to 5G of a VPLMN (For example: Customer of Network-1 is moving from EPS of Network-2 to 5G of Network-2).
Scenario 2: UE is moving from EPS to 5G of the UE's HPLMN (For example: Customer of Network-1 is moving from EPS of Network-1 to 5G of Network-1).
This movement of UE from EPS to 5G is similar to that of a roaming handover, because there is a change in PLMN in both the scenarios.
The following call flow takes places in the entire process of EPS to 5G handover:
- AMF sends a
SliceInfoForRegistration
GET request to NSSF. Only the following three parameters are considered for this feature whenrequestMapping
is set to true:sNssaiForMapping
requestedNssai
requestMapping
- The query parameters may also contain:
- Mapping to the Configured NSSAI for the HPLMN
- PLMN ID of the Subscription Permanent Identifier (SUPI)
- UE's current Tracking Area
- NF type of the NF service consumer
- AMF ID
- NSSF identifies from the messages if AMF or UE requires EPS to 5G handover.
- If yes, NSSF sends selected NSSAI based on below conditions:
- If mapping is already provided, NSSF uses the mapped S-NSSAI and applies the policy.
- If
requestMapping
is enabled, NSSF takes the 4G slice and maps it to 5G S-NSSAI by sending the corresponding NSSAI in theallowedNssaiList
after policy check and confirms the same by responding withAuthorizedNetworkSliceInfo
. - If the mapping is not available, the NSSF responds with 4XX status.
The following tables provide the details of the request
(SliceInfoForRegistration
) and the response
(AuthorizedNetworkSliceInfo
), respectively:
Table 4-4 Request: SliceInfoForRegistration
Attribute name | Data type | Description |
sNssaiForMapping |
array(Snssai) |
This IE is included if the
|
requestedNssai |
array(Snssai) |
This IE contains the set of S-NSSAIs requested by the UE.
|
requestMapping |
boolean |
This IE may be present when the Nnssf_NSSelection_Get procedure is invoked during EPS to 5GS Mobility Registration Procedure (Idle State) using N26 interface or during EPS to 5GS handover procedure using N26 interface. This IE may also be present when Nnssf_NSSelection_Get procedure is invoked during idle state Mobility Registration Procedure or handover procedure in 5GS. When present this IE indicates to the NSSF that the NSSF returns
the VPLMN specific mapped SNSSAI values for the S-NSSAI values in
the |
Table 4-5 Response: AuthorizedNetworkSliceInfo
Attribute name | Data type | Description |
allowedNssaiList |
array(AllowedNssai) |
This IE is included one of the following conditions is true:
When present, this IE may contain any of the following:
NSSF considers load level information of a Network Slice Instance, provided by the NWDAF, to exclude slices that are overloaded. |
Managing Handover from EPS to 5G
Enable
This feature is driven by 3GPP specifications. There is no option to enable or disable this feature. If all the prerequisites are met, it will be auto enabled at the time of installation or after upgrade to the target version.
Configure
Operator must configure MappingOfNssai
for each PLMN
for this feature to work. For more information on REST based configuration, see
MappingOfNssai in Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.
Observe
No new metrics or KPIs are generated for this feature. For information on other Metrics and KPIs of OCNSSF, see OCNSSF Metrics and OCNSSF KPIs sections respectively.
Error Scenarios
For the EPS to 5G Handover Feature, logs are generated for NSSelection mapping, when error is due to slice mapping determination or assignment to a UE or PDU session.
Table 4-6 Error Scenarios
Scenario | Microservice | Response Code/ Error Title | Log Snippet |
---|---|---|---|
Mapping is not found for any S-NSSAI in
sNssaiForMapping .
|
NSSelection |
No mapping 5G SNSSAI found for
Error:
403 Forbidden SNSSAI_NOT_SUPPORTED |
|
Mapping not found for one or more S-NSSAIs and found for others. | NSSelection | NSSF logs error for S-NSSAI for which mapping is not found |
|
No allowed S-NSSAI are found for accessType = 3GPP | NSSelection |
Error: 403 Forbidden SNSSAI_NOT_SUPPORTED |
|
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.15 Feature Negotiation
This feature negotiates optional features applicable between NSSF and NF Service Consumer (AMF/V-NSSF) for the NSSF supported services. The NF Service Consumer indicates the optional features it supports for the Nnssf_NSSAIAvailability or Nnssf_NSSElection service by including the supported feature attributes.
The following optional supported features are defined for NSSF as per 3GPP:
- Nnssf_NSSAIAvailability service supportedFeatures attributes:
- Subscription Modification (SUBMOD): This feature allows the operator to modify subscriptions by supporting HTTP Patch on NSAvailability (/nssai-availability/subscriptions/). When Subscription Modification in Subscribe Service Operation (SUMOD) is supported, the operator can modify the subscription of NSSAI availability by implementing the HTTP Patch method.
- Empty Authorized NSSAI Availability Notification (EANAN): When this feature is supported, an NF Consumer that supports EANAN accepts an empty array of Authorized NSSAI Availability Data in a notification from NSSF and deletes locally stored Authorized NSSAI Availability Data that was received previously.
- Optimized NSSAI Availability Data Encoding (ONSSAI): ONSSAI is one of the optional features supported by NSSF. NSSF, this feature is described in 3GPP TS 29.531. When ONSSAI is supported by AMF and NSSF, NSSAI Availability data may be signaled per list or per range(s) of Tracking Area Identifiers(TAIs).
Supported Feature Information Element (IE): Supported Feature is a hexadecimal string that contains a bitmask indicating supported features. Each character in the string can take a value of "0" to "9", "a" to "f" or "A" to "F". The character representing the highest-numbered features appears first in the string, and the character representing features 1 to 4 appears last in the string. The list of features and their numbering (starting with 1) are defined separately for each API. If the string contains a lower number of characters, then there are defined features for an API.
Note:
Features represented by the characters that are not present in the string are not supported.Table 4-7 SupportedFeatures for NSAvailability
Supported Feature based on supported feature set | ES3XX | EANAN | SUMOD | ONSSAI |
---|---|---|---|---|
"0" | no | no | no | no |
"1" | no | no | no | yes |
"2" | no | no | yes | no |
"3" | no | no | yes | yes |
"4" | no | yes | no | no |
"5" | no | yes | no | yes |
"6" | no | yes | yes | no |
"7" | no | yes | yes | yes |
"8" | yes | no | no | no |
"9" | yes | no | no | yes |
"A" | yes | no | yes | no |
"B" | yes | no | yes | yes |
"C" | yes | yes | no | no |
"D" | yes | yes | no | yes |
"E" | yes | yes | yes | no |
"F" | yes | yes | yes | yes |
Table 4-8 SupportedFeatures for NSSelection
Supported Feature based on supported feature set | ES3XX |
---|---|
"0" | no |
"1" | yes |
Managing Feature Negotiation
Enable
To enable this feature, set the
global.SupportedFeatureNegotiationEnable
parameter to
true
under the global
section in the
ocnssf_custom_values_23.4.0.yaml
file.
The following snippet represents the location of the mentioned parameter in the Helm file:
global:
SupportedFeatureNegotiationEnable: true
Configure
There are no additional configurations required.
Observe
No new metrics or KPIs are generated for this feature. For information on other Metrics and KPIs of OCNSSF, see OCNSSF Metrics and OCNSSF KPIs sections respectively.
Error Scenarios
Table 4-9 Error Scenarios
Scenario | Helm Configuration | Output |
---|---|---|
NSSelection Get with supported feature. That is, '1' |
|
Response with
supported feature i.e. '1' |
NSSelection Get with supported feature. That is, '2' |
|
Response without
supported feature Unsupported value provided for the Supported Feature. Maximum supportedFeatured value is : 1 |
NSAvailability request with supported feature. That is, '2' |
|
Response with
supported feature i.e. '2' |
NSAvailability request with supported feature. That is, '2' |
|
Bad request 400 Error: All requested supported features are not enabled on NSSF. Enable features from NSSF are:ONSSAI,EANAN,ES3XX |
NSAvailability request with supported feature. That is, '7' |
|
Bad Request 400 Error: All requested supported features are not enabled on NSSF. Enable features from NSSF are:SUMOD |
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.16 Subscription Modification Feature
This feature allows operator to modify subscription by supporting HTTP Patch on NsAvailability subscribe service operation (/nssai-availability/subscriptions/). Supported operations on HTTP Patch are ADD, REMOVE, and REPLACE. Whereas, COPY, MOVE, and TEST are not supported.
Managing Subscription Modification
Enable
To enable this feature, set the
global.SupportedFeatureNegotiationEnable
and
global.threegppFeatures.NsAvailability.SUMOD
parameters to
true
under the global
section in the
ocnssf_custom_values_23.4.0.yaml
file.
The following snippet represents the location of the mentioned parameters in the Helm file:
global:
SupportedFeatureNegotiationEnable: true
threegppFeatures:
NsAvailability:
SUMOD: true
Configure
There are no additional configurations required.
Observe
- Added the following success measurements:
- ocnssf_nssaiavailability_submod_rx
- ocnssf_nssaiavailability_submod_success_response_tx
- Added the following error measurements:
- ocnssf_nssaiavailability_submod_error_response_tx
- ocnssf_nssaiavailability_submod_unimplemented_op
- ocnssf_nssaiavailability_submod_patch_apply_error
For information about other Metrics and KPIs of NSSF, see NSSF Metrics and NSSF KPIs sections respectively.
Error Scenarios
Table 4-10 Error Scenarios
Scenario | Microservice | Request URL | Response Code/ Error Title |
---|---|---|---|
Patch request processing failed due to invalid path | Nnssf_NSSAIAvailability | nnssf-nssaiavailability/v1/nssai-availability/subscriptions/ |
422 Bad Request Error Jason "Patch Req processing failed" |
Subscription with HTTP Patch (Option ADD). Subscription present and TAI addition not supported in PLMN. | Nnssf_NSSAIAvailability | nnssf-nssaiavailability/v1/nssai-availability/subscriptions/ |
HTTP 403 Unsupported PLMN Error Details must specify supported PLMN list |
SUBMOD is set to false | Nnssf_NSSAIAvailability | nnssf-nssaiavailability/v1/nssai-availability/subscriptions/ |
HTTP 405 Method not allowed |
Subscription ID is not found | Nnssf_NSSAIAvailability | nnssf-nssaiavailability/v1/nssai-availability/subscriptions/ |
HTTP 404 Not Found |
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.17 Empty Authorized NSSAI Availability Notification
Empty Authorized NSSAI Availability Notification (EANAN) feature provides support for sending an empty array of Authorized NSSAI Availability Data when a notification trigger leads to a situation of no Tracking Area (TA) with Authorized NSSAI by the NSSF. An Access and Mobility Management Function (AMF) that supports this feature accepts the empty array of Authorized NSSAI Availability Data in a notification from NSSF and deletes locally stored Authorized NSSAI Availability Data that was received previously.
Managing EANAN
Enable
To enable this feature, set the
global.SupportedFeatureNegotiationEnable
and
global.threegppFeatures.NsAvailability.EANAN
parameters to
true
under the global
section in the
ocnssf_custom_values_23.4.0.yaml
file.
The following snippet represents the location of the mentioned parameters in the Helm file:
global:
SupportedFeatureNegotiationEnable: true
threegppFeatures:
NsAvailability:
EANAN: true
Configure
There are no additional configurations required.
Observe
No new metrics or KPIs are generated for this feature. For information on other Metrics and KPIs of OCNSSF, see OCNSSF Metrics and OCNSSF KPIs sections respectively.
Scenarios
Table 4-11 Scenarios
Scenario | Helm Configuration | Subscription Details | Output |
---|---|---|---|
Send empty notification when EANAN is supported by both NSSF and Consumer NF for delete as notification trigger |
global.SupportedFeatureNegotiationEnable: true global.threegppFeatures.NsAvailability.EANAN : true |
|
|
Do not send empty notification when EANAN is supported by NSSF and not by Consumer NF |
global.SupportedFeatureNegotiationEnable: true global.threegppFeatures.NsAvailability.EANAN : true |
|
|
Do not send empty notification when EANAN is not supported by NSSF and supported by Consumer NF |
global.SupportedFeatureNegotiationEnable: true global.threegppFeatures.NsAvailability.EANAN : false |
|
|
Do not send empty notification when EANAN is not supported by NSSF and supported by Consumer NF |
global.SupportedFeatureNegotiationEnable: true global.threegppFeatures.NsAvailability.EANAN : false |
|
|
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.18 Optimized NSSAI Availability Data Encoding and TAI Range
Support for TAI range and Optimized NSSAI Availability Data Encoding(ONSSAI) is introduced in NSSF as per 3GPP TS 29.531 (Release 16):
NSSF supports Optimized NSSAI Availability Data Encoding (ONSSAI), which further extends support for TAI ranges. These two features work together to provide multiple benefits to NSSF. Listed below are the benefits of this feature:
Support for ONSSAI as per 3GPP Specifications 29.531 release 16
ONSSAI is one of the 3GPP Specification 29.531 supported optional features that NSSF negotiates using Feature Negotiation. When ONSSAI is supported by AMF and NSSF, NSSAI Availability data may be signaled per list or per range(s) of Tracking Area Identifiers(TAIs).
The feature bit of ONSSAI is exchanged between NSSF and NF Service
Consumer, indicating the support for taiList
and
taiRangeList
. With this support, NSSF and NF Service
Consumers can exchange the capabilities in which the support of
taiList
and taiRangeList
is also communicated.
NSSF can now expose APIs and store the supported NSSAIs with respect to
taiList
and taiRangeList
. This enables the
operator to provide data with minimal entries, which reduces the effort while system
configuration.
Support for TAI range in NSSF.
With the advent of 5G and the three types of 5G network slices (MIoT,
eMBB, and URLLC), there could be millions of TAIs ( and TACs) in a PLMN. As per
current standards, the maximum number of slice instances in a 5G network can reach
hundreds. Although the number of slice identifiers (SNSSAIs) in a PLMN is
operator-dependent, there is a scope to scale this in thousands, and corresponding
slice instance (NSI) in tens of thousands. Since there is a many-to-many mapping
between TAIs and SupportedSNSSAIs, and this information is shared and authorized
between NSSF and NF Service Consumer of nssai_availability
service, the number of TAIs supported by an AMF can range in millions. This can lead
to a massive increase in the number of messages with replicated data across NSSF
and AMF.
The support for TAI ranges reduces the memory consumption at NSSF by eliminating the need for redundant data storage. Apart from this, the size of supported NSSAI towards NF Service Consumer is also reduced, which further improves the overall network throughput.
For Example:
Consider a case with PLMN 100,101, which constitutes of 1000000 TACs; (1,10,00,000).
If the AMF Supports 300000 TACs, for TAC (1 - 300000):
- Supported SNSSAIs in TAC (1 -100000) are SNSSAI-1,SNSSAI-2,SNSSAI-3,
- supported SNSSAIs in TAC (100001 - 200000) are SNSSAI-2,SNSSAI-3,SNSSAI-4, and
- supported SNSSAIs in TAC (200001 - 300000) are SNSSAI-3, SNSSAI-4, SNSSAI-5.
Each AMF supports multiple TAIs and S-NSSAIs, as shown in the diagram below:
Figure 4-1 Association of AMF and TAI with S-NSSAI

The list of supported TAIs will be almost the same, but for different S-NSSAIs, NSSF requires huge storage space for the redundant data. This results in a substantial increase in the size of the notifications and hassles for managing such a huge configuration, as explained below:
Case 1: nssaiAvailabilityInfo without ONSSAI
{
"supportedNssaiAvailabilityData": [
{
"tai": {
"plmnId": {
"mcc": "100",
"mnc": "101"
},
"tac": "000001"
},
"supportedSnssaiList": [
{
"sd": "000001",
"sst": 1
},
{
"sd": "000002",
"sst": 1
},
{
"sd": "000003",
"sst": 1
}
]
},
{
"tai": {
"plmnId": {
"mcc": "100",
"mnc": "101"
},
"tac": "000002"
},
"supportedSnssaiList": [
{
"sd": "000001",
"sst": 1
},
{
"sd": "000002",
"sst": 1
},
{
"sd": "000003",
"sst": 1
}
]
}...the list will go on for 3 unique and 299997 repeated SNSSAI list.
]
}
Case 2: nssaiAvailabilityInfo with ONSSAI
With the support for TAI range, there is an overlapping of TAIs. So, a TAI list of size 3 is enough to contain all 300,000 SNSSAI lists.
{
"supportedNssaiAvailabilityData": [
{
"tai": {
"plmnId": {
"mcc": "100",
"mnc": "101"
},
"tac": "000001"
},
"supportedSnssaiList": [
{
"sd": "000001",
"sst": 1
},
{
"sd": "000002",
"sst": 1
},
{
"sd": "000003",
"sst": 1
}
],
"taiRangeList":[
{
"plmnId": {
"mcc": "100",
"mnc": "101"
},
"tacRangeList":[
{
"start": "000001",
"end": "100000"
}
]
}
]
},
{
"tai": {
"plmnId": {
"mcc": "100",
"mnc": "101"
},
"tac": "000001"
},
"supportedSnssaiList": [
{
"sd": "000002",
"sst": 1
},
{
"sd": "000003",
"sst": 1
},
{
"sd": "000004",
"sst": 1
}
],
"taiRangeList":[
{
"plmnId": {
"mcc": "100",
"mnc": "101"
},
"tacRangeList":[
{
"start": "100001",
"end": "200000"
}
]
}
]
},
{
"tai": {
"plmnId": {
"mcc": "100",
"mnc": "101"
},
"tac": "000001"
},
"supportedSnssaiList": [
{
"sd": "000003",
"sst": 1
},
{
"sd": "000004",
"sst": 1
},
{
"sd": "000005",
"sst": 1
}
],
"taiRangeList":[
{
"plmnId": {
"mcc": "100",
"mnc": "101"
},
"tacRangeList":[
{
"start": "200001",
"end": "300000"
}
]
}
]
}
]
}
Managing ONSSAI and TAI Range
Enable
To enable ONSSAI, set the
global.SupportedFeatureNegotiationEnable
and
global.threegppFeatures.NsAvailability.ONSSAI
parameter to
true
under the global
section in the
ocnssf_custom_values_23.4.0.yaml
file.
The following snippet from the yaml file represents the location of the mentioned parameters in the Helm file:
global:
SupportedFeatureNegotiationEnable: true
threegppFeatures:
NsAvailability:
ONSSAI: true
Configure
Configuration using Helm Parameters:
There are no additional configurations required in the helm parameters.
Configuration using Managed Objects:
TacRange
managed object, and tacrange
parameter
under NSSAI Auth
and NSS Rules
provide the support
required to use TAI range feature. To perform the feature configuration, see
NssRule
, NssaiAuth
, and
TacRange
managed objects in the chapter NSSF Managed
Objects of Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.
Observe
No new metrics or KPIs are generated for this feature. For information on other Metrics and KPIs of OCNSSF, see OCNSSF Metrics and OCNSSF KPIs sections respectively.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.19 Georedundancy
NSSF supports up to three-site Georedundancy to ensure service continuity when one of the NSSF sites is down. When NSSF is deployed as georedundant NSSF instances, then:
- All the sites that register with NRF work independently and are in Active state.
- Based on the Rank, each NSSF site subscribes to NRF for any state change of other NSSF sites and gets notified when an NSSF site goes down.
- The NFs in a given site need to configure one of the georedundant NSSF as the primary NSSF and others as secondary NSSF and tertiary NSSF, respectively.
- When the primary NSSF is available, the NFs send service requests to the primary NSSF. When the NSSF at the primary site is unavailable, the NFs redirect service requests to the secondary NSSF or tertiary NSSF, until the primary NSSF's Active status is restored.
- Priority based NSSF selection (at NF Consumer or SCP) can be implemented to ensure route traffic based on which NSSF site is up.
The NSSF's data gets replicated between the georedundant sites by using DB tier's replication service.
With NSSF georedundant feature, the NSSF Services (NSSelection and NSAvailability) will continue to work as independent service operations.
Following are the prerequisites for georedundancy:
- Each site must configure remote NSSF sites as georedundant mates.
- The configurations at each site must be same. The NSSF at all sites must handle the NFs in the same manner.
- Once the Georedundancy feature is enabled on a site, it cannot be disabled.
- If the Time Of the Day (TOD) feature is enabled, georedundant sites are time synchronized.
- NFs need to configure georedundant NSSF details as Primary, Secondary, and Tertiary NSSFs.
- Georedundant sites must have REST based configuration as explained in Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.
- At any given time, NFs must communicate with only one NSSF. That is, NFs must register services and maintain heartbeats with only one NSSF. The data must be replicated across the georedundant NSSFs, allowing seamless NF mobility across NSSFs as required.
Managing NSSF Georedundancy Feature
Prerequisites
Following are the prerequisites to enable georedundancy feature in NSSF:
- cnDBTier must be installed and configured for each site. For the installation procedure, see Oracle Communications Cloud Native Core, cnDBTier Installation, Upgrade, and Fault Recovery Guide.
- The Database Replication Channels between the sites must be up.
- Configure MySQL Database, Users and Secrets. For the configuration procedure, see Preinstallation Tasks in Oracle Communications Cloud Native Core, Network Slice Selection Function Installation an Upgrade Guide.
Enable Georedundancy Feature
Note:
Configuring these attributes during deployment is mandatory before enabling the georedundancy feature. Otherwise, georedundancy cannot be enabled, and NSSF at the site will act as a stand-alone NSSF.Helm Configuration for Database:
ocnssf_custom_values_23.4.0.yaml
file for all three
sites:
global.stateDbName
global.provisionDbName
global.releaseDbName
global.nameSpace
global.mysql.primary.host
global:
# Mysql NSSF Database Names
stateDbName: 'nssfStateDB'
provisionDbName: &provDB 'nssfProvSite1DB'
# Mysql Release Database Name used to maintain release version
releaseDbName: 'ocnssfReleaseDB'
# NameSpace where secret is deployed
nameSpace: &ns ocnssf1
# Database configuration
mysql:
primary:
host: &dbHost "mysql-connectivity-service.site1"
global:
# Mysql NSSF Database Names
stateDbName: 'nssfStateDB'
provisionDbName: &provDB 'nssfProvSite2DB'
# Mysql Release Database Name used to maintain release version
releaseDbName: 'ocnssfRelease2DB'
# NameSpace where secret is deployed
nameSpace: &ns ocnssf2
# Database configuration
mysql:
primary:
host: &dbHost "mysql-connectivity-service.site2"
global:
# Mysql NSSF Database Names
stateDbName: 'nssfStateDB'
provisionDbName: &provDB 'nssfProvSite3DB'
# Mysql Release Database Name used to maintain release version
releaseDbName: 'ocnssfRelease3DB'
# NameSpace where secret is deployed
nameSpace: &ns ocnssf3
# Database configuration
mysql:
primary:
host: &dbHost "mysql-connectivity-service.site3"
Helm Configuration of Parameters:
Configure the following parameters in the ocnssf_custom_values_23.4.0.yaml
file for all three
sites:
global.grEnabled
global.nfInstanceId
global.siteId
- If
global.grEnabled
is set totrue
, Configure the following parameters as well:global.grEnv.maxSecondsBehindRemote
global.grEnv.dbMonitorServiceUrl
global.grEnv.peerGRSitesList.siteId
global.grEnv.peerGRSitesList.nfInstanceId
For more information about configuring the parameters, see Oracle Communications Cloud Native Core, Network Slice Selection Function Installation, Upgrade, and Fault Recovery Guide.
9faf1bbc-6e4a-4454-a507-aef01a101a01
), which is
georedundant with Sites, "site2" (NssfInstanceId:
9faf1bbc-6e4a-4454-a507-aef01a101a02
) and "site3"
(NssfInstanceId:
9faf1bbc-6e4a-4454-a507-aef01a101a03
):global:
#Only applicable for NSSF microservices
#===================================================================
# GR params
#tag to enable GR
grEnabled: true
#InstanceId of NSSF used in case of GR
nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a01"
#SiteID of NSSF used in case of GR
siteId: "site1"
#All parameters under this section are valid only if grEnabled is true
grEnv:
#Maximum allowed seconds behind remote site for replication
maxSecondsBehindRemote: 5
#URL to check db-replication status
dbMonitorServiceUrl: "http://mysql-cluster-db-monitor-svc.site1:8080/db-tier/status/replication/realtime"
#GR sites list
peerGRSitesList:
- siteId: "site2"
- nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a02"
- siteId: "site3"
- nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a03"
9faf1bbc-6e4a-4454-a507-aef01a101a02
), which
is georedundant with Sites, "site1" (NssfInstanceId:
9faf1bbc-6e4a-4454-a507-aef01a101a01
) and "site3"
(NssfInstanceId:
9faf1bbc-6e4a-4454-a507-aef01a101a03
):global:
#Only applicable for NSSF microservices
#===================================================================
# GR params
#tag to enable GR
grEnabled: true
#InstanceId of NSSF used in case of GR
nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a02"
#SiteID of NSSF used in case of GR
siteId: "site2"
#All parameters under this section are valid only if grEnabled is true
grEnv:
#Maximum allowed seconds behind remote site for replication
maxSecondsBehindRemote: 5
#URL to check db-replication status
dbMonitorServiceUrl: "http://mysql-cluster-db-monitor-svc.site2:8080/db-tier/status/replication/realtime"
#GR sites list
peerGRSitesList:
- siteId: "site1"
- nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a01"
- siteId: "site3"
- nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a03"
9faf1bbc-6e4a-4454-a507-aef01a101a03
), which
is georedundant with Sites, "site1" (NssfInstanceId:
9faf1bbc-6e4a-4454-a507-aef01a101a01
) and "site2"
(NssfInstanceId:
9faf1bbc-6e4a-4454-a507-aef01a101a02
)global:
# GR params
#tag to enable GR
grEnabled: true
#InstanceId of NSSF used in case of GR
nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a03"
#SiteID of NSSF used in case of GR
siteId: "site3"
grEnv:
#Maximum allowed seconds behind remote site for replication
maxSecondsBehindRemote: 5
#URL to check db-replication status
dbMonitorServiceUrl: "http://mysql-cluster-db-monitor-svc.site3:8080/db-tier/status/replication/realtime"
#GR sites list
peerGRSitesList:
- siteId: "site1"
- nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a01"
- siteId: "site2"
- nfInstanceId: "9faf1bbc-6e4a-4454-a507-aef01a101a02"
Observe
No new metrics or KPIs are generated for this feature. For information on other Metrics and KPIs of OCNSSF, see OCNSSF Metrics and OCNSSF KPIs sections respectively.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.20 Time of the Day Based Network Slice Instance Selection
5G Traffic rate is not constant at all times, there might be spike in the traffic rate at certain busy hours. There can be occasional spikes based on holiday season. To manage these spikes and avoid traffic loss or over utilization of resources, operators may create network slice instance on need basis, or operators may create specific additional network slices to manage spikes in busy hours. The NSSF feature TOD (time of day based slice selection) allows operator to configure policy to select slice based on the time spans. Operator can provide date spans, day spans, time spans, or any combination of above to provide a policy to select network slice different catering to same SNSSAI based on date. This makes operator able to provide additional slices and enhances NSSF to select different slices based on another parameters. (apart from TAI + SNSSAI).
Managing Time of the Day Feature
Enable
This feature is enabled by default. If time spans are configured, NSSF selects network slice based on local NSSF. time.
Configure
Using helm parameters
If reqnftime
flag is set to true, the time provided in
Requester-NF-Time
will the time considered. If
reqnftime
flag is set to false, local NSSF time will be
considered.
Using Managed Objects
Table 4-12 Sample configuration
Time profile | Network Slice instance profile |
---|---|
Week day rush hour | NSI-PROFILE-1 |
Christmas | NSI-PROFILE-2 |
Default fall back | NSI-PROFILE-3 |
The following sample allows operator to configure a time profile for Weekdays busy hours. For more information on time profile configuration, see Oracle Communication Cloud Native Core, Network Slice Selection Installation, Upgrade, and Fault Recovery Guide.
{
"name": "WEEKDAY_BUSY",
"startDate": "2019-01-01",
"endDate": "2020-12-31",
"daysOfWeek": [
"MONDAY",
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"FRIDAY"
],
"timeSpans": [
{
"startTime": "07:00:00",
"endTime": "12:00:00"
},
{
"startTime": "17:00:00",
"endTime": "22:00:00"
}
]
}
{
"name": "CHRISTMAS-DAY",
"startDate": "2019-12-24",
"endDate": "2019-12-25",
"daysOfWeek": [],
"timeSpans": []
}
The
following time span enables user to configure a time profile for Christmas irrespective
of day.{
"name": "CHRISTMAS-DAY",
"start Date": "2019-12-24",
"end Date": "2019-12-25",
"weekday": [],
"time Spans": []
}
Configure
NSSF rule to select different profiles based on time of day{
"name": "IR-RULE-TOD",
"amfId": "22345678-abcd-efAB-CDEF-123456789012",
"plmnId":
{
"mcc": "102",
"mnc": "102"
},
"tac": "100002",
"snssai":
{
"sst": "1",
"sd": "EABB01"
},
"salience": "0",
"behavior":
{
"accessType": "3GPP_ACCESS",
"nsiProfiles":
[
{
"name": "NSI-PROFILE-2",
"timeProfile": "CHRISTMAS_DAY",
"salience": 3
},
{
"name": "NSI-PROFILE-1",
"timeProfile": "WEEKDAY_BUSY",
"salience": 2
}
{
"name": "NSI-PROFILE-3",
"salience": 1
}
]
},
}
Note:
In above rule configuration of Salience field for each time profile is to ensure that Christmas profile gets highest priority ( "salience": 3), then Week day rush hour and then fallback which is default profile.Network slice profiles must be preconfigured. To configure slice profiles see, Oracle Communication Cloud Native Core, Network Slice Selection Installation, Upgrade, and Fault Recovery Guide.
ocnssf_nsselection_rx
ocnssf_nsselection_success_response_tx
ocnssf_nsselection_policy_match
ocnssf_nsselection_time_match
ocnssf_nsselection_nsi_selected
For further information about the Metrics and KPIs, see NSSF Metrics and NSSF KPIs sections respectively.
Maintain
- There must be a default fall back while configuring rule if none of the time profiles match.
- Salience of time profile within behavior section must be different for different time profiles; this it to have proper behavior if there is an overlap of time spans.
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.21 Multiple PLMN Support
NSSF allows the user to add the supported PLMN list which must be used for registering with NRF. Any change in supported PLMN list must trigger a Register request towards NRF with updated profile. Requests which have TAI containing other PLMN will be treated as roaming.
Managing Multiple PLMN Support
Enable
If the global.supportedPlmnList
has valid parameter values, then
multiple PLMN feature is enabled.
To enable this feature, open the ocnssf_custom_values_23.4.0.yaml
file and set global.supportedPlmnList
to
valid values as shown the example below:
#Sample to enable
#Multiple PLMN support Following is the way to ensure only (100,101) and (100,02)
supportedPlmnList:
- mcc: 100
mnc: 101
- mcc: 100
mnc: 02
Disable
If the global.supportedPlmnList
is empty, then multiple PLMN feature
is disabled. To disable this feature, open the ocnssf_custom_values_23.4.0.yaml
file and set
global.supportedPlmnList to empty in Helm file, as shown the example below:
#Sample to disable multiple PLMN
supportedPlmnList: []
Observe
Following are the metrics related to Multiple PLMN Support:ocnssf_nsselection_unsupported_plmn
ocnssf_nsavailability_unsupported_plmn
ocnssf_nsselection_rx
ocnssf_nsselection_success_response_tx
ocnssf_nsselection_policy_match
ocnssf_nsselection_time_match
ocnssf_nsselection_nsi_selected
ocnssf_nsselection_policy_not_found
For further information about the Metrics and KPIs, see NSSF Metrics and NSSF KPIs sections respectively.
Error Scenarios
Table 4-13 Error Scenarios
Scenario | Micro service and URL | Request URL | Response code / Error Title | Notes |
---|---|---|---|---|
Request comes from unknown PLMN | NSSelection | /nnssf-nsselection/v1/network-slice-information/ | 403PLMN_NOT_SUPPORTED |
No query sent to DB. Look into configured parameters and respond |
Request comes from known PLMN | NSSelection | /nnssf-nsselection/v1/network-slice-information/ | 200 OK based on policy match | |
Subscription request for unknown PLMNs only | NSAvailability | /nnssf-nssaiavailability/v1/nssai-availability/subscriptions | 403PLMN_NOT_SUPPORTED |
No query sent to DB. as none of the PLMNs are supported |
Subscription request for unknown PLMNs and known PLMNs | NSAvailability | /nnssf-nssaiavailability/v1/nssai-availability/subscriptions | 204 |
Subscription done for TAIs for which PLMN is supported Query sent to DB only for TAIs with PLMNs which are supported by NSSF |
AMF tries to store session data for unknown PLMNs only | NSAvailability | nnssf-nssaiavailability/v1/nssai-availability | 403PLMN_NOT_SUPPORTED |
No query sent to DB. as none of the PLMNs are supported |
AMF tries to store session data for unknown PLMNs and known PLMNs | NSAvailability | nnssf-nssaiavailability/v1/nssai-availability | 200 OK based on Match | Session Data is stored only for the supported PLMNs |
AMF tries to update session data for unknown PLMNs only | NSAvailability | nnssf-nssaiavailability/v1/nssai-availability | 403PLMN_NOT_SUPPORTED |
No query sent to DB. as none of the PLMNs are supported |
AMF tries to update session data for unknown PLMNs and known PLMNs | NSAvailability | nnssf-nssaiavailability/v1/nssai-availability | 200 OK based on Match | Session Data is stored only for the supported PLMNs |
Operator tries to configure nsi_auth for unsupported PLMN | NSConfig |
nnssf-configuration/v1/nssaiauth/ nnssf-configuration/v1/nssrules/ /nnssf-configuration/v1/configurednssais |
403 PLMN_NOT_SUPPORTED " |
Currently as we are not supporting roaming scenario Operator must not be allowed to add policy configuration for unknown PLMNs |
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.22 Support Indirect Communication
3GPP TS 29.531 Release 16 has introduced a new NF SCP which enables reliability and resiliency within network.
In indirect mode of communication consumers and producers interact through SCP. There are two communication models as described below:
Model C - Indirect communication without delegated discovery: Consumers do discovery by querying the NRF. Based on discovery result, the consumer does the selection of an NF Set or a specific NF instance of NF set. The consumer sends the request to the SCP containing the address of the selected service producer pointing to a NF service instance or a set of NF service instances. In the later case, the SCP selects an NF Service instance. If possible, the SCP interacts with NRF to get selection parameters such as Location, capacity, etc. The SCP routes the request to the selected NF service producer instance.
Model D - Indirect communication with delegated discovery: Consumers do not perform any discovery or selection. The consumer adds any necessary discovery and selection parameters required to find a suitable producer to the service request. The SCP uses the request address and the discovery and selection parameters in the request message to route the request to a suitable producer instance. The SCP can perform discovery with an NRF and obtain a discovery result
Once this feature is enabled on NSSF, it allows consumer NFs (AMF) to perform routing and rerouting to NSSF through SCP leveraging following 3GPP headers "3gpp-Sbi–Binding" and "3gpp-Sbi--Routing-Binding".
Note:
- This feature's scope involves the manipulation and updating of headers and values.
- It does not mandate that Notifications must go through SCP. The responsibility for configuring SCP to route the notifications is on the operator. For more information, see DNS SRV Based Selection of SCP in NSSF.
- NSSF only supports the following pattern of 3gpp-Sbi-Binding
Header:
bl=nf-set; nfset=set<setId>.region<regionId>.amfset.5gc.mnc<mnc>.mcc<mcc>
- NSSF only accepts subscription with 3gpp-Sbi-Binding from AMF, provided AMF must be a part of the AMF-Set.
Managing Indirect Communication
Enable
To enable this feature, set the value of
indirectCommunicationSupportEnable
to true
in the
ocnssf_custom_values_23.4.0.yaml
file.
# Indirect communication support
indirectCommunicationSupportEnable: true
The scope of this feature is Subscription and Notification flow.
When this feature is enabled:
- When AMF sends a NsAvailability Subscribe with 3gpp-Sbi-Binding header, NSSF
validates if the header Supported Format is:
bl=nf-set; nfset=set<setId>.region<regionId>.amfset.5gc.mnc<mnc>.mcc<mcc>
- Only the following format is supported:
bl=nf-set; nfset=set<setId>.region<regionId>.amfset.5gc.mnc<mnc>.mcc<mcc>
- In case of a successful validation, the NSSF responds with a 201 status code. The response includes a "3gpp-Sbi-Binding" header containing NSSF's binding information.
- The NSSF computes its binding information by matching the NSSF set details for the corresponding PLMN.
- The NSSF stores the Binding header of the AMF set in the database.
- When sending a notification for the subscription, the same value from the AMF's binding header is included in the notification as the "3gpp-Sbi-Routing-Binding" header.
- Additionally, the NSSF adds a "3gpp-Sbi-Callback" header with the value
Nnssf_NSSAIAvailability_Notification
.
- Only the following format is supported:
- If the AMF sends a NsAvailability Subscribe request without the
"3gpp-Sbi-Binding" header:
- The NSSF responds without including the "3gpp-Sbi-Binding" header in the response.
- The NSSF does not add the "3gpp-Sbi-Routing-Binding" header in the notification.
- The processing of the request remains unchanged, and there is no impact on the processing and response, except that the mentioned headers are not computed or included as specified above.
Disable
To disable this feature, set the value of
indirectCommunicationSupportEnable
to false
in the
ocnssf_custom_values_23.4.0.yaml
file.
- When
indirectCommunicationSupportEnable
is set tofalse
:- When AMF sends a NsAvailability Subscribe with 3gpp-Sbi-Binding header:
- NSSF ignores the header and process the request.
- NSSF does not add 3gpp-Sbi-Routing-Binding header in the notification.
- When AMF sends a NsAvailability Subscribe with 3gpp-Sbi-Binding header:
# Indirect communication support
indirectCommunicationSupportEnable: false
Observe
- Added the following success measurements:
- ocnssf_nssaiavailability_indirect_communication_rx
- ocnssf_nssaiavailability_indirect_communication_tx
- ocnssf_nssaiavailability_notification_indirect_communication_tx
- ocnssf_nssaiavailability_notification_indirect_communication_rx
- Added the following error measurements:
- ocnssf_nssaiavailability_indirect_communication_subscription_failure
- ocnssf_nssaiavailability_indirect_communication_notification_failure
For more information on above metrics and KPIs, see NSSF Metrics and NSSF KPIs.
Error Scenarios
Table 4-14 Error Scenarios
Scenario | Input Details | Output |
---|---|---|
Subscription with binding, global.indirectCommunicationSupportEnable is set to true, NSSF is part of nfSet. |
Input message: Subscribe with header 3gpp-Sbi--Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc012.mcc345 Helm Parameters and Values:
|
Subscription Response Status: 201 Created Headers Location: http://10.178.246.56:30075/nnssf-nssaiavailability/v1/nssai-availability/subscriptions/1 3gpp-Sbi-Binding: bl=nf-set; nfset=set1.nssfset.5gc.mnc012.mcc345
Notification with headers 3gpp-Sbi-Routing-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc012.mcc345 3gpp-Sbi-Callback: Nnssf_NSSAIAvailability_Notification |
Subscription without binding, global.indirectCommunicationSupportEnable is set to true, NSSF is part of nfSet. |
Input message: Subscribe without Header (Direct)Helm Parameters and Values:
|
Subscription Response Status: 201 Created Location: http://10.178.246.56:30075/nnssf-nssaiavailability/v1/nssai-availability/subscriptions/1 |
Subscription with binding, global.indirectCommunicationSupportEnable is set to false, NSSF is part of nfSet. |
Input message: Subscribe with header 3gpp-Sbi-Routing-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc012.mcc345 Helm Parameters and Values:
|
Subscription Response Status: 201 Created |
Subscription without binding, global.indirectCommunicationSupportEnable is set to false, NSSF is part of nfSet. |
Input message: Subscribe without Header (Direct) Helm Parameters and Values:
|
Subscription Response Status: 201 Created |
Subscription with binding, global.indirectCommunicationSupportEnable is set to true, NSSF is not part of nfSet. |
Input message: Subscribe with Header 3gpp-Sbi-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc012.mcc345 Helm Parameters and Values:
|
Subscription Response Status: 201 Created Headers Location: http://10.178.246.56:30075/nnssf-nssaiavailability/v1/nssai-availability/subscriptions/1 3gpp-Sbi-Routing-Binding: bl=nf-instance; nfinst=54804518-4191-46b3-955c-ac631f953ed7; backupnfinst=54804518-4191-46b3-955c-ac631f953ed8
Notification with headers 3gpp-Sbi-Routing-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc012.mcc345 3gpp-Sbi-Callback: Nnssf_NSSAIAvailability_Notification ERROR Log |
Subscription with binding, global.indirectCommunicationSupportEnable is set to true, NSSF is not part of nfSet. |
Input message: Subscribe with Header 3gpp-Sbi-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc012.mcc345 Helm Parameters and Values:
|
Subscription Response Status 500 Internal Server Error Cause: CONFIGURATION_ERROR
|
Subscription with binding, global.indirectCommunicationSupportEnable is set to true, NSSF is part of nfSet. |
Input message: Subscribe with Header 3gpp-Sbi-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc012.mcc345 Helm Parameters and Values:
|
Subscription Response Status: 500 Internal Server Error Cause: CONFIGURATION_ERROR
|
NSSF supports multiple PLMNSubscription with binding, global.indirectCommunicationSupportEnable is set to true, NSSF is part of nfSet. NSSF supports PLMN from which AMF is requesting |
Input message: Subscribe with Header3gpp-Sbi-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc100.mcc101 Helm Parameters and Values:
|
Subscription Response Status: 201 Created Headers Location: http://10.178.246.56:30075/nnssf-nssaiavailability/v1/nssai-availability/subscriptions/1 3gpp-Sbi-Binding: bl=nf-set; nfset=set1.nssfset.5gc.mnc100.mcc101
Notification with headers 3gpp-Sbi-Routing-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc100.mcc101 3gpp-Sbi-Callback: Nnssf_NSSAIAvailability_Notification |
NSSF supports multiple PLMNSubscription with binding, global.indirectCommunicationSupportEnable is set to true, NSSF is part of nfSet. NSSF do not support PLMN from which AMF is requesting |
Input message: Subscribe with Header 3gpp-Sbi-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc200.mcc201 Helm Parameters and Values:
|
Subscription Response Status: 403 Cause: PLMN_NOT_SUPPORTED
|
Subscription with invalid binding header, global.indirectCommunicationSupportEnable is set to true, NSSF is part of nfSet. |
Input message: Subscribe with Header 3gpp-Sbi-Binding: bl=nfserviceset; nfset=set1.region48.amfset.5gc.mnc012.mcc345 Helm Parameters and Values:
|
Subscription Response Status: 400 Bad Request Cause: INVALID_INPUT_DATA
|
Subscription with invalid binding header, global.indirectCommunicationSupportEnable is set to true, NSSF is part of nfSet. |
Input message: Subscribe with Header3gpp-Sbi-Binding: bl=nf-set nfset=set1.amfset.5gc.mnc012.mcc345 Helm Parameters and Values:
|
Subscription Response Status: 400 Bad Request Cause: INVALID_INPUT_DATA
|
Subscription with invalid binding header, global.indirectCommunicationSupportEnable is set to true, NSSF is part of nfSet. |
Input message: Subscribe with Header 3gpp-Sbi-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc8120.mcc345 Helm Parameters and Values:
|
Subscription Response Status: 400 Bad Request Cause: INVALID_INPUT_DATA
Description: Invalid mnc 8120 in 3gpp-Sbi-Binding Header |
Subscription with invalid binding header, global.indirectCommunicationSupportEnable is set to true, NSSF is part of nfSet. |
Input message: Subscribe with Header 3gpp-Sbi-Binding: bl=nf-set; nfset=set1.region48.amfset.5gc.mnc8120.mcc345; scope=callback; scope=other-service Helm Parameters and Values:
|
Subscription Response Status: 400 Bad Request Cause: INVALID_INPUT_DATA
Description: After 3 digits of MCC, there are other characters |
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.23 IPv6 Support
Oracle supports dual-stack IPv4/IPv6 addressing. IPv6 (Internet Protocol version 6) is the sixth revision of the Internet Protocol and the successor to IPv4. It functions similarly to IPv4 in that it provides the unique IP addresses necessary for Internet-enabled devices to communicate. However, it does have one significant difference, that is, it utilizes a 128-bit IP address.
Managing IPv6 Support
Enable
To enable this feature, the following prerequisites must be satisfied:
- CNE or any CNE cloud network with IPv6 (Single stack) must be enabled.
- All cluster nodes must come with IPv6 address.
Configure
Sample configurations of IPv4 and IPv6 are given below:
Note:
Ensure NRF, DB_Host are either in FQDN format or are in IPv6 to support IPv6.nrfclient: # Microservice level control if specific microservice need to be disabled nrf-client: # This config map is for providing inputs to NRF-Client configmapApplicationConfig: profile: |- [appcfg] primaryNrfApiRoot=10.75.225.191:31515 secondaryNrfApiRoot=10.75.225.191:31515 nrfScheme=http retryAfterTime=PT120S nrfClientType=NSSF nrfClientSubscribeTypes=NSSFIPv6
nrfclient: # Microservice level control if specific microservice need to be disabled nrf-client: # This config map is for providing inputs to NRF-Client configmapApplicationConfig: profile: |- [appcfg] primaryNrfApiRoot=[fd00:10:96::aa0b]:31515 secondaryNrfApiRoot=[fd00:10:96::95a]:31515 nrfScheme=http retryAfterTime=PT120S nrfClientType=NSSF nrfClientSubscribeTypes=NSSF
Observe
NSSF behavior does not change based on underlying IP layer. If the installation and services are running, the NSSF behavior remains the same.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.24 Supports Integration with ASM
NSSF leverages the Istio or Envoy service mesh (Aspen Service Mesh) for all internal and external communication. The service mesh integration provides inter-NF communication and allows API gateway co-working with service mesh. The service mesh integration supports the services by deploying a special sidecar proxy in the environment to intercept all network communication between microservices.
See Configuring NSSF to support ASM in Oracle Communication Cloud Native Core, Network Slice Selection Function Installation and Upgrade Guide for more details on configuring ASM.
4.25 Supports Compression Using Accept-Encoding or Content-Encoding gzip
HTTP data is compressed before it is sent from the server, to improve transfer speed and bandwidth utilization.
HTTP headers let the client and the server pass additional information with an HTTP request or response.
The Content-Encoding, when present in response, its value indicates which encoding is applied to the entity-body. It lets the client know how to decode in order to obtain the media-type referenced by the Content-Type header.
The Accept-Encoding header is used to find out the encoding supported by the server. The server responds with the type of encoding used, indicated by the Accept-Encoding response header.
Syntax:
Accept-Encoding: gzip
Content-Encoding: gzip
Managing Supports Compression Using Accept-encoding/Content-encoding gzip
To enable this feature, set the value of
nsavailability.contentEncodingEnabled
to true
in the ocnssf_custom_values_23.4.0.yaml
file.
#Sample to enable gzip compression nsavailability.contentEncodingEnabled: trueConfigure
This sample configuration shows minimum response size over which
compression of response triggers, if contentEncodingEnabled
is set
to true
.
Helm parameter
maxRequestSize
is the acceptable size of
request.
#Sample configuration gzip compression
# Minimum response size required for compression to happen (size is in bytes)
nsavailability.compressionMinimumResponseSize: 1024
# Maximum limit for request size
nsavailability.maxRequestSize: 1MB
Observe
The following measurements are related to Supports compression using Accept-encoding/Content-encoding gzip feature:
ocnssf_nssaiavailability_options_rx
ocnssf_nssaiavailability_options_tx_status_ok
ocnssf_nssaiavailability_options_tx_status_unsupportedmediatetype
Table 4-15 Message Scenarios
Scenario | Helm Parameter (server.compression.enabled) | Response code | Response in gzip ? | Response Header |
---|---|---|---|---|
AMF sends an NSAvailability PUT with Request Message size is more than max acceptable size | NA | 413 (Request Entity Too Large error) | No | NA |
Client sends HTTP OPTIONS with "Accept-encoding" of any value (blank or empty included) other than gzip | Yes | 415 (Unsupported Media Type) | NA |
Accept-Encoding: gzip Allowed Methods : POST, PUT, PATCH, DELETE Reason: Informs the client to optimize future interactions |
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.26 Dynamic Log Level Update
Dynamic Log Level Update allows operator to update NSSF log level dynamically without restart.

The log level can be changed by the user at run time. NSSF use common configuration service for dynamically updating Logging Information.
Managing Dynamic Log Level Update
Enable
- Customize the
ocnssf_custom_values_23.4.0.yaml
helm file. - Set
commonCfgClient.enabled
totrue
in the helm file.
Table 4-16 Parameters Configuration
Name | Default | Description |
---|---|---|
commonCfgClient.enabled | true | Enable/Disable Client. |
commonCfgClient.pollingInterval | 5000 | Set Polling Interval in Milliseconds |
Configure
For more information on REST APIs, see Runtime Log Level Update in Oracle Communications Cloud Native Core, Network Slice Selection Function REST Specification Guide.
Observe
No new metrics or KPIs are generated for this feature. For information on other Metrics and KPIs of OCNSSF, see OCNSSF Metrics and OCNSSF KPIs sections respectively.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.
4.27 NF Authentication using TLS Certificate
HTTPS enables end to end encryption of messages to ensure security of data. HTTPS requires creation of TLS (Mutual TLS by 2 way exchange of ciphered keys).
Managing NF Authentication using TLS Certificate
Steps to Enable HTTPS in NSSF
Certificate CreationTo create certificate user must have the following files:
- ECDSA private key and CA signed certificate of NRF (if initial algorithm is ES256)
- RSA private key and CA signed certificate of NRF (if initial algorithm is RSA256)
- TrustStore password file
- KeyStore password file
- CA certificate
Secret Creation
$ kubectl create secret generic ocnssfaccesstoken-secret --from-file=ecdsa_private_key_pkcs8.pem --from-file=rsa_private_key_pkcs1.pem
--from-file=trustStorePassword.txt --from-file=keyStorePassword.txt --from-file=ecdsa_ocnssf_certificate.crt--from-file=rsa_ocnssf_certificate.crt -n
ocnssf
Certificate and Key Exchange
Once the connection is established, both parties can use the agreed algorithm and keys to securely send messages to each other. The handshake has 3 main phases:
- Hello
- Certificate Exchange
- Key Exchange
- Hello: The handshake begins with the client sending a ClientHello message. This contains all the information the server needs in order to connect to the client via SSL, including the various cipher suites and maximum SSL version that it supports. The server responds with a ServerHello, which contains similar information required by the client, including a decision based on the client’s preferences about which cipher suite and version of SSL will be used.
- Certificate Exchange: Now that contact has been established, the server has to prove its identity to the client. This is achieved using its SSL certificate, which is a very tiny bit like its passport. An SSL certificate contains various pieces of data, including the name of the owner, the property (For example: domain) it is attached to, the certificate’s public key, the digital signature and information about the certificate’s validity dates. The client checks that it either implicitly trusts the certificate, or that it is verified and trusted by one of several Certificate Authorities (CAs) that it also implicitly trusts. The server is also allowed to require a certificate to prove the client’s identity, but this only happens in very sensitive applications.
- Key Exchange: The encryption of the actual message data exchanged by the client and server is done using a symmetric algorithm, the exact nature of which was agreed during the Hello phase. A symmetric algorithm uses a single key for both encryption and decryption, in contrast to asymmetric algorithms that require a public or private key pair. Both parties need to agree on this single, symmetric key, a process that is accomplished securely using asymmetric encryption and the server’s public or private keys.
The client generates a random key to be used for the main, symmetric algorithm. It encrypts it using an algorithm also agreed upon during the Hello phase, and the server’s public key (found on its SSL certificate). It sends this encrypted key to the server, where it is decrypted using the server’s private key, and the interesting parts of the handshake are complete. The parties are identified that they are talking to the right person, and have secretly agreed on a key to symmetrically encrypt the data that they are about to send each other. HTTP requests and responses can be sent by forming a plain text message and then encrypting and sending it. The other party is the only one who knows how to decrypt this message, and so Man In The Middle Attackers are unable to read or modify any requests that they may intercept.
NSSF supports following cipher suites
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256HTTPS Encrypted Communication
Once the HTTPS handshake is complete all communications between the client and the server are encrypted. This includes the full URL, data (plain text or binary), cookies and other headers.
The only part of the communication not encrypted is what domain or host the client requested a connection. This is because when the connection is initiated an HTTP request is made to the target server to create the secure connection. Once HTTPS is established the full URL is used.
This initialization only needs to occur once for each unique connection. This is why HTTP/2 has a distinct advantage over HTTP/1.1 since it multi-plexes connections instead of opening multiple connections.
Helm Configuration to enable HTTPS on NSSF: #Enabling it generates key and trust store for https support
initssl: true (Note: secret has to be created if its set to true)
#If true opens https port on egress gateway
enableincominghttps: false
#Enabling it egress makes https request outside
enableoutgoinghttps: true
(Note: initssl should be set to true if either enableincominghttps or enableoutgoinghttps is enabled )
#KeyStore and TrustStore related private key and Certificate configuration (Note: The configuration names specified should be same as the file names specified when creating secret)
privateKey:
k8SecretName: accesstoken-secret
k8NameSpace: ocnssf
rsa:
fileName: rsa_private_key_pkcs1.pem
certificate:
k8SecretName: accesstoken-secret
k8NameSpace: ocnssf
rsa:
fileName: ocnssf.cer
caBundle:
k8SecretName: accesstoken-secret
k8NameSpace: ocnssf
fileName: caroot.cer
keyStorePassword:
k8SecretName: accesstoken-secret
k8NameSpace: ocnssf
fileName: key.txt
trustStorePassword:
k8SecretName: accesstoken-secret
k8NameSpace: ocnssf
fileName: trust.txt
initialAlgorithm: RSA256
4.28 Protection from Distributed Denial-of-Service (DDoS) Attack through Rate Limiting
NSSF uses Bucket4j
which uses Token Bucket algorithm to enable rate limiting.
The token bucket algorithm has following concepts:
burstCapacity: The maximum number of token the bucket can hold.
duration: The amount of time between the refills.
refillRate:The number of tokens that are added to the bucket during a refill.
(where duration: in seconds (M), burstCapacity: (C), refillRate: (N))
- N tokens are added to the bucket every M seconds.
- The bucket can hold at the most C tokens. If a token arrives when the bucket is full, it is discarded.
Ingress Rate Limiting
To avoid unexpected behavior and DOS attacks ,NSSF allows user to enable rate limiting in ingress messages. NSSF allows user to configure a cap on max number of incoming messages at a given duration. User has an option to configure a max cap on number of ingress request per service.
Steps to Enable Ingress Rate LimitingNSSF allows at the
max of {burstCapacity}/ {refillRate}
number of messages in a duration
signified by parameter {duration}.
To enable ingress rate limiting at
NSSF ingress_gateway.rateLimiting.enabled
must be set to true.
Global Ingress Rate Limiting
When
globalIngressRateLimiting.enabled
is set to true then rate limiting is applied
for all ingress messages.
Route Based Rate Limiting
NSSF provides option to configure route based rate limiting and method based rate limiting which enables NSSF to throttle messages per Service per method.
In the below example NSSF allows 80 GET requests on NSSelection service for every 2 seconds.
Sample ingress rate limiting configuration:
#Rate limiting configuration
rateLimiting:
enabled: true
routeRateLimiting:
enabled: true
# Global rate limiting configuration
globalIngressRateLimiting:
enabled: true
duration: 2 # in seconds
burstCapacity: 100
refillRate: 1
routesConfig:
- id: nsselection_mapping
uri: http://ocnssf-nsselection:5745
path: /nnssf-nsselection/**
order: 1
#Route level limiting configuration enabled for NSSelection
methodRateLimiting: # specify the list of methods u have to rate limit
- method: GET
burstCapacity: 80
refillRate: 1
duration: 2
#Route level limiting configuration not enabled for NSAvailability
- id: availability_mapping
uri: http://ocnssf-nsavailability:5745
path: /nnssf-nssaiavailability/**
order: 2
- id: nsconfig_mapping
uri: http://ocnssf-nsconfig:5755
path: /nnssf-configuration/**
order: 3
Egress Rate Limiting
NSSF sends notification messages to AMF based on configuration change of supported SNSSAI/s in a TAI. Notification messages can be throttled by operator by enabling egress message rate limiting.
Steps to Enable Egress Rate LimitingTo enable rate limiting
egress-gateway.notificationRateLimit.enabled
must be set to true.
As per the below example, NSSF has a max cap on 200 notifications per second:
egress-gateway:
notificationRateLimit:
enabled: false
duration: 1
bucketCapacity: 200
refillRate: 1
To Observe Protection from Distributed Denial-of-Service (DDoS) Attack through Rate limiting
The following are the metrics related to Distributed Denial-of-Service (DDoS) Attack through Rate limiting:- oc_ingressgateway_global_ratelimit
- oc_ingressgateway_route_ratelimit
- oc_egressgateway_notification_ratelimit
For further details of Metrics and KPIs, see NSSF Metrics and NSSF KPIs sections respectively.
Maintain
- Collect the logs: For more information on how to collect logs, see Oracle Communications Cloud Native Core, Network Slice Selection Function Troubleshooting Guide.
- Raise a service request: See My Oracle Support for more information on how to raise a service request.