chokepoint

Crates.iochokepoint
lib.rschokepoint
version0.4.2
sourcesrc
created_at2024-11-19 14:17:50.002852
updated_at2024-12-03 22:22:54.325394
descriptionGeneric stream transformer to simulate traffic / network congestion
homepagehttps://github.com/hypervideo/chokepoint
repositoryhttps://github.com/hypervideo/chokepoint
max_upload_size
id1453317
size253,900
Robert Krahn (rksm)

documentation

README

chokepoint

Crates.io License

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:

Example

$ 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
Commit count: 47

cargo fmt