PRACK Support

Overview

The CSP supports four provisional responses:

100 Trying

180 Ringing

182 Queued Message

183 Session Progress

You can enable the CSP to support the Provisional Response ACK (PRACK) method to send non 100 provisional responses more reliably over User Datagram Protocol (UDP). This feature is disabled by default.

Pertinent Specification

RFC 3262

Description

The following are the details of this feature:

The Offer/Answer model for PRACK (section 5 of RFC 3262) is not supported.

The Support/Require mode for PRACK is at the stack level and not on a call-by-call basis.

The CSP now supports the Provisional Response method to send non 100 provisional over User Datagram Protocol (UDP)

There is not indication about the presence/absence of "100rel" tag in the "Supported/Require" header to the host in the RFS, PPL EI for 180Ringing or PPL EI for 183 Session progress for the following respectively:

Received INVITE

180 Ringing

183 Session Progress

The RFC 3262 states the following: "The UAS sending the response reliably should send provisional responses once every two and a half minutes." The SIP stack supports this standard for the 182 Queued message.

Enabling the CSP to Report Supported and Required Header Fields

The NPDI SIP Extensions (0x294A) TLV indicates to the host the option tags present in the Supported and Required headers in the inbound INVITE, 180 Ringing, and 183 Session Progress within the Request for Service or PPL Event Indication as follows:

180 Ringing and 183 Session Progress - reporting in PPL Event Indication

INVITE - reporting in Request for Service and possibly PPL Event Indication depending on the length

API Messages Used

The following messages are used by this feature. Refer to the API Reference for the formats.

Request for Service

PPL Event Indication

Configuring

Reporting SIP Supported and Required Option Tags

Prior to this feature the CSP already supported Timer option tag and with this feature CSP also supports 100rel (PRACK) tag.

The reporting is disabled by default. To enable the reporting, set bit 14 of the data part in the SIP Message Information Mask (0x027F) TLV.

PRACK Mode

The functionality in the CSP SIP stack will operate in three modes:

Disabled (Default)

Support

Require

The 100rel is a SIP option tag used to indicate support for reliability of provisional responses. The CSP supports 100rel in the following headers:

Supported

Required

You use Reliable Provisional Response Mode (0x011B) TLV with the VoIP Protocol Configure message. The configuration is at the stack level.

Refer to SIP Stack in PRACK Disabled Mode and SIP Stack in PRACK Required Mode for a detailed explanation of the behavior of the CSP SIP stack in support and require modes.

Querying

You can query the current configuration with the VoIP Protocol Query (0x00EF) message by including the 0x011B TLV.

CSP to Report Inbound PRACK

The receipt of PRACK is reported to the host using the PPL Event Indication message with the event type (0x002A). Reporting is enabled by default.

The host controls the reporting by toggling bit 5 of the data part of PPL Event Notification Mask (0x0282) TLV.

Call Flows

SIP Stack in PRACK Disabled Mode

 

The CSP SIP works in disabled mode - where it does not support PRACK. This mode accommodates backward compatibility.

In the call flow below, the CSP1 sends INVITE with "Require: 100rel" to CSP1 in disabled mode. CSP2 shall respond with 420 Bad Extension containing a header "Unsupported: 100reli."

SIP Stack in PRACK Supported Mode

The call flow below assumes that the reporting of option tags in Supported and Require header are enabled.

The following are the behaviors of CSP SIP stack (CSP2) in supported mode:

For an inbound call (INVITE) from UAC that supports non-100 provisional response being sent reliably (if there is a ‘Supported’ header with ‘100rel’ tag), the CSP accepts the call and sends non-100 provisional response(s), if any, reliably.

For an inbound call (INVITE) from UAC that requires non-100 provisional response to be sent reliably (if there is a ‘Require’ header with ‘100rel’ tag), the CSP accepts the call and sends all non-100 provisional response(s), if any, reliably.

 

 

 

 

 

For an inbound call (INVITE) from UAC that does not support non-100 provisional response being sent reliably (if there is neither ‘Supported’ nor ‘Require’ header with ‘100rel’ tag), then the CSP will accept the call but does not send non-100 provisional response(s), if any, reliably.

All outbound calls (INVITE) from the CSP will contain ‘Supported’ header with ‘100rel’ tag. Refer to CSP1 in first call flow above.

SIP Stack in PRACK Required Mode

This section provides examples of the CSP SIP stack behavior in require mode.

The CSP accepts the call and send all non-100 provisional response(s), if any, reliably:

Inbound call (INVITE) from UAC that supports non-100 provisional response sent reliably - if there is a "Supported" header with 100rel tag.

The CSP accepts the following call and sends all non-100 provisional response(s), if any, reliably:

Inbound call (INVITE) from UAC that requires non-100 provisional response to be sent reliably - if there is a "Require" header with 100rel tag.

The CSP accepts the following call but does not send non-100 provisional response(s), if any, reliably:

Inbound call (INVITE) from UAC that does not support non-100 provisional response being sent reliably - if there is neither "Supported" nor "Required" header with 1000rel tag.

All outbound calls (INVITE) from the CSP have "Required" header with "100rel" tag. See call flow above.

In case the CSP is configured for the PRACK method in require mode and if a call is made to a remote UA that does not support 100rel tag, the UA is expected to respond with 420 Bad Extension message.

If a PRACK request received by the CSP does not match any unacknowledged reliable provisional response, the CSP responds to the PRACK with a 481 response.

If a reliable provisional response is retransmitted for 64*T1 (T1=500ms) seconds without reception of a corresponding PRACK, the CSP rejects the original INVITE request with a 500 internal server response.