Some additional arguments that could make sense to use:
--sctp use SCTP rather than TCP
-X, --xbind bind SCTP association to links
--nstreams # number of SCTP streams
-P, --parallel # number of parallel client streams to run
-l, --length #[KMG] length of buffer to read or write
-R, --reverse run in reverse mode (server sends, client receives)
-w, --window #[KMG] set window size / socket buffer size
-C, --congestion set TCP congestion control algorithm (Linux and FreeBSD only)
-M, --set-mss # set TCP/SCTP maximum segment size (MTU - 40 bytes)
-N, --no-delay set TCP/SCTP no delay, disabling Nagle's Algorithm
-S, --tos N set the IP type of service, 0-255.
The usual prefixes for octal and hex can be used,
i.e. 52, 064 and 0x34 all specify the same value.
--dscp N or --dscp val set the IP dscp value, either 0-63 or symbolic.
Numeric values can be specified in decimal,
octal and hex (see --tos above).
-L, --flowlabel N set the IPv6 flow label (only supported on Linux)
-Z, --zerocopy use a 'zero copy' method of sending data
-O, --omit N omit the first n seconds
--repeating-payload use repeating pattern in payload, instead of
randomized payload (like in iperf2)
--username username for authentication
--rsa-public-key-path path to the RSA public key used to encrypt
authentication credentials
It would be perfect if you can implement an additional parameter to pass different options for iperf3 test.
Example: iperf3_tcp_server_args_x: iperf3_udp_server_args_x:
Some additional arguments that could make sense to use: