Reading and Understanding SIP in Xima CCaaS

How to obtain a SIP trace for a CCaaS call, read the messages and response codes in it, and work from a reported symptom to the part of the trace that explains it.

A SIP trace is the record of the signaling exchanged between the carrier, the UC platform, CCaaS, and the devices involved in a single call or registration. It is the most direct evidence available for a call that failed, a call that connected with no audio, or a SIP extension or phone that will not stay registered. This page covers where to obtain a trace, how to read the messages in it, what the common response codes mean, and how to go from a reported symptom to the part of the trace that explains it. No prior packet-level experience is assumed.


What a SIP Trace Is

SIP (Session Initiation Protocol) is the signaling protocol that sets up, modifies, and tears down a call. It carries the instructions about the call — who is calling, who is being called, what happened at each step, and where the audio should be sent. SIP does not carry the audio itself.

The audio travels separately over RTP (Real-Time Transport Protocol), on a different set of ports and often by a different network path. The addresses and ports RTP uses are negotiated inside the SIP messages using SDP (Session Description Protocol), a short block of text carried in the body of an INVITE and in the answer to it.

A SIP trace is a time-ordered record of those signaling messages as one system saw them. Reading one quickly answers three questions:

  • How far the call got — whether it was offered, alerted, answered, or rejected, and which side ended it
  • Who ended it, and why — the response code and the direction it travelled in name the party that refused, timed out, or hung up
  • Where the audio was told to go — the SDP in each direction gives the address and port each side published for RTP
📘

Clean Signaling, No Audio

Because signaling and media are separate, a call can look perfect in the trace and still be silent. Signaling that completes normally with no audio in either direction is one of the most useful findings a trace produces — it points the investigation at the media path rather than at CCaaS or the UC platform.

📘

CCAC Web Phone Calls

When an agent answers on the CCAC web phone, the leg between CCaaS and the agent's browser uses WebRTC rather than SIP: call setup travels over HTTPS/WSS and audio over WebRTC media. A SIP trace covers the carrier, UC platform, and CCaaS legs of the call. For audio issues on the web phone itself, see CCAC Troubleshooting.


Obtaining a SIP Trace

A CCaaS call usually crosses several systems — the carrier, the UC platform, CCaaS, and the agent's device — and each one can only trace the signaling it handled. Where a trace comes from depends on which leg of the call is in question.

SourceWhat It Shows
UC platformThe carrier leg and the leg between the UC platform and CCaaS. Many UC platforms (for example, NetSapiens) provide a SIP flow per call from Call History in their portal; others provide traces through their own support team
SBC or on-premises phone systemThe signaling as the customer's own edge device saw it, captured on that device or with a capture tool such as Wireshark — see SBC Guidelines
CCaaSThe signaling as CCaaS sent and received it. CCaaS-side traces are retrieved by Xima Support for specific calls named in a support ticket

To locate the call on any of these systems:

  1. Identify the call in Cradle to Grave by its time, the external number, and the agent or skill involved
  2. Note the call's date, time and time zone, the external and dialed numbers, the direction, and its Report Media ID
  3. Use those details to locate the same call in the UC platform's call history, or include them in the support ticket so Xima Support can retrieve the CCaaS-side trace
📘

Collect Call Details First

Collect the call details from the end customer before looking for a trace. The minimum set is the call time with the time zone, the caller and dialed numbers, the direction (inbound or outbound), and the affected agent, extension, or device. Without a specific call, a trace cannot be found, and "it happens sometimes" cannot be traced at all.

⚠️

Traces Are Not Retained Indefinitely

Retrieve or request the trace for a reported call as soon as the issue is reported, rather than at the end of an investigation, so the evidence still exists when it is needed.

✅

Collect Multiple Examples

A single call shows what happened once; three calls show whether the behavior is consistent, which device or route it follows, and whether it is tied to a time of day.


Anatomy of a SIP Message

Every message in a trace is either a request (a verb such as INVITE, REGISTER, ACK, BYE, or CANCEL) or a response (a three-digit code such as 180 Ringing or 486 Busy Here). Both are plain text, and both are built the same way: a first line, a set of headers, and sometimes a body.

Requests

