Linux 网络性能测试工具 iperf 的安装和使用

时间:2024-02-23 13:25:30

简介:
Iperf是一个网络性能测试工具。可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失。
Iperf在Linux和windows平台均有二进制版本供*使用

安装:
 #安装好软件仓库包

1 .  用yum软件仓库安装

   yum -y install  epel-release

 

   yum install iperf  -y

参数说明:

-s 以server模式启动。#iperf -s
-c host以client模式启动。host是server端地址。#iperf -c serverip

通用参数:
-f [kmKM] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,#iperf -c 192.168.100.6 -f K
-i sec 以秒为单位显示报告间隔,#iperf -c 192.168.100.6 -i 2
-l 缓冲区大小,默认是8KB,#iperf -c 192.168.100.6 -l 64
-m 显示tcp最大mtu值
-o 将报告和错误信息输出到文件#iperf -c 192.168.100.6 -o ciperflog.txt
-p 指定服务器端使用的端口或客户端所连接的端口#iperf -s -p 5001;iperf -c 192.168.100.55 -p 5001
-u 使用udp协议
-w 指定TCP窗口大小,默认是8KB
-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C 兼容旧版本(当server端和client端版本不一样时使用)
-M 设定TCP数据包的最大mtu值
-N 设定TCP不延时
-V 传输ipv6数据包

server专用参数:
-D 以服务方式运行。#iperf -s -D
-R 停止iperf服务。针对-D,#iperf -s -R
client端专用参数:
-d 同时进行双向传输测试
-n 指定传输的字节数,#iperf -c 192.168.100.6 -n 1024000
-r 单独进行双向传输测试
-t 测试时间,默认20秒,#iperf -c 192.168.100.6 -t 5
-F 指定需要传输的文件
-T 指定ttl值

 

测量服务器带宽

使用iperf工具测试服务器带宽,它分为服务端与客户端,两边都要安装iperf工具。在Linux通过yum或者apt-get即可直接安装。

服务端(假设IP192.168.1.11)运行iperf服务:

#iperf -s
------------------------------------------------------------                              
Server listening on TCP port 5001            
TCP window size: 85.3 KByte (default)        

这是一台上下行带宽都接近100Mbits/sec的服务器,实测数值不应该与该数值偏离太远。

客户端

测试上行和下行带宽

$iperf  -c 192.168.1.11 -t 60  -d
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 45.32.64.187, TCP port 5001
TCP window size:  197 KByte (default)
------------------------------------------------------------
[  4] local 104.250.144.8 port 50040 connected with 106.14.26.11 port 5001
[  5] local 104.250.144.8 port 5001 connected with 106.14.26.11 port 34386
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-60.0 sec   658 MBytes  92.0 Mbits/sec #上行带宽
[  5]  0.0-60.4 sec   628 MBytes  87.4 Mbits/sec #下行带宽

从测试结果看,上行带宽为92.0Mbits/sec, 下行带宽为87.2Mbits/sec

 

测量延迟、抖动和丢包率

指标

  • 带宽:与服务商提供的最大带宽接近
  • 延迟:<100ms
  • 抖动:<20ms
  • 丢包率:<1%

延迟,抖动和丢包率,直接使用ping做测试即可。如果想测量这个值,建议抓100个包测试:

$ ping -c 100 www.baidu.com
PING www.a.shifen.com (163.177.151.109): 56 data bytes
64 bytes from 163.177.151.109: icmp_seq=0 ttl=55 time=26.639 ms
64 bytes from 163.177.151.109: icmp_seq=1 ttl=55 time=24.329 ms
64 bytes from 163.177.151.109: icmp_seq=2 ttl=55 time=24.794 ms
64 bytes from 163.177.151.109: icmp_seq=3 ttl=55 time=22.709 ms
64 bytes from 163.177.151.109: icmp_seq=4 ttl=55 time=39.994 ms
64 bytes from 163.177.151.109: icmp_seq=5 ttl=55 time=50.786 ms
。。。省略
^C
--- www.a.shifen.com ping statistics ---
100 packets transmitted, 100 packets received, 0.0% packet loss #最后这个百分比就是丢 包率
round-trip min/avg/max/stddev = 21.505/26.743/50.786/6.613 ms #分别表示最小延迟、平均延迟、最大延迟、抖动(抖动就是延迟标准差)

根据上面的结果,我们得到结论:

延迟:26.743ms
抖动: 6.613ms
丢包率: 0.0%

符合指标要求,所以访问百度一定很快。(这里假设带宽是没问题的,测量到服务器的带宽需要服务器支持,所以是测量不了的)