zoukankan      html  css  js  c++  java
  • iperf网络性能测试

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

  • 相关阅读:
    数组、链表、Hash的优缺点
    数据库-索引的坏处,事务的级别,分布式事务的原理。
    4G内存的电脑,如何读取8G的日志文件进行分析,汇总数据成报表的面试题
    数据库常用的锁有哪些
    2020年最新 C# .net 面试题,月薪20K+中高级/架构师必看(十)
    ThreadX应用开发笔记之一:移植ThreadX到STM32平台
    net core 方法 返回值 重改?
    使用RestTemplate发送HTTP请求举例
    dedecms织梦手机站上一篇下一篇链接错误的解决方法
    多目标跟踪之数据关联(匈牙利匹配算法和KM算法)
  • 原文地址:https://www.cnblogs.com/viviane/p/10870542.html
Copyright © 2011-2022 走看看