CLI gap list for Milestone 5

May 15, 2026 · View on GitHub

This document tracks Gossipper CLI parity gaps against SIPp for Milestone 5.

It is intentionally pragmatic:

  • prioritize automation value and operability over historical completeness
  • close high-value gaps first (P0)
  • explicitly defer legacy or low-payoff switches (P2)

Priority model

PriorityMeaningTypical use
P0must-have for CI/load automationrepeatable unattended test runs
P1high operator valueruntime diagnostics and incident triage
P2legacy/optional parityniche or historical SIPp compatibility

Status model

StatusMeaning
supportedimplemented and documented in Gossipper
partialpartly implemented; behavior differs from SIPp
missingnot implemented yet
deferredintentionally postponed (outside current milestone scope)

Ground truth used for this matrix

  • internal/cli/config.go: currently parsed CLI flags and validation rules
  • cmd/gossip/main.go: subcommand dispatch (tui, shell, server, profile, pcap2scenario, auth, …), -interactive, -version, standalone -rtp_send
  • internal/sipp/sipp.go: gossipper sipp — scenario flags only (rejects tui / shell / … after sipp)
  • docs/cli.md: human-readable CLI overview
  • docs/compatibility.md: project-level status for CLI/transport semantics
  • SIPp reference docs:
    • ../sipp/docs/statistics.rst
    • ../sipp/docs/transport.rst
    • ../sipp/docs/scenarios/inject_from_csv.rst
    • ../sipp/docs/scenarios/keywords.rst

Implemented CLI surface in Gossipper (current)

