SIP Configurable Route Recursion

When the Oracle® Enterprise Session Border Controller routes SIP requests from a UAC to a UAS, it might determine that there are multiple routes to try based on a matching local policy. The Oracle® Enterprise Session Border Controller recurses through the list of routes in a specific order according to your configuration and the quality of the match. There are other scenarios when a UAS replies with a 3xx Redirect response to the Oracle® Enterprise Session Border Controller, the 3xx response can include multiple Contacts to which the request should be forwarded in a specific order. In both cases, the Oracle® Enterprise Session Border Controller needs to recurse through a list of targets.

When the Oracle® Enterprise Session Border Controller receives a non-successful (or non-6xx response) final response from the UAS, and there are multiple targets for the original request, the Oracle® Enterprise Session Border Controller will forward the request to the next target and wait for a response. While the process of forwarding the request to multiple targets as explained in the previous paragraph is called serial forking, and the process of forwarding the request to contacts received in redirect responses is called recursion, the term recursion is used for both processes in this notice.

Use the SIP Route Recursion feature when you want the Oracle® Enterprise Session Border Controller to forward a response to the UAC and stop recursing through the target list immediately after receiving the 3xx, 4xx, or 5xx response code that you configure. When this feature is disabled, the Oracle® Enterprise Session Border Controller only stops recursing when it receives a message with a 401 or 407 response code. Using this feature, you can configure a specific message or range of messages to stop recursing on when received. The Oracle® Enterprise Session Border Controller retains its default behavior to stop recursing on a 401 or 407 response code when SIP Route Recursion is configured on a SIP interface. The Oracle® Enterprise Session Border Controller will always stop recursing when it receives a global failure (6xx); this behavior is not configurable.

You can disable response recursion for either a SIP interface or for a SIP session agent, providing you with flexibility for various network architectures. For instance, a PSTN gateway might be the only hop to reach a given endpoint, whereas several session agents might need to be contacted if multiple devices map to a contacted address of record.

Example 1

A more detailed example is when a softswitch might return a list of contacts for multiple PSTN gateways in a Redirect message. If the PSTN target number contacted on redirection is busy, a 486 response will be sent to the Oracle® Enterprise Session Border Controller. Since the single target is located in the PSTN, a subsequent request through a different gateway will yield another 486 response. The Oracle® Enterprise Session Border Controller should be configured to return the 486 response to the UAC immediately. No other SIP requests should be sent to applicable targets/contacts that were enumerated in the redirect list. See the following example:

Example 2

The Oracle® Enterprise Session Border Controller might determine from a local policy lookup that several routes are applicable for forwarding a SIP message. The Oracle® Enterprise Session Border Controller will try each route in turn, but the SIP response recursion disable feature can be implemented to stop the route recursion when a configured responses message is received by the Oracle® Enterprise Session Border Controller. See the following example:

There are a few conditions on the parameter used to configure response recursion:

  • SIP Route Recursion is configurable for either the SIP interface or session agent.
  • 401 and 407 are preconfigured for all configured SIP interfaces. They are not configured for session agents.
  • The format is a comma-separated list of response codes or response code ranges: 404, 484-486.
  • Only response codes that fall within the 3xx, 4xx, and 5xx range may be specified.

SIP Route Recursion Configuration

You enable SIP route recursion either in the session agent or the SIP interface configuration.

Configuring a Session Agent for SIP Route Recursion

To configure SIP Route recursion for an existing session agent:

  1. In Superuser mode, type configure terminal and press Enter.
    ORACLE# configure terminal
  2. Type session-router and press Enter to access the session-router path.
    ORACLE(configure)# session-router
  3. Type session-agent and press Enter. The system prompt changes to let you know that you can begin configuring individual parameters.
    ORACLE(session-router)# session-agent
    ORACLE(session-agent)#
  4. Select the session agent where you want this feature.
    ORACLE(session-agent)# select
    <hostname>:
    1: asd          realm=      ip=1.0.0.0
    2: SIPSA        realm=      ip=10.10.102.1
    selection:2
    ORACLE(session-agent)#
  5. stop-recurse—Enter list of returned response codes that this session agent will watch for in order to stop recursion on the target’s or contact’s messages. This can be a comma-separated list or response code ranges.
    ORACLE(session-agent)# stop-recurse 404,484-486
  6. Save and activate your changes.

Configuring a SIP Interface for SIP Route Recursion

To configure SIP route recursion for an existing SIP interface:

  1. In Superuser mode, type configure terminal and press Enter.
    ORACLE# configure terminal
  2. Type session-router and press Enter to access the session-router path.
    ORACLE(configure)# session-router
  3. Type sip-interface and press Enter. The system prompt changes to let you know that you can begin configuring individual parameters.
    ORACLE(session-router)# sip-interface
    ORACLE(sip-interface)#
  4. Select the SIP interface to which you want to apply this feature.
    ORACLE(sip-interface)# select
    <realm-id>:
    1: Acme_Realm
    selection:1
    ORACLE(sip-interface)#
  5. stop-recurse—Enter a list of returned response codes that this SIP interface will watch for in order to stop recursion on the target’s or contact’s messages. This list can be a comma-separated list of response codes or response code ranges.
    ORACLE(sip-interface)# stop-recurse 404,484-486
  6. Save and activate your changes.