SIP Feature and Provisioning Guide
Chapter 4 - SIP System Features
Downloads: This chapterpdf (PDF - 520.0KB) The complete bookPDF (PDF - 3.39MB) | Feedback

SIP System Features

Table Of Contents

SIP System Features

SIP Timer Values

Rules for Configuring the SIP Timers

Detailed Description of Timers

Computation of Default Timer Values A Through J from Timers T1 and T4

Calculation of Timer Retransmission Count

INVITE Retransmit Count

Non-INVITE Retransmit Count

Response Retransmit Count

SIP Session Timers

Session Timers Description

Using the EXPIRES Header

Limitations on Number of URLs, Parameters, and Headers (Release 5.0, Maintenance Release 1 and Later)

Differentiated Services Codepoint

Message Handling Based On Content-Length Header

Limitation On Transient Calls During Switchover

Automatic DNS Monitoring and Congestion Control

Automatic Fault Monitoring and Self-Healing


SIP System Features


Revised: October 30, 2012, OL-12397-18

This chapter describes features that apply to all SIP system operations. It includes the following topics:

SIP Timer Values

Limitations on Number of URLs, Parameters, and Headers (Release 5.0, Maintenance Release 1 and Later)

Differentiated Services Codepoint

Message Handling Based On Content-Length Header

Limitation On Transient Calls During Switchover

Automatic DNS Monitoring and Congestion Control

Automatic Fault Monitoring and Self-Healing

SIP Timer Values

This section describes the SIP timers supported by the BTS 10200.


Tip The provisioning information for SIP timers is provided in the "SIP Timer Values for SIP Subscribers" section (for SIP subscriber lines) and the "SIP Timer Values for SIP Trunks" section (for SIP trunks).



Tip For more information about these timers, or for common SIP term definitions from this section, see RFC 3261.


Rules for Configuring the SIP Timers

Use the following rules to configure the SIP timers in the BTS 10200. The rules are necessary due to mutual dependency between the timers. If any rules fail, the system computes the values of the timers.

TIMER-T2-SECS * 1000 > TIMER-T1-MILLI
TIMER-T2-SECS * 1000 > TIMER-G-MILLI
TIMER-B-SECS * 1000 > TIMER-A-MILLI
TIMER-F-SECS * 1000 > TIMER-E-MILLI
TIMER-D-SECS > 32
 
   

In addition to these rules, the timer values must be in the range of values specified in the "Detailed Description of Timers" section.

Detailed Description of Timers

The following list describers the timer parameters in the sip-timer-profile table.

TIMER-T1-MILLI (range 100-5000, default=500, in milliseconds)—T1 is an estimate of the round-trip time (RTT). The system uses this timer to calculate the default values of the transaction timers A through H and J in the following list. Many of those timers scale with T1; therefore, changing the T1 value changes the default values for timers A through H and J. The calculation is shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section.

TIMER-T2-SECS (range 1-10, default=4, in seconds)—The maximum allowed interval for non-INVITE requests. It is also used as the maximum retransmit interval for SIP INVITE responses.

TIMER-T4-SECS (range 1-10, default=5, in seconds)—The timer represents the maximum amount of time the network takes to clear messages between client and server transactions. The system uses this timer to calculate the default value of the transaction timer TIMER-I-SECS; therefore, changing the T4 value changes the default value for TIMER-I-SECS. The calculation is shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section.

TIMER-A-MILLI (range 100-5000, default=0, in milliseconds)—The UAC timer for INVITE request retransmit interval. For example, if the value is 500 ms, the INVITE request retransmissions occ2 seconds). Applicable to UDP only. If TIMER-A-MILLI is set to the default value of 0, the system automatically calculates a value for it, as shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section.

TIMER-B-SECS (range 1-3600, default=0, in seconds)—The UAC INVITE transaction timer limits the INVITE transaction timeout. For SIP TCP trunk connections, there are certain scenarios in which the BTS 10200 does not immediately detect a loss of connection to an IP address endpoint after transmitting an INVITE request. As a result, we recommend provisioning this timer to 6 seconds when you are configuring TCP trunks, so that advancing to the FQDN's next IP address occurs in a timely manner. If TIMER-B-SECS is set to the default value of 0, the system automatically calculates a value for it, as shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section.

