1.官网及下载路径:
iperf3 homepage at: http://software.es.net/iperf/
Report bugs to: https://github.com/esnet/iperf
2.iperf3命令选项
[ubuntu @meta]$ iperf3 iperf3: parameter error - must either be a client (-c) or server (-s) Usage: iperf [-s|-c host] [options] iperf [-h|--help] [-v|--version] Server or Client: -p, --port # server port to listen on/connect to -f, --format [kmgKMG] format to report: Kbits, Mbits, KBytes, MBytes -i, --interval # seconds between periodic bandwidth reports -F, --file name xmit/recv the specified file -A, --affinity n/n,m set CPU affinity -B, --bind <host> bind to a specific interface -V, --verbose more detailed output -J, --json output in JSON format -d, --debug emit debugging output -v, --version show version information and quit -h, --help show this message and quit Server specific: -s, --server run in server mode -D, --daemon run the server as a daemon Client specific: -c, --client <host> run in client mode, connecting to <host> -u, --udp use UDP rather than TCP -b, --bandwidth #[KMG][/#] target bandwidth in bits/sec (0 for unlimited) (default 1 Mbit/sec for UDP, unlimited for TCP) (optional slash and packet count for burst mode) -t, --time # time in seconds to transmit for (default 10 secs) -n, --bytes #[KMG] number of bytes to transmit (instead of -t) -k, --blockcount #[KMG] number of blocks (packets) to transmit (instead of -t or -n) -l, --len #[KMG] length of buffer to read or write (default 128 KB for TCP, 8 KB for UDP) -P, --parallel # number of parallel client streams to run -R, --reverse run in reverse mode (server sends, client receives) -w, --window #[KMG] TCP window size (socket buffer size) -C, --linux-congestion <algo> set TCP congestion control algorithm (Linux only) -M, --set-mss # set TCP maximum segment size (MTU - 40 bytes) -N, --nodelay set TCP no delay, disabling Nagle's Algorithm -4, --version4 only use IPv4 -6, --version6 only use IPv6 -S, --tos N set the IP 'type of service' -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 -T, --title str prefix every output line with this string --get-server-output get results from server [KMG] indicates options that support a K/M/G suffix for kilo-, mega-, or giga- iperf3 homepage at: http://software.es.net/iperf/ Report bugs to: https://github.com/esnet/iperf
3.iperf3的测试例子
测试1: 一台电脑本地回环测试 打开两个终端t1和t2,在t1中输入命令:iperf3 -s 在t2中输入命令: iperf3 -c 127.0.0.1 -t 5 本例中t2向t1发送5秒中的数据包
测试2: 一台电脑的实际网卡: 打开两个终端t1和t2,在t1中输入命令:iperf3 -s 在t2中输入命令: iperf3 -c 10.219.119.21
测试3: 两台电脑之间发包测试,在电脑A中打开终端t1,在电脑B中打开终端t2,确保两台电脑在同一个局域网中并假设t1的IP地址为192.168.1.123,t2的IP地址为192.168.1.124 在t1中输入命令: iperf3 -s 在t2中输入命令: iperf3 -c 192.168.1.123 -t 5 如果出现错误iperf3: error - unable to connect to server: No route to host,请修改电脑A的防火墙规则。 防火墙规则修改方法: 防火墙会阻止两台电脑之间的通信。centos7.0自带的防火墙为firewalld,可以先把firewalld删除,再安装iptalbes。 在t1中输入以下两条的命令来停用firewalld: 1.删除firewalld的命令如下 sudo systemctl stop firewalld //关闭 sudo systemctl disable firewalld //禁止开机启动 2.安装iptables的命令如下 sudo yum install -y iptables-services.x86_64 iptables-devel.x86_64 重新测试iperf3,在t1中输入命令: sudo iptables -I INPUT 1 -s 192.168.1.124 -j ACCEPT sudo service iptables save iperf3 -s 在t2中输入命令: iperf3 -c 192.168.1.123 -t 5
3. Apple手机测试 开发板host,ip:172.27.0.25,App手机做client: 测试UDP: 开发板:# iperf -V -s -u 手机:iperf -p 5001 -l 1448 -w 131072 -i 1.0 -u -c 172.27.0.25 -t 10.0 -b 100m 测试TCP: 开发板:# iperf -V -s 手机:iperf -p 5001 -l 131072 -w 131072 -i 1.0 -c 172.27.0.25 -t 10.0 开发板client,App手机做service,ip:172.27.0.165 测试TCP: 开发板:# iperf -c 172.27.0.165 -w 128k -t 10.0 -i 1.0 -p 6001 手机:# iperf -p 6001 -l 131072 -w 131072 -i 1.0 -s 测试UDP: 开发板:# iperf -c 172.27.0.165 -w 128k -t 10.0 -i 1.0 -p 6001 -l 1448 -u -b 50m 手机:# iperf -p 6001 -l 1448 -w 131072 -i 1.0 -u -s
4.iperf3卸载
查看所有已经安装的软件:
sudo yum list installed
删除iperf3:
sudo yum -y remove iperf3.x86_64
5.软件包中的test_command.sh
#!/bin/sh # # This is a set of commands to run and verify they work before doing a new release. # Eventually they should also use the -J flag to generate JSON output, and a program should # be written to check the output. # Be sure to test both client and server on Linux, BSD, and OSX # if [ $# -ne 1 ] then echo "Usage: `basename $0` hostname" exit $E_BADARGS fi set -x host=$1 # basic testing ./src/iperf3 -c $host -V -t 5 -T "test1" ./src/iperf3 -c $host -u -V -t 5 # omit mode ./src/iperf3 -c $host -i .3 -O 2 -t 5 # JSON mode ./src/iperf3 -c $host -i 1 -J -t 5 # force V4 ./src/iperf3 -c $host -4 -t 5 ./src/iperf3 -c $host -4 -u -t 5 # force V6 ./src/iperf3 -c $host -6 -t 5 ./src/iperf3 -c $host -6 -u -t 5 # parallel streams ./src/iperf3 -c $host -P 3 -t 5 ./src/iperf3 -c $host -u -P 3 -t 5 # reverse mode ./src/iperf3 -c $host -P 2 -t 5 -R ./src/iperf3 -c $host -u -P 2 -t 5 -R # zero copy ./src/iperf3 -c $host -Z -t 5 ./src/iperf3 -c $host -Z -t 5 -R # window size ./src/iperf3 -c $host -t 5 -w 8M # -n flag ./src/iperf3 -c $host -n 5M ./src/iperf3 -c $host -n 5M -u -b1G # conflicting -n -t flags ./src/iperf3 -c $host -n 5M -t 5 # -k mode ./src/iperf3 -c $host -k 1K ./src/iperf3 -c $host -k 1K -u -b1G # CPU affinity ./src/iperf3 -c $host -A 2/2 ./src/iperf3 -c $host -A 2/2 -u -b1G # Burst mode ./src/iperf3 -c $host -u -b1G/100 # change MSS ./src/iperf3 -c $host -M 1000 -V # test congestion control option (linux only) ./src/iperf3 -c $host -C reno -V
6. 若网络媒体出现卡顿可以是用iperf测试卡顿时网络的带宽,以定位是否是底层问题。