TCP proxy for simulating variable, yet predictable network latency 🌐⏳
Alternatives To Speedbump
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Hubble2,598417 hours ago42June 22, 202229apache-2.0Go
Hubble - Network, Service & Security Observability for Kubernetes using eBPF
a month ago7August 10, 20224apache-2.0Go
TCP proxy for simulating variable, yet predictable network latency :globe_with_meridians::hourglass_flowing_sand:
2 months ago1apache-2.0Go
k8spacket - packets traffic visualization for kubernetes
2 years ago7February 21, 2021mitGo
Modern TCP tool and service for network performance observability.
2 years agomitGo
eBPF based TCP observability.
5 days ago14December 21, 20203mitGo
[PoC] A socket-based tracing system for discovering network service dependencies. (renamed from transtracer)
Alternatives To Speedbump
Select To Compare

Alternative Project Comparisons

speedbump - TCP proxy with variable latency

speedbump logo
Speedbump is a TCP proxy written in Go which allows for simulating variable network latency.

CI Workflow Go Report Card Docker Pulls Docker Image Version GoDoc



The easiest way to install speedbump is to download pre-built binaries for your platform that are automatically attached to each release under Assets. If you wish to build speedbump from source, clone this repository and run go build. Alternatively, you can run speedbump as a container using the kffl/speedbump image.

Basic usage examples

Spawn a new instance listening on port 2000 that proxies TCP traffic to localhost:80 with a base latency of 100ms and sine wave amplitude of 100ms (resulting in maximum added latency being 200ms and minimum being 0), period of which is 1 minute:

speedbump --latency=100ms --sine-amplitude=100ms --sine-period=1m --port=2000 localhost:80

or when running speedbump using the kffl/speedbump container image:

docker run --net=host kffl/speedbump:latest --latency=100ms --sine-amplitude=100ms \
           --sine-period=1m --port=2000 localhost:80

Spawn a new instance with a base latency of 300ms and a sawtooth wave latency summand with amplitude of 200ms and period of 2 minutes (visualized by the graph below):

speedbump --latency=300ms --saw-amplitude=200ms --saw-period=2m --port=2000 localhost:80
speedbump sawtooth wave graph

Combining latency summands

It is possible to run speedbump with multiple latency summands at once:

speedbump sawtooth + sine graph

CLI Arguments Reference:

Output of speedbump --help:

usage: speedbump [<flags>] <destination>

TCP proxy for simulating variable network latency.

  --help                  Show context-sensitive help (also try --help-long and
  --host=""               IP or hostname to listen on. Speedbump will bind to
                          all available network interfaces if unspecified.
  --port=8000             Port number to listen on.
  --buffer=64KB           Size of the buffer used for TCP reads.
  --queue-size=1024       Size of the delay queue storing read buffers.
  --latency=5ms           Base latency added to proxied traffic.
  --log-level=INFO        Log level. Possible values: DEBUG, TRACE, INFO, WARN,
  --sine-amplitude=0      Amplitude of the latency sine wave.
  --sine-period=0         Period of the latency sine wave.
  --saw-amplitude=0       Amplitude of the latency sawtooth wave.
  --saw-period=0          Period of the latency sawtooth wave.
  --square-amplitude=0    Amplitude of the latency square wave.
  --square-period=0       Period of the latency square wave.
  --triangle-amplitude=0  Amplitude of the latency triangle wave.
  --triangle-period=0     Period of the latency triangle wave.
  --version               Show application version.

  <destination>  TCP proxy destination in host:post format.

Using speedbump as a library

Speedbump can be used as a Go library via its lib package. Check lib README for additional information.


Copyright Paweł Kuffel 2022, licensed under Apache 2.0 License.

Speedbump logo contains the Go Gopher mascot which was originally designed by Renee French (http://reneefrench.blogspot.com/) and licensed under Creative Commons 3.0 Attributions license.

Popular Tcp Projects
Popular Observability Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Load Testing