CLI surfaceStatusPriorityNotes
-sf, -sn, -rsa (or positional remote address), -s, -i, -psupportedP0core scenario and addressing startup flags
-t u1, -t un, -t t1, -t tn, -t l1, -t lnsupportedP0core transport coverage for UDP/TCP/TLS modes
-t s1, -t sn, -t sl, -t cl, -t clnpartialP1s1/sn: server UDP; sl: server TLS → l1; cl/cln: client TLS → l1/ln (not SIPp SCTP semantics)
-t ui, -inf, -ip_fieldpartialP2pragmatic M3 parity implemented: deterministic client/server behavior, explicit bind diagnostics, and TUI launch support for ui + inf / ip_field
-r, -rp, -rate_scale, -rate_increase, -rate_interval, -rate_max, -max_socket, -max_reconnect, -reconnect_sleep, -reconnect_close, -infindex, -m, -l, -users, -pause_ms, -recv_timeout_ms, -timeout_globalsupportedP0basic load/scheduling controls are present, including SIPp-style rate periods, runtime rate ramp controls, socket cap for per-call modes, shared TCP/TLS reconnect knobs, indexed injection lookup generation, interactive rate scale, and global run timeout
-summary_jsonsupportedP0structured final stats for automation
-trace_msg, -message_file, -trace_shortmsgsupportedP0full and compact message traces
-trace_err, -error_file, -trace_error_codessupportedP0error trace and compact response-code diagnostics
-trace_logs, -log_file, -trace_stat, -trace_rtt, -trace_screen, -screen_filesupportedP0action logs, periodic stats/RTD exports, and non-interactive runtime screen snapshots
-hep_addr, -hep_capture_id, -hep_passwordsupportedP1SIP signaling mirroring to HEP3 collector
-au, -apsupportedP0auth defaults and explicit credentials
-tls_cert, -tls_key, -tls_ca, -tls_skip_verifysupportedP1TLS runtime configuration
-cmd_name, -cmd_peers, -master, -slave, -slave_cfgsupportedP1external command transport and SIPp-style 3PCC aliases
-interactive, tui, -version, --versionsupportedP1runtime UI and version surface
gossipper server, -config flat JSON (server + clients)supportedP0systemd-style management + optional parallel UAC engines; see docs/run-profile.md
-api_addr, /api/v1/*, WebSocket /api/v1/livesupportedP0HTTP control plane; multi stats when composite
gossipper auth user-add + auth JSONsupportedP1internal SQLite + JWT for API/Control UI
-media_srtp, -media_reject_srtp, -turn_server, -turn_user, -turn_pass, -turn_realmsupported / partialP1SRTP (SDES + DTLS-SRTP), ICE relay; see docs/srtp.md

SIPp parity gaps for Milestone 5

SIPp flag / behaviorSIPp purposeCurrent status in GossipperPriorityNext actionNotes
-trace_stat CSV contract paritystable periodic statistics schemasupportedP0keep contract stable and version changes explicitlyexact header contract is documented and test-guarded
-trace_rtt contract parityRTD sample export compatible with existing toolingsupportedP0keep contract stable and version changes explicitlyexact header contract is documented and test-guarded
-fd (stats dump frequency)explicit snapshot interval controlsupportedP0keep CSV contract stable for automation consumersimplemented as -fd seconds for -trace_stat snapshots
-rtt_freqcontrol RTD dump cadencesupportedP0keep behavior documented and stable for CI toolsimplemented as flush every N completed calls (default 200)
-trace_countsper-message counters CSV exportsupportedP1keep schema stable and extend only with additive columnscurrent export provides per-scenario SIP command sent / recv / unexp counters
selected rate/scheduling knobs beyond -r/-m/-lricher load profile controlpartialP0define top missing knobs by automation value and add incrementally-rp, -rate_scale, -rate_increase/-rate_interval/-rate_max, -max_socket, and -timeout_global now supported; keep deterministic behavior first
SIPp-style runtime reporting behavior (selected non-interactive subset)operator visibility and triage during runsupportedP1keep screen CSV contract stable and extend additively onlyinteractive TUI exists; non-interactive screen CSV snapshots are available via -trace_screen / -screen_file, plus on-demand dump trigger via SIGUSR1
-base_cseqexplicit initial CSeq seedsupportedP1keep behavior documented and add coverage for offsets via [cseq+N]base CSeq now controls [cseq] token rendering
-t uione UDP socket per source IP from injection datapartialP2keep pragmatic behavior stable and defer advanced SIPp tailsupports deterministic client+server multi-IP workflow with session affinity and listener-aware server identity
-inf + -ip_field for transport/IP selectionper-call local IP selection in ui workflowpartialP2keep pragmatic behavior stable and defer advanced SIPp tailsupports CSV-driven UI bind-IP selection with detailed validation/errors and deterministic client/server rules
-infindexindexed CSV injection lookup accelerationsupportedP2keep indexed lookup behavior stable for automationaccepts SIPp-style -infindex <file> <field> and compact -infindex file,field; generated index accelerates lookup for field 0
TCP reconnect controls (-max_reconnect, -reconnect_close, -reconnect_sleep)reconnection policy tuningpartialP2extend semantics if full SIPp parity is requiredsupported for shared client TCP/TLS (t1, l1); -reconnect_close=true currently closes active calls by disabling reconnect attempts
-max_socket (multi-socket cap)cap number of active socketspartialP2evaluate server/shared transport alignment latercurrently caps per-call client socket fanout (un, tn, ln)

Candidate P0 shortlist (execution order)

  1. shipped one high-value load knob beyond -r/-m/-l: -rp (SIPp-compatible rate period)
  2. added smoke checks for produced trace artifacts (-trace_stat, -trace_rtt, -trace_error_codes, -trace_screen)
  3. aligned docs/examples with -fd, -rtt_freq, -trace_counts, and -trace_screen usage patterns
  4. decided parser migration policy: no runtime legacy alias columns, use explicit adapter/mapping
  5. evaluated optional per-message counter detail; deferred after Milestone 5 to keep schema stable (sent / recv / unexp)

Deliverables checklist

  • documented supported / partial / missing / deferred CLI map
  • grouped implementation plan: high-value in automation vs legacy/optional
  • at least one smoke test validating trace/stat artifact structure
  • update docs/compatibility.md after each flag family lands

Out-of-scope for Milestone 5

  • advanced transport/addressing tail beyond pragmatic M3 scope (-t ui, -inf, -ip_field)
  • media parity work (play_pcap_video, play_pcap_image, broader replay semantics) from Milestone 4