3 Configuring Service Communication Proxy using REST APIs

This section provides information for configuring Service Communication Proxy using REST APIs.

SCP provides the following two service interfaces:

  • Signaling Interface
    • Signaling interface is exposed by SCP data plane (that is, SCP Worker) and this interface will be used to receive all 5G signaling traffic.
  • Config Interface
    • Config interface is exposed by SCP control plane (that is, SCPC-Config) and this interface is used to receive all SCP configuration traffic.

SCP Signaling Service

  • FQDN
    • Consumer NFs may use SCP Signaling service's FQDN to send the 5G signaling traffic to SCP for routing.
    • K8S service FQDN will be in the form as below:
      • fqdn = scp-worker.<namespace>.<domain> where, namespace is K8S namespace as provided during helm installation, and domain is as provided in helm chart (values.yaml) while installation.
      • If user NFs are deployed outside of K8S cluster, then operator needs to make sure that this fqdn is resolvable by consumer NFs.
      • Operator can specify the public or K8s-cluster fqdn of SCP in helm chart (values.yaml, scpInfo.fqdn" = <releaseName>-scp-worker.<Namespace>.<domain>) during installation.
  • IP Address
    • Consumer NFs may use SCP Signaling service's IP Address to send the 5G signaling traffic to SCP for routing.
    • <global.publicSignalingIP>, as provided in helm chart (values.yaml) while installation.

      Note:

      Only IPv4 is supported.
  • Port
    • Consumer NFs need port information along with fqdn/ip address to send the 5G signaling traffic to SCP for routing.
    • Port is <global.publicSignalingPort> as provided in helm chart (values.yaml) while SCP installation.

SCP Config Service

  • FQDN
    • Operator may use SCP Config service's FQDN to configure the SCP for routing.
    • K8s service FQDN will be of the form as below:
      • fqdn = scpc-config-svc.<namespace>.<domain> where, namespace is K8s namespace as provided during helm installation, and domain is as provided in helm chart (values.yaml) while installation.
      • Operator need to make sure that this fqdn is resolvable, if operating from outside of K8S cluster.
  • IP Address
    • Consumer NFs may use SCP Config service's IP Address to configure the SCP for routing.
    • <scpc-soothsayer.configService.publicConfigIP>, as provided in helm chart (values.yaml) while installation.
  • Port
    • Operator needs port information along with fqdn/ip address to configure the SCP for routing.
    • Port is 8081 that is a fixed port (not configurable).

Configuring CanaryRelease Options

The CanaryRelease inspects the version (API version) attribute of the NF Service profile published by the NFs (during NF registration/update) and can identify the release as a canary version if the version matches the configured value. There are two versions of API, Production version that is older version and Canary version that is the newer version of the service instance. The SCP distributes traffic between Production version and the Canary versions based on operator configuration.

User can configure CanaryRelease options. The supported operations are LIST, GET, and PATCH.

Following REST message samples provide the details about the operations and parameters for CanarayRelease Options. The default values of parameters related to CanaryRelease are mentioned in the following samples, however, user can modify these values. These parameters are applicable at POD level.

REST Message Samples

Request_Type: GET

URL: /soothsayer/v1/ canaryrelease/

Port: 8081

Message
[{  
"canaryReleaseFlag": false,  
"serviceName": "nudm-uecm"  
"apiFullVersion": "1.R15.1.0",  
"canaryTraffic": 5
}
...
]
Example:
curl --header 'Content-type: application/json' --header 'accept: application/ json' --request GET http://<SCP config service fqdn>:8081/soothsayer/v1/ canaryrelease/

[{

  "canaryReleaseFlag": false,

  "serviceName": "nudm-uecm",

  "apiFullVersion": "2.R16.1.0",

  "canaryTraffic": 5

}

...

]

Request_Type: LIST

Message

curl --header 'Content-type: application/json' --header 'accept: application/json' --request GET http://<SCP config service fqdn>:8081/soothsayer/v1/canaryrelease/
 
[{
  "canaryReleaseFlag": false,
  "serviceName": "nudm-uecm",
  "apiFullVersion": "2.R16.1.0",
  "canaryTraffic": 5
}
...
]
Request_Type: PATCH

Field Name and Type: canaryReleaseFlag <Boolean>

Description: Enable/Disable canary release support. Set the value of field canaryReleaseFlag and mention serviceName for which the configuration is needed in the resource path of below Curl Command.

Default Value: null

Message:canaryReleaseFlag UPDATE Command
curl --header "Content-Type: application/json" --request PATCH --data '{
      "canaryReleaseFlag": true
}' http://<SCP config service fqdn>:8081/soothsayer/v1/canaryrelease/<serviceName>
Request_Type: PATCH

Field Name and Type: apiFullVersion <String>

Description: The API full version of the canary service. Set the value of field apiFullVersion and mention serviceName for which the configuration is needed in the resource path of below Curl Command.

Default Value: null

Message: apiFullVersion UPDATE Command
curl --header "Content-Type: application/json" --request PATCH --data '{
        "apiFullVersion": "2.R16.1.0"
}' http://<SCP config service fqdn>:8081/soothsayer/v1/canaryrelease/<serviceName>
Request_Type: PATCH

Field Name and Type: canaryTraffic <Integer>

Description: The traffic that should be distributed to Canary release. Set the value of field canaryTraffic and mention serviceName for which the configuration is needed in the resource path of below Curl Command.

Default Value: null

Message: canaryTraffic UPDATE Command
curl --header "Content-Type: application/json" --request PATCH --data '{
       "canaryTraffic": 10
}' http://<SCP config service fqdn>:8081/soothsayer/v1/canaryrelease/<serviceName>

Configuring Routing Options

SCP acts as a proxy and forwards or routes any 5G ingress service request to the host (5G NF) present in the request's URI.

SCP supports:
  • Routing based on IMSI and MSISDN only.
    • Routing based on SUPI and GPSI is supported based on the start and end attributes only as published in NFProfile and routing based on the pattern attribute is not supported.
  • Only IPv4 IP family.
  • Every producer NFs are required to publish IpEndPoints for each NFServices in NFProfile while registering with NRF.
  • Routing Scope: Site
  • DB Sync Status: No Sync, Site Wide
    • Load Balancing and alternate routing is based on DB Sync Status within Site.
  • Load Balancing Algorithm: Priority only (and capacity).
    • Load Balancing across the equivalent NFs/NF Services is based on priority and capacity.

Types of routing options

The types of routing options are:
  • Pod Level Routing Options: Controls routing across the pods of selected NF.
  • Service Level Routing Options: Controls routing of selected NF services.

Parameters for Configuring Routing Options

Table 3-1 provide details of the parameters for configuring Routing Options.

Table 3-1 Parameters for RoutingOptions

Parameter Name Description Applicable to NF Service Level Default Values Value Range Applicable to Pod level within NF Values
Response Timeout When response timeout expires, then SCP initiates alternate rerouting to available alternate NF or Pod. Yes 1000 ms 100-10000 ms Yes 1 s

Supported values can be in 's' or 'ms', where 's' is seconds and 'ms' is milli seconds.

Total transaction lifetime
  • Time consumed in processing of all retries should not exceed the total transaction life time.
  • The total time allowed to forward a request, including initial and all subsequent routing attempts
Yes 6 seconds 100 - 240000 Yes 6 seconds
Max Routing attempts
  • Number of re-route attempt (retries) at NF/Pod level
  • Maximum number of times SCP is allowed to forward a request message. If the Max Routing attempts value is set to 1 for both Service and Pod level, the total transaction lifetime field value is not needed and If the Max Routing attempts value (including both service and pod level) is greater than 1, total transaction lifetime value is considered in rerouting processing.
