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.
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
- 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.
We're aiming to release packages for Fedora, Ubuntu and OpenWRT and would appreciate help with that.
- libnl >= 3.2.24
- libwebsockets >= 1.6
- libjansson >= 2.6
Build dependencies:
sudo dnf install libnl3-devel jansson-devel libwebsockets-devel libpcap-devel
Run-time dependencies:
sudo dnf install libnl3 jansson libwebsockets libpcap
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
Fetch:
git clone https://github.com/acooks/jittertrap.git
Build:
cd jittertrap
make
Run make help to see build configuration options.
Basic usage:
sudo ./server/jt-server --port 8080 --resource_path html5-client/output/
Then open http://localhost:8080/ in your browser.
| 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
JitterTrap requires root privileges (or CAP_NET_ADMIN capability) for:
- Packet capture on network interfaces
- Network impairment injection via tc/netem
Contributions are welcome! Please use GitHub Issues for bug reports and GitHub Discussions for questions and feature suggestions.