VisualEther Session — VoIP SIP/RTP Call Analysis

PCAP: VoIP Calls FINAL.pcapng (1.62 MB, 6486 packets, captured 2019-11-15 → 2019-11-18)  |  Session date: 2026-05-06  |  Tools: VisualEther MCP server

Turn 1 — Generate FXT templates

User
please generate explore.fxt.xml and sessions.fxt.xml from @"VoIP Calls FINAL.pcapng"
Claude

Ran analyze_capture against the PCAP. Detected 3 protocols: SIP, RTP, PPP (PPP is the link layer — PPPoE-encapsulated frames). Recommended template: sip-rtp/explore.fxt.xml (full coverage of the signaling + media protocols that matter).

Action: Copied sip-rtp/explore.fxt.xml and sip-rtp/sessions.fxt.xml from the bundled samples into the PCAP directory.

Validated explore.fxt.xml against the PCAP:

FileTemplatesSession typesCoverage
explore.fxt.xml3206486 / 6486 frames matched (100%)
sessions.fxt.xmlsip-dialog(validated indirectly via extract_sessions)

All conflicts reported by the validator were "expected first-match-wins" — no errors. SIP Method-keyed templates (INVITE / BYE / ACK) correctly outrank the generic Request-Line fallback; the 1xx/2xx status templates correctly outrank the generic Status-Line fallback.

Turn 2 — Render both diagrams

User
yes, render both
Claude

Ran explore and extract_sessions in parallel.

Explore

27 SIP signaling messages on the diagram; 12,922 RTP/RTCP packets deduplicated by the filter="true" rule (expected — VoIP captures are dominated by media). Viewer opened at output/explore/VoIP Calls FINAL/VoIP Calls FINAL_viewer.html.

The validator's "0% match" warning is misleading for VoIP captures — the filter rule is working as intended, suppressing 12,922 RTP/RTCP packets so the SIP signaling stays readable.

Sessions

3 SIP dialogs, all success::call-completed.

Session typeOutcomeCount
sip-dialogsuccess::call-completed3

Navigator opened at output/sessions/VoIP Calls FINAL/index.html.

Turn 3 — Compare the three calls

User
Do you see any differences between the three calls?
Claude

Walked the 3 session NDJSON files. All three share an identical signaling skeleton:

INVITE → 100 Trying → 180 Ringing → ACK → BYE

between the same two SBC IPs (217.0.21.6584.146.135.221), all calling the same callee +4960339285361@telekom.de. But the calls differ meaningfully in caller, codec, and origin domain:

Call 1Call 2Call 3
When2019-11-15 14:592019-11-18 16:082019-11-18 21:35
Caller+46739883425 (SE)+491741880211 (DE)+31859027384 (NL)
Caller domaindtag-gn.de (gateway)ims.telekom.de (IMS)dtag-gn.de (gateway)
User-AgentiOS/13.2.2 iPhone
Codecs offeredPCMA, PCMU, G729, G723, telephone-eventEVS, AMR-WB, AMR-NB, …PCMA, PCMU, G729, G723
SDP session nameSBC call-SBC call
RTP port56903519215020
ICSI feature tagsmmtelmmtel + mid-call + srvcc-alerting + ps2cs-srvccmmtel
Talk time (INVITE → BYE)~51 s~25 s~56 s
BYE reasonQ.850 cause=16 Normal call clearingSIP cause=200 "User Triggered"Q.850 cause=16 Normal call clearing

Key flow differences

  1. Call 2 is a native VoLTE leg. Originated from the IMS domain (ims.telekom.de) on an actual handset (User-Agent iOS/13.2.2 iPhone), negotiates HD codecs (EVS, AMR-WB), advertises SRVCC + mid-call handover capability, and tears down with a SIP "User Triggered" reason — the subscriber hung up.
  2. Calls 1 and 3 are interconnect/PSTN-side traffic. Both originate in the gateway domain (dtag-gn.de), advertise narrowband codecs only (PCMA/PCMU/G729/G723), have no User-Agent, and clear with the standard Q.850 cause=16.
  3. All three terminate at the same German number through the same SBC pair — this capture appears to be three distinct inbound legs to a single B-party.
  4. From-URI domain is the strongest discriminatordtag-gn.de flags PSTN gateway origin, ims.telekom.de flags native VoLTE origin.

Artifacts & findings

Files produced

voip/
├── VoIP Calls FINAL.pcapng           # input
├── explore.fxt.xml                   # exploration template (32 templates, sip-rtp sample)
├── sessions.fxt.xml                  # session-tracking template (sip-dialog)
├── session.md                        # this report (Markdown)
├── session.html                      # this report (styled HTML)
└── output/
    ├── explore/
    │   └── VoIP Calls FINAL/
    │       └── VoIP Calls FINAL_viewer.html
    └── sessions/
        └── VoIP Calls FINAL/
            ├── index.html
            └── sip-dialog/success/{00001,00002,00003}.{html,pdf,ndjson}

Findings summary