01UserGenerate FXT templates
please generate explore.fxt.xml and sessions.fxt.xml from @"VoIP Calls FINAL.pcapng"
02ClaudeFXT template generation

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 signalling + 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.

03UserRender both diagrams
yes, render both
04ClaudeExplore & session diagrams

Ran explore and extract_sessions in parallel.

Explore

27 SIP signalling 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.

Note. 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 signalling 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.

05UserCompare the three calls
Do you see any differences between the three calls?
06ClaudeThree-call comparison

Walked the 3 session NDJSON files. All three share an identical signalling 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.
07CodaArtifacts & 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

  • 3 dialogs Three independent successful SIP calls, all to +4960339285361@telekom.de via the same SBC pair (217.0.21.6584.146.135.221).
  • origins One VoLTE leg, two PSTN-gateway legs. Call 2 is the only native IMS originator (iPhone, EVS/AMR-WB, SRVCC tags); calls 1 and 3 are gateway-domain origins with narrowband codecs.
  • clean All three completed normally. No 4xx/5xx/6xx responses, no CANCELs, no retransmission storms — clean signalling on each leg.
  • media RTP volume dominates the capture (~99.6%): 12,922 media packets deduplicated by the FXT filter rule vs. 27 signalling messages — expected for a VoIP trace.
  • scope No re-INVITE / UPDATE / hold / transfer activity — these are simple two-party call legs from setup to teardown.

Method. Capture rendered with VisualEther via its MCP integration with Claude — analyze_captureexplore for the master sequence diagram, then extract_sessions for per-dialog SIP outcome buckets, using the bundled sip-rtp FXT samples (32 explore templates + one sip-dialog session type).