iperf网络性能测试

≯℡__Kan透↙ 提交于 2020-11-09 14:28:23

一、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,链接本地。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!