SIP PRACK Interworking

When you configure your Oracle® Enterprise Session Border Controller with PRACK interworking for SIP, you enable it to interwork between endpoints that support RFC 3262, Reliability of Provisional Responses in the Session Initiation Protocol, and those that do not.

As its title indicates, RFC 3262 defines a reliable provisional response extension for SIP INVITEs, which is the 100rel extension tag. While some endpoints do not support the RFC, other SIP implementations require compliance with it. A session setup between two such endpoints fails. However, you can configure your Oracle® Enterprise Session Border Controller to supply the provisional response on behalf of endpoints that do not support it—and thereby enable sessions between those endpoints and the ones requiring RFC 3262 compliance.

You need to configure PRACK interworking for a SIP interface associated with the endpoints that need RFC 3262 support. To enabled the feature, you set the 100rel-interworking option. The Oracle® Enterprise Session Border Controller applies PRACK interworking for either the UAC or the UAS. TheOracle® Enterprise Session Border Controller checks to see whether or not it needs to apply PRACK interworking when an INVITE arrives at the ingress or egress SIP interface with the option enabled. First, it checks the Require header for the 100rel tag; if not found there, it checks the Supported header.

Since there is a slight difference in the application of this feature between the UAC and UAS, this section explains both.

Note:

If SDP is included in a PRACK request sent to a SIP interface where PRACK interworking is enabled, it will not be responded to, nor will any SDP be included in the locally-generated 200 OK to that PRACK.

UAC-Side PRACK Interworking

The Oracle® Enterprise Session Border Controller applies PRACK interworking on the UAC side when:

  • An incoming SIP INVITE contains the 100rel tag in a Require header
  • The ingress SIP interface is enabled with the 100rel-interworking option
  • The UAS fails to send reliable provisional responses

When it is to forward a non-reliable response to a UAC that requires RFC 3262 support, the Oracle® Enterprise Session Border Controller converts the non-reliable response to a reliable one by adding the 100rel tag to the Require header and adding an Rseq header to the response. Further, the Oracle® Enterprise Session Border Controller adds a Require header (complete with the100rel tag) if there is not one already in the response, and then also adds Rseq header.

Note that the Oracle® Enterprise Session Border Controller sets the value of the Rseq header as 1 for the first provisional response, and then increments it by 1 for each subsequent provisional response. It also adds the PRACK method to the Allow header when that header appears.

The Oracle® Enterprise Session Border Controller retransmits the converted reliable provisional response in accordance with RFC 3262, until it receives a PRACK request. For the initial timeout for retransmission, the Oracle® Enterprise Session Border Controller uses the value you set in the init-timer parameter in the global SIP configuration. It stops retransmitting when either it receives a transmission, or when the ingress SIP interface’s trans-expire timer elapses.

If it never receives a PRACK, the Oracle® Enterprise Session Border Controller does not generate an error response to the INVITE, relying instead on the downstream UAS to produce a final response.

The call flow for this application looks like this:

Call flow depicting UAC side PRACK interworking.

UAS-Side PRACK Interworking

The Oracle® Enterprise Session Border Controller applies PRACK interworking on the UAS side when:

  • An incoming SIP INVITE does not contain the 100rel tag in a Require or Supported header
  • The egress SIP interface is enabled with the 100rel-interworking option
  • The UAS does send reliable provisional responses

When the UAC does not support RFC 3262, the Oracle® Enterprise Session Border Controller generates a PRACK request to acknowledge the response. It also converts the response to non-reliable by removing the 100 rel tag from the Require header and removing the RSeq header from the response.

In the case of the UAS, the Oracle® Enterprise Session Border Controller matches the PRACK to a converted reliable provisional response using the PRACK’s RAck header. If it finds a matching response, the Oracle® Enterprise Session Border Controller generates a 200 OK to the PRACK. And if it finds no match, then it generates a 481 Call Leg/Transaction Does Not Exist response. The Oracle® Enterprise Session Border Controller generates a 400 Bad Request response if either the RAck is not in the PRACK request or it is not formatted properly.

The call flow for this application looks like this:

Call flow depicting UAS side PRACK interworking.

PRACK Interworking Configuration

You enable PRACK interworking for ingress and egress SIP interfaces. Be sure you know on what side, ingress or egress, you need this feature applied.

To configure PRACK interworking for a SIP interface:

  1. In Superuser mode, type configure terminal and press Enter.
    ORACLE# configure terminal
    ORACLE(configure)#
  2. Type session-router and press Enter.
    ORACLE(configure)# session-router
    ORACLE(session-router)#
  3. Type sip-interface and press Enter. If you are editing an existing configuration, select the one on which you want to enable this feature.
    ORACLE(session-router)# sip-interface
    ORACLE(sip-interface)#
  4. options—Set the options parameter by typing options, a Space, the option name 100rel-interworking with a plus sign in front of it, and then press Enter.
    ORACLE(sip-interface)# options +100rel-interworking

    If you type options and then the option value for either of these entries without the plus sign, you will overwrite any previously configured options. In order to append the new option to this configuration’s options list, you must prepend the new option with a plus sign as shown in the previous example.

  5. Save and activate your configuration.