You are here: CSP Developer’s Guide: Internet Protocol > 5 Session-Initiation Protocol (SIP) Software > 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.