Yes 3 1-5 Yes 2
Reroute on Response Code
  • SCP will attempt a reroute if the upstream server responds with any of these configured response code.
    • 5xx (includes gateway-error, connection-failure, refused-stream)
    • 500 (Internal Server Error)
    • 501 (Not Implemented)
    • gateway-error (502, 503, 504)
    • 404 (Not Found)
    • 408 (Request Timeout)
    • retriable-4xx (409)
    • 410 (Gone)
    • 307 (Temporary Redirect)
    • 308 (Permanent Redirect)
  • SCP attempts re-route the request in case of response timeout, connect-failure, refused-stream, GOAWAY frame received on any connection. These options (events) are not configurable and is supported by SCP.
5xx, which includes gateway-error (502, 503, 504.) connect-failure, refused-stream.

retriable-4xx (409)

-     -
Actions

Supported actions

  • Forward the ingress service request to selected egress producer NF
  • Send Response with configured result code and message.
  • Abandon or drop the ingress service request
Yes Forward  
Load Balancing Algorithm

Priority Only: Use priority as the first level criteria. Use capacity as second level criteria

Yes Priority Only   Yes Round Robin
Default Priority
  • Priority (relative to other NF Services of the same type) in the range of 0-65535, to be used for NF Service selection; lower values indicate a higher priority. If priority is present in either NF profile or nfServiceList parameters, those will have precedence over this value.
  • This default priority value shall be used for NF service instance selection only if priority is not published by producer NFs while registration with NRF in NF profile (including both NF profile and nfServiceList parameters).
Yes 1   No -
Default Capacity
  • Capacity information in the range of 0-65535, expressed as a weight relative to other NF service instances of the same type; if capacity is also present in either NF profile or nfServiceList parameters, those will have precedence over this value.
  • This default capacity value shall be used for NF service instance selection only if capacity is not published by producer NFs while registration with NRF in NF profile (including both NF profile and nfServiceList parameters ).
Yes 65535   No -
reverseProxySupport

Flag used to enable reverse proxy support for a service. In reverse proxy mode all the requests will have authority as SCP. SCP will forward those requests to respective Producers after making required authority changes in the requests (both initial and subsequent). Currently reverse proxy mode is supported only for some interfaces. If the flag is set to false then transparent proxy mode is enabled.

If reverseProxySupport flag is set to true then it will supersede the initialServiceRequest.routePolicy irrespective if it is set to 'Forward_Route' and create rules for initial messages in Load_balance way.

Yes false   No true, false
Exceptions Resource Exhausted Action Yes Abandon with no Answer   No
No Producer Response Action
  • Action taken when the routing of a request is abandoned due to an answer timeout or total transaction lifetime timeout.
  • Options:
Yes Send Answer with configured http status code (Default 503).   No
Connection Failure Action
  • Action taken when the routing of a request is abandoned when the last egress connection selection fails
  • Options:
Yes Send Answer with configured http status code (Default 503).   No

Host not found Action

Yes Send Answer with configured http status code (Default 503).   No
DB Lookup Error
  • Action taken when the routing a Session/Subscriber binding not found/look-up failure at OCSCP-SDS Service
  • Options:
Yes Send Answer with configured http status code (Default 500).   No  
reRouteOnResponseCodeList Reroute on Response Code List:

Supported values:

ALL_SERVER_ERROR("5xx"),
INTERNAL_SERVER_ERROR("500"),
NOT_IMPLEMENTED("501"),
GATEWAY_ERROR("gateway-error"),
CONNECT_FAILURE("connect-failure"),
REFUSED_STREAM("refused-stream"),

NOT_FOUND("404"),
REQUEST_TIMEOUT("408"),
RETRIABLE_4XX("retriable-4xx"),
GONE("410"),
TOO_MANY_REQUESTS("429"),

TEMPORARY_REDIRECT("307"),
PERMANENT_REDIRECT("308")
No -   Yes
[

    "ALL_SERVER_ERROR",
    "NOT_FOUND",
    "REQUEST_TIMEOUT",
    "RETRIABLE_4XX",
    "GONE",
    "TOO_MANY_REQUESTS",
    "TEMPORARY_REDIRECT",
    "PERMANENT_REDIRECT"
 ]
nfServiceLoadBasedCongestionControl NF Service Load Based Congestion Control

Rules are updated with new Load as soon as Notification with updated NF profile with updated load is received by SCP and then SCP check rules before routing each request.

If SCP is not able to do alternate routing then SCP will forward the message to the NF picked initially that is overloaded NF.

In throttling case, it would discard message if not possible to alternate route.

Yes

Default Value:

alternateRoutingOnsetThresholdPercent: 80 alternateRoutingAbatementThresholdPercent: 75 throttleOnsetThresholdPercent: 90 throttleAbatementThresholdPercent: 85 responseErrorCode: 503

  - -
deploymentModel

Deployment model of the NF/NF service.

  • Default, SITE_WIDE is supported for all NF services
  • REGIONAL deployment is supported only for CHF NF in addition to SITE_WIDE.
  • Limitation:
    • PRIMARY_SECONDARY_PAIR deployment is not supported
Yes SITE_WIDE   Yes SITE_WIDE
initialServiceRequest It takes routePolicy and reroutePolicy for initial service request.  
subsequentServiceRequest It takes routePolicy and reroutePolicy for subsequent service request.  

Table 3-2 deploymentCHF

Enumeration value CHF Deployment
REGIONAL Regional CHF deployment that is CHFs are deployed in Primary region and Secondary region. A region may consist of one or more locality.
SITE_WIDE Site specific CHF deployment that is CHF instances are deployed as per SCP's Site deployment.
PRIMARY_SECONDARY_PAIR Primary and Secondary CHF deployment using ChfServiceInfo. Primary and Secondary CHF instance info is published in ChfServiceInfo while registering with NRF.

Table 3-3 initialServiceRequest

routePolicy reroutePolicy
Load_Balance

Reroute options

  • RerouteDisabled
  • Options in SITE_WIDE deployment
    • RerouteWithinSite
    • RerouteAcrossMatedSite
    • RerouteAcrossNetwork
  • Options in REGIONAL deployment
    • RerouteWithinRegion
    • RerouteAcrossRegion
  • Options in PRIMARY_SECONDARY_PAIR deployment
    • RerouteWithinPairGroup
Forward_Route

Table 3-4 subsequentServiceRequest

routePolicy reroutePolicy
Load_Balance

Reroute options

  • RerouteDisabled
  • Options in SITE_WIDE deployment
    • RerouteWithinSite
    • RerouteAcrossMatedSite
    • RerouteAcrossNetwork
  • Options in REGIONAL deployment
    • RerouteWithinRegion
    • RerouteAcrossRegion
  • Options in PRIMARY_SECONDARY_PAIR deployment
    • RerouteWithinPairGroup
Forward_Route

Engineering Configurations

This table defines the min and max ranges for Response Timeout, Max Routing attempts and Total transaction lifetime parameters.

Table 3-5 Engineering Configurations

Name Type Attribute Description
Table_Name String Composite Primary Key Name of the table which will be using this record. Example. ROUTING_OPTIONS
Parameter String Composite Primary Key Name of the engineering configurable parameter. Example. responseTimeOut in ROUTING_OPTIONS
Value JSON   Value of the engineering configurable parameter.

Example:

[{"level": "GLOBAL","type": "RANGE","value": [{"minRange": "1","maxRange": "10","unit": "ms"},{"minRange": 1,"maxRange": 10,"unit": "s"}]}]

Configuring Operations for Routing Options

User can configure routing options by using the operations LIST, GET, PUT and PATCH.

The following sections provide sample details of the operations to configure routing options.

Request_Type: PUT

URL: /soothsayer/v1/routingoptions/

Port: 8081

Message

