Skip to content

arcalot/arcaflow-plugin-iperf3

Repository files navigation

iperf3 plugin

This plugin is a work-in-progress. Here be dragons.

iperf3 Client (client)

Runs the iperf3 client workload

Input

Type:scope
Root object:ClientInputParams
Properties
affinity (string)
Name:affinity
Description:[n/n,m] set CPU affinity
Required:No
Type:string
Must match pattern:^\d+$|^\d+,\d+$
bind (string)
Name:bind
Description:bind to the interface associated with the address <host>
Required:No
Type:string
bitrate (int)
Name:bitrate
Description:target bitrate in bits/sec (0 for unlimited)(default 1 Mbit/sec for UDP, unlimited for TCP) (optional slash and packet count for burst mode) - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bits
blockcount (int)
Name:block count
Description:number of blocks (packets) to transmit - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Conflicts the following fields:time, bytes
Type:int
Units:bytes
bytes (int)
Name:bytes
Description:number of bytes to transmit - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Conflicts the following fields:time, blockcount
Type:int
Units:bytes
congestion (enum[string])
Name:congestion algorithm
Description:set TCP congestion control algorithm (Linux and FreeBSD only)
Required:No
Type:enum[string]
Values
  • YeAH: YeAH
  • bic: bic
  • cubic: cubic
  • htcp: htcp
  • reno: reno
  • vegas: vegas
  • westwood: westwood
connect-timeout (int)
Name:connect timeout
Description:timeout for control connection setup (ms)
Required:No
Type:int
cport (int)
Name:client port
Description:bind to a specific client port (TCP and UDP, default: ephemeral port)
Required:No
Type:int
dscp (int)
Name:dscp
Description:set the IP dscp value, 0-63
Required:No
Type:int
Minimum:0
Maximum:63
flowlabel (int)
Name:flow label
Description:set the IPv6 flow label (only supported on Linux)
Required:No
Type:int
forceflush (bool)
Name:force flush
Description:force flushing output at every interval
Required:No
Type:bool
format (enum[string])
Name:format
Description:[kmgtKMGT] format to report: kibi-, mibi, gibi, tebi- bits/Bytes
Required:No
Type:enum[string]
Values
  • G: G
  • K: K
  • M: M
  • T: T
  • g: g
  • k: k
  • m: m
  • t: t
fq-rate (int)
Name:fair-queuing rate
Description:enable fair-queuing based socket pacing inbits/sec (Linux only) - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bits
get-server-output (bool)
Name:get server output
Description:get results from server
Required:No
Type:bool
host (string)
Name:server host
Description:the hostname or IP address of the iperf3 server; defaults to localhost
Required:No
Default (JSON encoded):
"localhost"
Type:string
interval (int)
Name:interval
Description:seconds between periodic throughput reports
Required:No
Type:int
length (int)
Name:length
Description:length of buffer to read or write (default 128 KB for TCP, dynamic or 1460 for UDP) - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bytes
no-delay (bool)
Name:TCP/SCTP no delay
Description:set TCP/SCTP no delay, disabling Nagle's Algorithm
Required:No
Type:bool
nstreams (int)
Name:sctp nstreams
Description:number of SCTP streams
Required:No
Type:int
omit (int)
Name:omit first N seconds
Description:omit the first n seconds
Required:No
Type:int
pacing-timer (int)
Name:pacing timer
Description:set the timing for pacing, in microseconds (default 1000)
Required:No
Type:int
Units:miliseconds
parallel (int)
Name:parallel
Description:number of parallel client streams to run
Required:No
Type:int
port (int)
Name:port
Description:server port to listen on/connect to
Required:No
Type:int
reverse (bool)
Name:reverse
Description:run in reverse mode (server sends, client receives)
Required:No
Type:bool
sctp (bool)
Name:use SCTP protocol
Description:use the SCTP protocol for network traffic
Required:No
Required if the following fields are set:xbind, nstreams
Conflicts the following fields:udp
Type:bool
set-mss (int)
Name:maximum segment size
Description:set TCP/SCTP maximum segment size (MTU - 40 bytes) - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bytes
time (int)
Name:time
Description:time in seconds to transmit for (default 10 secs)
Required:No
Conflicts the following fields:bytes, blockcount
Type:int
Units:seconds
title (string)
Name:output prefix
Description:prefix every output line with this string
Required:No
Type:string
tos (int)
Name:IP type of service
Description:set the IP type of service, 0-255.
Required:No
Type:int
Minimum:0
Maximum:255
udp (bool)
Name:use UDP protocol
Description:use the UDP protocol for network traffic
Required:No
Required if the following fields are set:udp_counters_64bit
Conflicts the following fields:sctp
Type:bool
udp-counters-64bit (bool)
Name:UDP 64-bit counters
Description:use 64-bit counters in UDP test packets
Required:No
Type:bool
version4 (bool)
Name:IPv4 only
Description:only use IPv4
Required:No
Conflicts the following fields:version6
Type:bool
version6 (bool)
Name:IPv6 only
Description:only use IPv6
Required:No
Conflicts the following fields:version4
Type:bool
window (int)
Name:window size
Description:set window size / socket buffer size - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bytes
xbind (bool)
Name:sctp xbind
Description:bind SCTP association to links
Required:No
Type:bool
zerocopy (bool)
Name:zero copy
Description:use a 'zero copy' method of sending data
Required:No
Type:bool
Objects
ClientInputParams (object)
Type:object
Properties
affinity (string)
Name:affinity
Description:[n/n,m] set CPU affinity
Required:No
Type:string
Must match pattern:^\d+$|^\d+,\d+$
bind (string)
Name:bind
Description:bind to the interface associated with the address <host>
Required:No
Type:string
bitrate (int)
Name:bitrate
Description:target bitrate in bits/sec (0 for unlimited)(default 1 Mbit/sec for UDP, unlimited for TCP) (optional slash and packet count for burst mode) - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bits
blockcount (int)
Name:block count
Description:number of blocks (packets) to transmit - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Conflicts the following fields:time, bytes
Type:int
Units:bytes
bytes (int)
Name:bytes
Description:number of bytes to transmit - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Conflicts the following fields:time, blockcount
Type:int
Units:bytes
congestion (enum[string])
Name:congestion algorithm
Description:set TCP congestion control algorithm (Linux and FreeBSD only)
Required:No
Type:enum[string]
Values
  • YeAH: YeAH
  • bic: bic
  • cubic: cubic
  • htcp: htcp
  • reno: reno
  • vegas: vegas
  • westwood: westwood
