Gossipper vs SIPp¶
Gossipper is a Go-based SIP traffic generator and scenario runner inspired by
SIPp. The project does not try to be a
line-by-line port. Instead, it focuses on a practical subset of SIPp features,
cleaner internals, and incremental compatibility for real-world SIP and media
testing.
CLI entry gossipper sipp¶
gossipper sipp is only for SIPp-style command-line scenario invocation (the
same flag surface as running a load test from SIPp’s CLI). Helpers such as tui,
shell, server, pcap2scenario, report-html, and summary-to-pdf
must be run as gossipper <subcommand> without the sipp token. Run
gossipper sipp with no further args prints a short SIPp-entry summary; gossipper sipp -h (or --help, first-token help) shows the scenario flag list with a SIPp-oriented preamble and without -api_addr, -api_token, or standalone -rtp_send / -rtp_* knobs. gossipper server -h shows management-oriented flag groups (SIP bind, API, TLS, HEP, …); the full SIPp-compatible surface (including -base_cseq, -rsa, 3pcc, RTP sender, …) is gossipper sipp -h. Root gossipper -h lists subcommands and where to read flags (gossipper sipp -h, gossipper server -h, gossipper profile -h); it does not dump the scenario flag list.
The root command gossipper [flags…] runs scenarios the same way; sipp is an
optional explicit SIPp-style entry point.
The gossipper server subcommand is the preferred entry for systemd-style
management mode: gossipper server -config /path.json or
gossipper server (prepends an internal server marker before the flag parser when needed; same runtime defaults as before the standalone -server CLI flag was removed).
Canonical CLI reference (subcommands, sipp, run profiles): cli.md.
What Gossipper already does well¶
- Runs SIP XML scenarios with
send,recv,pause,nop,timewait,label, andinit - Supports a broad SIPp-like XML action subset including
ereg,assign,assignstr,todouble,add,subtract,multiply,divide,strcmp,test,log,warning,lookup,jump,gettimeofday,urlencode,urldecode,verifyauth, andexec - Handles UDP, TCP, TLS, client TLS aliases
cl/cln, server UDP aliasess1/sn, and server TLS aliassl - Supports 3PCC-style
sendCmd/recvCmdflows, including external peer communication between multipleGossipperinstances - Handles out-of-call SIP exchanges such as stateless
OPTIONS - Supports Digest auth retries with
[authentication], inline auth params, CLI credentials from-au/-ap, and server-side auth validation throughverifyauth - Supports Homer/HEP export for SIP signaling via
-hep_addr,-hep_capture_id, and-hep_password - Long-run management mode with HTTP API (
-api_addr,/api/v1/*), optional WebSocket/api/v1/live, dynamic UAC clients, and internal auth (gossipper auth, JWT) — seedocs/sipstress-style-load-testing.mdanddocs/cli.md - SRTP (SDES + DTLS-SRTP) and lightweight ICE / TURN for
rtp_stream/micwhen-media_srtp— seedocs/srtp.mdanddocs/rtp-in-scenarios.md - Provides media helpers for
rtp_stream, RTP echo, RTCP counters, and audio PCAP replay throughplay_pcap_audio - Exposes JSON summary output, named RTD metrics, execution counters, failure-class reporting, latency repartition buckets, periodic CSV stats, RTD CSV dumps, and message / error / action tracing
Comparison summary¶
| Area | Gossipper |
SIPp |
|---|---|---|
| Implementation language | Go | C++ |
| Goal | Clean Go rewrite with incremental compatibility | Mature original reference implementation |
| XML execution model | Supported subset with growing parity | Broad and battle-tested |
| SIP transports | UDP, TCP, TLS, server aliases | Broad and mature |
| 3PCC command flows | Supported | Supported |
| Digest auth | Supported for common 401 / 407 flows plus verifyauth |
Supported |
| HEP / Homer export | SIP signaling export over HEP3 | Mature capture/export ecosystem |
| RTP helpers | rtp_stream, echo, RTCP, PCAP replay, SRTP (SDES + DTLS-SRTP via -media_srtp) |
More mature media feature set |
| Management HTTP API | gossipper server, -api_addr, /api/v1/*, WebSocket /live, dynamic clients, internal JWT auth |
External automation / scripts (no single built-in HTTP control plane) |
| Reporting | JSON summary, RTD, failure classes, CSV stats, RTT dumps, tracing | Rich CLI stats and long-standing reporting model |
| Compatibility scope | Explicit and documented | De facto full reference behavior |
Where Gossipper is intentionally different¶
1. Smaller compatibility surface¶
Gossipper only implements the SIPp subset that is currently useful and tested in
this repository. The idea is to grow compatibility intentionally instead of
pretending to support every legacy corner case from day one.
2. Cleaner engine boundaries¶
The Go codebase is structured around explicit packages such as engine,
scenario, transport, media, stats, and template. This makes it easier
to test individual pieces, evolve features in isolation, and reason about the
runtime.
3. Automation-friendly outputs¶
The project leans toward machine-readable outputs such as JSON summaries and dedicated trace files. This is useful for CI pipelines, scripted regression tests, and reproducible compatibility work.
Where SIPp is still ahead¶
- Wider XML and CLI compatibility
- More complete media coverage beyond the currently implemented
Gossippersubset - Longer production history and more community examples
- Better parity for obscure or legacy scenario semantics
If you need exact behavior from a complex existing SIPp scenario, SIPp is still
the safer default. If you want a simpler Go-native codebase with enough SIPp
surface for modern integration tests and incremental extension, Gossipper is the
better fit.
Current practical position¶
Today, Gossipper is a strong fit for:
- targeted SIP regression scenarios
- 3PCC and command-orchestrated test flows
- auth challenge / response coverage
- Homer-compatible SIP mirroring over HEP3
- lightweight media and RTP validation
- CI-friendly scenario execution with structured JSON/CSV output
It is not yet a drop-in replacement for every SIPp installation or every SIPp scenario ever written.
Related docs¶
docs/compatibility.md: exact support matrixdocs/architecture.md: package-level designdocs/media-roadmap.md: media-related direction and gapsdocs/sipstress-style-load-testing.md: management HTTP API, hybrid flat JSON, soak/dynamic-client patternsREADME.md: quick-start examples and runnable demos