本文转自:https://www.cnblogs.com/saneri/p/11169926.html
Iperf3 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失.对于每个测试,它都会报告带宽,丢包和其他参数,可在Windows、Mac OS X、Linux、FreeBSD等各种平台使用,是一个简单又实用的小工具。
软件下载地址: https://iperf.fr/iperf-download.php
安装iperf3
12345678 | 在CentOS 7上使用下列命令即可安装: # yum install iperf3 在ubuntu 上使用下列命令安装: # apt-get install iperf3 windows端安装: 下载解压安装包,进入dos切换到iperf3解压目录,执行iperf3即可运行. |
网络带宽测试
Iperf3也是C/S(客户端/服务器端)架构模式,在使用iperf3测试时,要同时在server端与client端都各执行一个程序,让它们互相传送报文进行测试。
我这边在ubuntu主机安装iperf3作为服务端,ip地址为192.168.1.43 ,本地windows pc机作为客户端,来做测试实验.
1. 首先在192.168.1.43 机器启动server端的程序:
saneri@saneri-VirtualBox:~$ iperf3 -s
2. 接着在本地windows PC服务器上执行client 端的程序:
C:\Users\iperf3>iperf3.exe -c 192.168.1.43
从打印的内容看,缺省参数下,Client将连接Server端的5201端口,持续向Server端发送数据,并统计出每秒传输的字节数、带宽、出现报文重传的次数、拥塞窗口(Congestion Window)大小,整个测试将持续10秒钟;最后将汇总10秒的平均数据,并给出发送和接收端的统计。
———————
接下来分析一下Server的测试输出结果:
Server端日志显示接收了来自192.168.1.71,源端口56569的测试请求。Client端连续进行了10秒的测试,并显示了每秒传输的字节数,带宽信息;测试结束后会汇总发送和接收的统计信息。在Client连接关闭之后会继续侦听5201端口。
———————
iperf3 所提供的选项非常多,以下介绍一些常用的参数。
服务器端命令行
其中:
-s 表示服务器端; -p 定义端口号; -i 设置每次报告之间的时间间隔,单位为秒,如果设置为非零值,就会按照此时间间隔输出测试报告,默认值为零
客户端命令行
其中,
-c 表示服务器的IP地址; -p 表示服务器的端口号; -t 参数可以指定传输测试的持续时间,Iperf在指定的时间内,重复的发送指定长度的数据包,默认是10秒钟. -i 设置每次报告之间的时间间隔,单位为秒,如果设置为非零值,就会按照此时间间隔输出测试报告,默认值为零; -w 设置套接字缓冲区为指定大小,对于TCP方式,此设置为TCP窗口大小,对于UDP方式,此设置为接受UDP数据包的缓冲区大小,限制可以接受数据包的最大值. --logfile 参数可以将输出的测试结果储存至文件中. -J 来输出JSON格式测试结果. -R 反向传输,缺省iperf3使用上传模式:Client负责发送数据,Server负责接收;如果需要测试下载速度,则在Client侧使用-R参数即可.
常用启动命令:
1234 | 服务端: saneri@saneri-VirtualBox:~$ iperf3 -s -p 12345 -i 1 客户端: C:\Users\iperf3>iperf3.exe -c 192.168.1.43 -p 12345 -i 1 -t 20 -w 100k |
windows图形界面版本的为jperf:
参考文档:https://blog.csdn.net/jinguangliu/article/details/82468482
本文转自:https://www.cnblogs.com/hjc4025/p/10438028.html
一、简介:
iperf3是一个网络速度测试工具,支持IPv4与IPv6,支持TCP、UDP、SCTP传输协议,可在Windows、Mac OS X、Linux、FreeBSD等各种平台使用,是一个简单又实用的小工具。因我已配置好yum源,因此执行yum install iperf3即可安装。安装好后,我已看一下iperf的使用参数,如图:
二、实验环境:
在实际测试中我的服务器有万兆网卡,IP如下所示:
Host177:100.192.168.177
Host178:100.192.168.178
Host179:100.192.168.179
Host186:100.192.168.186
三、测试过程
在这次测试中主要进行tcp与udp的对比测试,在测试前先说明一下在iperf3中有几个参数在tcp环境与udp环境中的区别,也就是在测试中需要对此参数要给定内容,避免iperf工具使用其默认的值,主要几项如下:
如图,参数若不指定-b带宽值会造成极大的区别,在测试环境中发现 -l 默认就使用128数值。
接下来首先以Host179为服务器端(服务器端启动参数是没有区别的):
以Host178为客户端进行tcp的测试(暂时不指定-l参数即缓冲区大小):
因测试环境有万兆网卡,于是我在这里指定了带宽-b 为万兆(后面还会进行千兆测试,会出现一个较为奇怪的现象),传输内容大小为100G。
再进行udp测试(暂时不指定-l参数即缓冲区大小):
进行udp测试时候,仅是多了一个参数-u即可。
下面进行千兆的测试,如下:
将-b后面跟着的值调小,这里udp的测试同样进行此操作,这里就不列出图片了,接下来我们关注一下测试结果。
四、测试结果
经测试后,可观察客户端下方的打印结果,如下:
tcp下以万兆带宽测试结果:
ucp下以万兆带宽测试结果:
tcp下以千兆带宽测试结果:
ucp下以千兆带宽测试结果:
通过观察此类结果可以清楚的发现在设定 –b 1000M (千兆)的时候,tcp和udp的传输100G文件所需时间相差不是很多,但当设定–b 10000M (万兆)的时候,两者相差的还是比较明显的,这也是前面提出的“奇怪的现象”。给人的感觉就是udp没有发挥万兆网卡的全部速率,在图中也有显示丢包率为51%。
通过网上的资料查询得知,udp丢包率高可能为缓冲区buffer有限制导致的,因此我于是进行了如下测试:
将udp缓冲区buffer调高,执行下面命令:
CentOS 7中默认buffer大小为212992,我在后面增加了2个0,约为放大100倍,这两条命令在服务器端和客户端都执行,然后下面在执行udp测试命令:
得出结果为:
可以看出丢包率得到了明显的改善,但识别出的带宽仍为6500M左右,离万兆还有一定的距离。
五、结论
经过上网查询学习得知,在带宽测试中通常采取udp模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽(万兆)作为数据发送速率进行测试,这样可以大体得出实际带宽的极限值,在测试环境中的带宽为6500左右,这也同样解释了上文提到的奇怪现象,并且在做实验中一定要注意测试命令的默认参数值,比如在本次测试中的tcp与udp测试的-b和-l两个参数,在使用默认参数的时候还是有着巨大的区别。
iperf3常用命令
本文转自:http://blog.sina.com.cn/s/blog_1323eee700102wply.html
服务端与客户端公用命令:
-p, –port 服务端监听或客户端连接的端口(客户端与服务端应该指定相同的端口,默认5201)
-f, –format 格式化带宽输出:Kbits, Mbits, Kbytes, Mbytes
-i, –interval 以秒为单位周期性输出带宽报告,默认显示时间间隔为1秒,0表示不显示
-F, –file name 传输或接收特定的文件(客户端从文件中读取然后写进网络,代替使用随机数据;服务端从网络读取然后写进文件,代替丢弃数据)
-B, –bind 绑定特定的接口
-V, –verbose 显示更多详细的输出
-J, –json 以JSON格式输出
–logfile f 把输出发送到一个日志文件
-d, –debug 显示调试输出信息
-v, –version 显示iperf的版本信息
-h, –help 显示iperf的帮助信息
服务端专用命令:
-s, –server 以server模式启动,默认TCP方式,例如 iperf3 -s
-D, –daemon 在后台以守护进程启动服务端
-I, –pidfile file 写PID文件
-1, –one-off 处理一个客户端连接,然后退出
客户端专用命令:
-c, –client 主机以client模式启动
-u, –udp 使用UDP而不是TCP
-b, –bandwidth 指定目标带宽(0表示无限制),UDP默认为1Mbit/sec,TCP无限制
-t, –time 以秒为单位指定传输时间,默认10秒
-n, –bytes 指定传输的字节数,指定字节传输完,传输过程结束(可以代替-t参数以说明何时结束传输)
-k, –blockcount 指定传输的数据包数(代替-t或-n参数)(-t, -n, -k参数都是指定传输结束的条件,所以不能同时指定)
-l, –len 读写缓冲区的大小(TCP默认128KB,UDP默认8KB)
–cport 绑定一个特定客户端端口(TCP与UDP 默认:临时端口)
-P, –parallel 运行的并行客户端流的数量
-R, –reverse 以颠倒模式启动(服务端发送,客户端接收)
-w, –window 设置窗口或者socket缓冲大小,默认8KB
-M, –set-mss 设置TCP/SCTP最大分片大小(MTU – 40bytes)
-N, –no-delay 设置TCP/SCTP 无延时
-4, –version4 仅使用IPv4协议
-6, –version6 仅使用IPv6协议
-S, –tos N 设置IP首部TOS字段服务类型
-Z, –zerocopy 使用发送数据的“zero copy”方法
-O, –omit N 省略最初的N秒
-T, –title str 在每个输出行显示str前缀
–get-server-output 从server处得到结果
–udp-counters-64bit 在UDP测试包中使用64位计数器
举例:
(1)向目的地址192.168.10.8、80号TCP端口,发一条TCP流,打印间隔为2s,发包时间为1000s
服务端:iperf3 -s -p 80 -i 2
客户端:iperf3 -c 192.168.10.8 -p 80 -i 2 -t 1000
(2)向目的地址192.168.10.8、5002端口发一udp流,打印间隔为2s,发包大小为200M
服务端:iperf3 -s -p 5002 -i 2
客户端:iperf3 -c 192.168.10.8 -u -p 5002 -i 2 -n 200M
评论