TIMER-D-SECS (range 33-65, default=33, in seconds, set to 0 for TCP)—The UAC timer used for the wait time of response retransmissions. For INVITE, because an ACK could be lost, the UAS must wait at least 32 seconds (assuming the default transaction timer on the other end is 32 seconds) to receive any retransmissions of responses from the UAS and send an ACK. In a Cisco BTS 10200 implementation, this transaction clearing timer is applicable only for INVITE requests. For non-INVITE messages, the transaction is cleared immediately upon receipt of final response. If TIMER-D-SECS is set to the default value of 0, the system automatically calculates a value for it, as shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section.

TIMER-E-MILLI (range 100-5000, default=0, in milliseconds)—The UAC timer for a non-INVITE request retransmit interval. For example, if the value is 500 ms, the non-INVITE request retransmissions occur at intervals of 500 ms, 1s, 2s, 4s, 4s, 4s, 4s, 4s, 4s, and 4s (assuming TIMER-F-SECS defined below is 32 seconds and TIMER-T2-SECS defined above is 4 seconds). This parameter is applicable to UDP only. If TIMER-E-MILLI is set to the default value of 0, the system automatically calculates a value for it, as shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section.

TIMER-F-SECS (range 1-3600, default=0, in seconds)—The UAC non-INVITE transaction timer that limits the number of retransmissions for non-INVITE requests. If TIMER-F-SECS is set to the default value of 0, the system automatically calculates a value for it, as shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section.

TIMER-G-MILLI (range 100-5000, default=0, in milliseconds)—Specifies the INVITE response retransmit interval. The UAS timer implemented to achieve reliability of successful final responses to INVITE requests. It starts when you are using a reliable transport protocol such as TCP. Even though the transport protocol might be reliable up to the next hop, it is not guaranteed reliable end-to-end if there are several proxy servers along the path when the call is set up. This timer is started when a a final response is sent for an INVITE request. The timer stops when a matching ACK is received for the final response sent. For example, if a 200 OK is sent for INVITE, the UAS must receive the matching ACK for the 200 OK. If the TIMER-G-MILLI is 500 ms, the final response to the INVITE from the UAS retransmits at intervals of 500 ms, 1s, 2s, 4s, 8s, 16s, 32s (assuming that TIMER-H-SECS is 32 seconds). If TIMER-G-MILLI is set to the default value of 0, the system automatically calculates a value for it, as shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section.

TIMER-H-SECS (range 1-3600, default=0, in seconds)—The UAS timer responsible for clearing an incomplete INVITE UAS transaction. It also controls the number of INVITE final response retransmissions sent to UAC. The timer is started upon sending a final response for the INVITE request. It is the total wait time for ACK receipt from UAC. If TIMER-H-SECS is set to the default value of 0, the system automatically calculates a value for it, as shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section.

TIMER-I-SECS (range 1-10, default=0, in seconds)—This UAS timer is the wait time for ACK retransmits. It frees the server transaction resources and starts when the first ACK to the final response is received for INVITE requests. Upon receipt of an ACK for certain INVITE final responses (401, 415, 420, 422, 423, 480 and 484), the value of timer I is set to a fixed duration of 32 seconds. The responses result in resubmission of the original INVITE with modifications, and prevent the resources from prematurely freeing. A 481 (Call-Leg/Transaction does not exist) or a 408 (Request Timeout) response sent for the INVITE results in a much smaller fixed duration of 4 seconds for timer I. This ensures that CCB resources are promptly freed when the call is not set up, allowing reuse for other calls. For ACK to all other INVITE final responses, which are not typically followed by a re-attempt, the timer duration for this timer is set at TIMER-I-SECS.

When a BYE is subsequently sent or received on a call in progress, and timer I is running for that call, it is canceled and restarted for a smaller fixed duration of 4 seconds to reduce CCB hold time after call completion, and to optimize CCB resource usage.

If TIMER-I-SECS is set to the default value of 0, the system automatically calculates a value for it, as shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section