curl --header 'Content-type: application/json' --header 'accept: application/json' --request GET http://<Soothsayerfqdn>:8081/soothsayer/v1/routingoptions/<serviceName>
{
  "pod": {
    "maxRoutingAttempts": 1,
    "alternateRouting": false,
    "loadBalancingAlgorithm": "Round_Robin"
  },
  "srv": {
    "name": "nudm-uecm",
    "maxRoutingAttempts": 3,
    "actions": "Forward",
    "loadBalancingAlgorithm": "Priority_only",
    "nfServiceLoadBasedCongestionControl": {
      "alternateRoutingOnsetThresholdPercent": 80,
      "alternateRoutingAbatementThresholdPercent": 75,
      "throttleOnsetThresholdPercent": 90,
      "throttleAbatementThresholdPercent": 85,
      "responseErrorCode": 503
    },
    "defaultPriority": 1,
    "defaultCapacity": 65535,
    "reverseProxySupport": true,
    "initialServiceRequest": {
      "routePolicy": "Forward_Route",
      "reroutePolicy": "RerouteWithinSite"
    },
    "subsequentServiceRequest": {
      "routePolicy": "Forward_Route",
      "reroutePolicy": "RerouteWithinSite"
    }
  },
  "totalTransactionLifetime": "6s",
  "reRouteOnResponseCodeList": [
    "ALL_SERVER_ERROR",
    "NOT_FOUND"
  ],
  "responseTimeout": "1s",
  "exceptionErrorResponses": [
    {
      "name": "Resource_Exhausted",
      "action": "Send_Answer",
      "error_code": 503,
      "error_response": "Service Unavailable"
    },
    {
      "name": "No_Response",
      "action": "Send_Answer",
      "error_code": 503,
      "error_response": "Service Unavailable"
    },
    {
      "name": "Connect_Failure",
      "action": "Send_Answer",
      "error_code": 503,
      "error_response": "Service Unavailable"
    },
    {
      "name": "No_Host",
      "action": "Send_Answer",
      "error_code": 503,
      "error_response": "Service Unavailable"
    },
    {
      "name": "Db_LookUp_Error",
      "action": "Send_Answer",
      "error_code": 500,
      "error_response": "Session/Subscriber binding not found/look-up failure at OCSCP-SDS Service"
    }
  ],
  "deploymentModel": "SITE_WIDE",
  "name": "nudm-uecm"
}

Request_Type: PUT

URL: /soothsayer/v1/routingoptions/

Port: 8081

Message
curl -X PUT http://<Soothsayerfqdn>:8081/soothsayer/v1/routingoptions/namf-comm/ \
-H 'Content-Type: application/json' \
-d '{
  "pod": {
    "maxPendingResponses": 1000,
    "maxRoutingAttempts": 2,
    "alternateRouting": true,
    "loadBalancingAlgorithm": "Round_Robin"
  },
  "srv": {
    "name": "namf-comm",
    "maxPendingResponses": 1000,
    "maxRoutingAttempts": 3,
    "actions": "Forward",
    "loadBalancingAlgorithm": "Priority_only",
    "nfServiceLoadBasedCongestionControl": {
      "alternateRoutingOnsetThresholdPercent": 80,
      "alternateRoutingAbatementThresholdPercent": 75,
      "throttleOnsetThresholdPercent": 90,
      "throttleAbatementThresholdPercent": 85,
      "responseErrorCode": 503
    },
    "defaultPriority": 1,
    "defaultCapacity": 65535,
    "reverseProxySupport": true,
    "initialServiceRequest": {
      "routePolicy": "Forward_Route",
      "reroutePolicy": "RerouteWithinSite"
    },
    "subsequentServiceRequest": {
      "routePolicy": "Forward_Route",
      "reroutePolicy": "RerouteWithinSite"
    }
  },
  "totalTransactionLifetime": "6s",
  "reRouteOnResponseCodeList": [
    "ALL_SERVER_ERROR",
    "NOT_FOUND",
    "REQUEST_TIMEOUT",
    "RETRIABLE_4XX",
    "GONE",
    "TOO_MANY_REQUESTS",
    "TEMPORARY_REDIRECT",
    "PERMANENT_REDIRECT"
  ],
  "responseTimeout": "1s",
  "exceptionErrorResponses": [
    {
      "name": "Resource_Exhausted",
      "action": "Send_Answer",
      "error_code": 503,
      "error_response": "Service Unavailable"
    },
    {
      "name": "No_Response",
      "action": "Send_Answer",
      "error_code": 503,
      "error_response": "Service Unavailable"
    },
    {
      "name": "Connect_Failure",
      "action": "Send_Answer",
      "error_code": 503,
      "error_response": "Service Unavailable"
    },
    {
      "name": "No_Host",
      "action": "Send_Answer",
      "error_code": 503,
      "error_response": "Service Unavailable"
    },
    {
      "name": "Db_LookUp_Error",
      "action": "Send_Answer",
      "error_code": 500,
      "error_response": "Session/Subscriber binding not found/look-up failure at OCSCP-SDS Service"
    }
  ],
  "deploymentModel": "SITE_WIDE",
  "name": "namf-comm"
}'

Request_Type: PATCH

URL: /soothsayer/v1/routingoptions/

Port: 8081

Message
curl -X PATCH http://<Soothsayerfqdn>:8081/soothsayer/v1/routingoptions/<service name> \
			-H 'Content-Type: application/merge-patch+json' \
			-d '{
            "srv": {
  			 	 "name": "nudm-uecm",
  			 	 "reverseProxySupport": true
			  },
 			 "exceptionErrorResponses": [
    			{
    				  "name": "Db_LookUp_Error",
     				 "action": "Send_Answer",
    				  "error_code": 500,
     				 "error_response": "Session/Subscriber binding not found/look-up failure at OCSCP-SDS Service"
   				 }
			  ]
		}			
	}'

Configuring Mediation Options

Mediation service supports 5G HTTP2 message manipulation techniques. SCP allows routing of messages to mediation service based on specific parameters. These parameters may include NfType, NfService, MessageType, any standard HTTP2 header and/or Information Elements from JSON payload.

Configuration parameters

Table 3-6 Mediation Configuration

Filed Name Type Description
nfType enum NFType NFType for which mediation configuration is to be done
nfService String Service of NFType for which mediation configuration is to be done
messageType String Message of Service for which mediation configuration is to be done
match Match List of match blocks to be satisfied for the rule to be activated. The list of match blocks have OR semantics.

Minimum number of blocks = 1

Maximum number of blocks = 20
groupId String groupId for which mediation configuration is to be done. Mediation configuration for a specific group shall be applicable to the mediation requests/ responses received from the same group only. HTTP Mediation service consumer NFs which requires same mediation rules can be grouped together using this groupId.
Trigger Points triggerPoints List of trigger points to be enabled if matches. One or more of following:
"requestIngress", "requestEgress", "responseIngress", "responseEgress"

Match

Table 3-7 Match

Field Data Type Description Required
name String Unique name for the match block within this configuration. Yes
headers HeaderBodyMatch[]

List of header name and header value to match using MatchType comparison. All conditions inside a single header block have AND semantics.

Minimum number of elements/conditions = 1

Maximum number of elements/conditions = 5

anyOf

(either or both)

body HeaderBodyMatch[]

List of "body IE" JSON Pointer and value at that Pointer to match using MatchType comparison. All conditions inside a single body block have AND semantics.

Minimum number of elements/conditions = 1

Maximum number of elements/condition = 5

anyOf

(either or both)

HeaderBodyMatch

Table 3-8 HeaderBodyMatch

Field Data Type Description Required
name String

Name of the header or the bodyIE JSON Pointer.

Notes:List of predefined headers available at in this section. JSON Pointer must point to basic data types. Arrayed and Object values are not supported.

Yes
match_type MatchType One of the supported match operator. Yes
value String

Value of header or bodyIE to be matched.

value is only required if match_type is not range.

Conditional
start Integer Range start (inclusive). Only used when match_type is range. Conditional
end Integer Range end (inclusive). Only used when match_type is range. Conditional

MatchType

Table 3-9 MatchType

Field Data Type Description Required
exact String Matching is performed using exact comparison oneOf
prefix String Matching is performed using prefix comparison oneOf
regex String Matching is performed using ECMAScript Regular Expression comparison oneOf
range String Matching is performed using range comparison oneOf

