zoukankan      html  css  js  c++  java
  • iperf网络新能评估

    什么是网络性能评估

    网络新能评估是指检测网络带宽的使用率,最大化利用网络带宽,由于网络设计不合理、网络安全存在漏洞,会导致网络利用率低。iperf正是发现这种问题的网络测试工具。

    iperf简介

    iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具。可以用来测量网络带宽和网络质量,提供网络延迟抖动、数据包丢失、最大传输单元等统计信息,可以根据这些统计信息判断网络性能问题,定位网络瓶颈。

    iperf的主要功能

    (1)TCP方面

    测试网络带宽

    支持多线程,在客户端与服务器端支持多连接

    报告MSS/MTU值

    支持TCP窗口值得定义并通过套接字缓冲

    (2)UDP方面

    可以设置指定带宽的UDP数据流

    可以测试网络抖动、丢包数

    支持多播测试

    支持多线程,在客户端与服务器端支持多连接

    [root@node2 ~]# yum install -y iperf3

    参数

    服务器端参数

    命令行参数 参数含义
    -s 以服务端模式启动,默认启动监听端口为5201,可以通过-p选项指定监听端口
    -D 以守护进程启动,与-s选项联用

    客户端参数

    客户端参数 参数含义
    -c 以客户端模式启动iperf,例如:iperf -c 10.0.0.10,其中10.0.0.10位服务器端地址
    -u 使用UDP协议
    -b[kmgKMG] 指定UDP模式使用的带宽。单位bit/sec,与-u选项相关,默认是1Mbit/sec
    -t 指定数据包传输的总时间,iperf在指定时间内,重复发送指定长度的数据包
    -n[kmgKMG] 指定传输数据包的字节数,例如:iperf -c 10.0.0.10 -n 100M
    -l 指定读写缓冲区长度。
    TCP方式默认128K
    UDP方式默认大小1470
    -P,--parallel 指定客户端和服务端之间使用的线程数,默认1个线程。
    需要客户端和服务端同时使用此参数
    -R 切换数据发送,接收模式
    例如,客户端发送,服务端接收,设置此参数后,变为服务端发送,客户端接收
    -w[KM] 指定套接字缓冲区大小
    在TCP模式下,此设置为TCP窗口的大小。
    在UDP模式下,此参数为接受UDP数据包的缓冲大小,用来限制可以接收数据包的最大值
    -B 绑定一个主机地址或接口,此参数仅用于具有多个网络接口的主机。
    在UDP模式下,此参数用于绑定和加入一个多播组
    -M 设置TCP最大信息段的值
    -N 设置TCP无延迟

    公共参数

    命令行参数 参数含义
    -f,[kmgKMG] 指定带宽输出单位,分别表示为Kbits, Mbits, KBytes, MBytes,GBytes,默认是MBytes
    例如:iperf -c 10.0.0.10 -f M
    -p

    指定服务端使用的端口或客户端连接的端口,如:
    iperf -s -p 9527

    iperf -c 10.0.0.10 -p 9527

    -i 指定每次报告生成的时间间隔。单位:秒
    -F

    指定文件作为数据源进行带宽测试,例如:

    iperf -c 10.0.0.10 -F web-ixdba.tar.gz

    应用举例

    服务端启动iperf3

    [root@node2 ~]# iperf3 -s 10.0.0.52
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------

    测试tcp吞吐量

    在任意客户端执行iperf命令,将从客户端发送数据到服务端。输出发送的数据量和网卡平均带宽。

    客户端运行结果

    [root@node03 ~]# iperf3 -c 10.0.0.52
    Connecting to host 10.0.0.52, port 5201
    [  4] local 10.0.0.53 port 33524 connected to 10.0.0.52 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec   362 MBytes  3.04 Gbits/sec    0   1.29 MBytes       
    [  4]   1.00-2.00   sec   342 MBytes  2.87 Gbits/sec   73   1.41 MBytes       
    [  4]   2.00-3.00   sec   421 MBytes  3.53 Gbits/sec    0   1.55 MBytes       
    [  4]   3.00-4.00   sec   411 MBytes  3.45 Gbits/sec    0   1.69 MBytes       
    [  4]   4.00-5.00   sec   429 MBytes  3.59 Gbits/sec    0   1.82 MBytes       
    [  4]   5.00-6.00   sec   432 MBytes  3.64 Gbits/sec   20   1.38 MBytes       
    [  4]   6.00-7.00   sec   442 MBytes  3.71 Gbits/sec    0   1.57 MBytes       
    [  4]   7.00-8.00   sec   446 MBytes  3.74 Gbits/sec    0   1.71 MBytes       
    [  4]   8.00-9.00   sec   436 MBytes  3.66 Gbits/sec    0   1.82 MBytes       
    [  4]   9.00-10.00  sec   405 MBytes  3.40 Gbits/sec   22   1.39 MBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.00  sec  4.03 GBytes  3.46 Gbits/sec  115             sender
    [  4]   0.00-10.00  sec  4.03 GBytes  3.46 Gbits/sec                  receiver
    
    iperf Done.

    服务端结果

    [root@node2 ~]# iperf3 -s 10.0.0.52
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from 10.0.0.53, port 33522
    [  5] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 33524
    [ ID] Interval           Transfer     Bandwidth
    [  5]   0.00-1.00   sec   345 MBytes  2.89 Gbits/sec                  
    [  5]   1.00-2.00   sec   344 MBytes  2.89 Gbits/sec                  
    [  5]   2.00-3.00   sec   417 MBytes  3.50 Gbits/sec                  
    [  5]   3.00-4.00   sec   416 MBytes  3.49 Gbits/sec                  
    [  5]   4.00-5.00   sec   425 MBytes  3.56 Gbits/sec                  
    [  5]   5.00-6.00   sec   435 MBytes  3.65 Gbits/sec                  
    [  5]   6.00-7.00   sec   441 MBytes  3.70 Gbits/sec                  
    [  5]   7.00-8.00   sec   445 MBytes  3.72 Gbits/sec                  
    [  5]   8.00-9.00   sec   438 MBytes  3.68 Gbits/sec                  
    [  5]   9.00-10.00  sec   408 MBytes  3.43 Gbits/sec                  
    [  5]  10.00-10.04  sec  13.6 MBytes  2.74 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth
    [  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec                  sender
    [  5]   0.00-10.04  sec  4.03 GBytes  3.45 Gbits/sec                  receiver

    运行结果说明

    第一行说明了服务器端地址和端口
    
    第二行为客户端连接服务端使用的地址和端口
    
    第三行之后:
    
    Interval 表示传输数据的时间间隔
    
    Transfer  每秒传输的数据量   
    
    Bandwidth       传输数据使用的网络带宽
    
    Retr  重传次数
    Cwnd  不清楚干嘛的
    
    分割线之后的说明了本次测试的发送端和接收端概要
    
    本次测试结果说明:10秒内,客户端发送了4.03 GBytes数据,服务端接收了4.03 GBytes,客户端重发了115次?总带宽3.46 Gbits/sec

    修改测试频率 -t -i

    [root@node03 ~]# iperf3 -c 10.0.0.52 -t 20 -i 5
    Connecting to host 10.0.0.52, port 5201
    [  4] local 10.0.0.53 port 33532 connected to 10.0.0.52 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-5.00   sec  2.14 GBytes  3.67 Gbits/sec   62   1.76 MBytes       
    [  4]   5.00-10.00  sec  2.19 GBytes  3.77 Gbits/sec   47   1.83 MBytes       
    [  4]  10.00-15.00  sec  2.20 GBytes  3.78 Gbits/sec   27   1.82 MBytes       
    [  4]  15.00-20.00  sec  2.18 GBytes  3.74 Gbits/sec   52   1.76 MBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-20.00  sec  8.71 GBytes  3.74 Gbits/sec  188             sender
    [  4]   0.00-20.00  sec  8.71 GBytes  3.74 Gbits/sec                  receiver
    
    iperf Done.
    
    
    20秒内,没5秒输出一次结果,可以看到唯一变化的是重传次数增加了

    使用-n参数指定传输数据量

    [root@node03 ~]# iperf3 -c 10.0.0.52 -n 5000000000 -i 10
    Connecting to host 10.0.0.52, port 5201
    [  4] local 10.0.0.53 port 33544 connected to 10.0.0.52 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-10.00  sec  3.85 GBytes  3.31 Gbits/sec   67   1.80 MBytes       
    [  4]  10.00-12.01  sec   828 MBytes  3.46 Gbits/sec   22   1.45 MBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-12.01  sec  4.66 GBytes  3.33 Gbits/sec   89             sender
    [  4]   0.00-12.01  sec  4.66 GBytes  3.33 Gbits/sec                  receiver

    可以看到,当一次传输5G数据的时候,失败重传次数增多了,传输速率下降

     -P选项开启多线程处理

    默认的iperf使用单线程传输数据,下面通过例子进行对比单线程和多线程

    (1)单线程

    [root@node2 ~]# iperf3 -s
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from 10.0.0.53, port 39656
    [  5] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 39658
    [ ID] Interval           Transfer     Bandwidth
    [  5]   0.00-1.00   sec   347 MBytes  2.91 Gbits/sec                  
    [  5]   1.00-2.00   sec   410 MBytes  3.44 Gbits/sec                  
    [  5]   2.00-3.00   sec   368 MBytes  3.09 Gbits/sec                  
    [  5]   3.00-4.00   sec   367 MBytes  3.08 Gbits/sec                  
    [  5]   4.00-5.00   sec   425 MBytes  3.57 Gbits/sec                  
    [  5]   5.00-6.00   sec   393 MBytes  3.30 Gbits/sec                  
    [  5]   6.00-7.00   sec   385 MBytes  3.23 Gbits/sec                  
    [  5]   7.00-8.00   sec   360 MBytes  3.02 Gbits/sec                  
    [  5]   8.00-9.00   sec   400 MBytes  3.36 Gbits/sec                  
    [  5]   9.00-10.00  sec   371 MBytes  3.11 Gbits/sec                  
    [  5]  10.00-11.00  sec   335 MBytes  2.81 Gbits/sec                  
    [  5]  11.00-12.00  sec   379 MBytes  3.18 Gbits/sec                  
    [  5]  12.00-12.59  sec   227 MBytes  3.22 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth
    [  5]   0.00-12.59  sec  0.00 Bytes  0.00 bits/sec                  sender
    [  5]   0.00-12.59  sec  4.66 GBytes  3.18 Gbits/sec                  receiver
    

    [root@node03
    ~]# iperf3 -c 10.0.0.52 -i 10 -f M -n 5000000000 Connecting to host 10.0.0.52, port 5201 [ 4] local 10.0.0.53 port 39658 connected to 10.0.0.52 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-10.00 sec 3.75 GBytes 384 MBytes/sec 80 1.64 MBytes [ 4] 10.00-12.55 sec 928 MBytes 364 MBytes/sec 53 1.56 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-12.55 sec 4.66 GBytes 380 MBytes/sec 133 sender [ 4] 0.00-12.55 sec 4.66 GBytes 380 MBytes/sec receiver iperf Done.

    我们使用-f选项指定了传输结果以MBytes/sec来展示,从上面结果可以看出传输5GB数据用了12.55秒,平均带宽速率为380 MBytes/sec,下面为多线程时iperf的总体概览:

    服务端
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from 10.0.0.53, port 39660
    [  5] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 39662
    [  7] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 39664
    [ ID] Interval           Transfer     Bandwidth
    [  5]   0.00-1.00   sec   207 MBytes  1.74 Gbits/sec                  
    [  7]   0.00-1.00   sec   187 MBytes  1.57 Gbits/sec                  
    [SUM]   0.00-1.00   sec   394 MBytes  3.30 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]   1.00-2.00   sec   198 MBytes  1.66 Gbits/sec                  
    [  7]   1.00-2.00   sec   223 MBytes  1.87 Gbits/sec                  
    [SUM]   1.00-2.00   sec   420 MBytes  3.53 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]   2.00-3.00   sec   221 MBytes  1.85 Gbits/sec                  
    [  7]   2.00-3.00   sec   229 MBytes  1.92 Gbits/sec                  
    [SUM]   2.00-3.00   sec   449 MBytes  3.76 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]   3.00-4.00   sec   201 MBytes  1.69 Gbits/sec                  
    [  7]   3.00-4.00   sec   244 MBytes  2.05 Gbits/sec                  
    [SUM]   3.00-4.00   sec   445 MBytes  3.73 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]   4.00-5.00   sec   242 MBytes  2.03 Gbits/sec                  
    [  7]   4.00-5.00   sec   218 MBytes  1.83 Gbits/sec                  
    [SUM]   4.00-5.00   sec   460 MBytes  3.87 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]   5.00-6.00   sec   254 MBytes  2.13 Gbits/sec                  
    [  7]   5.00-6.00   sec   196 MBytes  1.65 Gbits/sec                  
    [SUM]   5.00-6.00   sec   450 MBytes  3.78 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]   6.00-7.00   sec   213 MBytes  1.79 Gbits/sec                  
    [  7]   6.00-7.00   sec   217 MBytes  1.82 Gbits/sec                  
    [SUM]   6.00-7.00   sec   431 MBytes  3.61 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]   7.00-8.00   sec   206 MBytes  1.73 Gbits/sec                  
    [  7]   7.00-8.00   sec   237 MBytes  1.99 Gbits/sec                  
    [SUM]   7.00-8.00   sec   443 MBytes  3.72 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]   8.00-9.00   sec   183 MBytes  1.53 Gbits/sec                  
    [  7]   8.00-9.00   sec   204 MBytes  1.71 Gbits/sec                  
    [SUM]   8.00-9.00   sec   387 MBytes  3.24 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]   9.00-10.00  sec   195 MBytes  1.64 Gbits/sec                  
    [  7]   9.00-10.00  sec   243 MBytes  2.04 Gbits/sec                  
    [SUM]   9.00-10.00  sec   439 MBytes  3.67 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  5]  10.00-10.98  sec   209 MBytes  1.80 Gbits/sec                  
    [  7]  10.00-10.98  sec   237 MBytes  2.04 Gbits/sec                  
    [SUM]  10.00-10.98  sec   446 MBytes  3.84 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth
    [  5]   0.00-10.98  sec  0.00 Bytes  0.00 bits/sec                  sender
    [  5]   0.00-10.98  sec  2.27 GBytes  1.78 Gbits/sec                  receiver
    [  7]   0.00-10.98  sec  0.00 Bytes  0.00 bits/sec                  sender
    [  7]   0.00-10.98  sec  2.38 GBytes  1.86 Gbits/sec                  receiver
    [SUM]   0.00-10.98  sec  0.00 Bytes  0.00 bits/sec                  sender
    [SUM]   0.00-10.98  sec  4.65 GBytes  3.64 Gbits/sec                  receiver
    
    
    客户端
    [root@node03 ~]# iperf3 -c 10.0.0.52 -i 10 -f M -n 5000000000 -P 2
    Connecting to host 10.0.0.52, port 5201
    [  4] local 10.0.0.53 port 39662 connected to 10.0.0.52 port 5201
    [  6] local 10.0.0.53 port 39664 connected to 10.0.0.52 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-10.00  sec  2.08 GBytes   213 MBytes/sec  245    641 KBytes       
    [  6]   0.00-10.00  sec  2.16 GBytes   221 MBytes/sec  248    819 KBytes       
    [SUM]   0.00-10.00  sec  4.24 GBytes   434 MBytes/sec  493             
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [  4]  10.00-10.94  sec   201 MBytes   215 MBytes/sec    0    834 KBytes       
    [  6]  10.00-10.94  sec   229 MBytes   244 MBytes/sec    0    997 KBytes       
    [SUM]  10.00-10.94  sec   430 MBytes   460 MBytes/sec    0             
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.94  sec  2.28 GBytes   213 MBytes/sec  245             sender
    [  4]   0.00-10.94  sec  2.27 GBytes   213 MBytes/sec                  receiver
    [  6]   0.00-10.94  sec  2.38 GBytes   223 MBytes/sec  248             sender
    [  6]   0.00-10.94  sec  2.38 GBytes   223 MBytes/sec                  receiver
    [SUM]   0.00-10.94  sec  4.66 GBytes   436 MBytes/sec  493             sender
    [SUM]   0.00-10.94  sec  4.65 GBytes   436 MBytes/sec                  receiver
    
    iperf Done.

    可以看到传输时间减少了2s,传输速率上也提高到436 MBytes/sec

    测试UDP传输丢包和延迟

    iperf可以用于UDP协议的数据包传输测试,但由于UDP协议是非面向连接协议,不提供可靠的传输服务,对UDP传输不关注传输速度,只关注丢包率和延迟。

    使用-u选项测试UDP协议

    客户端结果展示

    [root@node03 ~]# iperf3 -c 10.0.0.52 -u -b 100M -f M -i 3
    Connecting to host 10.0.0.52, port 5201
    [  4] local 10.0.0.53 port 52036 connected to 10.0.0.52 port 5201
    [ ID] Interval           Transfer     Bandwidth       Total Datagrams
    [  4]   0.00-3.00   sec  34.8 MBytes  11.6 MBytes/sec  25210  
    [  4]   3.00-6.00   sec  35.9 MBytes  12.0 MBytes/sec  25962  
    [  4]   6.00-9.00   sec  35.6 MBytes  11.9 MBytes/sec  25814  
    [  4]   9.00-10.00  sec  12.0 MBytes  12.0 MBytes/sec  8658 
    - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 118 MBytes 11.8 MBytes/sec 0.103 ms 0/85644 (0%) [ 4] Sent 85644 datagrams iperf Done.

    我们重点关注虚线以下内容

    Jitter        表示抖动时间或者网络延迟
    Lost/Total    分别表示丢包数量和总数据包数量,百分数表示平均丢包比率
    Datagrams     总的数据包数量

    下面是服务端结果

    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from 10.0.0.53, port 39666
    [  5] local 10.0.0.52 port 5201 connected to 10.0.0.53 port 52036
    [ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
    [  5]   0.00-1.00   sec  11.1 MBytes  92.9 Mbits/sec  0.018 ms  0/8021 (0%)  
    [  5]   1.00-2.00   sec  11.8 MBytes  99.4 Mbits/sec  0.119 ms  0/8581 (0%)  
    [  5]   2.00-3.00   sec  11.9 MBytes  99.7 Mbits/sec  0.018 ms  0/8608 (0%)  
    [  5]   3.00-4.00   sec  11.9 MBytes   100 Mbits/sec  0.018 ms  0/8635 (0%)  
    [  5]   4.00-5.00   sec  12.0 MBytes   101 Mbits/sec  0.098 ms  0/8702 (0%)  
    [  5]   5.00-6.00   sec  11.9 MBytes   100 Mbits/sec  0.017 ms  0/8625 (0%)  
    [  5]   6.00-7.00   sec  11.8 MBytes  99.1 Mbits/sec  0.094 ms  0/8562 (0%)  
    [  5]   7.00-8.00   sec  12.0 MBytes   101 Mbits/sec  0.018 ms  0/8710 (0%)  
    [  5]   8.00-9.00   sec  11.8 MBytes  99.0 Mbits/sec  0.020 ms  0/8542 (0%)  
    [  5]   9.00-10.00  sec  12.0 MBytes   100 Mbits/sec  0.103 ms  0/8658 (0%)  
    [  5]  10.00-10.04  sec  0.00 Bytes  0.00 bits/sec  0.103 ms  0/0 (0%)  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
    [  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec  0.103 ms  0/85644 (0%)  
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------

    对于丢包和延迟可以通过改变应用程序来缓解,通过增加缓存的方式可以容忍更大的延迟。

  • 相关阅读:
    Oracle新建用户、角色,授权,建表空间
    oracle 创建表空间、创建用户管理该表空间
    后台获取数据,动态更新到网页--无闪烁刷新
    Java获取当前路径
    最实用销售24种技巧(业务必看)转
    四种类型的客户(转)
    800个小炒
    商务称呼礼仪
    人际沟通交流技巧(转)
    拒绝礼仪与技巧(转)
  • 原文地址:https://www.cnblogs.com/zh-dream/p/12594938.html
Copyright © 2011-2022 走看看