We'd like to announce the availability of transperf: a network protocol performance testing tool.
transperf enables users to test TCP performance over a variety of emulated network scenarios (using netem), including RTT, bottleneck bandwidth, and policed rate that can change over time. The tool supports testing multiple flows on multiple machines, and can test the coexistence of multiple congestion control algorithms in a single test. Users can specify test configurations and make assertions about the expected results (i.e., goodput, RTTs, retransmit rates, and fairness) using a Python-based configuration language. The BBR team at Google has been using transperf for some of our BBR testing, and many of the pastel bandwidth plots from various BBR IETF slide decks were produced using this tool. Transperf includes support for plotting internal state used by the BBRv2 algorithm, and can be easily extended to support other congestion control algorithms as well. We have found it useful, and hope others find it useful as well. The code is released under the Apache-2.0 license, and available in a git repository at: https://github.com/google/transperf The source for transperf is in the git repository, along with example configuration scripts. It has been tested on Debian 9. We would love to accept your bug reports, patches, and contributions through GitHub issues and pull requests. Co-authored-by: Soheil Yeganeh Co-authored-by: Arjun Roy Co-authored-by: Neal Cardwell Co-authored-by: Luke Hsiao Co-authored-by: Priyaranjan Jha Co-authored-by: Haitao Wu Co-authored-by: Yousuk Seung Co-authored-by: Kevin(Yudong) Yang Co-authored-by: Michael McLennan Co-authored-by: Yuchung Cheng Co-authored-by: Eric Dumazet Co-authored-by: Maciej Żenczykowski