Configuring Operations for Mediation Options

User can configure routing options by using the operations GET, PUT, PATCH and DELETE.

The following sections provide sample details of the operations to configure mediation options.

Request_Type: GET

URL: /soothsayer/v1/mediationconfiguration/

Message
[
  {
    "nfType": "AUSF",
    "nfService": "nausf-auth",
    "messageType": "ue-authentications",
    "match": [
      {
        "name": "invalid-suci",
        "body": [
          {
            "name": "/supiOrSuci",
            "value": ".*0-0-0.*",
            "match-type": "regex"
          }
        ]
      }
    ],
    "triggerPoints": [
      "requestIngress"
    ],
    "groupId": "scp",
    "id": "ausf@nausf-auth@ue-authentications"
  }
]

Request_Type: PUT

URL: /soothsayer/v1/mediationconfiguration/

Message
'{
    "nfType":"AUSF",
    "nfService":"nausf-auth",
    "messageType":"ue-authentications",
    "match":[
        {"name":"invalid-suci",
        "body":[
            {"name":"/supiOrSuci",
            "value":".*0-0-0.*",
            "match-type":"regex"}]}],
    "triggerPoints":["requestIngress"],"groupId":"scp"
    }'

Request_Type: PATCH

URL: /soothsayer/v1/mediationconfiguration/

Message
'{
    "triggerPoints":["requestIngress", "responseEgress"],
    "groupId":"scp"
    }'

Request_Type: DELETE

URL: /soothsayer/v1/mediationconfiguration/

Message
curl -X DELETE "http://10.178.254.214:32655/soothsayer/v1/mediationconfiguration/NRF?serviceName=nnrf-disc" -H  "accept: text/plain"

Configuring MessagePriority Options

Message Priority assignment/override is supported for below 5G NFs. User can configure routing options by using the operations LIST, GET, PUT and PATCH.

  • NRF

    Message Priority assignment/override is supported for below NF services:

    • Nnrf_NFManagement Service
      • All message supported except Notification Callback messages.
    • Nnrf_NFDiscovery Service
  • UDM

    Message Priority assignment/override is supported for below NF services:

    • Nudm_SubscriberDataManagement Service
    • Nudm_UEContextManagement Service
    • Nudm_UEAuthentication Service
    • Nudm_EventExposure Service
    • Nudm_ParameterProvision Service
  • PCF

    Message Priority assignment/override is supported for below NF services:

    • Npcf_AMPolicyControl Service
    • Npcf_SMPolicyControl Service
    • Npcf_PolicyAuthorization Service
    • Npcf_BDTPolicyControl Service
  • CHF
    Message Priority assignment/override is supported for below NF services:
    • Nchf_SpendingLimitControl
    • Nchf_ConvergedCharging
  • AUSF
    Message Priority assignment/override is supported for below NF services:
    • Nausf_UEAuthentication

"3gpp-Sbi-Message-Priority" header carries the message priority of 5G messages. The SCP includes/modifies the header based on the configuration parameters.

HTTP2 stream priorities are valid only per connection, it is not an E2E mechanism so to have it:

  • 3gpp-Sbi-Message-Priority header contains the HTTP/2 message priority value anything between 1 to 256. The default is 16.

Table 3-10 Configuring Parameters for MessagePriority Options

Operation Parameter Type Description REST Command
LIST - - -
curl --header 'Content-type: application/json' --header 'accept: application/json' --request GET 'http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority'
[
  {
    "requestResponse": "REQUEST",
    "nfServiceName": "nudm-uecm",
    "messageType": "amf-3gpp-access",
    "whenHeaderPresent": {
      "overrideFlag": false,
      "headerValue": ""
    },
    "whenHeaderNotPresent": {
      "overrideFlag": false,
      "headerValue": ""
    }
  },
  {
    "requestResponse": "RESPONSE",
    "nfServiceName": "nudm-uecm",
    "messageType": "amf-3gpp-access",
    "whenHeaderPresent": {
      "overrideFlag": false,
      "headerValue": ""
    },
    "whenHeaderNotPresent": {
      "overrideFlag": true,
      "headerValue": ""
    }
  },
  ...
]
GET - - -
curl --header 'Content-type: application/json' --header 'accept: application/json' --request GET 'http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority?nfServiceName=<serviceName>&messageType=amf-3gpp-access'
[
  {
    "requestResponse": "REQUEST",
    "nfServiceName": "nudm-uecm",
    "messageType": "amf-3gpp-access",
    "whenHeaderPresent": {
      "overrideFlag": false,
      "headerValue": ""
    },
    "whenHeaderNotPresent": {
      "overrideFlag": false,
      "headerValue": ""
    }
  },
  {
    "requestResponse": "RESPONSE",
    "nfServiceName": "nudm-uecm",
    "messageType": "amf-3gpp-access",
    "whenHeaderPresent": {
      "overrideFlag": false,
      "headerValue": ""
    },
    "whenHeaderNotPresent": {
      "overrideFlag": true,
      "headerValue": ""
    }
  }
]
PUT requestResponse Enum
  • If the value is RESPONSE - Egress Response
  • If the value is REQUEST - Ingress Request
Set the value of field requestResponse and masterIP and Configuration as REQUEST or RESPONSE in the curl command below requestResponse UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority \
 -H 'Content-Type: application/json' \
 -d '{
 "requestResponse" : "REQUEST",
 "nfServiceName" : "nudm-uecm",
 "messageType" : "amf-3gpp-access",
 "whenHeaderPresent" : {
   "overrideFlag" : false,
   "headerValue" : "10"
 },
 "whenHeaderNotPresent" : {
   "overrideFlag" : true,
   "headerValue" : "5"
 }
}'
nfServiceName String Name of the NF Service List of NF Services
nnrf-disc
nnrf-nfm
nnwdaf-analyticsinfo
nsmsf-sms
nnwdaf-eventssubscription
nudr-dr
nlmf-loc
nchf-spendinglimitcontrol
nchf_convergedcharging			 
nbsf-management
nnssf-nssaiavailability
n5g-eir-eic
nnssf-nsselection
nudm-ee
nudm-ueau
nudm-sdm
nudm-uecm
nudm-pp
nnef-pfdmanagement
namf-com
namf-evts
namf-mt
namf-location
nausf-sorprotection
nsmf-event-exposure
nsmf-pdusession
nausf-auth
nausf_ueauthentication
npcf-smpolicycontrol
npcf-am-policy-control
npcf-bdtpolicycontrol
npcf-policyauthorization
Set the value of field nfServiceName in the curl command below nfServiceName UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority \
 -H 'Content-Type: application/json' \
 -d '{
 "requestResponse" : "REQUEST",
 "nfServiceName" : "nudm-uecm",
 "messageType" : "amf-3gpp-access",
 "whenHeaderPresent" : {
   "overrideFlag" : false,
   "headerValue" : "10"
 },
 "whenHeaderNotPresent" : {
   "overrideFlag" : true,
   "headerValue" : "5"
 }
}'
messageType String Message type for given service name MessageType List Set the value of field messageType for the mentioned NF Service in the curl command below messageType UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority \
 -H 'Content-Type: application/json' \
 -d '{
 "requestResponse" : "REQUEST",
 "nfServiceName" : "nudm-uecm",
 "messageType" : "amf-3gpp-access",
 "whenHeaderPresent" : {
   "overrideFlag" : false,
   "headerValue" : "10"
 },
 "whenHeaderNotPresent" : {
   "overrideFlag" : true,
   "headerValue" : "5"
 }
}'
whenHeaderPresent.overrideFlag boolean Override Flag for the case when Header is Present Set the value of field overrideFlag section in the curl command below overrideFlag UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority \
 -H 'Content-Type: application/json' \
 -d '{
 "requestResponse" : "REQUEST",
 "nfServiceName" : "nudm-uecm",
 "messageType" : "amf-3gpp-access",
 "whenHeaderPresent" : {
   "overrideFlag" : false,
   "headerValue" : "10"
 },
 "whenHeaderNotPresent" : {
   "overrideFlag" : true,
   "headerValue" : "5"
 }
}'
whenHeaderPresent.headerValue String Value of the priority header for the corresponding flag for the case when Header is Present Set the value of field headerValue section in the curl command below headerValue UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority \
 -H 'Content-Type: application/json' \
 -d '{
 "requestResponse" : "REQUEST",
 "nfServiceName" : "nudm-uecm",
 "messageType" : "amf-3gpp-access",
 "whenHeaderPresent" : {
   "overrideFlag" : false,
   "headerValue" : "10"
 },
 "whenHeaderNotPresent" : {
   "overrideFlag" : true,
   "headerValue" : "5"
 }
}'
whenHeaderNotPresent.overrideFlag boolean Override Flag for the case for the case when Header is not Present Set the value of field overrideFlag section in the curl command below overrideFlag UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority \
 -H 'Content-Type: application/json' \
 -d '{
 "requestResponse" : "REQUEST",
 "nfServiceName" : "nudm-uecm",
 "messageType" : "amf-3gpp-access",
 "whenHeaderPresent" : {
   "overrideFlag" : false,
   "headerValue" : "10"
 },
 "whenHeaderNotPresent" : {
   "overrideFlag" : true,
   "headerValue" : "5"
 }
}'
whenHeaderNotPresent.headerValue String Value of the priority header for the corresponding flag for the case when Header is not Present Set the value of field headerValue section in the curl command below headerValue UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority \
 -H 'Content-Type: application/json' \
 -d '{
 "requestResponse" : "REQUEST",
 "nfServiceName" : "nudm-uecm",
 "messageType" : "amf-3gpp-access",
 "whenHeaderPresent" : {
   "overrideFlag" : false,
   "headerValue" : "10"
 },
 "whenHeaderNotPresent" : {
   "overrideFlag" : true,
   "headerValue" : "5"
 }
}'
PATCH String Modify message priority options for a particular service and message type.