connect-timeout (int)
Name:connect timeout
Description:timeout for control connection setup (ms)
Required:No
Type:int
cport (int)
Name:client port
Description:bind to a specific client port (TCP and UDP, default: ephemeral port)
Required:No
Type:int
dscp (int)
Name:dscp
Description:set the IP dscp value, 0-63
Required:No
Type:int
Minimum:0
Maximum:63
flowlabel (int)
Name:flow label
Description:set the IPv6 flow label (only supported on Linux)
Required:No
Type:int
forceflush (bool)
Name:force flush
Description:force flushing output at every interval
Required:No
Type:bool
format (enum[string])
Name:format
Description:[kmgtKMGT] format to report: kibi-, mibi, gibi, tebi- bits/Bytes
Required:No
Type:enum[string]
Values
  • G: G
  • K: K
  • M: M
  • T: T
  • g: g
  • k: k
  • m: m
  • t: t
fq-rate (int)
Name:fair-queuing rate
Description:enable fair-queuing based socket pacing inbits/sec (Linux only) - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bits
get-server-output (bool)
Name:get server output
Description:get results from server
Required:No
Type:bool
host (string)
Name:server host
Description:the hostname or IP address of the iperf3 server; defaults to localhost
Required:No
Default (JSON encoded):
"localhost"
Type:string
interval (int)
Name:interval
Description:seconds between periodic throughput reports
Required:No
Type:int
length (int)
Name:length
Description:length of buffer to read or write (default 128 KB for TCP, dynamic or 1460 for UDP) - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bytes
no-delay (bool)
Name:TCP/SCTP no delay
Description:set TCP/SCTP no delay, disabling Nagle's Algorithm
Required:No
Type:bool
nstreams (int)
Name:sctp nstreams
Description:number of SCTP streams
Required:No
Type:int
omit (int)
Name:omit first N seconds
Description:omit the first n seconds
Required:No
Type:int
pacing-timer (int)
Name:pacing timer
Description:set the timing for pacing, in microseconds (default 1000)
Required:No
Type:int
Units:miliseconds
parallel (int)
Name:parallel
Description:number of parallel client streams to run
Required:No
Type:int
port (int)
Name:port
Description:server port to listen on/connect to
Required:No
Type:int
reverse (bool)
Name:reverse
Description:run in reverse mode (server sends, client receives)
Required:No
Type:bool
sctp (bool)
Name:use SCTP protocol
Description:use the SCTP protocol for network traffic
Required:No
Required if the following fields are set:xbind, nstreams
Conflicts the following fields:udp
Type:bool
set-mss (int)
Name:maximum segment size
Description:set TCP/SCTP maximum segment size (MTU - 40 bytes) - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bytes
time (int)
Name:time
Description:time in seconds to transmit for (default 10 secs)
Required:No
Conflicts the following fields:bytes, blockcount
Type:int
Units:seconds
title (string)
Name:output prefix
Description:prefix every output line with this string
Required:No
Type:string
tos (int)
Name:IP type of service
Description:set the IP type of service, 0-255.
Required:No
Type:int
Minimum:0
Maximum:255
udp (bool)
Name:use UDP protocol
Description:use the UDP protocol for network traffic
Required:No
Required if the following fields are set:udp_counters_64bit
Conflicts the following fields:sctp
Type:bool
udp-counters-64bit (bool)
Name:UDP 64-bit counters
Description:use 64-bit counters in UDP test packets
Required:No
Type:bool
version4 (bool)
Name:IPv4 only
Description:only use IPv4
Required:No
Conflicts the following fields:version6
Type:bool
version6 (bool)
Name:IPv6 only
Description:only use IPv6
Required:No
Conflicts the following fields:version4
Type:bool
window (int)
Name:window size
Description:set window size / socket buffer size - accepts [KMGT] suffixes to indicate kibi-, mibi-, -gibi, or tebi-(2^10); integer input implies base unit (bits or bytes)
Required:No
Type:int
Units:bytes
xbind (bool)
Name:sctp xbind
Description:bind SCTP association to links
Required:No
Type:bool
zerocopy (bool)
Name:zero copy
Description:use a 'zero copy' method of sending data
Required:No
Type:bool

