3.1 SIP Signaling Architecture & Call Flows
Key Takeaways
Cisco Unified Communications Manager (CUCM) and Cisco Unified Border Element (CUBE) operate as Back-to-Back User Agents (B2BUA), terminating and re-originating discrete signaling dialogs and media sessions.
The core SIP session establishment follows RFC 3261: INVITE, provisional 1xx responses (100 Trying, 180 Ringing, 183 Session Progress), final 200 OK, ACK completing the three-way handshake, and BYE for session termination.
Mid-call features such as hold and resume leverage re-INVITE requests carrying Session Description Protocol (SDP) directionality attributes (a=sendonly, a=recvonly, and a=sendrecv).
Attended call transfers execute using the SIP REFER method with a Refer-To header embedding the Replaces parameter, tracked through NOTIFY messages before final BYE teardown.
3.1 SIP Signaling Architecture & Call Flows
The Session Initiation Protocol (SIP), standardized under RFC 3261, serves as the foundational signaling protocol across enterprise collaboration ecosystems. SIP is an application-layer, text-based control protocol modeled heavily on HTTP and SMTP. It is designed to create, modify, and terminate multimedia sessions including voice over IP (VoIP), video conferencing, and presence.
1. Architectural Entities in SIP
SIP defines several functional components that participate in session routing and state management:
User Agent Client (UAC) and User Agent Server (UAS)
- User Agent Client (UAC): The client application that initiates a SIP request (for example, generating an
INVITEwhen an IP phone goes off-hook and dials digits). - User Agent Server (UAS): The server application that contacts the user upon receiving a SIP request and returns a response on the user's behalf (such as generating
180 Ringingand200 OK). - In practice, every SIP endpoint—including Cisco IP Phones, Cisco Unified Border Element (CUBE), and Cisco Unified Communications Manager (CUCM)—is a User Agent (UA) capable of acting as both a UAC and a UAS depending on the transaction direction.
SIP Proxy Server
An intermediary entity that acts as both a server and a client for the purpose of making requests on behalf of other clients. Proxies route requests toward the destination UA:
- Stateless Proxy: Forwards messages independently without maintaining dialog state or transaction timers. Highly scalable, but cannot handle retransmissions or advanced call routing logic.
- Stateful Proxy: Maintains transaction state during the lifetime of a request and response transaction. It can perform parallel or sequential forking and handle transport layer protocol conversion.
- Critical distinction: A proxy does not terminate media streams and does not alter the message body (such as SDP).
SIP Registrar and Location Service
- Registrar: A server that accepts
REGISTERrequests and places the information it receives (the binding between an Address of Record [AoR] likesip:1001@collab.localand a physical Contact URI likesip:1001@10.1.1.50:5060) into a location database. - Location Service: Queried by proxy servers and redirect servers to determine the current network contact addresses for a destination user.
Back-to-Back User Agent (B2BUA)
A B2BUA is a logical entity that terminates a SIP dialog on one side (acting as a UAS) and initiates a completely independent SIP dialog on the other side (acting as a UAC).
- Both CUCM and CUBE function as B2BUAs.
- Because a B2BUA terminates both call legs, it maintains full call state, can rewrite SIP headers, can modify or transcode SDP parameters (e.g., converting codecs or bridging IP addresses), and can police media streams. This distinguishes enterprise call managers and session border controllers from simple SIP proxies.
2. Core SIP Request Methods
SIP defines a suite of client request methods that govern session setup, maintenance, and teardown:
| Method | RFC | Primary Function / Scope |
|---|---|---|
| INVITE | RFC 3261 | Initiates a call dialog and establishes a session with media description (SDP). |
| ACK | RFC 3261 | Confirms that the client has received a final response to an INVITE request (completes the 3-way handshake). |
| BYE | RFC 3261 | Terminates an active, established session from either participant. |
| CANCEL | RFC 3261 | Terminates a pending transaction before a final response (2xx–6xx) has been generated. |
| OPTIONS | RFC 3261 | Queries an endpoint or proxy regarding its capabilities; used extensively as a keepalive heartbeat on CUCM and CUBE SIP trunks. |
| REGISTER | RFC 3261 | Registers the Contact URI with a SIP registrar for Address of Record (AoR) resolution. |
| REFER | RFC 3515 | Requests that the recipient contact another party; central to call transfer flows. |
| PRACK | RFC 3262 | Provisional Response Acknowledgement; guarantees reliable delivery of 1xx provisional responses. |
| SUBSCRIBE | RFC 6665 | Requests current state and state updates from a remote event package (e.g., Message Waiting Indication [MWI] or presence). |
| NOTIFY | RFC 6665 | Informs a subscriber of state updates corresponding to an active subscription. |
| INFO | RFC 6086 | Carries mid-session application-layer signaling information (such as DTMF digits) along the signaling path without altering session state. |
| UPDATE | RFC 3311 | Modifies session parameters (such as media state or QoS preconditions) before the initial INVITE transaction has completed. |
3. SIP Response Code Hierarchy
SIP responses use a 3-digit integer format categorized into six classes:
1xx: Informational — Request received, continuing to process (e.g., 100 Trying, 180 Ringing, 183 Session Progress)
2xx: Success — Action was successfully received, understood, and accepted (e.g., 200 OK, 202 Accepted)
3xx: Redirection — Further action needed to complete the request (e.g., 301 Moved Permanently, 302 Moved Temporarily)
4xx: Client Error — Request contains bad syntax or cannot be fulfilled at this server (e.g., 401 Unauthorized, 404 Not Found)
5xx: Server Error — Server failed to fulfill an apparently valid request (e.g., 500 Server Internal Error, 503 Service Unavailable)
6xx: Global Failure— Request cannot be fulfilled at any server (e.g., 603 Decline, 604 Does Not Exist Anywhere)
Critical Status Codes Tested in Enterprise Troubleshooting
- 100 Trying: Hop-by-hop informational response sent immediately to quench retransmission timers (Timer A / Timer T1) while the downstream proxy or server processes digit analysis.
- 180 Ringing: Indicates the destination UA is alerting the user. The originating UA typically generates local ringback tone (ring-back tone generator).
- 183 Session Progress: Used when early media must be cut through prior to call answer. It carries an SDP body so the originating UA can play in-band ringback, network intercept messages, or carrier call progress tones.
- 401 Unauthorized: Sent by a registrar or UAS challenging the client for credentials via HTTP digest authentication (
WWW-Authenticateheader). - 403 Forbidden: The server understood the request but refuses to fulfill it. Typical causes are a registrar refusing a device it does not recognize, a peer rejecting an untrusted source (CUBE's toll-fraud check rejects untrusted INVITEs with cause 21, signaled as 403), or a deliberate policy block. Digits that match no pattern in the caller's CSS normally produce 404 Not Found (Q.931 cause 1) instead.
- 404 Not Found: The dialed user or URI does not exist within the server's directory or dial plan routing tables.
- 486 Busy Here: The called endpoint is currently engaged on another call and has no available line appearances or call-forwarding targets.
- 488 Not Acceptable Here: The session description (SDP) is unacceptable. This occurs during codec mismatches (e.g., one side offers G.729 only, but the remote endpoint supports only G.711u) or unsupported crypto suites in SRTP.
- 503 Service Unavailable: The server is temporarily unable to process the request due to resource exhaustion, Call Admission Control (CAC) bandwidth limits, or downstream gateway trunk failures.
4. SIP Header Structure & Dissection
A standard SIP INVITE message exhibits key headers critical for call tracking and troubleshooting:
INVITE sip:2002@10.1.1.20:5060 SIP/2.0
Via: SIP/2.0/UDP 10.1.1.10:5060;branch=z9hG4bK1a2b3c4d
From: "Alice Smith" <sip:1001@10.1.1.10>;tag=987654321
To: <sip:2002@10.1.1.20>
Call-ID: c0a8010a-00001234-56789abc@10.1.1.10
CSeq: 101 INVITE
Contact: <sip:1001@10.1.1.10:5060;transport=udp>
Max-Forwards: 70
Supported: 100rel, timer, replaces
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, OPTIONS, UPDATE, PRACK
Content-Type: application/sdp
Content-Length: 238
- Via: Identifies the network transport protocol, IP address, and port where the response must be sent. The
branchparameter uniquely identifies the transaction and always begins with the magic cookiez9hG4bKper RFC 3261. - From: Indicates the logical identity of the caller and includes a unique
tagparameter generated by the UAC. - To: Specifies the intended recipient. The UAS adds a
tagparameter to theToheader in non-100 responses, forming the complete SIP dialog identifier:(Call-ID, From-tag, To-tag). - Call-ID: A globally unique identifier for this specific call session, persistent across all transactions within the dialog.
- CSeq (Command Sequence): A traditional 32-bit unsigned integer counter and method name (e.g.,
101 INVITE). Retransmissions retain the same CSeq number; new transactions increment the number. - Contact: The direct IP address and port where subsequent mid-dialog requests (such as
re-INVITE,BYE,ACK) must be sent, bypassing intermediary proxies if permitted.
5. Mid-Call Signaling: Hold, Resume & Transfer
Call Hold & Resume (re-INVITE)
When a user places an active call on hold:
- The holding party issues a re-INVITE within the existing dialog (same
Call-ID, matching tags, incrementedCSeq). - The SDP sets the media direction to
a=sendonly(the holder may still send media but will not receive it) ora=inactive, or, in the legacy RFC 2543 style,c=0.0.0.0. In a CUCM call, CUCM itself manages hold and connects the held party to a Music on Hold (MOH) source. - The held party responds with
200 OKcontaining an SDP attribute ofa=recvonly. - When the user resumes the call, the holding party transmits another re-INVITE with
a=sendrecv. The held party responds with200 OKcontaininga=sendrecv, and bidirectional two-way conversation RTP resumes.
Consultation Call Transfer
An attended or consultative transfer involves three endpoints: the Transferee (Party A), the Transferor (Party B), and the Transfer Target (Party C):
- A and B are connected: Normal bidirectional RTP session.
- B puts A on hold: Party B sends re-INVITE with
a=sendonlyto Party A. - B calls C: Party B initiates a second, independent dialog to Party C via a new
INVITE. - B completes the transfer: Party B sends a
REFERrequest to Party A. TheREFERcontains aRefer-Toheader specifying Party C's URI and embeds aReplacesparameter identifying the B-to-C dialog:REFER sip:PartyA@10.1.1.50 SIP/2.0 Refer-To: <sip:PartyC@10.1.1.60?Replaces=b-c-call-id%3Bto-tag%3Dctag%3Bfrom-tag%3Dbtag> Referred-By: <sip:PartyB@10.1.1.55> - A accepts the transfer: Party A responds to B with
202 Acceptedand sends aNOTIFYwith bodySIP/2.0 100 Trying. - A invites C: Party A issues an
INVITEdirectly to Party C containing theReplacesheader. Party C matches the header to its active call with B and joins Party A. - Teardown: Party A sends a final
NOTIFYwith bodySIP/2.0 200 OKto Party B, and Party B sendsBYEto Party A to clear the original dialog. Party C, having accepted the INVITE with Replaces, sendsBYEto Party B to clear the replaced consultation dialog.
How does a Back-to-Back User Agent (B2BUA) such as Cisco Unified Communications Manager differ from a stateful SIP proxy during call processing?
A B2BUA terminates a separate dialog on each side (UAS to the caller, UAC to the callee), whereas a stateful proxy relays one dialog without rewriting SDP.
A B2BUA only operates statelessly at Layer 4, whereas a stateful proxy inspects application headers up to Layer 7 to enforce Call Admission Control on each call.
A B2BUA cannot rewrite SIP headers or negotiate codecs, whereas a stateful proxy actively negotiates codec transcoding through registered DSP farms.
A B2BUA operates exclusively on TCP port 5061 using TLS, whereas a stateful proxy operates exclusively on UDP port 5060 without encryption.
An engineer reviewing a SIP packet capture observes an incoming call failing immediately with a '488 Not Acceptable Here' status code returned by a destination Cisco IP Phone. What is the most probable cause of this failure?
The destination Cisco IP Phone is currently busy on an active call and has call waiting disabled.
The calling party did not provide valid digest authentication credentials in response to a 401 challenge.
The dialed directory number does not exist within the destination partition or line configuration.
The caller's SDP offer contained no codec or SRTP crypto suite that the destination phone could accept.
During an attended consultation call transfer between three SIP endpoints, which SIP method and accompanying header allow the transferor to instruct the transferee to connect to the transfer target while replacing the consultative call leg?
REFER method containing a Refer-To header with an embedded Replaces parameter.
INFO method containing an application/dtmf-relay payload and a Session-Expires header.
SUBSCRIBE method containing an Event: presence header and a Supported: timer header.
UPDATE method containing an a=inactive SDP attribute and a Target-Dialog header.
Sections you finish are checked off in the contents.