curl -X PATCH \

 http://<Soothsayerfqdn>:8081/soothsayer/v1/messagepriority \

 -H 'Content-Type: application/merge-patch+json' \

 -d '{

 "requestResponse" : "REQUEST",

 "nfServiceName" : "nudm-uecm",

 "messageType" : "amf-3gpp-access",

 "whenHeaderPresent" : {

   "overrideFlag":true,

   "headerValue":"5"

 }

}

Configuring SystemOptions

These options are used to control system behavior per service-wide. The user can configure SystemOptions by using the operations GET and PUT.

Note:

Default systemOptions are provided during the installation of Service Communication Proxy through helm.

REST Message sample

Request_Type: GET and PUT

URL: http://<Soothsayerfqdn>:8081/soothsayer/v1/systemoptions
{
    "cbEnabled": false,
    "odEnabled": false,
    "trafficPolicy": {
		"connectionPool": {
			"http": {
				"http2MaxRequests": 1000,
				"idleTimeout": "3600s"
			},
			"tcp": {
				"connectTimeout": "250ms",
				"tcpKeepalive": {
					"probes": 9,
					"time": "180s",
					"interval": "60s"
				}
			}
		},
		"outlierDetection": {
			"consecutiveErrors": 5,
			"interval": "10s",
			"baseEjectionTime": "30s",
			"maxEjectionPercent": 100
		}
	}
}

Table 3-11 provides SystemOptions for the GET and PUT operations.

Table 3-11 Configuring Parameters for SystemOptions

Operation Parameter Value Description
GET - - Get System Options
PUT cbEnabled Boolean Provides information whether the Circuit-Breaking is enabled or not.

Default is false

odEnabled Boolean Provides information whether the Outlier-Detection is enabled or not.

Default is false

trafficPolicy.connectionPool.http.http2MaxRequests Integer Maximum number of requests to a backend. Default is 1024.
trafficPolicy.connectionPool.http.idleTimeout String The idle timeout for upstream connection pool connections. The idle timeout is defined as the period in which there are no active requests. If not set, there is no idle timeout. When the idle timeout is reached the connection will be closed. Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive. Default is 3600s.
trafficPolicy.connectionPool.tcp.connectTimeout String TCP Connection timeout. Valid time units are ns, us (or µs), ms, s. For example: 300ms.
  trafficPolicy.connectionPool.tcp.tcpKeepalive TcpKeepalive Contains TcpKeepalive information. If set, enable TCP Keepalives to upstream peer. All the parameters of tcpkeepAlive are needed if this information is being configured.
  trafficPolicy.connectionPool.tcp.tcpKeepalive.probes Integer

Maximum number of keepalive probes to send without response before deciding the connection is dead. For example: 9

Default is to use the OS level configuration (unless overridden, Linux defaults to 9.)

  trafficPolicy.connectionPool.tcp.tcpKeepalive.time String

The time duration a connection needs to be idle before keep-alive probes start being sent. Valid time units are ns, us (or µs), ms, s. For example: 180s

Default is to use the OS level configuration (unless overridden, Linux defaults to 7200s (i.e. 2 hours.)

  trafficPolicy.connectionPool.tcp.tcpKeepalive.interval String

The time duration between keep-alive probes. Valid time units are ns, us (or µs), ms, s. For example: 60s

Default is to use the OS level configuration (unless overridden, Linux defaults to 75s.)

outlierDetection.consecutiveErrors Integer Number of errors before a host is ejected from the connection pool. Defaults to 5. When the upstream host is accessed over HTTP, a 502, 503 or 504 return code qualifies as an error. When the upstream host is accessed over an opaque TCP connection, connect timeouts and connection error/failure events qualify as an error.
outlierDetection.interval String Time interval between ejection sweep analysis. format: 1h/1m/1s/1ms. Must be >=1ms. Default is 10s.
outlierDetection.baseEjectionTime String Minimum ejection duration. A host will remain ejected for a period equal to the product of minimum ejection duration and the number of times the host has been ejected. This technique allows the system to automatically increase the ejection period for unhealthy upstream servers. format: 1h/1m/1s/1ms. Must be >=1ms. Default is 30s.
outlierDetection.maxEjectionPercent Integer Maximum % of hosts in the load balancing pool for the upstream service that can be ejected. Defaults to 10%.

Configuring Circuit Breaking and Outlier Detection

Outlier detection in SCP tracks the status of each individual endpoint of the producer NFs/NF Services. Upstream producer endpoints that continually returns 5xx errors for service requests are ejected from the routing pool for a pre-defined period of time.

Outlier detection is a form of passive health checking of producer NFs. Outlier detection is per endpoint (of producer NF instance) and triggers when SCP receives consecutively 5xx error response and exceeds the configurable number of consecutive 5xx errors.

Circuit breaking is triggered on a per FQDN basis when its outstanding transactions exceeds a configurable value. When circuit breaking is activated, requests are alternate routed if possible or rejected.

Operator configuration:

  • Enable/Disable the circuit breaking on a per NF or FQDN basis.
  • Outstanding transactions threshold beyond which Circuit breaking shall be invoked on a per NF or FQDN basis.

Table 3-12 provides information about the configuring parameters for outlier detection.

Note:

Circuit Breaking and Outlier Detection are global or system wide options.

Table 3-12 Outlier Detection Parameters

Parameter Value Description Example
cbEnabled Boolean This tells whether Circuit-Breaking is enabled or not. Default: False

Set the value of field cbEnabled in the curl command below:

curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/systemoptions \
 -H 'Content-Type: application/json' \
 -d '{
    "cbEnabled": False,
    "odEnabled": False,
    "trafficPolicy": {
      "connectionPool": {
        "http": {
          "http2MaxRequests": 1000
        }
      },
      "outlierDetection": {
        "consecutiveErrors": 5,
        "interval": "10s",
        "baseEjectionTime": "30s",
        "maxEjectionPercent": 100
      }
    }
  }'
