Date created: Monday, March 27, 2017 4:36:43 PM. Last modified: Sunday, October 27, 2024 4:48:46 PM
'iperf' - Notes
Iperf3
By default, the client transmits and the server receives.
Multicast
iperf3 can't perform multicast tests but iperf2 can:
Server: iperf -B 239.1.1.1 -s -u -e -i 1
Client: iperf -c 239.1.1.1 -u -b 1g -e -i 1
QoS
Testing multiple QoS queues with multiple flows:
# AF DSCP TOS TOS-HEX # 0 0 0x00 # AF11 10 40 0x28 # AF21 18 72 0x48 # AF31 26 104 0x68 # AF41 34 136 0x88 # EF 46 184 0xB8 # CS6 48 192 0xC0
# CS7 56 224 0xE0 #client: iperf -c 10.10.10.10 -i 1 -p 5001 -t 3600 -w 64k -S 0x00 > 5001.txt & iperf -c 10.10.10.10 -i 1 -p 5002 -t 3600 -w 64k -S 0x28 > 5002.txt & iperf -c 10.10.10.10 -i 1 -p 5003 -t 3600 -w 64k -S 0x48 > 5003.txt & iperf -c 10.10.10.10 -i 1 -p 5004 -t 3600 -w 64k -S 0x68 > 5004.txt & iperf -c 10.10.10.10 -i 1 -p 5005 -t 3600 -w 64k -S 0x88 > 5005.txt & iperf -c 10.10.10.10 -i 1 -p 5006 -t 3600 -w 64k -S 0xB8 > 5006.txt & iperf -c 10.10.10.10 -i 1 -p 5007 -t 3600 -w 64k -S 0xC0 > 5007.txt & #server: iperf -s -B 10.10.10.10 -i 1 -w 64k -p 5001 > 5001.txt & iperf -s -B 10.10.10.10 -i 1 -w 64k -p 5002 > 5002.txt & iperf -s -B 10.10.10.10 -i 1 -w 64k -p 5003 > 5003.txt & iperf -s -B 10.10.10.10 -i 1 -w 64k -p 5004 > 5004.txt & iperf -s -B 10.10.10.10 -i 1 -w 64k -p 5005 > 5005.txt & iperf -s -B 10.10.10.10 -i 1 -w 64k -p 5006 > 5006.txt & iperf -s -B 10.10.10.10 -i 1 -w 64k -p 5007 > 5007.txt &
Testing 7 QoS queues with UDP instead of DSCP:
#servers:
iperf3 -s -p 5001 -i 1 -V -B 10.0.2.2
iperf3 -s -p 5002 -i 1 -V -B 10.0.2.2
iperf3 -s -p 5003 -i 1 -V -B 10.0.2.2
iperf3 -s -p 5004 -i 1 -V -B 10.0.2.2
iperf3 -s -p 5005 -i 1 -V -B 10.0.2.2
iperf3 -s -p 5006 -i 1 -V -B 10.0.2.2
iperf3 -s -p 5007 -i 1 -V -B 10.0.2.2
#clients:
iperf3 -V -i 1 -S 0 -T DSCP0 -c 10.0.2.2 -p 5001 -u -t 3600 -l 1472 -b 28m
iperf3 -V -i 1 -S 40 -T DSCP10 -c 10.0.2.2 -p 5002 -u -t 3600 -l 1472 -b 5m
iperf3 -V -i 1 -S 72 -T DSCP18 -c 10.0.2.2 -p 5003 -u -t 3600 -l 1472 -b 12m
iperf3 -V -i 1 -S 104 -T DSCP26 -c 10.0.2.2 -p 5004 -u -t 3600 -l 1472 -b 24m
iperf3 -V -i 1 -S 136 -T DSCP34 -c 10.0.2.2 -p 5005 -u -t 3600 -l 1472 -b 24m
iperf3 -V -i 1 -S 184 -T DSCP46 -c 10.0.2.2 -p 5006 -u -t 3600 -l 1472 -b 5m
iperf3 -V -i 1 -S 224 -T DSCP56 -c 10.0.2.2 -p 5007 -u -t 3600 -l 1472 -b 2m
In the above example a different DSCP value is used for each UP stream (to fall into each of the 7 QoS classes being tested). Assuming the connection is rate limited to 100Mbps, this will check the bandwidth guarentees for each traffic class, which have been configured as follows
# Best Effor class == 28% minimum guaranteed
# Application 4 class == 5% minimum guaranteed
# Application 3 class == 12% minimum guaranteed
# Application 2 class == 24% minimum guaranteed
# Application 1 class == 24% minimum guaranteed
# EF class == 5% max policed
# Network class == 2% minimum guaranteed
The iperf3 option "-l" when used in UDP mode specifies the UDP payload size. The iperf3 default payload size for UDP mode is the equivilent of "-l 8192" which is then fragmented at the IP layer (assuming a typical 1500 byte Ethernet MTU). 1 8KB UDP datagram becomes 5x 1514-byte Ethernet frames + 1x 834-byte frame.
The option "-l 1472" results in the following packet size:
# 1472 bytes UDP payload
# 8 bytes UDP
# 20 bytes IPv4
# == 1500 bytes of Ethernet payload (sent to the Kernel socket for Tx).
# Kernel adds (SA + DA + EthType + VLAN) Ethernet headers and sends to NIC for Tx:
# == 1518
# NIC adds 4 bytes for CRC and transmits:
# == 1522
iperf3 reports the bps value as pps * "-l" option value.
# -l 1472 == byte packet * 8 == 11776 bits.
# -b 11.8K == 11.8Kbps max Tx rate
The following limits iperf 3 to 1pps and the frame size on the wire will be 1522 bytes,as per above calculations. iperf3 reports 11.8Kbps:
iperf3 -c 10.0.2.2 -p 5001 -u -l 1472 -b 11.8K
[ ID] Interval Transfer Bandwidth Total Datagrams
[ 4] 0.00-1.00 sec 1.44 KBytes 11.8 Kbits/sec 1
ethtool reports the Tx rate as 12112 bps / 8 == 1514 bytes. It is excluding the VLAN tag + CRC (1522 * 8 == 12176 bits):
[ucpe_002 scripts]$ sudo ./eth_speed_bps.sh ens2f0
ens2f0: TX 12112 bps (1 pkts/s) RX 12112 bps (1 pkts/s)
Previous page: HTTP Servers
Next page: 'irssi' & 'screen' - Notes