一、iperf原理及概述
iPerf是一个网络性能测试工具,可以测试TCP或者UDP的网络吞吐量。
(1)TCP带宽测试
iPerf的主要目标是帮助调整特定路径上的TCP连接。众所周知,TCP最基本的调整问题是调整TCP窗口大小,它控制在任何一点在网络中可以有多少数据。如果它太小,发送者将会在一段时间内处于空闲状态,从而影响发送TCP的性能。TCP窗口大小的理论值是:瓶颈带宽与往返延时的乘积,即:
bottleneck bandwidth * round trip time
例如瓶颈链路是45 Mbit/sec,使用ping命令测量到的往返时延是42ms。那么TCP窗口的理论值是:
45 Mbit/sec * 42 ms = (45e6) * (42e-3) = 1890000 bits= 230 KByte
在实际测试中,可以以计算得到的TCP窗口为基准,在这个值(如上面为230KByte)的基础上,升高或者降低TCP窗口大小,可以得到一个性能的提升。
主要功能如下:
- 测量网络带宽
- 报告MSS/MTU值的大小和观测值
- 支持TCP窗口值通过套接字缓冲
- 当P线程或Win32线程可用时,支持多线程。客户端与服务端支持同时多重连接
(2)UDP带宽测试
带宽测试一般来说采用UDP模式测试,因为在UDP模式下能测出极限带宽、路径时延、丢包率,这些测试项会在带宽测试报告中打印出来。在进行测试时,先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为1000Mbps,先用 -b 1000M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
iperf是基于server-client模式工作的,因此,要使用iperf测试带宽,需要建立一个服务端(用于丢弃流量)和一个客户端(用于产生流量)。iperf服务端或者是客户端,都是使用的同一个命令,不过是启动命令的选项不同而已。
主要功能如下:
- 客户端可以创建指定带宽的UDP流
- 测量丢包
- 测量延迟
- 支持多播
- 当P线程可用时,支持多线程。客户端与服务端支持同时多重连接(不支持Windows)
二、iPerf常用选项
iPerf常用选项分为 通用选项、服务端特定选项以及客户端特定选项。
(1)通用选项
-f <kmKM> |
报告输出格式。[kmKM]:format to report(Kbits, Mbits, KBytes, MBytes) |
-i <sec> |
在周期性报告带宽之间暂停n秒。如周期是10s,则-i指定为2,每隔2秒报告一次带宽测试情况,共计报告5次 |
-p |
设置服务端监听的端口,默认是5001 |
-u |
使用UDP协议测试 |
-w n<K/M> |
指定TCP窗口大小 |
-m |
输出MTU大小 |
-M |
设置MTU大小 |
-o <filename> |
结果输出至文件 |
-e |
输出详细测试报告,包括pps等 |
(2)服务端选项
-s |
iperf服务器模式 |
-d |
以后台模式运行服务端 |
-U |
运行一个单一线程的UDP模式 |
(3)客户端选项
-b |
指定客户端通过UDP协议发送数据的带宽(bit/s),默认是1Mbit/s |
-c <ServerIP> |
以客户端模式运行iperf,并且连接至服务端主机ServerIP,eg: iperf -c <server_ip> |
-d |
双向测试 |
-t |
指定iperf带宽测试时间,默认是10s,eg:iperf -c <server_ip> -t 20 |
-P |
指定客户端并发线程数,默认只运行一个线程。 eg,指定3个线程 : iperf -c <server_ip> -P 3 |
-T |
出栈多播数据包的TTL值。这本质上就是数据通过路由器的跳数,默认是1,链接本地。 |
来源:oschina
链接:https://my.oschina.net/u/4340047/blog/3536995