odEnabled Boolean This tells whether Outlier-Detection is enabled or not. Default: False

Set the value of field odEnabled in the curl command below:

curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/systemoptions \
 -H 'Content-Type: application/json' \
 -d '{
    "cbEnabled": False,
    "odEnabled": False,
    "trafficPolicy": {
      "connectionPool": {
        "http": {
          "http2MaxRequests": 1000
        }
      },
      "outlierDetection": {
        "consecutiveErrors": 5,
        "interval": "10s",
        "baseEjectionTime": "30s",
        "maxEjectionPercent": 100
      }
    }
  }'
       
trafficPolicy.connectionPool.http.http2MaxRequests Integer Maximum number of requests to a backend. Default 1024. Set the value of field http2MaxRequests under trafficPolicy.connectionPool.http in the curl command below:
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/systemoptions \
 -H 'Content-Type: application/json' \
 -d '{
    "cb_and_od_enabled": true,
    "trafficPolicy": {
      "connectionPool": {
        "http": {
          "http2MaxRequests": 1000
        }
      },
      "outlierDetection": {
        "consecutiveErrors": 5,
        "interval": "10s",
        "baseEjectionTime": "30s",
        "maxEjectionPercent": 100
      }
    }
  }'
outlierDetection.consecutiveErrors Integer 5G defined NF Type. For example, BSF, UDR, UDSF, etc. Set the value of ConsecutiveErrors field under outlierDetection in the curl command below consecutiveErrors UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/systemoptions \
 -H 'Content-Type: application/json' \
 -d '{
    "cb_and_od_enabled": true,
    "trafficPolicy": {
      "connectionPool": {
        "http": {
          "http2MaxRequests": 1000
        }
      },
      "outlierDetection": {
        "consecutiveErrors": 5,
        "interval": "10s",
        "baseEjectionTime": "30s",
        "maxEjectionPercent": 100
      }
    }
  }'
outlierDetection.interval String Time interval between ejection sweep analysis.

Format: 1h/1m/1s/1ms.

MUST BE >=1ms.

Default is 10s

Set the value of interval field under outlierDetection in the curl command below interval UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/systemoptions \
 -H 'Content-Type: application/json' \
 -d '{
   "cb_and_od_enabled": true,
    "trafficPolicy": {
      "connectionPool": {
        "http": {
          "http2MaxRequests": 1000
        }
      },
      "outlierDetection": {
        "consecutiveErrors": 5,
        "interval": "10s",
        "baseEjectionTime": "30s",
        "maxEjectionPercent": 100
      }
    }
  }'
outlierDetection.baseEjectionTime String Minimum ejection duration.

Format: 1h/1m/1s/1ms.

MUST BE >=1ms.

Default is 30s.

Set the value of field baseEjectionTime under outlierDetection in the curl command below baseEjectionTime UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/systemoptions \
 -H 'Content-Type: application/json' \
 -d '{
    "cb_and_od_enabled": true,
    "trafficPolicy": {
      "connectionPool": {
        "http": {
          "http2MaxRequests": 1000
        }
      },
      "outlierDetection": {
        "consecutiveErrors": 5,
        "interval": "10s",
        "baseEjectionTime": "30s",
        "maxEjectionPercent": 100
      }
    }
  }'
outlierDetection.maxEjectionPercent Integer Maximum percentage of hosts in the load balancing pool for the upstream service that can be ejected. Set the value of field maxEjectionPercent under outlierDetection in the curl command below maxEjectionPercent UPDATE Command
curl -X PUT \
 http://<Soothsayerfqdn>:8081/soothsayer/v1/systemoptions \
 -H 'Content-Type: application/json' \
 -d '{
    "cb_and_od_enabled": true,
    "trafficPolicy": {
      "connectionPool": {
        "http": {
          "http2MaxRequests": 1000
        }
      },
      "outlierDetection": {
        "consecutiveErrors": 5,
        "interval": "10s",
        "baseEjectionTime": "30s",
        "maxEjectionPercent": 100
      }
    }
  }'

Configuring NF Service Groups

SCP provides NF/Service Group Configuration, where the operator provides the primary and secondary CHF instance information to create the routing rules based on the CHF NF topology information provided by the NRF via NF register/reregister/change notifications.

Parameters for Configuring NF Service Groups

Table 3-13 Parameters for NF Service Groups

Resource Name Resource URI HTTP method or custom operation Description
servicegroups {apiRoot}/soothsayer/v1/servicegroups/{serviceName}

Ex: {apiRoot}/soothsayer/v1/servicegroups/nchf-spendinglimitcontrol

GET Returns the NF Service for a given serviceName.
servicegroups {apiRoot}/soothsayer/v1/servicegroups?nfType=value

Ex: {apiRoot}/soothsayer/v1/servicegroups?nfType=CHF

GET Returns a list of NF Services for a given NF Type.
servicegroups {apiRoot}/soothsayer/v1/servicegroups PUT Updates the NF Service.
servicegroups {apiRoot}/soothsayer/v1/servicegroups?nfType=value&serviceName=value

Ex: {apiRoot}/soothsayer/v1/servicegroups?nfType=CHF&serviceName=nchf-spendinglimitcontrol

PATCH Updates a single NF Service based on serviceName or Updates multiple NF Services based on NF Type.
servicegroups {apiRoot}/soothsayer/v1/servicegroups/{serviceName}

Ex: {apiRoot}/soothsayer/v1/servicegroups/nchf-spendinglimitcontrol

DELETE Deletes the given NFService with serviceName.
servicegroups {apiRoot}/soothsayer/v1/servicegroups?nfType=value

Ex: {apiRoot}/soothsayer/v1/servicegroups?nfType=CHF

DELETE Deletes all the services for a given NF Type.

Resource Definition

Table 3-14 Supported Parameters

Query Parameter Request Body HTTP method or custom operation Data type P Cardinality Response Codes Description
servicename n/a GET NFServiceGroup M 1 200 OK Upon success, a response body is returned containing the NFServiceGroup for requested Service Name.
String M 1 404 NOT FOUND The response body contains the message indicating that the there were no services found for the requested Service Name.
serviceName: Optional nfType: Optional Note: Either one of above parameters are mandatory. Both cannot be left empty. NFServiceGroupModifiableFields object with any of the attributes. Note: Data Model for this request body is provided in "Data Models" section. PATCH String M 1 200 OK

Upon success, following message is returned:

Updated NF Service with serviceName: nchf-spendinglimitcontrol

String M 1 403 FORBIDDEN primaryRegionLocalities can not be empty or its size cannot be zero.
String M 1 400 BAD REQUEST If both request parameters are missing then Bad Request error would be returned with following message: Please pass either serviceName or nfType.
serviceName n/a DELETE String M 1 200 OK

Upon success, following message is returned: Successfully deleted the Nf Service for ServiceName:

nchf - spendinglimitcontrol
nfType n/a GET List<NFServiceGroup> M 1 200 OK Upon success, a response body is returned containing a List of NFServiceGroup's for requested nfType.
String M 1 404 BAD REQUEST Required parameter 'nfType' is not present.
DELETE String M 1 200 OK

Upon success, following message is returned: Successfully deleted all Services for NFType : CHF.

n/a "NFServiceGroup" object with updated fields. Note: Sample data is provided in Example column and also the "Data Model" for this Request Body could be found in the "Data Models" section. PUT NFServiceGroup M 1 200 OK Upon success, a response body is returned containing the updated NFServiceGroup object.
String M 1 403 FORBIDDEN Not allowed to modify NfType or serviceName of NFServiceGroup.
String M 1 400 BAD REQUEST

If any of the mandatory parameters are missing in the Request Body, then BAD REQUEST error would be returned.

Note: Refer to Data Model for Mandatory parameters.

