Rperf is a network latency measurement tool written in Rust. It aims to analyze the network latency of packets with different test parameters (e.g. network protocol, packet size, packet rate). The following features and parameters are currently supported:
- Measure round trip time of packets via ping pong between client and server
- Measure one way latencies of packets between client and server using system timestamps (system clocks of client and server need to be synchronized!)
- UDP or TCP for packet transmission between client and server
- Configurable packet rate per second
- Configurable payload size of packets (min. 16 bytes)
- Create symmetric or asymmetric network load by using minimal pong packets or packet mirroring
- Output test results CSV file
Prerequisites:
Use the following command to build the tool. After build executable 'rperf' can be found in target/release directory.
cargo build --release
docker build -t stecipa/rperf:1.0.0-SNAPSHOT .
Rperf Docker Image is available on Docker Hub.
Rperf can be started in server or client mode. Use the following command to display the help text and the available parameters:
rperf help
Usage:
rperf server --port <Port> --protocol <Protocol>
Example:
rperf server --port 5555 --protocol udp
Usage:
rperf client [FLAGS] [OPTIONS] --ip <IP> --port <Port> --time <time> --mps <time> --size <size> --protocol <Protocol>
Example:
rperf client --ip 127.0.0.1 -p 5555 --time 2 --warmup 1 --mps 1000 --size 64 --protocol udp --log result.csv --owl --rtt