TIMER-J-SECS (range 1-3600, default=0, in seconds, set to 0 for TCP)—This UAS timer cleans up non-INVITE UAS transactions. A shorter nonconfigurable timer of four seconds is used for BYE and CANCEL. Additionally, when a BYE or CANCEL is sent or received on a call in progress, if timer J is running for any non-INVITE transaction associated with that call, it is canceled and restarted for a smaller fixed duration of 4 seconds to reduce CCB hold time after call completion, and to optimize CCB resource usage. If TIMER-J-SECS is set to the default value of 0, the system automatically calculates a value for it, as shown in the "Computation of Default Timer Values A Through J from Timers T1 and T4" section

INVITE-INCOMPLETE-TIMER-SECS (range 15-600, default=40, in seconds)—This UAC timer cleans up UAC INVITE transactions for which a provisional response less than 180 was received, but no ringing or final response was received within a reasonable period of time. This timer starts upon receipt of the first provisional response (>=100 and <180) for the INVITE message sent. Upon receipt of the final response or 18x response to INVITE request, this timer is canceled.

This timer is also started if a CANCEL is sent, to clean up the INVITE transaction in case of a final response (487), indicating that the request was canceled, is not received.

The process involving receipt of the 180 response is shown in Figure 4-1.

Figure 4-1 Invite Incomplete Timer Process with 180 Response

MIN-SE (range 100-1800, default=900, in seconds)—This is a session timer. It specifies the minimum session-expires allowed on the Cisco BTS 10200. Any INVITE request received with a session-expires lower than the MIN-SE is rejected with a 422 response that has a header Min-SE = MIN-SE.

SESSION-EXPIRES-DELTA-SECS (range 100-7200, default=1800, in seconds)—This is a session timer. It cleans up resources in case of an abnormal session end. The Cisco BTS 10200 sends the SESSION-EXPIRES-DELTA-SECS as the session-expires header in the initial INVITE. When a session is established, a session timer is started based on the negotiated value (it can be lower or equal to the SESSION-EXPIRES-DELTA-SECS). If the BTS 10200 is determined as the refresher, it starts a session timer for duration of half the negotiated time. A re-INVITE or update is sent out upon timer expiry to refresh the session. If the remote end is determined as the refresher, then a session timer is started for duration of (negotiated session-expires - 10 seconds). In this case, a BYE is sent to end the session if a session refresh (re-INVITE or update) is not received before the session timer expires.


Note When the SESSION-EXPIRES-DELTA-SECS timer expires, the BTS 10200 might send a Re-Invite (as opposed to an Update) with the previously sent SDP. If the BTS 10200 receives a 200 OK with the SDP changed from the previously received SDP, the BTS 10200 does not send this changed SDP to the origination.


Computation of Default Timer Values A Through J from Timers T1 and T4

If the following timer values are not explicitly provisioned, the system computes them automatically, based on the values of TIMER-T1-MILLI and TIMER-T4-SECS, as follows:

TIMER-A-MILLI = TIMER-T1-MILLI
TIMER-B-SECS = (64 * TIMER-T1-MILLI) / 1000
TIMER-E-MILLI = TIMER-T1-MILLI
TIMER-F-SECS = (64 * TIMER-T1-MILLI) / 1000
TIMER-G-MILLI = TIMER-T1-MILLI
TIMER-H-SECS = (64 * TIMER-T1-MILLI) / 1000
TIMER-I-SECS = TIMER-T4-SECS
TIMER-J-SECS = (64 * TIMER-T1-MILLI) / 1000
 
   

Calculation of Timer Retransmission Count

The retransmit count is defined as the number of times the same request or response is retransmitted after the message is sent once to the transport layer. The BTS 10200 computes this retransmit count based on RFC 3261 recommendations.

INVITE Retransmit Count

The invite retransmission process is shown in Figure 4-2. If there is no response for the initial INVITE request, then INIVTE requests are retransmitted as shown.

For example, if TIMER-A-MILLI is 500 ms and TIMER-B-SECS is 32 seconds, then there are six retransmissions after the first request, for a total of seven requests from the UAC. The retransmissions occur at intervals of 500 ms, 1s, 2s, 4s, 8s, 16s, and 32s.

