488 you can’t explain, DTMF that never registers, or audio that flows
one way. The telephony leg speaks SIP for signalling and RTP for media,
and both are captured for you — so you rarely have to reach for tcpdump at all.
Signalling is already captured
Every SIP message on every one of your calls is captured automatically, keyed bysid, and kept in a searchable store you reach from the console at
agent.telequick.dev. You don’t run a capture agent, mirror a port, or
schedule anything — the SIP gateway mirrors each message as it sends or receives
it. Capture uses HEP (the Homer Encapsulation Protocol), the same open format
Homer and other SIP-capture stacks speak, so the data is portable: on a
self-hosted deployment you can point your own HEP collector at the same feed.
Capture is tenant-scoped. You only ever see calls that belong to your
workspace — traces are filtered by your tenant and your DID ranges before they
reach you, so a shared managed-cloud plane never leaks another tenant’s
signalling.
- The full SIP transaction — every
INVITE, provisional,200,ACK,BYE, re-INVITE, andREFER, with wire timestamps. - The SDP offered and answered on each leg (codecs, media IP/port, DTMF mode), so codec and media-path negotiation is visible without decoding anything.
- Both B2BUA legs — the carrier-facing dialog and the agent/endpoint-facing
dialog — lined up under the one
sid.
Reading a ladder diagram
The capture explorer renders a SIP transaction as a ladder (a flow diagram): each participant is a vertical line, time runs top to bottom, and every arrow is one SIP message annotated with its method or status code and timestamp. For an inbound call to an AI agent it reads like this:- A gap where a message should be. No
ACKafter the200 OK? The dialog never confirmed. No183/200at all after theINVITE? Your response never reached the caller (loss, ACL, or an unreachable route). - The same message repeated at ~500 ms, 1 s, 2 s intervals. That’s SIP retransmission — the sender isn’t getting a reply. Follow the arrows to see which hop is silent.
- A
4xx/5xx/6xxinstead of a200. The code and its reason phrase name the rejection; expand the message to read the headers. - The SDP on each side. Open the
INVITEand the answering response and compare them=audiolines — a codec list with nothing in common is a488waiting to happen. - Timing. Wide gaps between arrows are where the latency lives; the ladder timestamps are your first cut before the latency breakdown.
Common telephony packet symptoms
| Symptom | Likely cause | What the ladder / pcap shows — and the fix |
|---|---|---|
Call rings, then the carrier sends an unsolicited BYE | Ringing was signalled with a bare 180 and no media description | Ladder shows 180 Ringing without a following 183 Session Progress (SDP). The gateway answers early media with 183 + SDP — if you front your own carrier/SBC, make it send 183 with SDP, not a media-less 180. |
488 Not Acceptable Here on answer | No codec in common between offer and answer | Compare the two m=audio SDP lines in the ladder. Phone legs must offer G.711 (PCMU/PCMA). Fix the trunk’s offered codecs. |
401/407 challenge loop, call never sets up | Digest auth failing on a registered endpoint or trunk | Ladder shows repeated INVITE → 407 → INVITE. Re-check the endpoint/trunk credentials; a mismatched secret loops here forever. |
Repeated INVITEs, no response at all | Packet loss, or the source IP is blocked by the ACL | Silent hop in the ladder. Confirm the sender’s source IP is allowed and the route is reachable; see SIP trunk troubleshooting. |
| Call connects, but audio flows only one way | RTP isn’t reaching one side — NAT/SDP media address, or asymmetric flow | Signalling looks clean, so this is a media problem. Check the SDP c=/m= media address the far end was told to send to; then drop to a pcap on the media path (below). See one-way audio. |
| DTMF digits never register | RFC 2833 telephone-event payload-type mismatch, or the far end sends in-band | The ladder’s SDP shows the negotiated telephone-event PT; whether the digits actually arrive is only visible in an RTP pcap. Confirm both sides agree on RFC 2833 and the payload type. |
When to drop to a pcap
Built-in capture records signalling (and RTCP/QoS summaries), not the raw RTP audio payload. Reach for a packet capture when the question is about the media stream itself and the ladder plus MOS/jitter/loss haven’t answered it:- One-way or no audio where signalling is clean — you need to see whether RTP is actually leaving one side and arriving at the other, and on which address.
- DTMF (RFC 2833) that isn’t detected — inspect the
telephone-eventpackets and their payload type on the wire. - Codec / payload-type drift — confirm the RTP payload type on the wire matches what the SDP negotiated.
- Loss or jitter patterns the E-model MOS score flags but doesn’t localize — packet arrival timing tells you where the gaps are.
Capture on a box you actually own
Take the pcap at your SBC or carrier edge, or on a self-hosted engine
host you control — not on the managed-cloud media plane. Filter to the call’s
RTP by media IP/port (from the SDP in the ladder) plus the SIP signalling
port, e.g.
tcpdump -i <if> -w call.pcap 'udp and (host <media-ip>)'.Open it as a VoIP flow
Load the pcap in Wireshark and use Telephony → VoIP Calls to
reconstruct the dialog, then RTP → Stream Analysis to see
per-packet loss, jitter, and sequence gaps. Wireshark builds its own ladder
from the packets so you can line it up against the captured SIP trace.
Related
SIP / RTP debugging
The workflow for isolating a telephony-leg fault, start to finish.
Call traces
The assembled per-call event timeline, keyed by sid.
MOS, jitter & loss
The media-quality numbers that tell you when to open a pcap.
Call lifecycle
What each SIP message on the ladder means, and where the agent attaches.
One-way audio
The classic media-path fault a pcap resolves.
SIP trunk issues
ACLs, auth loops, and unreachable routes at the trunk edge.