5 Common Services REST APIs
This chapter provides information about the REST specifications for Common Services used in Oracle Communications Cloud Native Core, Network Slice Selection Function (NSSF).
You can use these APIs to update configurations related to the Overload Control feature. For more information on Overload Control Feature, see Oracle Communications Cloud Native Core, Network Slice Selection Function User Guide.
5.1 Ingress Gateway REST APIs
This section explains REST API configurations required at Ingress Gateway for various features.
5.1.1 serverheaderdetails Configurations to Enable Server Header
This API can be used for adding Server Header in the error responses sent from Ingress Gateway, depending on the values provided in the JSON. By default, this feature is disabled. To enable the feature, invoke the following REST API and update the enable or disable flag.
URI:
/{nfType}/nf-common-component/v1/{serviceName}/serverheaderdetails
Method: GET, PUT, PATCH
Content-Type: application/json
Request or Response Body Parameters
Table 5-1 Request or Response Body Parameters
Parameter | Description | Details |
---|---|---|
enabled |
This is a mandatory parameter. This parameter specifies whether the feature is enabled or disabled. |
Data Type: Boolean Range: true or false Example Value: false |
errorCodeSeriesId |
This is an optional parameter. Specifies the error list IDs |
Data Type: String Range: NA Example Value: NA |
configuration.nfType |
This is a mandatory parameter. Specifies the type of network function |
Data Type: String Range: NA Example Value: NSSF |
configuration.nfInstanceId |
This is a mandatory parameter. This parameter represents the UUID of the NSSF deployment that is used to generate the Server Header. |
Data Type: String Range: NA Example Value: Valid NSSF Instance ID |
Example
Example of Request or Response Body to Enable Server Header:
{
"enabled": true,
"errorCodeSeriesId": "E1",
"configuration": {
"nfType": "NSSF",
"nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01"
}
}
Note:
- 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 valuenfInstanceId
: Valid NSSF's instance value. It must be same as NSSF's instance ID.- Ensure that an
errorCodeSeries
exists corresponding to theerrorCodeSeriesId
.
Sample cURL to Enable Server Header:
curl
--http2-prior-knowledge -X PUT
http://{{host}}:{{port}}/{nfType}/nf-common-component/v1/{serviceName}/serverheaderdetails
-H "Content-Type: application/json" -d
'{"enabled":true,"errorCodeSeriesId":"E1","configuration":{"nfType":"NSSF","nfInstanceId":"9faf1bbc-6e4a-4454-a507-aef01a101a01"}}'
-v
Example of Request or Response Body to Disable Server Header:
{
"enabled": false,
"errorCodeSeriesId": "E1",
"configuration": {
"nfType": "NSSF",
"nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01"
}
}
Sample cURL to Disable Server Header:
curl
--http2-prior-knowledge -X PUT
http://{{host}}:{{port}}/{nfType}/nf-common-component/v1/{serviceName}/serverheaderdetails
-H "Content-Type: application/json" -d
'{"enabled":false,"errorCodeSeriesId":"E1","configuration":{"nfType":"NSSF","nfInstanceId":"9faf1bbc-6e4a-4454-a507-aef01a101a01"}}'
-v
Note:
-
enabled
is used to enable or disable the feature. -
nfType
andnfInstanceId
are used to form the Server Header. - Ensure that an
errorCodeSeries
exists corresponding to theerrorCodeSeriesId
.
5.1.2 Configurations to enable Ingress Gateway Pod Protection
This API is used to enable and configure Ingress Gateway Pod Protection
Feature in NSSF. To enable the feature, REST API needs to be invoked and update the
enabled flag to true
.
URI:
/NSSF/nf-common-component/v1/{serviceName}/podprotection
Note:
Although NSSF does not fully support the PATCH method, it has been partially implemented. The responsibility lies with the operator to abstain from using PATCH and to adhere strictly to the supported methods outlined in the documentation.Content-Type: application/json
Request or Response Body Parameters
Table 5-2 Request or Response Body Parameters
Field Name | Description | Details |
---|---|---|
enabled |
This attribute helps enable or disable the "Pod Protection Defense" feature. Setting this attribute to true triggers resource monitoring in the next schedule. |
Data Type: Boolean
Range: true or false Example Value: false |
monitoringInterval |
This is the interval (in milliseconds) at which the state of the resource will be checked and updated accordingly. |
Data Type: integer
Range: minimum 0 Example Value: 0 |
congestionControl.enabled |
This attribute helps enable or disable the
|
Data Type: Boolean
Range: true or false Example Value: false |
congestionControl.stateChangeSampleCount |
The number of times the pod has to remain in the same state in order to transition to a different state. For example, if the pod is in the normal state (weight 0) and in order to transition from normal to DOC, the pod has to remain in the DOC state for the specified count or time. |
Data Type: integer
Range: minimum 0 Example Value: 0 |
congestionControl.actionSamplingPeriod |
The |
Data Type: integer
Range: minimum 0 Example Value: 0 |
congestionControl.states.name |
The attribute is used to define different states of congestion. |
Data Type: String
Range: Normal, DoC, Congested Example Value: NA |
congestionControl.states.weight |
Each state is identified by its weight, which defines the level of criticality. The lower the weight, the lower the criticality. For example, the resource threshold for weight 0 (Normal) should be lower than the resource threshold for weight 1 (DOC). |
Data Type: integer
Range: minimum 0 Example Value: 0 |
congestionControl.actionSamplingPeriod.resourceThreshold |
The CPU and pending message thresholds for a given state are listed within this array. If the resource consumption exceeds the listed threshold, the corresponding entry action is triggered. |
Data Type: array
Range: NA Example Value: NA |
incrementByActionSamplingPeriod
|
The value of |
Data Type: integer
Range: minimum 0 Example Value: 0 |
decrementByActionSamplingPeriod
|
The value of |
Data Type: integer
Range: minimum 0 Example Value: 0 |
Example
Note:
- For an ASM setup, it is recommend to set the threshold of
pendingMessage
at DoC state to 500 and at Congested state to 600. - As of now, NSSF does not support memory threshold.
{
"enabled": false,
"monitoringInterval": 100,
"congestionControl": {
"enabled": false,
"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,
"pendingMessage": 900
},
"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,
"pendingMessage": 1000
},
"entryAction": [
{
"action": "AcceptIncomingConnections",
"arguments": {
"accept": false
}
},
{
"action": "MaxConcurrentStreamsUpdate",
"arguments": {
"decrementBy": 30,
"decrementByActionSamplingPeriod": 1,
"maxConcurrentStreamsPerCon": 5
}
}
]
}
]
}
}
5.1.3 Error Code Profile Configuration in Ingress Gateway
This URI can be used to update the errorCodeProfiles that is used in Overload Control
feature for populating details in error responses when a request is discarded. By
default, the errorCodeProfiles
remains null.
URI:
{apiRoot}/nssf/nf-common-component/v1/igw/errorcodeprofiles
Method:
- PUT: Update Error Code configuration of the required service.
Content-Type: application/json
Dependency
errorcodeprofiles
is used in ocdiscardpolicies
to
define how different overload levels trigger rejection with specific errors.
Request or Response Body Parameters
Field Name | Description | Details |
---|---|---|
name |
This is a mandatory parameter. Error name. |
Data Type: string |
errorCause |
This is an optional parameter.
|
Data Type: string |
errorCode |
This is a mandatory parameter.
|
Data Type: integer |
errorDescription |
This is an optional parameter.
|
Data Type: string |
errorTitle |
This is an optional parameter.
|
Data Type: string |
redirectURL |
This is an optional parameter.
|
Data Type: string |
retry-after |
This is an optional parameter.
|
Data Type: string |
Example
[
{
"name": "error429",
"errorCode": 429,
"errorCause": "Too many requests",
"errorTitle": "Too many requests",
"redirectURL": "",
"retry-after": "",
"errorDescription": "Too many requests"
},
{
"name": "error503",
"errorCode": 503,
"errorCause": "Backend not able to handle traffic",
"errorTitle": "Backend not able to handle traffic",
"redirectURL": "",
"retry-after": "",
"errorDescription": "Backend not able to handle traffic"
}
]
curl-i --http2-prior-knowledge-X PUT 'http://ocnssf-nsconfig:{{port}}/nssf/nf-common-component/v1/igw/errorcodeprofiles'-H 'Content-Type: application/json' --data-raw '[{"name":"error429","errorCode":429,"errorCause":"Too many requests","errorTitle":"Too many requests","redirectURL":"","retry-after":"","errorDescription":"Too many requests"},{"name":"error503","errorCode":503,"errorCause":"Backend not able to handle traffic","errorTitle":"Backend not able to handle traffic","redirectURL":"","retry-after":"","errorDescription":"Backend not able to handle traffic"}]'
5.1.4 Discard Policy Configuration in Ingress Gateway
This URI can be used to update discard policies that will be used in overload control to
select the appropriate policy from the configured list based on the load level of a
particular service. By default, ocDicardPolicies
is null.
URI:
{apiRoot}/nssf/nf-common-component/v1/igw/ocdiscardpolicies
- PUT: Update discard policy configuration of the required service.
Content-Type: application/json
Dependency
ocdiscardpolicies
useerrorcodeprofiles
to decide the error message when rejecting requests.ocdiscardpolicies
are used byocpolicymapping
to associate services with specific overload handling policies.
Request or Response Body Parameters
Field Name | Description | Details |
---|---|---|
name |
This is a mandatory parameter. Name of the discarded policy. Note: name must be the value configured in
|
Data Type: string |
policies.action |
This is an optional parameter. Defines the action to be taken on selected requests rejection based on error code. |
Data Type: string
Example
Value:
|
policies.errorCodeProfile |
This is an optional parameter. The error code profiles. |
Data Type: string |
policies.level |
This is an optional parameter. Defines the overload level. |
Data Type: string |
policies.value |
This is a mandatory parameter. Value of priority above which requests are considered as potential candidates for drop. Percentage of requests to drop in the current sampling period over the calculated rate in the previous sampling period. |
Data Type: integer |
scheme |
This is a mandatory parameter. Discarded policy scheme based on percentage. |
Data Type: string |
Example
[
{
"name": "nsselectionPolicy",
"scheme": "PercentageBased",
"policies": [
{
"level": "Warning",
"value": 0,
"action": "RejectWithErrorCode",
"errorCodeProfile": "error429"
},
{
"level": "Minor",
"value": 10,
"action": "RejectWithErrorCode",
"errorCodeProfile": "error429"
},
{
"level": "Major",
"value": 25,
"action": "RejectWithErrorCode",
"errorCodeProfile": "error429"
},
{
"level": "Critical",
"value": 50,
"action": "RejectWithErrorCode",
"errorCodeProfile": "error503"
}
]
},
{
"name": "nsavailabilityPolicy",
"scheme": "PercentageBased",
"policies": [
{
"level": "Warning",
"value": 0,
"action": "RejectWithErrorCode",
"errorCodeProfile": "error429"
},
{
"level": "Minor",
"value": 10,
"action": "RejectWithErrorCode",
"errorCodeProfile": "error429"
},
{
"level": "Major",
"value": 25,
"action": "RejectWithErrorCode",
"errorCodeProfile": "error429"
},
{
"level": "Critical",
"value": 50,
"action": "RejectWithErrorCode",
"errorCodeProfile": "error503"
}
]
}
]
curl -i --http2-prior-knowledge -X PUT 'http://ocnssf-nsconfig:{{port}}/nssf/nf-common-component/v1/igw/ocdiscardpolicies' -H 'Content-Type: application/json' --data-raw '[{"name":"nsselectionPolicy","scheme":"PercentageBased","policies":[{"level":"Warning","value":0,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Minor","value":10,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Major","value":25,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Critical","value":50,"action":"RejectWithErrorCode","errorCodeProfile":"error503"}]},{"name":"nsavailabilityPolicy","scheme":"PercentageBased","policies":[{"level":"Warning","value":0,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Minor","value":10,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Major","value":25,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Critical","value":50,"action":"RejectWithErrorCode","errorCodeProfile":"error503"}]}]'
5.1.5 Policy Mapping Configuration to Enable Overload Configuration
This URI can be used to update service names and corresponding policy names for the
service which is mapped to "ocDiscardPolicies" based on "policyName" and also to enable
or disable the Overload Control feature and the sampling period in overload control. By
default, the Overload Control feature is disabled and the sampling period is 6000. To
enable the feature, REST API needs to be invoked and update the enabled flag to
true
.
URI:
{apiRoot}/nssf/nf-common-component/v1/igw/ocpolicymapping
Method:
- GET: Get Policy mapping value of the required service
- PUT: Update the Policy mapping value of the required service
- PACTH: Update specific Policy mapping value of the required service
Content-Type: application/json
Dependency
Depends on ocdiscardpolicies
to apply the right rejection policy to
each service.
Request or Response Body Parameters
Table 5-3 Request or Response Body Parameters
Field Name | Description | Details |
---|---|---|
enabled |
This is a mandatory parameter. To enable or disable the Overload Control feature.
Set values to |
Data Type: boolean |
mappings |
This is an optional parameter.
Note: A value
for |
Data Type: Array |
mappings.policyName |
This is a conditional parameter. The discard policy entry determines a mapping between the service and discards policy name per service. Note: If a value for |
Data Type: string |
mappings.svcName |
This is a conditional parameter. The service entry to determine a mapping between
service and discard policy name per
<deployment-name>-<servicename> Note: servicename is fixed and cannot be changed. Note: If a value for |
Data Type: string |
samplingPeriod |
This is a mandatory parameter. The time frame for each cycle of Overload Control per service. Its value is in milliseconds. |
Data Type: integer |
Example
{
"enabled": true,
"mappings": [
{
"svcName": "ocnssf-nsselection",
"policyName": "nsselectionPolicy"
},
{
"svcName": "ocnssf-nsavailability",
"policyName": "nsavailabilityPolicy"
}
],
"samplingPeriod": 6000
}
curl -i --http2-prior-knowledge -X PUT 'http://ocnssf-nsconfig:{{port}}/nssf/nf-common-component/v1/igw/ocpolicymapping' -H 'Content-Type: application/json' --data-raw '{"enabled": true, "mappings": [{"svcName": "ocnssf-nsselection", "policyName": "nsselectionPolicy"},{"svcName": "ocnssf-nsavailability","policyName": "nsavailabilityPolicy"}],"samplingPeriod": 6000}'
5.1.6 Error Code Series Configuration in Ingress Gateway
This URI can be used to update the errorcodeserieslist
that are used in Overload Control feature and Server Header feature to list the
configurable exception or error for an error scenario in Ingress Gateway.
URI:
{apiRoot}/nssf/nf-common-component/v1/igw/errorcodeserieslist
Method: PUT to update Error Code Series configuration of the required service.
Content Type: application/json
Dependency
Not directly linked to other configurations but enhances error handling by classifying errors.
Request or Response Body Parameters
Table 5-4 Request or Response Body Parameters
Parameter | Description | Details |
---|---|---|
id |
This is a mandatory parameter. Indicates the error code identifier. |
Data Type: string |
errorCodeSeries |
This is a mandatory parameter. List the error codes for a specific service. Note: " |
Data Type: string |
exceptionList |
This is an optional parameter. Lists the configurable exception or error for an error scenario in Ingress Gateway. |
Data Type: string
Range:
|
errorSet |
This is a mandatory parameter. Possible values for " |
Data Type: string |
errorCodes |
This is a mandatory parameter. Possible values include all error codes in the
respective Note: Use single value of "-1" if all error
codes in that For example:
Onus is on operator to configure the errorCodes properly as explained above. |
Data Type: string |
Example
Example of Request or Response Body:
[
{
"id": "E1",
"exceptionList": [
"RequestTimeout",
"ConnectionTimeout",
"UnknownHostException",
"NotFoundException"
],
"errorCodeSeries": [
{
"errorSet": "4xx",
"errorCodes": [
400,
408
]
},
{
"errorSet": "5xx",
"errorCodes": [
500,
503
]
}
]
}
]
[
{
"id": "E1",
"errorCodeSeries":
[
{
"errorSet": "4xx",
"errorCodes": [-1]
},
{
"errorSet": "5xx",
"errorCodes": [-1]
}
]
}
]
Sample cURL:
curl --http2-prior-knowledge -X PUT
http://{{host}}:{{port}}/{nfType}/nf-common-component/v1/{serviceName}/{instanceId}/errorcodeserieslist
-H "Content-Type: application/json" -d
'[{"id":"E1","exceptionList":["RequestTimeout","ConnectionTimeout","UnknownHostException","NotFoundException"],"errorCodeSeries":[{"errorSet":"4xx","errorCodes":[400,429]},{"errorSet":"5xx","errorCodes":[500,503]}]}]'
-v
5.1.7 Routes Configuration in Ingress Gateway
The configuration of "routesconfiguration" is required for Server Header and Overload control feature to map route ID and its corresponding route-level configuration. By default, this configuration is null.
URI:
/{nfType}/nf-common-component/v1/{serviceName}/routesconfiguration
Note:
Ensure that route ID (routesConfig[0].id
) used in REST configuration is same as the
route ID used in values.yaml
file.
Method: GET, PUT, PATCH
Content-Type: application/json
Request or Response Body Parameters
Dependency
routesconfiguration
defines routing
behaviors and associates services with error code series. It references
errorCodeSeriesId
which is defined in id
attribute
in errorcodeserieslist
.
Table 5-5 Request or Response Body Parameters
Parameter | Description | Details |
---|---|---|
id |
This is a mandatory parameter. Specifies the route IDs for which you need to define server header |
Data Type: string
Example Value: "availability_mapping" |
serverHeaderDetails.enabled |
This is an optional parameter. Set the value for this parameter to true if you want to define server header at the route level. |
Data Type: boolean Range: true or false Example Value: true |
serverHeaderDetails.errorCodeSeriesId
|
This is an optional parameter. Specifies the error list IDs Note: Ensure that an
|
Data Type: String Range: NA Example Value: NA |
Example
Example of Request or Response Body
[
{
"id": "availability_mapping",
"serverHeaderDetails": {
"enabled": true,
"errorCodeSeriesId": "E2"
}
},
{
"id": "nsselection_mapping",
"serverHeaderDetails": {
"enabled": false,
"errorCodeSeriesId": "E2"
}
}
]
Sample cURL:
curl --http2-prior-knowledge -X PUT
http://ocnssf-nsconfig:8080/{nfType}/nf-common-component/v1/igw/routesconfiguration
-H "Content-Type: application/json" -d '[ { "id": "availability_mapping",
"serverHeaderDetails": { "enabled": true, "errorCodeSeriesId": "E2" } }, { "id":
"nsselection_mapping", "serverHeaderDetails": { "enabled": false,
"errorCodeSeriesId": "E2" } } ]' -v
5.1.8 Perf-Info REST APIs
This section explains REST API configurations required at Perf-Info to enable Overload control feature:
5.1.8.1 Overload Level Threshold Configuration in Perf-Info
URI:
{apiRoot}/nssf/nf-common-component/v1/perf-info/overloadLevelThreshold
Method:
- GET: Get the Overload Threshold Value of the required service (Backend service).
- PUT: Update the Overload Threshold Value of the required service (Backend service).
- DELETE: Delete the Overload Threshold Value of the required service (Backend service).
Content-Type: application/json
Dependency
Determines when a service is considered overloaded. It triggers
ocdiscardpolicies
when thresholds are exceeded, causing requests to be
rejected with predefined error responses.
Request or Response Body Parameters
Table 5-6 Request or Response Body Parameters
Parameter | Description | Details |
---|---|---|
svcName |
This is a mandatory parameter. Name of the backend service. |
Data Type: string |
metricsThresholdList.metricsName |
This is a mandatory parameter. Name of overload indicator such as |
Data Type: string |
metricsThresholdList.levelThresholdList.onsetValue |
This is a mandatory parameter. The |
Data Type: integer |
metricsThresholdList.levelThresholdList.level |
This is a mandatory parameter. Specifies the name of the level. The name specified in this parameter
must match the level name in Ingress Gateway's
|
Data Type: string |
metricsThresholdList.levelThresholdList.abatementValue |
This is a mandatory parameter. The overload condition is considered as cleared this level, if the
|
Data Type: integer |
metricsThresholdList.levelThresholdList |
This is a mandatory parameter. List of threshold values. |
Data Type: array |
metricsThresholdList |
This is a mandatory parameter. List of criteria used to calculate the load level. |
Data Type: array |
Example
[
{
"svcName": "ocnssf-nsselection",
"metricsThresholdList": [
{
"metricsName": "svc_failure_count",
"levelThresholdList": [
{
"level": "Warning",
"onsetValue": 250,
"abatementValue": 200
},
{
"level": "Minor",
"onsetValue": 400,
"abatementValue": 350
},
{
"level": "Major",
"onsetValue": 600,
"abatementValue": 480
},
{
"level": "Critical",
"onsetValue": 900,
"abatementValue": 720
}
]
},
{
"metricsName": "memory",
"levelThresholdList": [
{
"level": "Warning",
"onsetValue": 87,
"abatementValue": 85
},
{
"level": "Minor",
"onsetValue": 90,
"abatementValue": 87
},
{
"level": "Major",
"onsetValue": 95,
"abatementValue": 90
},
{
"level": "Critical",
"onsetValue": 99,
"abatementValue": 95
}
]
},
{
"metricsName": "cpu",
"levelThresholdList": [
{
"level": "Warning",
"onsetValue": 80,
"abatementValue": 75
},
{
"level": "Minor",
"onsetValue": 85,
"abatementValue": 80
},
{
"level": "Major",
"onsetValue": 90,
"abatementValue": 85
},
{
"level": "Critical",
"onsetValue": 95,
"abatementValue": 90
}
]
},
{
"metricsName": "svc_pending_count",
"levelThresholdList": [
{
"level": "Warning",
"onsetValue": 100,
"abatementValue": 60
},
{
"level": "Minor",
"onsetValue": 200,
"abatementValue": 125
},
{
"level": "Major",
"onsetValue": 260,
"abatementValue": 201
},
{
"level": "Critical",
"onsetValue": 400,
"abatementValue": 300
}
]
}
]
},
{
"svcName": "ocnssf-nsavailability",
"metricsThresholdList": [
{
"metricsName": "svc_failure_count",
"levelThresholdList": [
{
"level": "Warning",
"onsetValue": 65,
"abatementValue": 60
},
{
"level": "Minor",
"onsetValue": 130,
"abatementValue": 120
},
{
"level": "Major",
"onsetValue": 260,
"abatementValue": 240
},
{
"level": "Critical",
"onsetValue": 520,
"abatementValue": 480
}
]
},
{
"metricsName": "memory",
"levelThresholdList": [
{
"level": "Warning",
"onsetValue": 60,
"abatementValue": 55
},
{
"level": "Minor",
"onsetValue": 65,
"abatementValue": 60
},
{
"level": "Major",
"onsetValue": 70,
"abatementValue": 65
},
{
"level": "Critical",
"onsetValue": 75,
"abatementValue": 70
}
]
},
{
"metricsName": "cpu",
"levelThresholdList": [
{
"level": "Warning",
"onsetValue": 60,
"abatementValue": 55
},
{
"level": "Minor",
"onsetValue": 65,
"abatementValue": 60
},
{
"level": "Major",
"onsetValue": 70,
"abatementValue": 65
},
{
"level": "Critical",
"onsetValue": 75,
"abatementValue": 70
}
]
},
{
"metricsName": "svc_pending_count",
"levelThresholdList": [
{
"level": "Warning",
"onsetValue": 3,
"abatementValue": 1
},
{
"level": "Minor",
"onsetValue": 6,
"abatementValue": 3
},
{
"level": "Major",
"onsetValue": 12,
"abatementValue": 6
},
{
"level": "Critical",
"onsetValue": 24,
"abatementValue": 12
}
]
}
]
}
]
curl -i --http2-prior-knowledge -X GET 'http://ocnssf-nsconfig:{{port}}/nssf/nf-common-component/v1/perf-info/overloadLevelThreshold'
5.1.9 Configuration To Check If Overload Control in Enabled
This section explains REST API to check if overload control is enabled:
5.1.9.1 To Check Current Load Level
This API is used to check current load level on the NSSF services.
API:
http://ocnssf-ingress-gateway:80/igw/load-level?svcName=ocnssf-nsselection
http://ocnssf-ingress-gateway:80/igw/load-level?svcName=ocnssf-nsavailability
Method: GET
Content Type: application/json
cURL Command:
NsSelection:
curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/load-level?svcName=ocnssf-nsselection
NsAvailability:
curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/load-level?svcName=ocnssf-nsavailability
Response: Normal
5.1.9.2 To Check Pending Count
This API is used to check pending counts of requests with the NSSF services.
API:
http://ocnssf-ingress-gateway:80/igw/pending-req-count?svcName=ocnssf-nsselection
http://ocnssf-ingress-gateway:80/igw/pending-req-count?svcName=ocnssf-nsavailability
Method: GET
Content Type: application/json
cURL Command:
NsSelection:
curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/pending-req-count?svcName=ocnssf-nsselection
NsAvailability:
curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/pending-req-count?svcName=ocnssf-nsavailability
Response:
{
"svc_pending_count": [
{
"svcName": "ocnssf-nsselection",
"count": 52
}
]
}
5.1.9.3 To Check Failure Count
This API is used to check failure counts of requests with the NSSF services.
API:
http://ocnssf-ingress-gateway:80/igw/failed-req-count?svcName=ocnssf-nsselection
http://ocnssf-ingress-gateway:80/igw/failed-req-count?svcName=ocnssf-nsavailability
Method: GET
Content Type: application/json
cURL Command:
NsSelection:
curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/failed-req-count?svcName=ocnssf-nsselection
NsAvailability:
curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/failed-req-count?svcName=ocnssf-nsavailability
Response:
{
"svc_failure_count": [
{
"svcName": "ocnssf-nsselection",
"count": 7780
}
]
}
5.1.9.4 To Check NF_CONGESTION_RISK for NsAvailability
This API is used to check the risk of congestion on NsAvailability service.
API:
http://ocnssf-ingress-gateway:80/nnssf-nssaiavailability/v1/nssai-availability/1
Method: PUT
Content Type: application/json
cURL Command:
NsAvailability:
curl -v --http2-prior-knowledge -X PUT http://ocnssf-ingress-gateway:{{port}}/nnssf-nssaiavailability/v1/nssai-availability/12345678-abcd-efAB-CDEF-123456789015 -H 'Content-Type: application/json' -d '{ "supportedNssaiAvailabilityData": [ { "tai": { "plmnId": { "mcc": "100", "mnc": "101" }, "tac": "323052" }, "supportedSnssaiList": [ { "sd": "EABB05", "sst": 5 }, { "sd": "EABB04", "sst": 4 } ] } ] }'
Response:
{ "type": null, "title": "NF_CONGESTION_RISK", "status": 429, "detail": "Too many requests", "instance": null, "cause": "NF_CONGESTION_RISK", "invalidParams": null }
5.1.9.5 To Check NF_CONGESTION_RISK for NsSelection
This API is used to check the risk of congestion on NsSelection service.
API:
http://ocnssf-ingress-gateway:80/nnssf-nsselection/v2/network-slice-information
Method: GET
Content Type: application/json
cURL Command:
NsSelection:
curl -v --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/nnssf-nsselection/v2/network-slice-information?nf-id=12345678-abcd-efAB-CDEF-123456789012&nf-type=AMF&tai=%7B%0A%09%22plmnId%22%3A%0A%09%09%7B%0A%09%09%09%22mcc%22%3A%22100%22%2C%0A%09%09%09%22mnc%22%3A%22101%22%0A%09%09%7D%2C%0A%09%22tac%22%3A%22100001%22%0A%7D&slice-info-request-for-pdu-session=%7B%0A%22sNssai%22%3A%20%0A%09%09%7B%0A%09%09%09%22sst%22%3A%2217656757%22%2C%0A%09%09%09%22sd%22%3A%22EABB01%22%0A%09%09%7D%2C%0A%09%22roamingIndication%22%3A%20%22NON_ROAMING%22%0A%7D
Response:
{ "type": null, "title": "NF_CONGESTION_RISK", "status": 429, "detail": "Too many requests", "instance": null, "cause": "NF_CONGESTION_RISK", "invalidParams": null }
5.2 Egress Gateway REST APIs
This section explains REST API configurations required at Egress Gateway for various features.
5.2.1 Peer Configuration
This resource is used in SBIRouting
feature. This URI can be
used to add or update the list of peers wherein each peer consists of ID, host, port or
virtualHost, and apiPrefix. The ID of each peer is mapped to
peerIdentifier
in "peersetconfiguration
" resource.
The default value is null.
URI:
{apiRoot}/nssf/nf-common-component/v1/egw/peerconfiguration
Method supported: PUT, PATCH, GET
Resource: array (peerConfiguration)
Table 5-7 PeerConfiguration
Parameter | Data Type | Constraints | Description |
---|---|---|---|
id |
string | Unique value in peer configuration. | Identifier for Peer |
host |
string | NA |
Host details of the Peer. In case of SLF, it is SCP. It can be IPv4, IPv6, and FQDN details. |
virtualHost |
string | NA | FQDN details of the peer. This FQDN is sent to Alternate Route Service for DNS-SRV resolution. |
port |
string | NA | Port details for Peer. |
apiPrefix |
string | Keep the value as / only for NRF | API prefix details for Peer. |
healthApiPath |
string | Valid path | Parameter to support SCP health check API. It contains path of the health API. |
Dependency: It is mandatory to configure peerconfiguration
with
healthApiPath
if you want to enable
peermonitoringconfiguration
.
Example:
curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/peerconfiguration" -H "Content-Type: application/json" -d peer.json
Sample peer.json:-
[
{
"id": "peer1",
"host": "scp1",
"port": "8080",
"apiPrefix": "/",
"healthApiPath": "/health/v1"
},
{
"id": "peer2",
"host": "scp2",
"port": "8080",
"apiPrefix": "/",
"healthApiPath": "/health/v2"
},
{
"id": "peer3",
"host": "scp3",
"port": "8080",
"apiPrefix": "/",
"healthApiPath": "/health/v3"
},
{
"id": "peer4",
"host": "scp4",
"port": "8080",
"apiPrefix": "/",
"healthApiPath": "/health/v4"
},
{
"id": "peer5",
"virtualHost": "xyz.test.com",
"apiPrefix": "/",
"healthApiPath": "/health/v5"
},
{
"id": "peer6",
"virtualHost": "abc.test.com",
"apiPrefix": "/",
"healthApiPath": "/health/v6"
}
]
5.2.2 Peer Set Configuration
This resource is used in SBIRouting
feature. This URI can
be used to add or update the list of peer sets wherein each peer set consists of ID and
list of http or https instances. Each instance consists of priority and peer identifier
that is mapped to id
in "peerconfiguration
" resource.
The id
of each peer set is mapped to peerSetIdentifier
in routesconfiguration
resource. The default value is null.
API:
nssf/nf-common-component/v1/egw/peersetconfiguration
Method supported: PUT, PATCH, GET
Resource: array (peerSetConfiguration)
Table 5-8 PeerSetConfiguration
Parameter | Data Type | Constraints | Description |
---|---|---|---|
id |
string | Unique value in peerset configuration. | Identifier for peer set. |
httpConfiguration |
array(PeerIdentifierConfiguration) | Both http and https need to be configured irrespective of which scheme is supported. | Configuration for HTTP based peers. This value will be selected if 3GPPAPIRootScheme value is http. |
httpsConfiguration |
array(PeerIdentifierConfiguration) | Both http and https need to be configured irrespective of which scheme is supported. | Configuration for HTTPs based Peers. This value will be selected if 3GPPAPIRootScheme value is https. |
Table 5-9 Peer Identifier Configuration
Parameter | Data Type | Constraints | Description |
---|---|---|---|
priority |
integer | Priority should be unique | Priority of peer to be used in a peer set. |
peerIdentifier |
string | NA | Peer Identifier is the value of Peer configured during PeerConfiguration |
Dependency:
PeerConfiguration
must be done before adding
PeerSetConfiguration
.
Example:
curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/peersetconfiguration" -H "Content-Type: application/json" -d @peerset.json
sample peerset.json
[
{
"id": "set0",
"httpConfiguration": [
{
"priority": 1,
"peerIdentifier": "peer1"
},
{
"priority": 2,
"peerIdentifier": "peer2"
},
{
"priority": 3,
"peerIdentifier": "peer3"
},
{
"priority": 4,
"peerIdentifier": "peer4"
}
],
"httpsConfiguration": [
{
"priority": 1,
"peerIdentifier": "peer1"
},
{
"priority": 2,
"peerIdentifier": "peer2"
},
{
"priority": 3,
"peerIdentifier": "peer3"
},
{
"priority": 4,
"peerIdentifier": "peer4"
}
]
},
{
"id": "set1",
"httpConfiguration": [
{
"priority": 1,
"peerIdentifier": "peer5"
}
],
"httpsConfiguration": [
{
"priority": 1,
"peerIdentifier": "peer6"
}
]
}
]
5.2.3 Error Criteria Sets
API: nssf/nf-common-component/v1/egw/sbiroutingerrorcriteriasets
Resource: array (sbiroutingerrorcriteriasets)
Table 5-10 Error Criteria Sets
Parameter | Data Type | Constraints | Description |
---|---|---|---|
id |
string | Unique value of Route. | Unique id for a
sbiRoutingErrorCriteriaSet |
method |
array | GET, POST, PUT, DELETE, PATCH | The type of methods for which the re-route need to be attempted. |
exceptions |
array string | NA | Specific exceptions for which reroute or retry will be triggered. |
statusSeries |
string | 4xx/5xx | Http statusSeries for which reroute or
retry will be triggered when we get error response from
downstream.
|
status |
NA | 401/404 or -1 | Specific HTTP statuses that belongs to above mentioned
statusSeries for which reroute/retry has to be
triggered. To enable retry or reroute for all the HTTP status belonging
to a statusSeries , configure this as -1.
|
Example:
curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/sbiroutingerrorcriteriasets" -H "Content-Type: application/json" -d
sample body.json:-
[
{
"id": "criteria_0",
"method": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH"
],
"exceptions": [
"java.util.concurrent.TimeoutException",
"java.net.UnknownHostException"
]
},
{
"id": "criteria_1",
"method": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH"
],
"response": {
"statuses": [
{
"statusSeries": "4xx",
"status": [
400,
404
]
},
{
"statusSeries": "5xx",
"status": [
500,
503
]
}
]
}
}
]
5.2.4 Error Action Sets
API: nssf/nf-common-component/v1/egw/sbiroutingerroractionsets
Resource: array (sbiroutingerroractionsets)
Table 5-11 Error Action Sets
Parameter | Data Type | Constraints | Description |
---|---|---|---|
id |
string | Unique value of Route | Unique id for
sbiRoutingErrorActionSet. |
action |
string | reroute, retry | Action that needs to be taken when specific criteria set is matched. Currently we support only 2 values. reroute or retry |
attempts |
integer | NA | Maximum no of retries to either same or different peer in case of error or failures from backend. |
enabled |
boolean | true,false | This flag enables the peer blocklist feature using the server headers received in the response. |
duration |
integer | seconds | The duration for which the peer will be blocked and no traffic will be routed to that peer for this period. |
Example:
curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/sbiroutingerroractionsets" -H "Content-Type: application/json" -d
sample body.json:-
[
{
"id": "action_0",
"action": "reroute",
"attempts": 3,
"blacklist": {
"enabled": false,
"duration": 60000
}
},
{
"id": "action_1",
"action": "reroute",
"attempts": 3,
"blacklist": {
"enabled": false,
"duration": 60000
}
}
]
5.2.5 Routes Configuration
This URI can be used to add or update list of routes. The ID of each route
must match the route ID present in Helm chart only if routeConfigMode
is configured as HELM and sbiRoutingConfigMode
is configured as REST.
The configuration under sbiRoutingConfiguration
corresponds to the
SBIRouting
specific configuration.
API:
nssf/nf-common-component/v1/egw/routesconfiguration
Resource:: array (RoutesConfiguration)
Table 5-12 RoutesConfiguration
Parameter | Data Type | Constraints | Description |
---|---|---|---|
id |
string | Unique value of Route |
Route configuration identifier. CAUTION: Default Route with id
' |
uri |
string | NA | Provide any dummy URL, or leave the existing URL with existing value. |
order |
integer | NA | Provide the order of the execution of this route. |
sbiRoutingConfiguration |
SbiRoutingConfiguration details. See Description for child values | NA |
Keep
|
httpRuriOnly |
boolean (true,false) | Don't change the value of this Parameter from true. NRF |
|
httpsTargetOnly |
boolean (true,false) | Don't change the value of this Parameter from true. This is required to make SBI routing work for NRF |
|
predicates |
Predicate Structure. See Description | NA |
Path predicate details for matching SLF path mapped to
this Sample value:
All requests with the path indicated in the pattern will
be routed to the peers bases on priority. This happens only when
Note: Do not change path pattern. |
filters |
Filter Structure. See Description | NA | Filters can be created for various purposes. Use all of the filters as mentioned in example. |
Dependency:
Peerconfiguration
and Peersetconfiguration
must be
configured with either set empty list or populated with values before Routes
Configuration. These attributes are used for routing only if
sbiRoutingConfiguration
is enabled for a particular route.
Example:
curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/routesconfiguration" -H "Content-Type: application/json" -d @header.json
sample header.json:-
[
{
"id": "egress_scp_proxy1",
"uri": "http://localhost:32068/",
"order": 0,
"metadata": {
"httpsTargetOnly": false,
"httpRuriOnly": false,
"sbiRoutingEnabled": true
},
"predicates": [
{
"args": {
"pattern": "/notification/amf2/"
},
"name": "Path"
}
],
"filters": [
{
"name": "SbiRouting",
"args": {
"peerSetIdentifier": "set0",
"customPeerSelectorEnabled": true,
"errorHandling": [
{
"errorCriteriaSet": "criteria_1",
"actionSet": "action_1",
"priority": 1
},
{
"errorCriteriaSet": "criteria_0",
"actionSet": "action_0",
"priority": 2
}
]
}
}
]
},
{
"id": "default_route",
"uri": "egress://request.uri",
"order": 100,
"filters": [
{
"name": "DefaultRouteRetry"
}
],
"predicates": [
{
"args": {
"pattern": "/**"
},
"name": "Path"
}
]
}
]
5.2.6 Peer Monitoring Configuration
This URI can be used to enable, disable, and configure peer monitoring.
API :
nssf/nf-common-component/v1/{serviceName}/peermonitoringconfiguration
Method supported: PUT, PATCH, GET
Resource: array (peermonitoringconfiguration)
Table 5-13 peermonitoringconfiguration
Attribute | Data Type | Constraints | Description |
---|---|---|---|
enabled |
boolean | true or false | It is used to enable or disable the peer monitoring feature. |
timeout |
long | 300 milliseconds to 10000 milliseconds | Attribute to configure the duration of time after which calls to the SCP health API is timed out. |
frequency |
long | 300 milliseconds to 10000 milliseconds | Indicates the frequency or recurring interval at which Egress Gateway initiates health check calls toward SCP. |
failureThreshold |
integer | NA |
Indicates the number of failure responses after which a healthy SCP can be marked as unhealthy. Health API call to given SCP shall fail consecutively to these many attempts before it is marked as "Unavailable" from "Available". |
successThreshold |
integer | NA |
It indicates the number of successful responses after which an unhealthy SCP can be marked as healthy. Health API call to given SCP shall succeed consecutively to these many attempts before it is marked as "Available" from "Unavailable". |
Dependency: It is mandatory to configure peerconfiguration
with
healthApiPath
if peermonitoringconfiguration
is
enabled. Enable sbiRoutingConfiguration
in
RoutesConfig
before enabling Peer Monitoring Configuration.
Example:
curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/{serviceName}/{instanceId}/peermonitoringconfiguration" -H "Content-Type: application/json" -d @header.json
sample header.json:-
{
"enabled":true,
"timeout":1000,
"frequency":2000,
"failureThreshold":3,
"successThreshold":3
}
5.2.7 Configurations to Enable or Disable User-Agent Header
To enable the feature, REST API needs to be invoked and the
enabled
flag needs to be updated to true
.
URI:
/{nfType}/nf-common-component/v1/{serviceName}/useragentheader
Method: GET, PUT, PATCH
Content-Type: application/json
Request or Response Body Parameters
Table 5-14 Request or Response Body Parameters
Parameter | Description | Details |
---|---|---|
enabled |
This is a mandatory parameter. This parameter specifies whether the feature is enabled or disabled. |
Data Type: Boolean Range: true or false Example Value: false |
nfType |
This is a mandatory parameter. This parameter holds the |
Data Type: String Range: NA Example Value: NSSF |
nfInstanceId |
This is a mandatory parameter. This parameter represents the UUID of the NSSF deployment that is used to generate the User-Agent Header. |
Data Type: String Range: NA Example Value: Valid NSSF Instance ID |
addFqdnToHeader |
This is a mandatory parameter. This parameter specifies if the User-Agent uses the
FQDN information under the module to append it when generating
the User-Agent Header. The Example Value is set to
|
Data Type: Boolean Range: true or false Example Value: false |
nfFqdn |
This is an optional parameter. This is an optional parameter and can be present or
not, if operators want to include the FQDN string configured
under this section then the parameter
|
Data Type: String Range: NA Example Value: "nssf.oracle.com" |
overwriteHeader |
This is a mandatory parameter. This parameter is used to govern if we want to
include the User-Agent Header generated at NSSF Egress Gateway
or forward the User-Agent received from service request. Set its
value as Note: When User-Agent Header is enabled but the header
information is missing, then it is picked from the OAuthClient
module. If the User-Agent Header is present in the request
towards AMF or NRF, then the value present in the header is
overwritten or forwarded based on the
|
Data Type: Boolean Range: true or false Example Value: false |
Example
{
"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.
Sample cURL to enable User-Agent Header:
curl --http2-prior-knowledge -X PUT \
http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/useragentheader \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"nfType": "NSSF",
"nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01",
"nfFqdn": "nssf.oracle.com",
"addFqdnToHeader": true,
"overwriteHeader": true
}' \
-v
{
"enabled": false,
"nfType": "NSSF",
"nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01",
"nfFqdn": "nssf.oracle.com",
"addFqdnToHeader": true,
"overwriteHeader": true
}
Sample cURL to disable User-Agent Header:
curl --http2-prior-knowledge -X PUT \
http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/useragentheader \
-H "Content-Type: application/json" \
-d '{
"enabled": false,
"nfType": "NSSF",
"nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01",
"nfFqdn": "nssf.oracle.com",
"addFqdnToHeader": true,
"overwriteHeader": true
}' \
-v