RequestDescription
INVITEA call is being offered. Carries the calling and called party, the routing headers, and an SDP body describing the media the sender supports and where to send it
REGISTERA device or SIP extension is telling the platform where it can be reached. Registration traces are where calls-not-arriving and no-service issues are confirmed
ACKConfirms receipt of a 200 OK to an INVITE. The call is established only once the ACK is exchanged
BYEAn established call is being ended. The direction of the BYE names the side that hung up
CANCELA call that was still ringing is being withdrawn before it was answered, usually because the caller gave up or another device answered first
re-INVITEAn INVITE inside an existing call, used to change the session. Appears at hold, resume, transfer, and when media is re-pointed mid-call
REFERA transfer is being requested, naming the party the call should be sent to
OPTIONSA keepalive or reachability check between SIP endpoints. Useful on trunk issues; noise on most call traces

Headers Worth Reading

A real INVITE carries twenty or more headers. The following are the ones that answer questions. See SIP Header Fields for how CCaaS reads several of these for routing.

HeaderDescription
From and ToThe calling and called identities as presented. Caller ID complaints are read here first, against what the account is configured to send
Call-IDThe unique identifier for one call leg. Use it to keep legs apart when a call is forwarded, queued, or transferred and the trace shows several at once
ContactThe address and port the sender says it can be reached at directly. On a registration, this is where calls to that device or extension are sent
ViaThe path the request took, newest hop first, and the transport in use (UDP, TCP, or TLS). Responses follow this path back
CSeqA sequence number plus the method. Pairs a response with the request it answers, and exposes retransmissions, which repeat the same CSeq
User-Agent or ServerThe make, model, and firmware of the device, or the identity of the far-end system. Confirms which device actually sent a message when several share one extension
ExpiresOn a REGISTER, how long the registration is good for. Compare it against how often the device is actually re-registering
Reason or the response reason phraseFree text from the party that rejected or ended the call. On carrier-side failures this is often the only plain-language explanation available

The SDP Body

SDP is the block in the body of an INVITE or a 200 OK that answers the question "where should the audio be sent, and in what format". Four lines carry almost all of the diagnostic value.

SDP LineDescription
c= (connection)The IP address the sender wants RTP delivered to. A private address here on a device behind NAT, or a public address on a device that has no way of knowing one, is the single highest-value field in a no-audio investigation
m=audio (media)The port RTP will arrive on, and the list of codec payload types offered, in preference order
a=rtpmapNames each payload type — for example, PCMU or G722. Compare the offer against the answer to see which codec was actually agreed. See Voice Audio Codecs
a=sendrecv, a=sendonly, a=recvonly, a=inactiveThe media direction that was negotiated. A one-way audio complaint that shows sendonly or recvonly here was negotiated that way deliberately, which is a very different problem from media being lost in the network

A Normal Call, Message by Message

Recognizing what a healthy call looks like comes first — most diagnosis is spotting where a trace stops matching this shape. The example below is an inbound call from the PSTN, through the carrier and the UC platform, to a CCaaS SIP extension, answered and then ended by the caller.

StepMessageDescription
1Carrier sends INVITE to the UC platformThe call is offered to the DID, with the caller's SDP attached
2UC platform replies 100 TryingThe INVITE was received and is being processed. Stops the carrier retransmitting it
3UC platform sends INVITE to CCaaSThe next leg, sent to the Contact address the CCaaS SIP extension published when it registered
4CCaaS replies 180 RingingThe call has been accepted for alerting. Relayed back toward the caller as ringback
5CCaaS replies 200 OK with SDPAnswered. The SDP here is the answer to the offer, naming the codec chosen and where CCaaS wants RTP
6ACK in each directionEach leg is established. Signaling for call setup is finished
7RTP flowsAudio, on the addresses and ports from the SDP exchange. This is the conversation
8BYE, then 200 OKOne side hung up and the other confirmed. The direction of the BYE names who ended the call

The INVITE, Annotated

The following shows the shape of the INVITE at step 3, sent from the UC platform toward CCaaS. Addresses and numbers are examples.

INVITE sip:[email protected]:5060 SIP/2.0
Via: SIP/2.0/UDP 203.0.113.20:5060;branch=z9hG4bK6a1f2c
From: "WIRELESS CALLER" <sip:[email protected]>;tag=8841aa
To: <sip:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sip:[email protected]:5060>
User-Agent: UC-Platform
Content-Type: application/sdp

v=0
o=- 2890844526 2890844526 IN IP4 203.0.113.20
c=IN IP4 203.0.113.20
m=audio 24114 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=sendrecv

