Skip to content

SIP Traces, Pings and Messages

SIP Traces

SIP Tracing is a diagnostic tool for phone systems using SIP (Session Initiation Protocol) for interactions across trunks and between endpoints. Traces give detailed information about calls and call attempts while debugging and troubleshooting.

Uses of SIP protocol include call setup, maintenance, and tear-down, this tool is typically used only for call connection issues.

Call quality issues are often identified using other methods.

Here is an example describing a SIP trace:

sequenceDiagram autonumber Alice->>Bob: INVITE Bob-->>Alice: 100 Trying Bob-->>Alice: 180 Ringing Bob->>Alice: 200 OK (Connected) Alice->>Bob: ACK Note over Alice,Bob: The call is active Alice->>Bob: BYE Bob->>Alice: 200 OK

Alice and Bob represent the parties on the call. Alice sends an INVITE packet to Bob. Then Bob sends a 100 Trying (provides you the feedback that your request is getting processed by a SIP Application) message together with 180 Ringing (the Destination User Agent has received the INVITE message and is alerting the user of the call).

Further, 200 OK is sent which means the calls are connected.

The ACK message is sent from Alice to Bob confirming that the call has got connected.

sip trace

SIP Trace Captures

The ConnexCS system supports always-on SIP Trace capture.

We keep a record of every packet sent and received by your server over the last seven (7) days.

To view the SIP Trace of a call:

  1. Click a Call ID to view its SIP traces.
  2. Click SIP traces to view the SIP trace.

    alt text

  3. Toggle between Relative Time and Absolute Time for a specific time of day.

  4. Options to download as Text or an Image.

Known issues with SIP Traces

  • Missing SIP data: SIP traces aren't always guaranteed. SIP packets are carried by UDP, which may cause the traces to be lossy at times. You can expect this due to the nature of the architecture.
  • Missed call attempts: If using SIP authentication, because there are two requests, it's possible that they hit our database out of order. This may cause the logging page to only display the first call attempt.
  • Considered for reporting calls and don't impact the calls directly. They're both rare, typically observed in less than 1 in every 50,000 calls.
  • How to correlate a Reply to an Initial Request

The correlation of a Reply to an Initial Request can be done when the Invites have the same CSequence

sequenceDiagram autonumber Alice->>Bob: INVITE (cseq 123) Bob-->>Alice: 100 Trying Bob-->>Alice: 180 Ringing Bob->>Alice: 408 Ring Timeout (cseq 123 INVITE)

SIP Pings

Case 1: Normal SIP Ping

sequenceDiagram autonumber Alice->>Bob: INVITE (cseq 1) Bob-->>Alice: 100 Trying Bob-->>Alice: 180 Ringing Bob->>Alice: 200 OK (Connected) Alice->>Bob: ACK Note over Alice,Bob: The call is active Bob->>Alice: OPTIONS Alice->>Bob: 200 OK Note over Alice,Bob: The call has ended Alice->>Bob: BYE Bob->>Alice: 200 OK
In this case, Bob sends a message to Alice called OPTIONS and Alice sends back 200 OK. If 200 OK isn't sent, the call be get disconnected.

Case 2: Alice Disappears

sequenceDiagram autonumber Alice->>Bob: INVITE (cseq 1) Bob-->>Alice: 100 Trying Bob-->>Alice: 180 Ringing Bob->>Alice: 200 OK (Connected) Alice->>Bob: ACK Note over Alice,Bob: The call is active Bob->>Alice: OPTIONS Note over Alice,Bob: We did not get a reply, other side disappears Note over Alice,Bob: We will drop the call Bob->>Alice: BYE (No SIP Ping Reply)

In this case, the call is half-way connected and Alice doesn't reply to the message sent by Bob. Bob decides to drop the call.

If Alice is alive, then you may get a reply, if there is a reply, then this is likely a premature disconnection and there is a fault with the SIP ping on Alice's side.

Case 3: 3-party Example

sequenceDiagram autonumber Alice->>ConnexCS: INVITE (cseq 1) ConnexCS-->>Alice: 100 Trying ConnexCS->>Charlie: INVITE (cseq 1) Charlie-->>ConnexCS: 100 Trying Charlie-->>ConnexCS: 180 Ringing ConnexCS-->>Alice: 180 Ringing Charlie->>ConnexCS: 200 OK (Connected) ConnexCS->>Alice: 200 OK (Connected) Alice->>ConnexCS: ACK ConnexCS->>Charlie: ACK Note over Alice,Charlie: The call is active ConnexCS->>Alice: OPTIONS Alice->>ConnexCS: 200 OK ConnexCS->>Charlie: OPTIONS Charlie->>ConnexCS: 200 OK Note over Alice,Charlie: Call Disconnects Charlie->>ConnexCS: BYE ConnexCS->>Alice: BYE Alice->>ConnexCS: 200 OK ConnexCS->>Charlie: 200 OK

In this case, the communication happens between 3 parties. ConnexCs is sending OPTION packets in both the directions (to Alice and Charlie).

