You are currently viewing SIP Reliable Provisional Response on CUBE and CUCM Configuration

SIP Reliable Provisional Response on CUBE and CUCM Configuration

This  blog describes how the Session Initiation Protocol (SIP) reliable provisional response feature works and how to configure it on Cisco Unified Border Element (CUBE) and Cisco Unified Communications Manager (CUCM).

SIP reliable provisional response was introduced in order to better integrate with a public switched telephone network (PSTN). The most common scenario is to establish the voice/audio path before completion of the call; therefore, the caller hears the announcement or music generated by the PSTN.

For example, in below topology, the IP phone calls a PSTN conference bridge or some toll free numbers, and the callee plays a prompt before it answers the call. If the CUCM initiates the call with a delay offer (INVITE does not contain Session Description Protocol (SDP)), the caller will not hear the prompt.

In other cases, the PSTN side generates a ringback tone. If media is not cut through before the call connects, the caller might not hear the ringback tone.

SIP reliable provisional response can be used to resolve the above issue without involving extra media resources (such as Media Transfer Protocol (MTP)), as these provisional responses and PRACK messages provide additional opportunities for offer/answer exchanges.

CUBE Configuration

By default, CUBE supports reliable response with this configuration:

voice service voip

sip

rel1xx supported 100rel

This means, as a User Agent Client (UAC), if it receives 180/183 messages with header Require: 100rel, it will respond with PRACK; however, as a User Agent Server (UAS), it will not send out 180/183 with the header Require: 100rel.

In order to force CUBE to send 18X with  Require: 100rel (so that it will wait for PRACK from UAC), here is the configuration example:

Global level:

voice service voip

sip

rel1xx require 100rel

Dial-peer level:

dial-peer voice 1000 voip

voice-class sip rel1xx require 100rel

Note: The dial-peer setting takes precedence over the global setting.

CUCM Configuration

By default, CUCM does not support reliable response. However, you can change the SIP trunk profile in order to configure it:

  1. In the CUCM Administration interface, go to Device > Device Setting > SIP Profile.
  2. Open the SIP profile used by a given SIP trunk.
  3. Choose Send PRACK for all 1xx Messagesfrom the SIP Rel1XX Options drop-down list.
  4. Reset the SIP trunk profile for the given SIP trunk.

Note: If the given SIP trunk uses the default SIP trunk profile (Standard SIP Profile), it is best to copy to a new profile and apply to the SIP trunk; otherwise, the default SIP trunk profile will affect all SIP trunks.
Note: Even if you make the above change, CUCM can support reliable responses only by sending PRACK as a UAC; however, for now, it cannot send 180/183 with the Require: 100rel header as a UAS.

Typical SIP Messages

If reliable response is configured in the incoming dial-peer on CUBE, a typical call will be similar to this:

CUBE receives INVITE with delay offer from CUCM.

INVITE sip:[email protected]:5060 SIP/2.0 Date: Thu, 04 Apr 2013 05:30:27 GMT Call-Info: ;method="NOTIFY;Event=telephone-event;Duration=500" Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY From: ;tag=169850~fb41edd8-7bc7-4ced-b8b0-9b10a31db5c4-19845894 Allow-Events: presence, kpml P-Asserted-Identity: Supported: 100rel,timer,resource-priority,replaces,X-cisco-srtp-fallback,Geolocation Min-SE: 7200 Cisco-Guid: 3228672256-0000065536-0000000027-2873836042 Remote-Party-ID: ;party=calling;screen=yes;privacy=off Content-Length: 0 User-Agent: Cisco-CUCM8.6 To: Contact: Expires: 180 Call-ID: [email protected] Via: SIP/2.0/TCP 10.66.75.171:5060;branch=z9hG4bK246d9521aba1b CSeq: 101 INVITE Session-Expires: 7200 Max-Forwards: 70 SIP/2.0 100 Trying Via: SIP/2.0/TCP 10.66.75.171:5060;branch=z9hG4bK246d9521aba1b From: ;tag=169850~fb41edd8-7bc7-4ced-b8b0-9b10a31db5c4-19845894 To: Date: Thu, 04 Apr 2013 05:50:29 GMT Call-ID: [email protected] CSeq: 101 INVITE Allow-Events: telephone-event Server: Cisco-SIPGateway/IOS-15.2.4.M2.8 Content-Length: 0

CUBE responds 183 with SDP which also contains Require: 100rel.

SIP/2.0 183 Session Progress Via: SIP/2.0/TCP 10.66.75.171:5060;branch=z9hG4bK246d9521aba1b From: <sip:[email protected]>;tag=169850~fb41edd8-7bc7-4ced-b8b0-9b10a31db5c4-19845894 To: <sip:[email protected]>;tag=42CF0134-1BC8 Date: Thu, 04 Apr 2013 05:50:29 GMT Call-ID: [email protected] CSeq: 101 INVITE Require: 100rel RSeq: 3344 Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER Allow-Events: telephone-event Contact: <sip:[email protected]:5060;transport=tcp> Supported: sdp-anat Supported: X-cisco-srtp-fallback Server: Cisco-SIPGateway/IOS-15.2.4.M2.8 Content-Type: application/sdp Content-Disposition: session; handling=required

Content-Length: 330

v=0 o=CiscoSystemsSIP-GW-UserAgent 4874 2535 IN IP4 10.66.75.246 s=SIP Call c=IN IP4 10.66.75.246 t=0 0 m=audio 16442 RTP/AVP 8 0 18 101 19 c=IN IP4 10.66.75.246 a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:18 G729/8000 a=fmtp:18 annexb=no a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=rtpmap:19 CN/8000

CUBE receives PRACK from CUCM with SDP

PRACK sip:[email protected]:5060;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 10.66.75.171:5060;branch=z9hG4bK246da4c33fa3e From: <sip:[email protected]>;tag=169850~fb41edd8-7bc7-4ced-b8b0-9b10a31db5c4-19845894 To: <sip:[email protected]>;tag=42CF0134-1BC8 Date: Thu, 04 Apr 2013 05:30:27 GMT Call-ID: [email protected] CSeq: 102 PRACK RAck: 3344 101 INVITE Allow-Events: presence, kpml Max-Forwards: 70 Content-Type: application/sdp Content-Length: 213 v=0 o=CiscoSystemsCCM-SIP 169850 1 IN IP4 10.66.75.171 s=SIP Call c=IN IP4 10.66.75.89 t=0 0 m=audio 26662 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=ptime:20 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15

CUBE acknowledges the PRACK.

SIP/2.0 200 OK Via: SIP/2.0/TCP 10.66.75.171:5060;branch=z9hG4bK246da4c33fa3e From: <sip:[email protected]>;tag=169850~fb41edd8-7bc7-4ced-b8b0-9b10a31db5c4-19845894 To: <sip:[email protected]>;tag=42CF0134-1BC8 Date: Thu, 04 Apr 2013 05:50:29 GMT Call-ID: [email protected] Server: Cisco-SIPGateway/IOS-15.2.4.M2.8 CSeq: 102 PRACK Content-Length: 0

The call is not answered until now; however, calling and called parties have exchanged SDP, and media path is established.

Troubleshooting

In order to troubleshoot this issue on CUBE, these debugs must be enabled:

debug voip ccapi inout debug ccsip message

Symptom 1: CUBE sends out 180/183 without the Require: 100rel header.
Verify that rel1xx require 100rel is configured under the appropriate dial-peer or voice service voip.

Symptom 2: CUBE continues to send 180/183 with the Require: 100rel header to CUCM.
This issue usually occurs when CUCM does not support reliable response. In order to resolve this issue, enable Rel1xx on CUCM.