Reading it in order: the request line shows the call being sent to the extension's registered address; From carries the inbound caller ID the agent will see; the c= and m= lines say to send audio to 203.0.113.20 on port 24114; and a=sendrecv means two-way audio was offered. The 200 OK answers with its own c=, m=, and the single codec it accepted. Comparing those two SDP blocks is the whole of basic media diagnosis.

📘

Follow One Call-ID at a Time

A call that passes through an IVR, a skill queue, or a transfer produces more than two legs, each with its own Call-ID. Follow one Call-ID at a time — trying to read every leg at once is the most common reason a trace looks incomprehensible.


Common SIP Response Codes

Responses are grouped by their first digit: 1xx is progress, 2xx is success, 3xx is redirection, 4xx is a failure at the requesting side, 5xx is a server failure, and 6xx is a global refusal. The following codes appear in day-to-day troubleshooting.

CodeMeaningWhat to Do With It
100 TryingRequest received, being worked onNormal. Its absence, with the INVITE repeating, means the request is not reaching the far end
180 RingingThe destination is alertingNormal. Proof the call reached something prepared to ring
183 Session ProgressEarly media, such as carrier ringback or a network announcement, is being provided before answerNormal on outbound calls. If a caller reports hearing a recorded message instead of ringing, the explanation is in the 183 and the SDP with it
200 OKSuccess. Against an INVITE it means answered; against a REGISTER it means registeredNormal. On an INVITE, read the SDP it carries
401 / 407Authentication is being requestedNormal once, as a challenge the device then answers. A loop of challenge and retry means the credentials are wrong — for a CCaaS SIP extension, compare them against SIP Extensions
403 ForbiddenUnderstood and refusedCheck permissions and policy on the refusing side: dial permissions, blocked numbers, an unregistered or disabled account, or a carrier refusing the caller ID presented
404 Not FoundThe dialed destination does not exist where the request was sentCheck the digits as dialed, the dial plan or translation that acted on them, and whether the number is routed to the right place
408 Request TimeoutNo answer came back in timeTreat as a reachability problem rather than a call problem. Look at the network path, firewall rules, and whether the device or extension is really registered
480 Temporarily UnavailableThe destination exists but nothing is available to take the callUsually no device or SIP extension registered, or every device busy or in do not disturb. Check registration state first
486 Busy HereThe destination is busyExpected behavior. Becomes a finding only when the user says the line was free, which points at call appearance limits or a stale call on the device
487 Request TerminatedThe INVITE was cancelled before it was answeredNormal, and always paired with a CANCEL. Read the CANCEL to find out who gave up, and whether another device answered first
488 Not Acceptable HereThe media offered was refusedCompare the codec lists in the two SDP bodies. A codec set that does not overlap with what the far end offers produces this — see Voice Audio Codecs
503 Service UnavailableThe next hop refused or could not take the requestNote which side sent it. From the carrier on one destination only, it is a routing matter to escalate with examples rather than a site problem
603 DeclineThe call was refused outrightOften a user pressing decline, or a far-end policy such as call screening or spam blocking rejecting the caller ID
⚠️

Always Record the Direction

A response code describes what the sending party decided, not the underlying cause, and the party that sent it is as important as the code. A 503 sent from CCaaS toward the UC platform and a 503 sent from a carrier toward the UC platform are different problems with different owners. Always record the direction alongside the code.


Reading a Trace by Symptom

Start from what was reported and go to the part of the trace that answers it, rather than reading the flow top to bottom.