Figure 4-2 Invite Retransmissions with No Response

Non-INVITE Retransmit Count

If there is no response for the initial non-INVITE request, INIVTE requests are retransmitted as shown.

For example, if TIMER-E-MILLI is 500 ms, TIMER-T2-SECS is 4 seconds and TIMER-F-SECS is 32 seconds, then non-INVITE retransmissions occur at intervals of 500 ms, 1s, 2s, 4s, 4s, 4s, 4s, 4s, 4s, 4s. This means that retransmissions occur with an exponentially increasing interval that caps at T2. In this particular scenario, there are 10 retransmissions which is a total of 11 requests from UAC.

Response Retransmit Count

If no ACK is received for the final response of the INVITE request, the responses are retransmitted. This process is shown in Figure 4-3.

Figure 4-3 Invite Server Transaction Timer Cancelled Upon Receipt of ACK

SIP Session Timers

This section explains how session timers work. The system uses session timers to periodically refresh SIP sessions during call processing or in-progress calls.

To provision session timers for subscribers, see Chapter 2 "SIP Subscribers." To provision session timers for trunks, see Chapter 3 "SIP Trunks."

Session Timers Description

Session timers allow for a periodic refresh of SIP sessions through a SIP re-INVITE or UPDATE request. The refresh allows the BTS 10200 SIP interface to determine if a SIP session is still active. If the session is inactive, possibly because the session did not end normally, the Cisco BTS 10200 sends a SIP BYE request and cleans up resources dedicated to the session. Stateful SIP proxies and the remote SIP endpoint handling the BYE request can clean up resources dedicated to this session as well.

The BTS 10200 support for the session timer follows the specifications described in the IETF document RFC 4028. Session durations are configured within a range of 30 minutes to 2 hours. The BTS 10200 does not allow for negotiating a session less than 15 minutes. This feature does not require the session timer capability on the remote SIP endpoint.

If the Call Agent switches over during an active call with a session timer active, the session timer is deactivated. In this scenario, if the Cisco BTS 10200 is the negotiated refresher of the session timer, a call release might occur on when the session timer expires.

If the session timer (SUB-SESSION-TIMER-ALLOWED) is enabled, the BTS 10200 (as UAC) adds, to the initial INVITE message, a timer token in the Supported header, as well as a Session-Expires header with the Refresher parameter set to Uac. Whenever the SIP call is sent from the BTS 10200, the BTS 10200 specifies itself to be the refresher. If a session timer is not supported on the remote end, the value sent in the Session-Expires header is set for the session duration. The BTS 10200 sends a periodic refresh request at half of the negotiated Session-Expires value.

If the session timer is enabled and an initial INVITE is received by the BTS 10200 with a timer token in the Supported header and a Session-Expires header, it sends a 200 class response with a Require header specifying timer, and a Session-Expires header and refresher parameter. The Session-Expires header contains a session duration and refresher value set to whatever was received in the initial INVITE. If refresher parameter is not received in the initial INVITE, the BTS 10200 sets it to Uas indicating that the BTS 10200 is the refresher. The BTS 10200 sends a periodic refresh request at half the negotiated session duration.

If the session timer is enabled and an initial INVITE is received by the BTS 10200 without a timer token in the Supported header or a Session-Expires header, a 200 class response is sent without a Require header with timer value, or a Session-Expires header. The BTS 10200 sends periodic refresh requests at half the negotiated session duration.

If the session timer is disabled and an initial INVITE is sent by the BTS 10200, no Supported header with timer token or a Session-Expires header is added, indicating to the remote SIP endpoint that the BTS 10200 does not support session timer.

When the feature is disabled and an initial INVITE is received by the BTS 10200, any session timer related headers are ignored. The 200 class response does not include a Require header with timer value or a Session-Expires header.

Configurable parameters in the sip-timer-profile table allow the user to select the desired session duration (SESSION-EXPIRES-DELTA-SECS) and the minimum tolerable session duration (MIN-SE) if negotiated down to a lower value by the remote SIP endpoint or proxy. If the parameters are not explicitly specified, the default session duration is 30 minutes, and the minimum tolerable session duration allowed is 15 minutes.

