BBR Testing Using iperf3
iperf3 has a number of options helpful for BBR testing.
First you need to confirm that your host kernel supports BBR:
> sysctl net.ipv4.tcp_available_congestion_control
and make sure BBR is in the list of available congestion control algorithms, e.g.:
net.ipv4.tcp_available_congestion_control = htcp cubic reno bbr
BBR TCP is available starting in RHEL/Rocky 8.0, Debian 9, and Ubuntu 17. Note that this is BBRv1. BBRv3 is not yet available in a supported kernel as of Oct 2024, so you'll need to build a custom kernel to use BBRv3.
Here are some example useful iperf3 commands:
#use BBR, and pace at 6Gbps
iperf3 -C bbr --fq-rate 6G -c remote_host
# test both directions at once
iperf3 -C bbr --fq-rate 6G --bidir -c remote_host
BBR TCP is sender side only, so you do not need to worry if the receiver supports BBR. Note that BBR is much more effective when using FQ (fair queuing) to pace packets to at most 90% of line rate.
If you want to do testing with a perfSONAR host, use the pscheduler --fq-rate and --congestion options.