Reported SymptomWhat to Look At in the TraceWhat It Points To
One-way or no audioSignaling completes normally through ACK. Compare the c= and m= lines in both SDP bodies, and the negotiated direction attributeA private address or an unexpected port in the SDP means media was aimed somewhere it could not be delivered. Clean signaling with no media is a network path or NAT problem, not a platform one
Calls do not reach CCaaS or the agentWhether an INVITE was sent toward the CCaaS SIP extension or device at all, the address in its Contact, and whether a 180 came back. A 480 with no further leg is decisiveNo INVITE means routing or registration. An INVITE with no response means the destination was unreachable at its registered address
SIP extension or phone keeps losing registrationREGISTER frequency against the Expires value, whether the source address and port change between registrations, and any repeating 401 or 407 challengeRe-registering far more often than configured, or a port that moves each time, points at a short NAT timeout or SIP inspection on a firewall. A repeating challenge points at credentials
Calls drop at a consistent time, often around 30 secondsWhether the ACK was received, and which side sent the BYE and whenA missing or misdirected ACK, or a session timer expiring, both show here. A consistent drop interval is a signaling path problem rather than a quality problem
Outbound call to one specific number failsThe digits in the request line as the carrier received them, and the response code and reason phrase the carrier returnedAltered digits point at a dial plan or translation. A carrier 403, 404, or 503 on one destination only is a carrier routing matter to escalate with examples
Caller ID is wrong on outbound callsThe From header on the leg sent to the carrier, and any identity headers alongside itIf the correct number was sent, the name or number the far party saw was substituted downstream, which is a carrier or caller ID database matter rather than a configuration one
Long delay before the call connectsThe timestamps between the INVITE, the 100, and the first 180 or 183, and any INVITE retransmissions with the same CSeqRetransmissions mean messages are being lost on the path. A gap before the far end responds, with no retransmissions, is delay at the far end
Suspected SIP ALG on the customer networkContact and Via values that do not match where the packet actually came from, and SDP addresses or ports the device could not have written itselfSomething on the path is rewriting SIP in transit. SIP ALG should be disabled on the customer's router or firewall
✅

Compare a Working Call

Pull a trace for a call that worked as well as one that failed, from the same site and ideally the same device or extension. The difference between the two is usually visible in one or two fields, and it is far faster to find than reading a failed call on its own.


What a Trace Cannot Show

Knowing the limits keeps an investigation from stalling on evidence that was never going to be there.

  • It shows what one system received, not what the device sent. Anything on the path between the two can alter a message. A trace points at that; it does not prove it. Confirmation comes from the device configuration, or from a capture taken at the site.
  • It is signaling, not audio. Choppy, robotic, or distorted audio is caused by loss, jitter, and delay on the RTP path, and a trace of clean signaling will not explain any of it.
  • It covers one call. Intermittent faults need several traces across different times and devices before a pattern is safe to act on.
  • It does not describe the local network. Bandwidth limits, double NAT, aggressive firewall rules, and short NAT timeouts are inferred from their effects, never read directly.

Sharing a SIP Trace

The complete flow is preferred over a screenshot or a pasted excerpt, because it gives the reviewer every message for the call.

  1. Export or share the full trace from the system that captured it — a shared link from the UC platform's call history where available, or the capture file from an SBC or capture tool
  2. Add it to the support ticket with one line saying what that call is an example of and what the customer experienced on it
  3. Repeat for each example call, so each trace has its own description
⚠️

Treat Traces as Customer Data

A shared trace link or capture file exposes the full flow for that call, including the numbers involved. Share traces through the support ticket rather than in open channels.


Who Does What

Partner or AdministratorXima Support
Collects specific example calls from the end customer, with time, time zone, numbers, direction, and the affected agent or deviceReviews the CCaaS-side records and signaling for the specific calls and registrations identified
Retrieves the trace from the UC platform or the site's SBC and reads it against the symptomInterprets a trace with the partner or administrator when the finding is unclear, and confirms what CCaaS saw
Resolves findings that sit on the customer network, including SIP ALG, NAT, firewall rules, and bandwidthAdvises on next steps when the evidence points beyond the local network, including the UC platform or carrier
Shares the trace and findings in the ticketDoes not have access to customer premises equipment, and does not contact the end customer or their internet provider on the partner's behalf

When to Escalate to Xima Support

Escalate when the trace shows a failure on the CCaaS, UC platform, or carrier side, when the trace and the customer's description disagree, or when the local network has been ruled out and the symptom continues. Include the following when submitting a ticket:

  • The CCaaS hostname (<hostname>.xima.cloud), the UC platform in use, and the affected agents, extensions, or phone numbers
  • Two or three example calls with date, time, time zone, direction, the numbers involved, and the Report Media ID from Cradle to Grave, each with its trace where one is available
  • What the customer experienced on those calls, and what was expected instead
  • The response code and the direction it travelled in, if the call failed
  • What has already been read in the trace, and what was concluded from it
  • Phone make, model, and firmware, and whether the issue affects one device or every device at the site
  • Router or firewall make and model, and the state of SIP ALG if the symptom involves audio or registration
  • A trace for a working call from the same site, where one is available