网络性能测试工具--iperf
2011-11-18 13:51
681 查看
网络性能测试工具--iperf
Iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及抖动、丢包率、最大段和最大传输单元大小等统计信息,从而能够帮助我们测试网络性能,定位网络瓶颈。其设计从根本上克服了原来的一些工具,如 ttcp 和 nettest 等的固有的缺陷。Iperf可以在任何IP 网络上运行,包括本地以太网,因特网接入连接和Wi-Fi网络。Iperf在linux和windows平台均有二进制版本供自由使用。
Linux下安装Iperf:
下载到源码包后,完整的编译命令如下:
tar zxvf iperf-2.0.4.tar.gz
cd iperf-2.0.4
./configure
make
编译成功后,使用以下命令安装Iperf:
make install
重新编译Iperf,最简单的方法是使用以下命令:
make distclean
./configure
make
Iperf交叉编译:
1.PATH中有arm-linux相关工具
2.打开源码包,进行相关的配置
tar zxvf iperf-2.0.4.tar.gz
cd iperf-2.0.4
./configure --host=arm-linux
打开config.h,修改以下内容:
#define HAVE_MALLOC 0 改为 #define HAVE_MALLOC 1
/* #undef HAVE_QUAD_SUPPORT */ 改为 #define HAVE_QUAD_SUPPORT 1
#define malloc rpl_malloc 改为 /* #undef malloc */
以上的都做好了以后,可以直接make或make -jX
3.编译生成可执行文件iperf,位于iperf-2.0.4/src/中
注:若在执行./iperf时出错“./iperf:can't load library 'libstdc++.so.6" ,说明需要静态编译,打开iperf-2.0.4/src,修改Makefile,在CFLAGS和CXXFLAGS都加-static参数
CFLAGS = -o2 -static
CXXFLAGS = -o2 -static
移植Iperf到Android:
1.下载iperf-2.0.4.tar.gz
2.解压到<Android root>/external/iperf
3.创建Android.mk,添加以下内容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
compat/Thread.c \
compat/error.c \
compat/delay.cpp \
compat/gettimeofday.c \
compat/inet_ntop.c \
compat/inet_pton.c \
compat/signal.c \
compat/snprintf.c \
compat/string.c
LOCAL_SRC_FILES += \
src/Client.cpp \
src/Extractor.c \
src/Launch.cpp \
src/List.cpp \
src/Listener.cpp \
src/Locale.c \
src/PerfSocket.cpp \
src/ReportCSV.c \
src/ReportDefault.c \
src/Reporter.c \
src/Server.cpp \
src/Settings.cpp \
src/SocketAddr.c \
src/main.cpp \
src/sockets.c \
src/stdio.c \
src/tcp_window_size.c \
src/gnu_getopt.c \
src/gnu_getopt_long.c \
src/service.c
LOCAL_C_INCLUDES += \
$(LOCAL_PATH) \
$(LOCAL_PATH)/include
LOCAL_CFLAGS += -O2
LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_LDLIBS += -lpthread
LOCAL_SHARED_LIBRARIES := libc libm libcutils libnetutils
LOCAL_MODULE := iperf
#LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
#LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED)
#LOCAL_MODULE_TAGS := eng user
include $(BUILD_EXECUTABLE)
4.先生成需要的头文件:
./configure -host = arm
5.以上各步骤整完后,就可以进行编译测试了。
注:编译如果报错:
1."external/testtools/iperf/src/Listener.cpp:xxx: error: 'struct ipv6_mreq' has no member named 'ipv6mr_interface'"
bionic/libc/kernel/common/linux/In6.h中的定义为
struct ipv6_mreq {
struct in6_addr ipv6mr_multiaddr;
int ipv6mr_ifindex;
};
确实不存在ipv6mr_interface了,所以将xxx行“mreq.ipv6mr_ifindex = 0”直接注释掉。
2.“external/testtools/iperf/compat/signal.c:135: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'my_signal' “
原因为:iperf/include/util.h与bionic/libc/include/util.h冲突导致
解决办法:把 compact/signal.c 里面的 #include "util.h"
改成 #include “../include/util.h”
把 src/sockets.c 里面的 #include "util.h"
改成 #include “../include/util.h”
3.该方法还未使用此工具进行性能测试,未知上述方法编译的程序是否存在问题,待验证。。。
=========
Iperf使用方法与参数说明:
参数说明
-s 以server模式启动,eg:iperf -s 。Server端为数据的接收端。 server端显示的是接收速率,最好加i参数,进行速率跟踪。
-c host 以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23 。Client端为数据的发出端。client 显示的是发送速率。
通用参数
-f [kmKM] 分别表示以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 ciperflog.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值
-N 设定TCP不延时
-V 传输ipv6数据包
server专用参数
-D 以服务方式运行ipserf,eg:iperf -s -D
-R 停止iperf服务,针对-D,eg:iperf -s -R
client端专用参数
-b 指定发送带宽,默认是1Mbit/s
在测试qos的时候,这是最有用的参数
-d 同时进行双向传输测试
-n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000
-r 单独进行双向传输测试
-t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5
-F 指定需要传输的文件
-T 指定ttl值
==============
[b]应用实例[/b]
使用 iperf -s 命令将 Iperf 启动为 server 模式,在客户机上使用 iperf -c启动client模式。
iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
iperf -c 59.125.103.56
上面使用服务端和客户端的默认设置进行测试
iperf -s -w 300K
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 300 KByte
------------------------------------------------------------
iperf -c 59.125.103.56 -f K -i 2 -w 300K
设定报告间隔为2秒,服务器端和客户端的TCP窗口都开到300KB
iperf -c 59.125.103.56 -f K -i 2 -w 300K -n 1000000
测试传输约1MB数据
iperf -c 59.125.103.56 -f K -i 2 -w 300K -t 36
测试持续36秒
iperf -c 59.125.103.56 -f K -i 2 -w 300K -n 10400000 -d
测试双向的传输
iperf -c 59.125.103.56 -f K -i 2 -w 300K -u
UDP测试
其中 -i 参数的含义是周期性报告的时间间隔(interval),单位为秒;在上面的例子中,表示每隔2秒报告一次带宽等信息。
===================
Jperf是有图形界面版本的iperf,可以到http://code.google.com/p/xjperf/downloads/list下载,解压后执行jperf.sh即可!(必须先安装了iperf)
相关文章推荐
- 网络带宽性能测试工具iperf
- 网络性能测试工具iperf详细使用图文教程
- linux命令 iperf-网络性能测试工具
- 嵌入式linux网络性能测试工具iperf
- 网络性能测试工具iperf详细使用图文教程
- 网络性能测试工具iperf详细使用图文教程(转)
- Linux 网络性能测试工具 iperf 的安装和使用
- 网络性能测试工具iperf的注意事项
- iperf点对点网络性能测试工具
- 网络性能测试工具iperf详细使用图文教程(转载)
- 网络性能测试工具iperf的注意事项
- 网络性能测试工具iperf详细使用图文教程
- 网络性能测试工具iperf编译记录
- linux网络性能测试工具Iperf使用介绍
- iperf命令_Linux iperf 命令用法详解:网络性能测试工具
- Linux 下网络性能测试工具 iperf 的安装和使用
- linux网络性能测试工具 iperf
- Linux网络性能评估工具iperf 、CHARIOT测试网络吞吐量
- iperf 网络性能测试工具
- 简谈linux环境下网络性能测试工具iperf