String M 1 400 BAD REQUEST

If "primaryRegionLocalities" attribute in Request Body is assigned with empty list, then a BAD REQUEST error would be returned as this value cannot be empty.

Response message: Primary Region Localities for a NF Service cannot be Null or empty.

Data Models for NF Service Groups

NFServiceGroup

Table 3-15 NFServiceGroup

Field Name Type P Description(With default Values)
nfType Enum M NRF, UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, 5GEIR, SEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP Note: This parameter cannot be modified.
serviceName String M Only CHF Services are supported currently: nchf-convergedcharging, nchf-spendinglimitcontrol Note: This parameter cannot be modified.
primaryRegionLocalities List<String> M This parameter can be modified but, empty values cannot be assigned to this parameter.
secondaryRegionLocalities List<String> O This is an optional parameter and can also be modified.

ReroutePolicy

Table 3-16 ReroutePolicy

Field Name Type P Description(With default Values)
rerouteOptions Enum M Possible values: RerouteDisabled, RerouteWithinRegion, RerouteAcrossRegion
NFServiceGroupModifiableFields

Table 3-17 NFServiceGroupModifiableFields

Field Name Type P Description(With default Values)
primaryRegionLocalities List<String> O This parameter can be modified but, empty values cannot be assigned to this parameter.
secondaryRegionLocalities List<String> O

Configuring Operations for NF Service Groups

User can configure routing options by using the operations GET, PUT and PATCH.

The following table provides sample details of the operations to configure routing options.

Table 3-18 NF Service Groups Operations

   
GET
curl -X GET "http://10.178.246.62:31108/soothsayer/v1/servicegroups/nchf-spendinglimitcontrol"

-H "accept: application/json"
PUT
curl -X PUT "http://10.178.246.62:31108/soothsayer/v1/servicegroups"

-H "accept: application/json"

-H "Content-Type: application/json"

-d "{ \"nfType\": \"CHF\", \"serviceName\": \"nchf-spendinglimitcontrol\", \"primaryRegionLocalities\": [ \"Loc7\", \"USEast\",\"Loc6\" ], \"secondaryRegionLocalities\": [ \"Loc8\", \"Loc9\" ], \"reroutePolicy\": { \"rerouteOptions\": \"RerouteWithinRegion\" } } }"
PATCH
curl -X PATCH "http://10.178.246.62:31108/soothsayer/v1/servicegroups?serviceName=nchf-spendinglimitcontrol"

-H "accept: application/json"

-H "Content-Type: application/merge-patch+json"

-d "{ \"primaryRegionLocalities\": [ \"Loc7\" ] }"

Configuring NF Topology Groups

This section describes the configuration at SCP, which allows SCP to learn the 5G topology from NRF and use it for creating the routing rules or stop learning the 5G topology info NRF and use the user configured/updated NF profiles (SCP will not delete any already learned 5G topology info from NRF, when it stops learning from NRF).

5G Topology source info

This is the configuration which will be used by SCP to determine the 5G topology source and SCP will learn and create the routing rules accordingly.
TopologySourceInfo

Table 3-19 TopologySourceInfo

NF Type (M) 5G topology source (M)
  • All 3gpp 5G defined NF types
    • As defined in TS29.510 section 6.1.6.3.3 String: NFType
  • Custom NF types
  • NRF (default)
    • learning from NRF
  • LOCAL

Enumeration: TopologySource

Table 3-20 Enumeration: TopologySource

Enumeration value Description

"NRF"

SCP 5G Topology info source is NRF.

"LOCAL"

SCP 5G Topology info source is user configured and not from NRF.

This status may result from a NF Service failure and may trigger restoration procedures (see clause 6.2 of 3GPP 23.527 [27]).
  • transition from NRF ==> LOCAL: stop learning from NRF and use available/modified/created info at SCP from now onwards.
  • transition from LOCAL ==> NRF: start learning from NRF and create the routing rules accordingly. In this scenario statically configured NF rules may get deleted (as there info is not available at NRF).

Table 3-21 Resources and Methods Overview

Resource name Resource URI HTTP method or custom operation Request Body, Query Parameters Response Status code, Body Description
topologysource {apiroot}/soothsayer/v1/topologysource PUT

Body

  • TopologySource
200 OK

Create/update the topology source info for all the NF types.

GET

Query Parameters

  • NFType

Read the topology source info for all the NF types.

NFtopologysource

(individual NF types)

{apiroot}/soothsayer/v1/ topologysource/{NFType} PUT

Body

  • TopologySource
200 OK Create/update the topology source info for a specific NF type.
GET

Query Parameters

  • NFType

Read the topology source info for a specific NF type.

5G NF topology Info

