iperf命令是工具,是用于网络性能测试的工具,能测试TCP带宽质量,能测试UDP带宽质量,还能通过UDP测试报告网丢包率,还能通过UDP测试发包性能,是实用工具 。
目录
iperf安装
带宽测试(TCP、UDP分开测试)
网络收发包性能测试
iperf安装
能够径直经由官网去下载与之对应的系统版本来开展安装,(https://iperf.fr/iperf-download.php)
对于windows版的iPerf,将解压出来的iperf.exe复制到%systemroot%目录,再将cygwin1.dll复制到%systemroot%目录就可以了
2.对于linux版的iPerf,请使用如下命令安装
yum -y install iperf
带宽测试
1、针对TCP进行带宽性能测试
服务端命令:iperf -s -i 1 -p 3389
在客户端所执行的命令是,iperf ,其参数为 -c 且数值为 172.19.16.97 , -p 并且数值是 3389 , -i 同时数值为 1 。
当然也可以不指定端口号和报告间隔:
服务端:iperf -s
客户端:iperf -c 172.19.16.97
我们看个例子:
启动服务端:
root@m01 ~
# iperf -s
请你提供具体的句子内容,以便我按照要求进行改写。
服务器正在监听,监听的是TCP端口,该端口为5001 。
TCP窗口大小为85.3千字节,这是默认设置这个设定是默认的 ,是85.3千字节大小有着这样的数值并且默认。 表示为85.3千字节 ,是为默认状态 。 (默认,为85.3千字节)这是TCP窗口大小的默认值 。 (有85.3千字节的大小)此为默认 。 (默认状态下为85.3千字节) 。
------------------------------------------------------------
客户端发起测试:
# 仅进行客户端到服务端的单项测试
iperf -c 10.0.0.12 -t 30 -i 5
# 同时进行上传、下载测试(双向测试)
执行iperf,以它连接10.0.0.12,持续了整整30的时长,持续间隔为5,进行双程传输并加上-L 8083 。
# 自动的先进行上传测试;再进行下载测试
启用iperf,连接至10、0、0、12,设置时长为30秒,每隔5秒统计一次,以反向模式运行,监听端口为8083 。
上面的命令含义:
服务端的地址为10.0.0.12,测试的时间长度是30秒,每隔5秒就会报告一回测试结果。
-d 参数是同时指定上下行带宽测试,
- r属于往返测试模式,在完成客户端至服务端的带宽测试后,服务器会运用-L所指定的端口,以反向方式连接至客户端,进而开展服务端到客户端的带宽测试。
-L 客户端同时作为服务端的时候,为对端提供的测试端口。
参数小结:
-s 以服务端的模式启动iperf
-c 以客户端的的形式启动iperf
使用 -t 指定出测试时长,其后面跟着的数字所代表的便是秒数,上面所给出的例子呈现出的是持续进行测试时长为 30 秒 。
-i 指定报告的间隔时间,上例是每5秒输出一次测试结果

-d 同时进行上下行带宽测试。
- L 用于指定,服务端反向连接客户端时所使用的端口,此端口也就是,客户端同时作为服务端时。所提供的可用于连接的端口。
-w 指定窗口大小进行测试
输出结果如下:
我们,10.0.0.14 是服务端,10.0.0.3 是客户端。上面截图,我们进行的是同时上下行测试,所以,红色框里的,代表客户端到服务端的带宽,代表服务端到客户端的下行带宽。
2、针对UDP进行带宽性能测试
采用udp模式进行带宽性能压测,是因为其能测出极限带宽呢,还能测出时延抖动以及丢包率。在开展测试之际,首先会以链路理论带宽当作数据发送速率来实施测试,举例来说,从客户端到服务器之间链路的理论带宽是100Mbps,会先用-b 100M展开测试,接着依据测试结果(涵盖实际带宽、时延抖动与丢包率),再把实际带宽作为数据发送速率去进行测试,此时会发觉时延抖动和丢包率比第一次要好很多,多次重复测试,便能得出稳定的实际带宽。
服务端命令:
iperf -u -s
客户端命令:
iperf,使用UDP协议,连接到10.0.0.14,设置带宽为1000M,每隔3秒进行一次数据传输,。
输出结果:
用来进行上面测试的服务器配备的是千兆网卡,我们察觉到,在以2000M的速率去发送数据包的时候,会存在丢包的状况 。
参数小结:
-b:设置UDP的发送带宽,单位bit/s
网络收发包性能测试
借助UDP发包测试,能够以-b xxxM这般的形式,对带宽性能状况予以测试,并且亦可凭借-b xxxpps,来测试收发包性能状况 。
网络收发包量进行测试时,会受到缓冲区大小的影响,倘若默认的缓冲区相对较小,就会导致服务器出现到达高pps丢包的现象,在此建议于测试前对缓冲区大小作出调整。与此同时,因为UDP默认发包大小是1470字节,当发包量处于很高的情形下就会超出服务器的带宽限制,因而在此需要通过-l来指定发包大小,本次测试采用-l 100bit 。
1、调整UDP缓冲区大小
vi /etc/sysctl.conf
添加
该句无法改写,此为编程相关的特定配置语句,有其固定格式及意义,不能随意改变其表达形式 。
将net.core.rmem_default的值转变为8388608 ,这一行为是在网络配置的范畴框架之内,针对核心部分也就是net.core的内存相关默认设置所展开的一种调整操作 。
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
然后执行sysctl -p 使得参数生效
sysctl -p
2、进行测试
服务端命令
iperf -u -s -i 1 -p 3389
客户端命令
iperf,-u参数,-c参数值为172.19.16.97,-b参数设置为300000pps,-l参数值为100bit,-i参数值为1,-p参数值为3389 。
可以发现,在通过测试进行30Wpps收发包测试时,不存在丢包现象,而当把收发包测试提升到32Wpps时,便已然开始出现丢包现象,由此能够断定,当前网络的pps为30W 。
参数汇总:
-s 以服务端的模式启动iperf
-c 以客户端的的形式启动iperf
-t 指定测试时长,后面的数字代表秒数,上面的例子是持续测试30s
-i 指定报告的间隔时间,上例是每5秒输出一次测试结果
-d 同时进行上下行带宽测试。
-L 用来指定服务端反向连接客户端的端口(即客户端同时作为服务端,提供的可连接端口)
-w 指定窗口大小进行测试
-b 设置UDP的发送带宽,单位bit/s
-l 指定包大小,TCP默认8k,UDP默认1470字节