iperf是另外一款用于流量测试的软件,主要运行于Windows系统和安卓系统的手机/PAD(IOS系统下载需要收费)。

一个工作在Server模式,另外一个工作在Client模式,输入Server的测试ip地址就可以测试从Client到Server方向的流量,测试时通过改变设备的工作模式,来完成上下行的流量测试。

1.iperf安装

1.1下载地址:https://iperf.fr/iperf-download.php

1.2  linux环境安装,使用命令安装

#gunzip –c iperf-<version>.tar.gz | tar –xvf -

#cd iperf-<version>

#./configure

#make

#make install

1.3 windows环境使用,直接将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录(根目录)即可,还要进入iperf当前文件夹敲命令。

2. Iperf主要功能

2.1.TCP

测量网络带宽

报告MSS/MTU值的大小和观测值

支持TCP窗口值通过套接字缓冲

当P线程或Win32线程可用时,支持多线程。客户端与服务端支持同时多重连接

2.2.UDP

客户端可以创建指定带宽的UDP流

测量丢包

测量延迟

支持多播

当P线程可用时,支持多线程。客户端与服务端支持同时多重连接(不支持Windows)

2.3.其他

在适当的地方,选项中可以使用K(kilo-)和M(mega-)。例如131072字节可以用128K代替。

可以指定运行的总时间,甚至可以设置传输的数据总量。

在报告中,为数据选用最合适的单位。

服务器支持多重连接,而不是等待一个单线程测试。

在指定时间间隔重复显示网络带宽,波动和丢包情况。

服务器端可作为后台程序运行。

服务器端可作为Windows 服务运行。

使用典型数据流来测试链接层压缩对于可用带宽的影响。

支持传送指定文件,可以定性和定量测试。

2.4参数介绍

备注:参数区分大小写

3.网络带宽测试

使用iperf3测试时,要同时在server端与client端都各执行一个程序,让它们互相传送报文进行测试。发包测试需要分为UDP测试与TCP测试,其中服务端需要用-u命令去区分监听协议。TCP协议测试不能计算出时延与丢包率,而且还不能指定发送带宽。

3.1测试单线程TCP传输速度

服务器启动:iperf3 –s –p 54321 -i 1

启动客户端输入:iperf3–c 10.101.70.247 –p 54321–i 1 –t 10 –w 10K

-c:客户端模式,后接服务器ip

-p:后接服务端监听的端口

-i:设置带宽报告的时间间隔,单位为秒

-t:设置测试的时长,单位为秒

-w:设置tcp窗口大小,一般可以不用设置,默认即可

Interval表示时间间隔。Transfer表示时间间隔里面转输的数据量。Bandwidth是时间间隔里的传输速率。最后一行是本次测试的统计。测试可知带宽平均为74.0Mbit/sec。

参数说明:-t改变运行的时间,-i改变输出频率 