This is the information for configuring 5G NF Profiles for NF for which source has been set as 'Local'. User can modify the 5G NF Profile irrespective of whether they are learnt from NRF (i.e. source='NRF) or configured statically (i.e source='Local') once learning source is set to 'Local'. Setting source to Local will not delete already learnt profiles.

Table 3-22 Parameters for NF Topology Groups

Resource name Resources and Methods Overview HTTP method or custom operation Request Body, Query Parameters Response Status code, Body Description
nf-instances (Store) {apiRoot}/soothsayer/v1/nf-instances/ GET Query Parameters
  • NFType
  • ServiceName
  • NF instance Id
  • Max number of NF profiles
  • Max payload size
see below Query parameters section.
  • 200, OK, SearchResult, See below SearchResult section.
  • 400 Bad Request, ProblemDetails
  • 500 Internal server error, ProblemDetails
Read a collection of NF Instances.
{apiRoot}/soothsayer/v1/nf-instances/nfInstanceIds GET Query Parameters
  • NFType (M)
  • array(ServiceName) (O)
  • 200, OK, UriList, See below urList section.
    • The response body contains a "_links" object containing the URI of each NF in the SCP, or an empty object if there are no NFs to return in the query result (e.g., because there are no learned/configured NFs in the SCP, or because there are no matching NFs of the type specified in the "nf-type" query parameter).
  • 400 Bad Request, ProblemDetails
  • 500 Internal server error, ProblemDetails
Read a collection of NF Instance Id.
nf-instance (Document) {apiRoot}/soothsyaer/v1/nf-instances/{nfInstanceID} GET Query Parameters
  • n/a
Body
  • n/a
200 OK, NFProfile Read the profile of a given NF Instance.
PUT Body
  • NFProfile
200 OK, NFProfile 201 Created, NFProfile Register/configure in SCP a new NF Instance, or replace the profile of an existing NF Instance, by providing an NF profile.
PATCH Body
  • PatchDocument
    • It contains the list of changes to be made to the profile of the NF Instance, according to the JSON PATCH format specified in IETF RFC 6902.
  • 200 OK, NFProfile
  • 204, NO content
Modify the NF profile of an existing NF Instance.
DELETE Query
  • n/a
Body
  • n/a
  • 204, NO content
Deregister/delete from SCP a given NF Instance.

Query Parameters

Table 3-23 Query Parameters

Name Data Type P Cardinality Description Applicability
nf-type NFType M 1 This IE shall contain the NF type of the NF Service Producer being queried. NF type of the NF Instances whose status is requested to be monitored.
service-names array(ServiceName) O

1..N

If included, this IE contains an array of service names for which the SCP is queried to provide the list of NF profiles. The SCP returns the NF profiles that have at least one NF service matching the NF service names in this list. If not included, the NRF returns all the NF service names registered in the NF profile. Service name offered by the NF Instances whose status is requested to be monitored. This parameter is optional but if provided it returns with NF profile information.
nf-instance-id NfInstanceId O

0..1

Identity of the NF instance being queried. NF Instance ID of the NF Instance whose status is requested to be monitored.
limit integer O

0..1

Maximum number of NFProfiles to be returned in the response. Query-Params-Ext1
max-payload-size integer O

0..1

Maximum payload size (before compression, if any) of the response, expressed in kilo octets. When present, the NRF limits the number of NF profiles returned in the response such as to not exceed the maximum payload size indicated in the request. Default = 124. Maximum = 2000 (i.e. 2 Mo). Query-Params-Ext1

SearchResult

Table 3-24 SearchResult

Attribute name Data type P Cardinality Description
nfInstances array(NFProfile) M

1..N

It contains an array of NF Instance profiles, matching the search criteria indicated by the query parameters of the query request. An empty array means there is no NF instance that can match the search criteria.

uriList

Table 3-25 uriList

Attribute name Data type P Cardinality Description
_links map(LinksValueSchema) O

1..N

See clause 4.9.4 of 3GPP TS 29.501 for the description of the members

Configuring NFProfile

Following are the minimum information required by SCP for statically configuring NFProfile.

Note: All the below mentioned parameters are according to spec 3GPP TS 29.510 and any parameters other than below mentioned are not used in SCP.

Table 3-26 Configuring NFProfile

Attribute name Data type P Cardinality Description
nfInstanceId String M 1 Identity of the NF instance being queried.
nfType NFType M 1 This IE contains the NF type of the NF Service Producer being queried.
nfStatus NFStatus M 1 This contains the NF status of NF Service Producer.
nsiList array(String) O 0..N Only returned in case of NFType is SMF and if provided.
fqdn String O 0..1 FQDN of the Network Function.
interPlmnFqdn String O 0..1 If the NF needs to be discoverable by other NFs in a different PLMN, then an FQDN that is used for inter-PLMN routing.
ipv4Addresses array(String) O 0..N IPv4 address(es) of the Network Function.
priority Integer O 0..1 Priority (relative to other NFs of the same type) in the range of 0-65535, to be used for NF selection; lower values indicate a higher priority.
locality String O 0..1 Operator defined information about the location of the NF instance.
udmInfo UDMInfo O 0..1 Specific data for the UDM (ranges of SUPI, group ID…)
ausfInfo AUSFInfo O 0..1 Specific data for the AUSF (ranges of SUPI, group ID…)
amfInfo AMFInfo O 0..1 Specific data for the AMF (AMF Set ID, …)
smfInfo SMFInfo O 0..1 Specific data for the SMF (DNN's, …).
pcfInfo PCFInfo O 0..1 Specific data for the PCF
chfInfo CHFInfo O 0..1 Specific data for the CHF
nfServices array(NFService) O 0..N List of NF Service Instances. It includes the services produced by the NF that can be discovered by other NFs, if any.
servingScope String O 0..1

If not provided it is taken as "default". It must lie under servingScope of SCP or else the Profile would be rejected.

If servingScope of SCP is not provided, it must be left empty.

If servingScope of SCP is provided, then it must be set to any one of the configured servingScope.

Note: servingScope is SCP introduced parameter and used only for NRF profiles or Statically configured profiles.

Configuring UDMInfo

Following are the minimum information required by SCP for statically configuring UDMInfo.

Note: All the below mentioned parameters are according to spec 3GPP TS 29.510 and any parameters other than below mentioned are not used in SCP.

Table 3-27 Configuring UDMInfo

Attribute name Data type P Cardinality Description
supiRanges array(SupiRange) O 0..N List of ranges of SUPI's whose profile data is available in the UDM instance.
gpsiRanges arrray(IdentityRange) O 0..N List of ranges of GPSIs whose profile data is available in the UDM instance.

Configuring AUSFInfo

Following are the minimum information required by SCP for statically configuring AUSFInfo.

Note: All the below mentioned parameters are according to spec 3GPP TS 29.510 and any parameters other than below mentioned are not used in SCP.

Table 3-28 Configuring AUSFInfo

Attribute name Data type P Cardinality Description
supiRanges array(SupiRange) O 1..N List of ranges of SUPIs that can be served by the AUSF instance. If not provided, the AUSF can serve any SUPI.
routingIndicators array(String) O 0..N List of Routing Indicator information that allows to route network signalling with SUCI (see 23.003 [12]) to the AUSF instance. If not provided, the AUSF can serve any Routing Indicator.
GroupId String O 0..1 Identity of the AUSF group. If not provided, the AUSF instance does not pertain to any AUSF group.

Configuring AMFInfo

Following are the minimum information required by SCP for statically configuring AMFInfo.

Note: All the below mentioned parameters are according to spec 3GPP TS 29.510 and any parameters other than below mentioned are not used in SCP.

Table 3-29 Configuring AMFInfo

Attribute name Data type P Cardinality Description
guamiList array(Guami) M 1..N List of supported GUAMIs

Configuring SMFInfo

Following are the minimum information required by SCP for statically configuring SMFInfo.

Note: All the below mentioned parameters are according to spec 3GPP TS 29.510 and any parameters other than below mentioned are not used in SCP.

Table 3-30 Configuring SMFInfo

Attribute name Data type P Cardinality Description
sNssaiSmfInfoList array(SnssaiSmfInfoItem) M 1..N List of parameters supported by the SMF per S-NSSAI.
pgwFqdn String O 0..1 The FQDN of the PGW if the SMF is a combined SMF/PGW-C
accessType array(AccessType) O 0..N If included, this IE shall contain the access type (3GPP_ACCESS and/or NON_3GPP_ACCESS) supported by the SMF. If not included, it is assumed the both access types are supported.

Configuring PCFInfo

Following are the minimum information required by SCP for statically configuring PCFInfo.

Note: All the below mentioned parameters are according to spec 3GPP TS 29.510 and any parameters other than below mentioned are not used in SCP.

Table 3-31 Configuring PCFInfo

Attribute name Data type P Cardinality Description
supiRanges array(SupiRange) O 1..N List of ranges of SUPIs that can be served by the PCF instance. If not provided, the PCF can serve any SUPI.

Configuring CHFInfo

Following are the minimum information required by SCP for statically configuring CHFInfo.

Note: All the below mentioned parameters are according to spec 3GPP TS 29.510 and any parameters other than below mentioned are not used in SCP.

Table 3-32 Configuring CHFInfo

Attribute name Data type P Cardinality Description
supiRangeList array(SupiRange) O 1..N List of ranges of SUPIs that can be served by the CHF instance. If not provided, the CHF can serve any SUPI.
gpsiRangeList arrray(IdentityRange) O 0..N List of ranges of GPSI that can be served by the CHF instance. If not provided, the CHF can serve any GPSI.

Configuring NFService

Following are the minimum information required by SCP for statically configuring NFService.

Note: All the below mentioned parameters are according to spec 3GPP TS 29.510 and any parameters other than below mentioned are not used in SCP.

Table 3-33 Configuring NFService

Attribute name Data type P Cardinality Description
serviceInstanceId String M 1 Unique ID of the service instance within a given NF Instance
serviceName ServiceName M 1 Name of the service instance (e.g. "udm-sdm")
nfServiceStatus NFServiceStatus M 1 Status of the NF Service Instance
versions array(NFServiceVersion) M 1..N The API versions supported by the NF Service and if available, the corresponding retirement date of the NF Service.
scheme UriScheme M 1 URI scheme (e.g. "http", "https"). Note: Only HTTP is supported currently.
fqdn String O 0..1 FQDN of the NF Service Instance
ipEndPoints array(IpEndPoint) O 0..N IP address(es) and port information of the Network Function (including IPv4 and/or IPv6 address) where the service is listening for incoming service requests. Note: IPV4 is supported currently
apiPrefix String O 0..1 Optional path segment(s) used to construct the {apiRoot} variable of the different API URIs, as described in 3GPP 29.501 [5], clause 4.4.1.
priority Integer O 0..1 Priority (relative to other services of the same type) in the range of 0-65535, to be used for NF Service selection; lower values indicate a higher priority.
capacity Integer O 0..1 Static capacity information in the range of 0-65535, expressed as a weight relative to other services of the same type.
load Integer O 0..1 Dynamic load information, ranged from 0 to 100, indicates the current load percentage of the NF Service.