A session that is not refreshed at the end of the duration interval results in a call release and session clean-up.


Note When the SESSION-EXPIRES-DELTA-SECS timer expires, the BTS 10200 might send a Re-Invite (as opposed to an Update) with the previously sent SDP. If the BTS 10200 receives a 200 OK with the SDP changed from the previously received SDP, the BTS 10200 does not send this changed SDP to the origination.


Using the EXPIRES Header

The system can be provisioned to include an Expires header in all outbound INVITE messages and cancel a call if no response is received. This capability is provisioned through the SIA-DEFAULT-INVITE-EXPIRES-SECONDS parameter in the ca-config table. Provisioning a non-zero value (default is 0) causes the system to include an Expires header in all outbound INVITE messages. The system starts a timer for each outbound INVITE. The messaging continues as follows:

If a final response is received (any SIP response with a code greater than 199), the timer is cancelled.

If no final response is received, the system tears down the call. The system might also send a CANCEL message:

If no provisional response was received after the initial INVITE, the system tears down the call silently (no messages are sent to the terminating device).

If a provisional response was received after the initial INVITE, the system sends a CANCEL message.

Limitations on Number of URLs, Parameters, and Headers (Release 5.0, Maintenance Release 1 and Later)

The system imposes limits on the decoding of incoming SIP messages. These limits are applicable to both subscriber-related and trunk-related incoming SIP messages. These limitations are intended to protect the system from decoding extremely large messages, which in turn could overload the system and cause performance problems.


Note These limits are not provisionable. If you need to change any of these limits, contact your Cisco account team.


Table 4-1 lists the limits related to URL and ReqUri.

Table 4-1 Limits on URL and ReqUri 

Description
Limit

Maximum number of URLs (SIP+Tel+Unknown) in a SIP message

25

Maximum number of parameters in the ReqUri of a message

10

Maximum number of header parameters (parameters occurring after "?" character) in the Request-URI of a message

5

Maximum number of parameters in a SIP URL

10

Maximum number of header parameters (parameters occurring after "?" character) in a SIP URL

5

Maximum number of parameters in a Tel URL

5


Table 4-2 lists the maximum number of parameters allowed in each SIP message header.

Table 4-2 Maximum Number of Parameters Allowed in SIP Message Headers 

Header Name
Maximum Number of Parameters Allowed in Header

Contact

10

Via

10

Route

5

Record-Route

5

Diversion

10

Call-Info

5

Alert-Info

5

Error-Info

5

P-Asserted-Identity

5

Accept-Contact

5

To

5

From

5

Referred-By

5

Refer-To

5


Table 4-3 lists the maximum number of unknown Option tags of a specified kind in a SIP message.

Table 4-3 Maximum Number of Unknown Option Tags in SIP Message 

Message
Maximum Number of Unknown Option Tags Allowed

Supported

5

Unsupported

5

Require

5


Table 4-4 lists the maximum number of parameters allowed in each SIP message header.

Table 4-4 Maximum Number of Parameters Allowed in SIP Message Headers 

Header Name
Parameter Type
Maximum Number of Parameters Allowed in Header

Replaces

All parameters

5

Event

All parameters

5

Reason

All parameters

5

Accept

All parameters

5

Session-Expires

All parameters

5

Min-SE

All parameters

5

Warnings

All parameters

5

Accept-Language

Number of languages

5

Accept-Language

Language parameters

5

Accept-Encoding

All parameters

5

Authorization

All parameters

15

Retry-After

All parameters

5


Table 4-5 lists the maximum number of headers allowed in a SIP message.

Table 4-5 Maximum Number of Headers Allowed in a SIP Message 

Header Name
Maximum Number of Headers Allowed

Contact

5

Via

5

Route

5

Record-Route

5

Diversion

5

Call-Info

5

Alert-Info

5

Error-Info

5

P-Asserted-Identity

5

Contact

5

To

1

From

1

Call-ID

1

CSeq

1

Session-Expires

1

Min-SE

1

Referred-By

1

Refer-To

1

Replaces

1

Allow-Events

5

Event

1

Reason

5

Accept