(网络速度单位换算https://wenku.baidu.com/view/bab6102dbd64783e09122b1d.html

3.2测试多线程TCP传输速度

启动客户端输入:iperf3–c 10.101.70.247–i 1 –t 5 –P 3

参数说明-P参数来设置多线程的数目,通过使用多线程,可以在一定程度上增加网络的吞吐量-n指定要发送的数据量。使用-n参数后,-t参数失效,传输完指定大小的数据包后,自动结束。

通过-P参数开启了3个线程,从传输时间上看,传输10M的数据,消耗时间为1.07秒,比之前单线程的传输时间少了一点点,在平均带宽速率上,从之前单线程的73.4Mbits/sec提高到73.4Mbits/sec,从这个结果可以看出,多线程对网络传输性能有提高。

3.3测试单线程UDP传输速度

服务器启动:iperf3 -s -i 1

启动客户端输入:iperf3 –c 10.101.70.247 -i 1 -t 5 -u –b 50M

-c:客户端模式,后接服务器ip
-p:后接服务端监听的端口
-i:设置带宽报告的时间间隔,单位为秒
-t:设置测试的时长,单位为秒
-b:设置udp的发送带宽,单位bit/s
-u : 设置UDP

要获得带宽数据,需要通过-b不断在client端增加带宽值,直到server端出现轻微的丢包为止,此时server端显示的带宽就是被测系统的吞吐量。

Interval表示时间间隔。Transfer表示时间间隔里面转输的数据量。Bandwidth是时间间隔里的传输速率。Jitter为抖动,lost/total为丢包数量,Datagrams为包数量。

3.4测试多线程UDP传输速度

启动客户端输入:iperf3 -c 10.101.70.247 –p 54321 -i 1 -t 4 -u -P 3 –b 30M

4. 测试UDP丢包和延迟

iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。通过-u参数即可测试UDP应用的传输性能。

l Iperf测试UDP性能时,客户端可以指定UDP数据流的速率。客户端发送数据时,将根据客户端提供的速率计算数据报发送之间的时延。

l 客户端还可以指定发送数据报的大小。每个发送的数据报包含一个ID号,用来唯一标识报文,服务器端根据该ID号来确定数据报丢失和乱序。

l 当把UDP报文大小设置可以将整个报文放入IP层的包(packet)内时,那么UDP所测得的报文丢失数据即为IP层包的丢失数据,这提供了一个有效的测试包丢失情况的方法。

l 数据报传输延迟抖动 (Jitter)的测试由服务器端完成,客户发送的报文数据包含有发送时间戳,服务器端根据该时间信息和接收到报文的时间戳来计算传输延迟抖动。传输延迟抖动反映传输过程中是否平滑。由于它是一个相对值,所以并不需要客户端和服务器端时间同步

启动客户端输入:iperf3 -c 10.101.70.247 -u -b 100M –n 2G

Jitter列表示抖动时间,或者称为传输延迟,Lost/Total列表示丢失的数据报和总的数据报数量,后面的80%是平均丢包的比率,Datagrams列显示的是总共传输数据报的数量。

5.Iperf工作原理

Iperf主要的功能是测试基于特定路径的TCP连接的性能,我们知道TCP连接调整最基本的措施是调整TCP窗口的大小,窗口大小控制在任何节点网络中可以存在的数据大小。如果该值太小,发送者将会在某段时间处于空闲状态,从而影响发送的性能。TCP窗口大小的理论值为链路瓶颈带宽与往返时延的乘积:

TCP_Window=Bottleneck_Bandwidth*Round_Trip_Time

例如链路瓶颈带宽为45Mbps,往返时延为42ms(可以通过ping来测试),那么窗口的理论值为:

45Mbps*42ms=(45*e6)*(42*e-3)=1890000 bits=230KByte

调节窗口大小即可以理论值为基准,在该值上慢慢增大或减少,即可获得最好的结果。

Iperf测试TCP带宽的原理较简单,即在客户端和服务器端建立连接(三次握手)后,客户端发送一定大小的数据报,并记下发送的时间, 或者客户端在一定的时间内发送数据,并记下发送的总数据。带宽的大小等于发送的总数据除以发送的总时间。对服务器端来说,就是在连接建立时间内,接收的总数据除以所花时间即为服务器端所测得的带宽。MSS的大小通过TCP内核接口函数直接获得。

Iperf测试UDP的性能时,客户端可以指定UDP数据流的速率。客户端发送数据时,将根据客户提供的速率计算数据报发送之间的时延。另外客户还可以指定发送数据报的大小。每个发送的数据报包含一个ID号,用来惟一地标识该报文。服务器端则根据该ID号来确定数据报丢失和乱序。当把UDP报文大小设置可以将整个报文放入IP层的包(packet)内时,那么UDP所测得的报文丢失数据即为IP层包的丢失数据。这提供了一个有效的测试包丢失情况的方法。数据报传输延迟抖动 (Jitter)的测试由服务器端完成,客户发送的报文数据包含有发送时间戳,服务器端根据该时间信息和接收到报文的时间戳来计算传输延迟抖动。传输延迟抖动反映传输过程中是否平滑。由于它是一个相对值,所以并不需要客户端和服务器端时间同步。


参数说明

-s 以server模式启动,eg:iperf –s 。Server端为数据的接收端。

-c host以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23 。Client端为数据的发出端。

通用参数

-f [kmKM] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K

-i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2

-l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16

-m 显示tcp最大mtu值

-o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o ciperflog.txt

-p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999

-u 使用udp协议

-w 指定TCP窗口大小,默认是8KB

-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)

-C 兼容旧版本(当server端和client端版本不一样时使用)

-M 设定TCP数据包的最大mtu值

-N 设定TCP不延时

-V 传输ipv6数据包

server专用参数

-D 以服务方式运行ipserf,eg:iperf -s -D

-R 停止iperf服务,针对-D,eg:iperf -s -R

client端专用参数

-d 同时进行双向传输测试

-n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000

-r 单独进行双向传输测试

-t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5

-F 指定需要传输的文件

-T 指定ttl值

实例:

使用 iperf -s 命令将 Iperf 启动为 server 模式,在客户机上使用 iperf -c启动client模式。

iperf -c 59.125.103.56 -f K -i 2 -w 300K

设定报告间隔为2秒,服务器端和客户端的TCP窗口都开到300KB

iperf -c 59.125.103.56 -f K -i 2 -w 300K –n 1000000

测试传输约1MB数据

iperf -c 59.125.103.56 -f K -i 2 -w 300K –t 36

测试持续36秒

iperf -c 59.125.103.56 -f K -i 2 -w 300K -n 10400000 –d

测试双向的传输

iperf -c 59.125.103.56 -f K -i 2 -w 300K –u

UDP测试

其中 -i 参数的含义是周期性报告的时间间隔(interval),单位为秒;在上面的例子中,表示每隔2秒报告一次带宽等信息。

