Skip to content

acooks/jittertrap

Repository files navigation

JitterTrap

Coverity Status Build Status

JitterTrap is a real-time network performance analysis tool for engineers working with delay-sensitive networked applications and devices. It provides live measurements, per-flow TCP analysis, and network impairment emulation—all through a web-based interface.

Key Features

Real-time Traffic Analysis

  • Throughput (bits/s, packets/s) with configurable sampling intervals (5ms–1000ms)
  • Inter-packet gap measurement to detect buffering and scheduling issues
  • Top Talkers breakdown by flow (source/destination IP:port)

TCP Flow Analysis

  • Round-Trip Time (RTT) — measured from TCP sequence/ACK pairs, with EWMA smoothing
  • Advertised Window — tracks receive window with proper window scaling (RFC 7323)
  • Connection State — visual markers for SYN, FIN, RST events
  • Congestion Events — detects zero window, duplicate ACKs, retransmissions, ECN

Network Impairment Emulation

  • Inject delay, jitter, and packet loss on egress traffic
  • Scriptable impairment programs for automated testing

Packet Capture

  • 30-second rolling buffer with trap-triggered capture
  • Download as pcap for Wireshark analysis

Use Cases

  • Characterise source behaviour — measure throughput, packet rates, and jitter from devices under test
  • Characterise destination behaviour — inject impairments to verify application resilience to delay/loss
  • Debug TCP performance — identify RTT spikes, window limitations, and retransmission patterns
  • Network congestion analysis — real-time visibility into traffic patterns

The user interface is a web application. Try the demo hosted on AWS Sydney.

Please use GitHub Discussions for questions and suggestions.

Installing JitterTrap

We're aiming to release packages for Fedora, Ubuntu and OpenWRT and would appreciate help with that.

Building JitterTrap

Dependencies

Fedora

Build dependencies:

sudo dnf install libnl3-devel jansson-devel libwebsockets-devel libpcap-devel

Run-time dependencies:

sudo dnf install libnl3 jansson libwebsockets libpcap

Ubuntu

Build dependencies:

sudo apt-get install libnl-3-dev libnl-route-3-dev libnl-genl-3-dev libjansson-dev libwebsockets-dev libncurses5-dev libpcap-dev pkgconf

Run-time dependencies:

sudo apt-get install libnl-3-200 libnl-route-3-200 libnl-genl-3-200 libjansson4 libwebsockets6

Compiling JitterTrap

Fetch:

git clone https://github.com/acooks/jittertrap.git

Build:

cd jittertrap
make

Run make help to see build configuration options.

Running JitterTrap

Basic usage:

sudo ./server/jt-server --port 8080 --resource_path html5-client/output/

Then open http://localhost:8080/ in your browser.

Command-line Options

Option Description
-p, --port PORT HTTP server port (default: 80)
-r, --resource_path PATH Path to web UI files
-a, --allowed IFACE Restrict to specific interface(s) (repeatable)

Example with interface filtering:

sudo ./server/jt-server -p 8080 -r html5-client/output/ --allowed eth0 --allowed eth1

Requirements

JitterTrap requires root privileges (or CAP_NET_ADMIN capability) for:

  • Packet capture on network interfaces
  • Network impairment injection via tc/netem

Contributing

Contributions are welcome! Please use GitHub Issues for bug reports and GitHub Discussions for questions and feature suggestions.

About

JitterTrap is a measurement and impairment tool for developers of latency-sensitive applications and devices.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 18