Case 4:Missing SIP Ping Call Disconnection (Charlie disappears)

sequenceDiagram autonumber Alice->>Bob: INVITE (cseq 1) Bob-->>Alice: 100 Trying Bob->>Charlie: INVITE (cseq 1) Charlie-->>Bob: 100 Trying Charlie-->>Bob: 183 Ringing Bob-->>Alice: 183 Ringing Charlie->>Bob: 200 OK (Connected) Bob->>Alice: 200 OK (Connected) Alice->>Bob: ACK Bob->>Charlie: ACK Note over Alice,Charlie: The call is active Bob->>Alice: OPTIONS Alice->>Bob: 200 OK Bob->>Charlie: OPTIONS Note over Alice,Charlie: No reply from Charlie, we need to disconnect Bob->>Charlie: BYE Bob->>Alice: BYE Alice->>Bob: 200 OK

In this case, when we send the OPTION packet to Charlie, he doesn't reply. The OPTION message disappears and we need to disconnect the call.

Another scenario is when ConnexCS sends message to Charlie and Charlie is active on the call, he will send a BYE message to Alice and we won't see a reply to that.

SIP Messages

ACK Message

An ACK is an Acknowledgement of a final reply.

sequenceDiagram autonumber Alice->>Bob: INVITE Bob-->>Alice: 100 Trying Bob-->>Alice: 180 Ringing Bob->>Alice: 200 OK (Connected) Alice->>Bob: ACK Note over Alice,Bob: The call is active Alice->>Bob: BYE Bob->>Alice: 200 OK

Cancel Message

CANCEL message indicates that the previous request was terminated by the user. In this case, the CANCEL message is sent from Alice to Bob.

Cancel can be due to PDD timer being too high or ringing exists for a longer duration.

Bob should send 487 Canceled message to Alice.

sequenceDiagram autonumber Alice->>Bob: INVITE Bob-->>Alice: 100 Trying Alice->>Bob: CANCEL (PDD Too High) Bob->>Alice: 487 Canceled Alice->>Bob: INVITE Bob-->>Alice: 100 Trying Bob-->>Alice: 180 Ringing Alice->>Bob: CANCEL (Alternative, Ringing Too Long) Bob->>Alice: 487 Canceled

200 OK Message

200 OK is a Success message. To understand how the 200 OK is related to we need to follow back the original cseq.

For example, if you don't see a 200 OK for a BYE message it means the other side has disappeared.

Re-Transmissions

Re-transmissions occur when the same INVITE is sent more than once. This means the same packets were sent more than once.

Re-transmissions only happen on UDP. Re-transmissions occur when packets either don't reach the receiver or get lost in transmission. Thus, re-transmissions are done after a certain time interval using specific timers.

Here is an example describing Re-transmissions:

sequenceDiagram autonumber rect rgb(127, 0, 255) rect rgb(100, 180, 255) rect rgb(252, 110,153) Alice->>Bob: INVITE (cseq 1) end Note over Alice,Bob: 500ms delay rect rgb(252, 110,153) Alice->>Bob: INVITE (cseq 1) end rect rgb(252, 110,153) Bob-->>Alice: 100 Trying end rect rgb(252, 110,153) Bob-->>Alice: 180 Ringing end rect rgb(252, 110,153) Bob->>Alice: 200 OK (Connected) end rect rgb(252, 110,153) Alice->>Bob: ACK end end Note over Alice,Bob: The call is active rect rgb(100, 180, 255) rect rgb(252, 110,153) Alice->>Bob: BYE end rect rgb(252, 110,153) Bob->>Alice: 200 OK end end end

Alice and Bob represent the parties on the call. Alice sends an INVITE packet to Bob. INVITE is an initial request.

Then Bob sends a 100 Trying (provides you the feedback that your request is getting processed by a SIP Application) message along with 180 Ringing (the Destination User Agent has received the INVITE message and is alerting the user of the call). 100 Trying and 180 Ringing are provisional responses.

The re-invites get absorbed when they're received. When Bob receives the INVITE packet and a special timer is set (please see the below timer table) to how long it should wait for re-transmissions. If any packet is received within this time-frame, the packet gets ignored.

Further, 200 OK is sent which means the calls gets connected. 200 OK is a final reply.

The ACK is message is sent from Alice to Bob confirming that the call has been connected.

Each line is a Message.

From 1 message (INVITE) to message 5 (ACK), it's considered as a single Transaction.

Similarly, messages 6 (BYE) and 7 (200 OK) are also considered as a single Transaction.

From message 1 to message 7, the whole conversation is a Dialog.

Note

Message displayed in Pink color. Transaction displayed in Blue color. Dialog displayed in Violet color.

You can have take a look at the various SIP Timers in the table below:

