网络性能测试工具iperf简介

admin 2022年11月21日 918次浏览

1、概述

iperf 是一个用于主动测量网络上可实现的最大带宽的工具。它支持调整与时序、协议和缓冲区相关的各种参数。对于每个测试,它都会输出包含测量的吞吐量、丢包及其他参数的报告

2、使用方法

2.1、作为服务器

  • 语法

    iperf [-s] [options]
    
  • 常用选项

    选项 说明
    -s 运行在服务器模式下,该模式下一次只允许一个客户端连接
    -D 以守护进程的方式,运行在服务器模式下
    -I FILE 用进程 ID 写一个文件,一般在作为守护进程运行时非常有用
  • 示例

    # 非守护进程启动
    [root@test-host ~]# iperf3 -s
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    
    # 以守护进程模式启动
    [root@test-host ~]# iperf3 -sD
    [root@test-host ~]# ps aux | grep iperf
    root       5392  0.0  0.0   9616   336 ?        Ss   13:59   0:00 iperf3 -sD
    

2.2、作为客户端

  • 语法

    iperf [-c host] [options]
    
  • 常用选项

    选项 说明
    -c HOST 运行在客户端模式下
    –sctp 使用SCTP而不是TCP
    -u 使用UDP而不是TCP
    -b n[KM] 将目标带宽设置为n bit/s(UDP默认为1Mbit/s,TCP无限制)
    -t n 以秒为单位的传输时间,默认值为10秒
    -n n[KM] 设置缓冲区大小
    -k n[KM] 设置发送的数据包大小
    -l n[KM] 要读取或写入的缓冲区长度
    -P N 与服务器同时建立的连接数,默认值为1
    -R 以反向模式运行(服务器发送,客户端接收)
    -w n[KM] 将套接字缓冲区大小设置为指定值。对于TCP,将设置TCP窗口大小
    -M n 尝试设置TCP最大段大小(MSS)
    -N 设置TCP无延迟选项,禁用 Nagle 的算法
    -4 只是用 IPv4
    -6 只是用 IPv6
    -S n 传出数据包的服务类型
    -L n 设置IPv6流标签(目前仅支持Linux)
    -Z 使用“零拷贝”方法发送数据,而不是使用 write,这将减少CPU的开销
    -O n 省略测试的前 n 秒,跳过TCP[TCP Slow start]
    -T str 自定义输出行的前缀
    -C algo 设置【拥塞控制算法】
  • 示例

    # 常规使用
    [root@test-host ~]# iperf3 -c 192.168.137.1 -p 5201
    Connecting to host 192.168.137.1, port 5201
    [  4] local 192.168.137.100 port 56044 connected to 192.168.137.1 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.01   sec  78.8 MBytes   655 Mbits/sec    0   68.4 KBytes
    [  4]   1.01-2.01   sec  82.5 MBytes   689 Mbits/sec    0   68.4 KBytes
    [  4]   2.01-3.00   sec  81.2 MBytes   688 Mbits/sec    0   68.4 KBytes
    [  4]   3.00-4.00   sec  82.5 MBytes   692 Mbits/sec    0   68.4 KBytes
    [  4]   4.00-5.01   sec  82.5 MBytes   690 Mbits/sec    0   68.4 KBytes
    [  4]   5.01-6.01   sec  82.5 MBytes   692 Mbits/sec    0   68.4 KBytes
    [  4]   6.01-7.01   sec  82.5 MBytes   691 Mbits/sec    0   68.4 KBytes
    [  4]   7.01-8.01   sec  82.5 MBytes   694 Mbits/sec    0   68.4 KBytes
    [  4]   8.01-9.01   sec  82.5 MBytes   691 Mbits/sec    0   68.4 KBytes
    [  4]   9.01-10.01  sec  80.0 MBytes   671 Mbits/sec    0   68.4 KBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.01  sec   818 MBytes   685 Mbits/sec    0             sender
    [  4]   0.00-10.01  sec   818 MBytes   685 Mbits/sec                  receiver
    
    iperf Done.
    
    # 反向模式
    [root@test-host ~]# iperf3 -c 192.168.137.1 -p 5201 -R
    Connecting to host 192.168.137.1, port 5201
    Reverse mode, remote host 192.168.137.1 is sending
    [  4] local 192.168.137.100 port 56052 connected to 192.168.137.1 port 5201
    [ ID] Interval           Transfer     Bandwidth
    [  4]   0.00-1.00   sec   234 MBytes  1.96 Gbits/sec
    [  4]   1.00-2.00   sec   283 MBytes  2.38 Gbits/sec
    [  4]   2.00-3.00   sec   320 MBytes  2.68 Gbits/sec
    [  4]   3.00-4.00   sec   328 MBytes  2.75 Gbits/sec
    [  4]   4.00-5.00   sec   288 MBytes  2.42 Gbits/sec
    [  4]   5.00-6.00   sec   336 MBytes  2.82 Gbits/sec
    [  4]   6.00-7.00   sec   341 MBytes  2.86 Gbits/sec
    [  4]   7.00-8.00   sec   340 MBytes  2.85 Gbits/sec
    [  4]   8.00-9.00   sec   342 MBytes  2.87 Gbits/sec
    [  4]   9.00-10.00  sec   344 MBytes  2.88 Gbits/sec
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth
    [  4]   0.00-10.00  sec  3.08 GBytes  2.65 Gbits/sec                  sender
    [  4]   0.00-10.00  sec  3.08 GBytes  2.65 Gbits/sec                  receiver
    
    iperf Done.
    

    输出信息解释:

    • Interval:时间间隔

    • Transfer:发送的数据量

    • Bandwidth:当前带宽

    • Retr:重传次数,需要关注该列数据,如果在某个时间端内,数字大于0,那么就说明出现数据丢失,发生了数据重传

    • Cwnd:拥塞窗口大小

2.3、通用选项

选项 说明
-p n 供服务器监听和客户端连接的服务器端口。默认值为5201
–cport n 指定客户端使用的端口
-f [kmKM] 指定显示使用的单位
-i n 设置周期性带宽、抖动和丢失报告之间的间隔时间(秒)
-F name 客户端: 从文件中读取并写入网络,而不是使用随机数据;
服务器端: 从网络读取并写入文件,而不是丢弃数据。
-B host 绑定主机 IP 地址,对于客户端,这将设置出站接口;对于服务器,这将设置传入接口
-V 给出更详细的输出
-J JSON格式的输出
–logfile file 将输出发送到日志文件
-v 显示版本信息
-h 显示帮助信息