常用的iperf3
命令和说明用例:
命令格式:
iperf3 [options] -c <server_ip>
一、简要的说明用例:
-
基本测试:
iperf3 -c 192.168.1.100
连接到服务器并进行基本的带宽测试。 -
指定端口号:
iperf3 -c 192.168.1.100 -p 5201
连接到服务器的特定端口号进行测试。 -
指定测试时间:
iperf3 -c 192.168.1.100 -t 30
设置测试持续时间(单位为秒)。 -
设置带宽限制:
iperf3 -c 192.168.1.100 -b 10M
限制带宽的最大速度(单位为bit/s)。 -
反向测试:
iperf3 -c 192.168.1.100 -R
从服务器到客户端进行反向测试。 -
多线程测试:
iperf3 -c 192.168.1.100 -P 5
使用多个线程进行测试以提高带宽利用率。 -
UDP测试:
iperf3 -c 192.168.1.100 -u
使用UDP协议进行测试。 -
JSON格式输出:
iperf3 -c 192.168.1.100 -J
将结果以JSON格式输出。 -
帮助命令:
iperf3 --help
查看iperf3的帮助信息。
二、详细的说明用例:
1、Iperf的工作模式
Iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、Wi-Fi网络等。在工作模式上,iperf运行于服务器、客户端模式下,其服务器端主要用于监听到达的测试请求,而客户端主要用于发起测试连接会话,因此要使用iperf至少需要两台服务器,一台运行在服务器模式下,另一台运行在客户端模式下。
在完成iperf安装后,执行“iperf3 –h”即可显示iperf的详细用法。iperf的命令行选项共分为三类,分别是客户端与服务器端公用选项、服务器端专用选项和客户端专用选项。
2、Iperf常用参数(测试够用)
(1)-s,–server:iperf服务器模式,默认启动的监听端口为52011,eg:iperf -s
(2)-c,–client host:iperf客户端模式,host是server端地址,eg:iperf -c 222.35.11.23
(3)-i,–interval:指定每次报告之间的时间间隔,单位为秒,eg:iperf3 -c 192.168.12.168 -i 2
(4)-p,–port:指定服务器端监听的端口或客户端所连接的端口,默认是34620端口。
(5)-u,–udp:表示采用UDP协议发送报文,不带该参数表示采用TCP协议。
(6)-l,–len:设置读写缓冲区的长度,单位为 Byte。TCP方式默认为8KB,UDP方式默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。
(7)-b,–bandwidth [K|M|G]:指定UDP模式使用的带宽,单位bits/sec,默认值是1 Mbit/sec。
(8)-t,–time:指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒。
(9)-A:CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度。
3、通用参数(Server端和Client端共用)
(1)-f,–farmat [k|m|g|K|M|G]:指定带宽输出单位,“[k|m|g|K|M|G]”分别表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes显示输出结果,默认Mbits,eg:iperf3 -c 192.168.12.168 -f M
(2)-p,–port:指定服务器端监听的端口或客户端所连接的端口,默认是34620端口。
(3)-i,–interval:指定每次报告之间的时间间隔,单位为秒,eg:iperf3 -c 192.168.12.168 -i 2
(4)-F:指定文件作为数据流进行带宽测试。例如:iperf3 -c 192.168.12.168 -F web-ixdba.tar.gz
4、Server端专用参数
(1)-s,–server:iperf服务器模式,默认启动的监听端口为52011,eg:iperf -s
(2)-c,–client host:如果iperf运行在服务器模式,并且用-c参数指定一个主机,那么iperf将只接受指定主机的连接。此参数不能工作于UDP模式。
(3)-D:Unix平台下将Iperf作为后台守护进程运行。在Win32平台下,Iperf将作为服务运行。
(4)-R:卸载Iperf服务(仅用于Windows)。
(5)-o:重定向输出到指定文件(仅用于Windows)。
(6)-P,–parallel:服务器关闭之前保持的连接数。默认是0,这意味着永远接受连接。
5、Client端专用参数
(1)-c,–client host:iperf客户端模式,host是server端地址,eg:iperf -c 222.35.11.23
(2)-u,–udp:表示采用UDP协议发送报文,不带该参数表示采用TCP协议。
(3)-b,–bandwidth [K|M|G]:指定UDP模式使用的带宽,单位bits/sec,默认值是1 Mbit/sec。
(4)-t,–time:指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒。
(5)-l,–len:设置读写缓冲区的长度,单位为 Byte。TCP默认为8KB,UDP默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。
(6)-n,–num [K|M|G]:指定传输数据包的字节数,例如:iperf3 -c 192.168.12.168 –n 100M
(7)-P,–parallel:指定客户端与服务端之间使用的线程数。默认是1个线程。需要客户端与服务器端同时使用此参数。
(8)-w,–window:指定套接字缓冲区大小,在TCP方式下,此设置为TCP窗口的大小。在UDP方式下,此设置为接受UDP数据包的缓冲区大小,用来限制可以接收数据包的最大值
(9)-B,–bind:用来绑定一个主机地址或接口,这个参数仅用于具有多个网络接口的主机。在UDP模式下,此参数用于绑定和加入一个多播组。
(10)-M,–mss:设置TCP最大信息段的值
(11)-N,–nodelay:设置TCP无延时
(12)-V:绑定一个IPv6地址。
(13)-d,–dualtest:运行双测试模式。将使服务器端反向连接到客户端,使用-L参数中指定的端口(或默认使用客户端连接到服务器端的端口)。使用参数-r以运行交互模式。
(14)-L,–listenport:指定服务端反向连接到客户端时使用的端口。默认使用客户端连接至服务端的端口。
(15)-r,–tradeoff:往复测试模式。当客户端到服务器端的测试结束时,服务器端反向连接至客户端。当客户端连接终止时,反向连接随即开始。如果需要同时进行双向测试,请尝试-d参数。
6、其他参数
(1)-h,–help:显示命令行参考并退出。
[root]# iperf3 -hUsage: iperf3 [-s|-c host] [options] iperf3 [-h|--help] [-v|--version]
(2)-v,–version:显示版本信息和编译信息并退出。
说明用例:
1、环境准备:
(1)Server端IP地址:192.168.31.16
(2)Server端IP地址:192.168.31.179
2、测试TCP吞吐量
(1)Server端开启iperf的服务器模式,指定TCP端口:
iperf3 -s -i 1 -p 5201
-----------------------------------------------------------
Server listening on TCP port 5201
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
(2)Client端启动iperf的客户端模式,连接服务端
iperf -c 192.168.31.16 -i 1 -t 60 -p 5201
------------------------------------------------------------
Client connecting to 192.168.31.16, TCP port 5201
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.31.179 port 50616 connected with 192.168.31.16 port 5201
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
(3)Server端监听结果
------------------------------------------------------------
Server listening on TCP port 34620 TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.31.16 port 5201 connected with 192.168.31.179 port 34622
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
① Interval表示时间间隔。
② Transfer表示时间间隔里面转输的数据量。
③ Bandwidth是时间间隔里的传输速率。
(4)测试多线程TCP吞吐量
如果没有指定发送方式,iPerf客户端只会使用单线程。
iperf3 -c 192.168.31.16 -P 30 -t 60
(5)进行上下行带宽测试(双向传输)
iperf3 -c 192.168.31.16 -d -t 60
(6)停止iperf3服务进程
要停止iperf3服务进程,请按CTRL+z
或CTRL+c
建议在Server端执行sar
命令来统计实际收到的包并作为实际结果:
sar -n DEV 1 320
3、测试UDP吞吐量
带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
(1)Server端开启iperf的服务器模式,指定UDP端口:
iperf3 -s -i 1 -p 521
------------------------------------------------------------
Server listening on port 521
------------------------------------------------------------
(2)Client端启动iperf的客户端模式,连接服务端
iperf3 -u -c 192.168.31.16 -b 100m -t 60 -p 521
------------------------------------------------------------
Client connecting to 192.168.31.16, port 521
------------------------------------------------------------
[ 3] local 192.168.31.179 port 50616 connected with 192.168.31.16 port 521
[ ID] Interval Transfer Bandwidth TotalDatagrams
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec 82
(3)Server端监听结果
------------------------------------------------------------
Server listening on port 521
------------------------------------------------------------
[ 4] local 192.168.31.16 port 5201 connected with 192.168.31.179 port 50616
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec 0.007 ms 0/82 (0%)
① Jitter为抖动,在连续传输中的平滑平均值差。
② Lost为丢包数量。
③ Total Datagrams为包数量。
(4)测试多线程UDP吞吐量
如果没有指定发送方式,iPerf
客户端只会使用单线程。
iperf3 -u -c 192.168.1.1 -b 5M -P 30 -t 60
(5)进行上下行带宽测试(双向传输)
iperf3 -u -c 192.168.1.1 -b 100M -d -t 60