2019-04-30-iperf-编译与使用

世间千般好

iperf

介绍

Iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。

windows的和linux平台都有对应安装包,我们可以用这个来测量当前的网络到某个地方的网络的各种性能情况,但是要注意测试的时候要么两端都是iperf2,要么都是iperf3.。

iperf是client端向server端发送数据,server端显示的是接收速率,最好加i参数,进行速率跟踪。

  • client 显示的是发送速率
  • server 显示接收速率

编译及交叉编译

普通编译

# ./configure
# make
# make install

交叉编译

# ./configure --host=arm-linux CC=arm-hisiv100nptl-linux-gcc  CXX=arm-hisiv100nptl-linux-g++
# make
# make install

参数

因为它有客户端和服务端,所以存在通用参数、客户端参数和服务端参数。

通用参数

-b 指定发送带宽,默认是1Mbit/s,在测试qos的时候,这是最有用的参数。
-e
-f [k|m|K|M] 分别表示以Kbits, Mbits,KBytes, MBytes显示报告,默认以Mbits为单位
eg:iperf -c 222.35.11.23 -f K 

-i sec 以秒为单位显示报告间隔,
eg:iperf-c 222.35.11.23 -i 2

-l 缓冲区大小,默认是8KB,
eg:iperf-c 222.35.11.23 -l 16

-m 显示tcp最大mtu值 
-o 将报告和错误信息输出到文件
eg:iperf-c 222.35.11.23 -o c:\iperflog.txt 

-p 指定服务器端使用的端口或客户端所连接的端口。eg:
iperf -s -p 9999;
iperf -c 222.35.11.23 -p 9999 

-u 使用udp协议,测试htb的时候最好用udp,udp通信开销小,测试的带宽更准确
-w 指定TCP窗口大小,默认是8KB 
-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C 兼容旧版本(当server端和client端版本不一样时使用)
-M 设定TCP数据包的最大分片值(mtu-40字节TCP首部)
-N 设定TCP不延时
-V 传输ipv6数据包

服务端参数

-s 以server模式启动
eg:iperf -s 
-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数) 
-C 兼容旧版本(当server端和client端版本不一样时使用) 
-M 设定TCP数据包的最大mtu值 
-N 设定TCP不延时 
-V 传输ipv6数据包
-D 以服务方式运行ipserf
eg:iperf -s -D -R 

-R 停止iperf服务,针对-D
eg:iperf -s -R

我常用的

iperf -s

客户端参数

-c host 以client模式启动,host是server端地址
eg:iperf -c 222.35.11.23 通用参数
-d 同时进行双向传输测试 
-n 指定传输的字节数,
eg:iperf -c 222.35.11.23 -n 100000 
-r 单独进行双向传输测试
-t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5
默认是10s

我常用的

iperf -c 192.168.45.103 -p 5001