本文转自: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://wenku.baidu.com/view/521c7017ed630b1c58eeb537.html

参考文档:https://blog.csdn.net/jinguangliu/article/details/82468482

iperf3网络测试工具

本文转自: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