Timer Default value Section Meaning
T1 500 ms 17.1.1.1 Round-trip time (RTT) estimate
T2 4 sec. 17.1.2.2 Maximum retransmission interval for non-INVITE requests and INVITE responses
T4 5 sec. 17.1.2.2 Maximum duration that a message can remain in the network
Timer A initially T1 17.1.1.2 INVITE request retransmission interval, for UDP only
Timer B 64*T1 17.1.1.2 INVITE transaction timeout timer
Timer D > 32 sec. for UDP 17.1.1.2 Wait time for response retransmissions
0 sec. for TCP and SCTP
Timer E initially T1 17.1.2.2 Non-INVITE request retransmission interval, UDP only
Timer F 64*T1 17.1.2.2 Non-INVITE transaction timeout timer
Timer G initially T1 17.2.1 INVITE response retransmission interval
Timer H 64*T1 17.2.1 Wait time for ACK receipt
Timer I T4 for UDP 17.2.1 Wait time for ACK retransmissions
0 sec. for TCP and SCTP
Timer J 64*T1 for UDP 17.2.2 Wait time for retransmissions of non-INVITE requests
0 sec. for TCP and SCTP
Timer K T4 for UDP 17.1.2.2 Wait time for response retransmissions

Table source: IBM; Original Ref: RFC 3261

Various Timers

sequenceDiagram autonumber Alice->>Bob: INVITE Note over Alice,Bob: First Reply Timer (500ms) Bob-->>Alice: 100 Trying Note over Alice,Bob: PDD Timer (5s) Bob-->>Alice: 180 Ringing Note over Alice,Bob: Ring Timer (30s) Bob->>Alice: 200 OK (Connected) Alice->>Bob: ACK Note over Alice,Bob: Max Call Duration Timer (1 hour) Alice->>Bob: BYE Bob->>Alice: 200 OK

Here, Alice sends an invite to Bob and it's expected to get a reply (100 Trying) within in 500ms which is a First Reply Timer.

Then a PDD timer set for 5s to hear the ringing. Post-dial delay (PDD) is the measurement of how long it takes for a calling party to hear a ring-back tone after initiating a call.

The time from when the respondent's phone starts ringing until it's answered; is a Ring Timer.

When the call is active Max Call Duration Timer comes into the picture. When this timer is active, the active call gets disconnected when it reaches the maximum time of an active call.

Re-Invite

sequenceDiagram autonumber Alice->>Bob: INVITE (cseq 1) Bob-->>Alice: 100 Trying Bob->>Charlie: INVITE (cseq 1) Charlie-->>Bob: 100 Trying Charlie-->>Bob: 180 Ringing Bob-->>Alice: 180 Ringing Charlie->>Bob: 200 OK (Connected) Bob->>Alice: 200 OK (Connected) Alice->>Bob: ACK Bob->>Charlie: ACK Note over Alice,Charlie: The call is active Bob->>Alice: REINVITE Alice->>Bob: 200 OK Bob->>Charlie: REINVITE Charlie->>Bob: 200 OK Note over Alice,Charlie: Call Disconnects Charlie->>Bob: BYE Bob->>Alice: BYE Alice->>Bob: 200 OK Bob->>Charlie: 200 OK

In case of a Re-Invite, it re-establishes an entire call.

Here, Alice starts a call with Bob, the call is active without any issues and the media is through UK. But as a provider we detect the call isn't going through UK. Thus, we send the Re-Invite to Alice to send the media through us and we can place the call on a different server in real-time and in the middle of the call. Thus, a Re-Invite can contain some extra information also.

SIP Session Timers

The SIP Session Timer feature adds the capability to periodically refresh SIP sessions. It sends repeated INVITE or RE-Invite requests.

To enable UAs or proxies to determine the state of a SIP session, these requests get issued across active call legs.

Session timers and Session refresh requests work together. They control whether active sessions remain active and completed sessions get terminated.

Then check Supported: timers. It means the customer has this functionality, but that doesn't necessarily mean it's enabled.

You can also check the minimum session interval allowed by Min-SE: 300.

You can check Session expiration using Session-Expires: 1800. At half the session's expiration time, it will send a REINVITE.

Suppose ConnexCS has a customer who sends traffic and they have Supported: timers, but actually, they don't support timers. So as soon as they receive a Re-Invite their system breaks. On behalf of the customers ConnexCS can reply that if it sees an invite from the upstream, it should get absorbed by the server and reply with a 200 OK. The Intercept Re-Invite feature can help achieve this issue.

To ignore the system breakdown due to Supported: timers ConnexCS can use another feature Remove Timers.

Remove Timers will inform the destination that this customer doesn't support the SIP Session Timer.

If the Customer supports the timers but Supported: timers aren't visible.

If the Customer supports the timers, but Supported: timers isn't visible; ConnexCS can add Supported: timers and the headers Min-SE: 300, Session-Expires: 1800 on customer's behalf.

SIP Traces are Truth

  1. It's an undeniable reality, if a customer or provider reacts to a packet and we can verify in the SIP Trace that the provider did receive the packet.

  2. Customers and providers should understand the cause of any error codes they send.

  3. If a customer/provider sends a BYE message, their system should be investigated for the proper reason.