Go to primary content
Oracle® Communications Service Communication Proxy (SCP) Cloud Native User's Guide
Release 1.0
F12310-01
Go To Table Of Contents
Contents

Previous
Previous
Next
Next

Configuring Routing Options

SCP acts as a transparent proxy and forwards or routes any 5G ingress service request to the host (5G NF) present in request 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 will be 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.

Parameters for Configuring Routing Options

Table 3-2 provides details of the parameters for configuring Routing Options.

Table 3-2 Parameters for RoutingOptions

Parameter Name Description Applicable to NF Service Type Default Values 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 1 second Yes 1 second
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 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 attemptsvalue (including both service and pod level) is greater than 1, total transaction lifetime value is considered in rerouting processing.
Yes 3 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)
    • Complete list of supported HTTP status code is at HTTP Status Code and it's applicability for rerouting.
  • 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)
-
  • 5xx, which includes gateway-error (502, 503, 504.) connect-failure, refused-stream
  • retriable-4xx (409)
-
Alternate Routing

Alternate rerouting is Enabled or Disabled

  • Reroute to alternate Pod (within same NF)
  • Reroute to alternate producer NF
Yes Enabled Yes Enabled
Request Routing Scope Site Yes Site Yes Within NF
Status
  • No Sync
  • Site Wide
Yes No Sync Yes Synced within NF
Routing Policy
  • Forward Request
    • Forward Request(Use consumer's orig. destination unless available)
  • Load Balance (Consumer selected site first)
  • Load Balance (LB Across sites)
Yes Forward Proxy NO Load Balance (Non-configurable)
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 -

Configuring Operations for Routing Options

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

GUID-7E4BC2D9-B78B-4DFE-9708-2A59E276D552.htm provides sample details of the operations to configure routing options.

Table 3-3 Routing Options Operations

Operation REST Command

LIST

curl --header 'Content-type: application/json' --header 'accept: application/json' --request GET http://<Soothsayerfqdn>:8081/soothsayer/v1/routingoptions/
 
[{
  "pod": {
    "maxPendingResponses": 1000,
    "maxRoutingAttempts": 2,
    "alternateRouting": true,
    "loadBalancingAlgorithm": "Round_Robin"
  },
  "srv": {
    "name": "nudm-uecm",
    "maxPendingResponses": 1000,
    "maxRoutingAttempts": 3,
    "actions": "Forward",
    "alternateRouting": true,
    "scope": "Site",
    "dbSyncStatus": "No_Sync",
    "routingPolicy": "Forward_Proxy",
    "loadBalancingAlgorithm": "Priority_only",
    "nfServiceLoadBasedCongestionControl": {
      "alternateRoutingOnsetThresholdPercent": 80,
      "alternateRoutingAbatementThresholdPercent": 75,
      "throttleOnsetThresholdPercent": 90,
      "throttleOnsetThresholdPercent": 85,
      "responseErrorCode": 503
    },
    "defaultPriority": 1,
    "defaultCapacity": 65535
  },
  "totalTransactionLifetime": "6s",
  "reRouteOnResponseCodeList": [
    "ALL_SERVER_ERROR",
    "NOT_FOUND",
    "REQUEST_TIMEOUT",
    "RETRIABLE_4XX",
    "GONE",
    "TOO_MANY_REQUESTS",
    "TEMPORARY_REDIRECT",
    "PERMANENT_REDIRECT"
  ],
  "responseTimeout": "1s"
},
... ] 
GET
curl --header 'Content-type: application/json' --header 'accept: application/json' --request GET http://<Soothsayerfqdn>:8081/soothsayer/v1/routingoptions/<serviceName>
 
{
  "pod": {
    "maxPendingResponses": 1000,
    "maxRoutingAttempts": 2,
    "alternateRouting": true,
    "loadBalancingAlgorithm": "Round_Robin"
  },
  "srv": {
    "name": "nudm-uecm",
    "maxPendingResponses": 1000,
    "maxRoutingAttempts": 3,
    "actions": "Forward",
    "alternateRouting": true,
    "scope": "Site",
    "dbSyncStatus": "No_Sync",
    "routingPolicy": "Forward_Proxy",
    "loadBalancingAlgorithm": "Priority_only",
    "nfServiceLoadBasedCongestionControl": {
      "alternateRoutingOnsetThresholdPercent": 80,
      "alternateRoutingAbatementThresholdPercent": 75,
      "throttleOnsetThresholdPercent": 90,
      "throttleAbatementThresholdPercent": 85,
      "responseErrorCode": 503
    },
    "defaultPriority": 1,
    "defaultCapacity": 65535
  },
  "totalTransactionLifetime": "6s",
  "reRouteOnResponseCodeList": [
    "ALL_SERVER_ERROR",
    "NOT_FOUND",
    "REQUEST_TIMEOUT",
    "RETRIABLE_4XX",
    "GONE",
    "TOO_MANY_REQUESTS",
    "TEMPORARY_REDIRECT",
    "PERMANENT_REDIRECT"
  ],
  "responseTimeout": "1s"
}
PUT
curl --header "Content-Type: application/json" --request PUT --data '{
  "pod": {
    "maxPendingResponses": 1000,
    "maxRoutingAttempts": 2,
    "alternateRouting": true,
    "loadBalancingAlgorithm": "Round_Robin"
  },
  "srv": {
    "name": "nudm-uecm",
    "maxPendingResponses": 1000,
    "maxRoutingAttempts": 3,
    "actions": "Forward",
    "alternateRouting": true,
    "scope": "Site",
    "dbSyncStatus": "No_Sync",
    "routingPolicy": "Forward_Proxy",
    "loadBalancingAlgorithm": "Priority_only",
    "nfServiceLoadBasedCongestionControl": {
      "alternateRoutingOnsetThresholdPercent": 80,
      "alternateRoutingAbatementThresholdPercent": 75,
      "throttleOnsetThresholdPercent": 90,
      "throttleAbatementThresholdPercent": 85,
      "responseErrorCode": 503
    },
    "defaultPriority": 1,
    "defaultCapacity": 65535
  },
  "totalTransactionLifetime": "6s",
  "reRouteOnResponseCodeList": [
    "ALL_SERVER_ERROR",
    "NOT_FOUND",
    "REQUEST_TIMEOUT",
    "RETRIABLE_4XX",
    "GONE",
    "TOO_MANY_REQUESTS",
    "TEMPORARY_REDIRECT",
    "PERMANENT_REDIRECT"
  ],
  "responseTimeout": "1s"
}' http://<Soothsayerfqdn>:8081/soothsayer/v1/routingoptions/<serviceName>