iperf—流量测试的更多相关文章

  1. APP的CPU,内存,耗电,流量测试工具

    APP的CPU,内存,耗电,流量测试工具下载地址,后续文章会介绍如何使用Emmagee.itest.gt APP应用的CPU,内存,耗电,流量调查 可和同类产品比较,使用GT等工具:CPU靠syste ...

  2. iperf 一个测试网络吞吐的工具

    在分布式文件系统开发和测试过程中,我们经常需要测试真实的网络带宽,来进行估测分布式系统的传输性能,所以我们要对现有的网络进行测试:Iperf 是一个网络性能测试工具.IPerf可以测试最大的TCP和U ...

  3. Android应用流量测试

    工具 GT(中文产品名称:随身调):是腾讯出品的开源调试工具,本次测试中用其进行手机的流量统计和抓包.请在Android手机上安装GT应用(可以通过官网或应用宝下载). Wireshark:抓包的分析 ...

  4. GT-----如何做Android应用流量测试?

    1.如何判断一个应用的流量偏高? 如果看流量的绝对值看不出高低,那就找几个同类型的产品对比一下,如果完成同样的事物,被测应用比同类产品高很多,那就偏高了,可能有优化的空间. 2.如何找到有效的优化点? ...

  5. AnyProxy做App网络流量测试

    前言: AnyProxy是一个开放式的HTTP代理服务器.Github主页:[https://github.com/alibaba/anyproxy]主要特性包括: 基于Node.js,开放二次开发能 ...

  6. App流量测试--使用安卓自身提供的TCP收发长度统计功能

    在Linux系统有3个地方保存流量统计文件,对于Android系统同样也适用: (1)在/proc/net/dev下可以查看各个网络接口的收发流量  (等同adb shell cat /proc/pi ...

  7. diffy 方便的bug 以及流量测试系统

    diffy 是twiiter 开源的流量以及bug 查找系统 参考使用图 几点说明 使用diffy我们需要三个角色 candidate instance 候选实例,运行新的代码 primary ins ...

  8. 使用Iperf工具测试android系统网络wifi的吞吐量wifithrougput

    http://blog.csdn.net/bingxuebage/article/details/7534655 服务端:./iperf3 -s &客户端:./iperf3 -c 10.15. ...

  9. linux测试带宽命令,Linux服务器网络带宽测试iperf

    linux测试带宽命令,Linux服务器网络带宽测试iperf必须先运行iperf serveriperf -s -i 2客户端iperf -c 服务端IP地址 iperf原理解析 iperf工具可以 ...

随机推荐

  1. Easyui 验证验证扩展,限制combobox 只能输入选项内容

    $.extend($.fn.validatebox.defaults.rules, { CHS: { validator: function (value, param) { return /^[\u ...

  2. 跑起来JEE论坛、商城和网站的经验总结

    前言:昨天我们老大给我分配了几个任务,让我把几个公司的项目运行起来跑一下,几个项目都是JEE上开源的,三个项目,一个网站内容系统.一个BBS论坛.一个jspgou商城,这三个都是开源的,倒腾了两天,今 ...

  3. js spread object

    What’s is the benefit / drawback of these two alternatives? Using object spread options = {...option ...

  4. Subband Decomposition

    子带分解. 例如语音信号是宽带信号,根据奈奎斯特采样定理,采样率为16kHz的语音信号的有效带宽是8KHz,不论是对于降噪,aec,vad,波束形成亦或是logfbank特征提取,我们都期望更精细的处 ...

  5. 清华大学&中国人工智能学会:2019人工智能发展报告

    2019年11月30日,2019中国人工智能产业年会重磅发布<2019人工智能发展报告>(Report of Artificial Intelligence Development 201 ...

  6. nginx 访问控制之deny allow

    Nginx的deny和allow指令是由ngx_http_access_module模块提供,Nginx安装默认内置了该模块. 除非在安装时有指定 --without-http_access_modu ...

  7. [CMS]凡诺cms 2.1文件包含

    0x01 简介 凡诺CMS下载链接:凡诺企业网站管理系统PHP 2.1 安装好了是这样的: 0x02 漏洞复现 在添加频道处上传附件: 根据网站根目录所在位置用../进行跨目录: 然后返回首页点击频道 ...

  8. proxmox之cloud-init

    Cloud-Init支持 Cloud-Init是事实上的多分发包,它处理虚拟机实例的早期初始化.使用Cloud-Init,可以在虚拟机管理程序端配置网络设备和ssh密钥.当VM首次启动时,VM内的Cl ...

  9. SAS PROC SGPLOT

    OPTIONS LS=MAX PS=MAX NOCENTER USER='.\00@Data'; PROC PRINT DATA=OpenDate;RUN; ODS LISTING GPATH='.\ ...

  10. idea2017打war包

    i 然后就可以把war放到服务器上目录了.