一、简介:
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两个参数,在使用默认参数的时候还是有着巨大的区别。