4 releases (2 breaking)
new 0.3.0 | Nov 24, 2024 |
---|---|
0.2.0 | Nov 22, 2024 |
0.1.1 | Nov 19, 2024 |
0.1.0 | Nov 19, 2024 |
#354 in Simulation
407 downloads per month
180KB
728 lines
chokepoint
A library for simulating "traffic shaping" in Rust based on a generic futures::Stream
and futures::Sink
transformer that can be used to modify the delivery of items. The main purpose is to simulate various network
conditions such as:
- Delay (using a user provided function)
- Packet loss
- Packet reordering
- Packet corruption
- Packet duplication
- Bandwidth limiting
See TrafficShaper
for more information and an example.
chokepoint command line tool
At ./cli you can find a simple cli tool for interactive exploration. Using a tool like graph-cli you can visualize the output. Here is an example to showcase delay, jitter and bandwidth:
$ chokepoint --help
Usage: chokepoint [OPTIONS] <MODE>
Arguments:
<MODE> Simulate a sink or a stream [possible values: stream, sink]
Options:
-v, --verbose
-n <N>
Number of packets to send [default: 250]
-o, --output <OUTPUT>
Output file (csv) with packet timing information
-r, --packet-rate <PACKET_RATE>
Send rate in packets per second
-s, --packet-size <PACKET_SIZE>
Packet size in bytes [default: 1B]
--ordering <ORDERING>
[default: ordered]
-l, --bandwidth-limit <BANDWIDTH_LIMIT>
Bandwidth limit
--mean <MEAN>
Mean latency in ms [default: 0.0]
--stddev <STDDEV>
Standard deviation of latency in ms (aka jitter) [default: 0.0]
-h, --help
Print help
Dependencies
~5–11MB
~116K SLoC