5

Accept-Encoding

5

Authorization

1

Retry-After

1


Differentiated Services Codepoint

The SIP differentiated services codepoint (DSCP) feature enables you to configure the system such that SIP signaling traffic is sent at a desired priority over IP. This is important because SIP messages travel over the same network as the voice traffic. If this network is congested, the voice data might delay the SIP signaling packets, increasing call setup time. Raising the SIP packet priority in relation to other traffic reduces the delay.


Note We recommend using the default values. for the DSCP parameters. These values should be changed only after careful consideration, or if there is a specific need.



Caution If you change any parameters in the ca-config table, these changes do not take effect until the CA platform switches over or restarts.

The applicable SIP DSCP parameters are described in Appendix F, "Data Values for TOS, DSCP, and PHB Parameters," in the Cisco BTS 10200 Softswitch Call Processing Command Line Interface Reference.

Message Handling Based On Content-Length Header

This section describes the handling of SIP messages based on the Content-Length header.

For outbound TCP and UDP messages, the BTS 10200 complies with RFC 3261 by including a Content-Length header with the correct value for the body of the request.

For inbound UDP messages, the BTS 10200 complies with RFC 3261 by assuming the length in the Content-Length header is correct and discarding additional bytes (if any) in the content body. If the actual content length is shorter than the length indicated in the header, the BTS 10200 reads the content and attempts to complete the call with the content that was received. This handling of shortened content is not compliant with RFC 3261 (which requires messages with shortened content to be discarded with a 400 Bad Request response), but it is intended as a more tolerant treatment for inbound messages. Regardless of the content length, the BTS 10200 attempts to complete calls based on the inbound message. However, if the content itself is invalid, the BTS 10200 rejects the call.

For inbound TCP messages, the BTS 10200 requires the received length to be correct, because the TCP message contains is a continuous stream of bytes rather than discrete packets. This treatment is compliant with RFC 3261.

Limitation On Transient Calls During Switchover

If the active Call Agent experiences a problem and switches over to the standby side, stable calls are preserved. However, calls that are in a transient state (call setup is not complete) might be dropped or improperly set up. During a Call Agent switchover, the BTS 10200 cannot complete call setup for these transient calls. The BTS 10200 preserves the registration and contact data for the call. After the switchover is complete, the BTS 10200 can complete calls based on the existing registration and contact.

You can provision the BTS 10200 to set an Expires header for INVITEs sent on outbound calls. This provisioning is done through the SIA-DEFAULT-INVITE-EXPIRES-SECONDS parameter in the ca-config table. (The system default behavior is to omit the Expires header.) For details about this parameter, see the "Using the EXPIRES Header" section.

In addition, transient calls and inactive connected calls originated on the BTS 10200 are cleaned up through a periodic audit mechanism that runs once per hour. The frequency of this audit can be modified. However, changing this requires careful consideration to avoid adverse effects on call processing. Contact Cisco TAC if you have identified a need to change this frequency.

Automatic DNS Monitoring and Congestion Control

SIP depends heavily on name resolution to route messages. As a result, if response times from the DNS server become large, the SIP process might become congested and affect system performance. Therefore, the system automatically monitors DNS response times and controls the level of congestion.

The BTS 10200 periodically measures the latency of DNS responses. If a series of measurements exceeds a provisioned threshold, SIA-DNS-LATENCY-TOLERANCE-MILLISECONDS in the ca-config table, the SIP process in the BTS 10200 stops issuing DNS queries and might fail calls that require a DNS query. This prevents the SIP process from becoming congested. When the measured latency drops below this threshold, queries are permitted again. By default, the tolerance is set high at 400ms. A well-engineered DNS should return responses in less than 10 ms.

The monitoring mechanism requires that the BTS 10200 standard host name be configured in the DNS server. While this is standard practice, you should verify that it is configured in the DNS, because this is essential to the operation of the monitor.

Automatic Fault Monitoring and Self-Healing

The system performs self-checks and recovers automatically if any process goes down. After the system recovers, new calls can be set up, and calls that were established (answered) prior to the fault continue to be handled. However, any transactions that were pending at the time of the fault are not processed after the system recovers.