Outputs

error

Type:scope
Root object:ClientErrorOutput
Properties
error (string)
Required:Yes
Type:string
Objects
ClientErrorOutput (object)
Type:object
Properties
error (string)
Required:Yes
Type:string

success

Type:scope
Root object:ClientSuccessOutput
Properties
output (reference[ClientOutputCategories])
Required:Yes
Type:reference[ClientOutputCategories]
Referenced object:ClientOutputCategories
Objects
ClientOutputCategories (object)
Type:object
Properties
end (map[string,any])
Required:Yes
Type:map[string,any]
Key type
Type:string
Value type
Type:any
intervals (list[any])
Required:Yes
Type:list[any]
List items
Type:any
start (map[string,any])
Required:Yes
Type:map[string,any]
Key type
Type:string
Value type
Type:any
ClientSuccessOutput (object)
Type:object
Properties
output (reference[ClientOutputCategories])
Required:Yes
Type:reference[ClientOutputCategories]
Referenced object:ClientOutputCategories

iperf3 Server (server)

Runs the passive iperf3 server to allow benchmarks between the client and this server

Input

Type:scope
Root object:ServerAllParams
Properties
affinity (string)
Name:affinity
Description:[n/n,m] set CPU affinity
Required:No
Type:string
Must match pattern:^\d+$|^\d+,\d+$
bind (string)
Name:bind
Description:bind to the interface associated with the address <host>
Required:No
Type:string
forceflush (bool)
Name:force flush
Description:force flushing output at every interval
Required:No
Type:bool
format (enum[string])
Name:format
Description:[kmgtKMGT] format to report: kibi-, mibi, gibi, tebi- bits/Bytes
Required:No
Type:enum[string]
Values
  • G: G
  • K: K
  • M: M
  • T: T
  • g: g
  • k: k
  • m: m
  • t: t
interval (int)
Name:interval
Description:seconds between periodic throughput reports
Required:No
Type:int
port (int)
Name:port
Description:server port to listen on/connect to
Required:No
Type:int
run_duration (int)
Name:server run duration
Description:time in seconds to run the iperf3 server before exiting
Required:No
Default (JSON encoded):
600
Type:int
Objects
ServerAllParams (object)
Type:object
Properties
affinity (string)
Name:affinity
Description:[n/n,m] set CPU affinity
Required:No
Type:string
Must match pattern:^\d+$|^\d+,\d+$
bind (string)
Name:bind
Description:bind to the interface associated with the address <host>
Required:No
Type:string
forceflush (bool)
Name:force flush
Description:force flushing output at every interval
Required:No
Type:bool
format (enum[string])
Name:format
Description:[kmgtKMGT] format to report: kibi-, mibi, gibi, tebi- bits/Bytes
Required:No
Type:enum[string]
Values
  • G: G
  • K: K
  • M: M
  • T: T
  • g: g
  • k: k
  • m: m
  • t: t
interval (int)
Name:interval
Description:seconds between periodic throughput reports
Required:No
Type:int
port (int)
Name:port
Description:server port to listen on/connect to
Required:No
Type:int
run_duration (int)
Name:server run duration
Description:time in seconds to run the iperf3 server before exiting
Required:No
Default (JSON encoded):
600
Type:int

Outputs

error

Type:scope
Root object:ServerErrorOutput
Properties
error (string)
Required:Yes
Type:string
Objects
ServerErrorOutput (object)
Type:object
Properties
error (string)
Required:Yes
Type:string

success

Type:scope
Root object:ServerSuccessOutput
Properties
message (string)
Required:Yes
Type:string
Objects
ServerSuccessOutput (object)
Type:object
Properties
message (string)
Required:Yes
Type:string