iPerf工具android9.0移植和使用介绍

iPerf简介

iPerf是一种广泛使用的网络性能测量和调整工具。是跨平台工具,支持Window,linux,android平台的运行和测试,可以为任何网络生成标准化的性能测量。

使用iPerf工具要开启一个服务端和一个客户端,可以创建数据流来测量一个或两个方向上两端之间的吞吐量。Iperf输出包含传输的数据量和测量的吞吐量的时间戳报告。

可以分别测试TCP和UDP数据传输:

  • TCP:当用于测试TCP容量时,Iperf测量有效负载的吞吐量。Iperf对于mebibytes使用1024×1024,对于兆字节使用1000×1000
  • UDP:当用于测试UDP容量时,Iperf允许用户指定数据报大小并提供数据报吞吐量和数据包丢失的结果。

iPerf源码下载地址:https://code.google.com/archive/p/iperf/
或者github下载:https://github.com/esnet/iperf

下载的是linux平台源码。

iPerf官网:https://iperf.fr/iperf-download.php
包括各种平台的iPerf工具,可以直接下载使用就行。

这么说来移植iPerf源码到android9.0平台可能会多此一举,但还是记录一下移植过程和使用方法。

iPerf移植

1.编写mk文件

LOCAL_PATH := $(call my-dir)
# Device executable.
# =========================================================
include $(CLEAR_VARS)
LOCAL_MODULE := iperf
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src
LOCAL_SRC_FILES := $(call all-c-files-under, src)
LOCAL_CFLAGS := -Wno-error -DIPERF_HOST=0
LOCAL_MODULE_TAGS := debug
LOCAL_FORCE_STATIC_EXECUTABLE := true
include $(BUILD_EXECUTABLE)

# Host executable.
# =========================================================
include $(CLEAR_VARS)
LOCAL_MODULE := iperf_x86
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src
LOCAL_SRC_FILES := $(call all-c-files-under, src)
LOCAL_CFLAGS := -Wno-error -DIPERF_HOST=1
LOCAL_LDFLAGS := -static
LOCAL_MODULE_TAGS := debug
include $(BUILD_HOST_EXECUTABLE)
include $(call first-makefiles-under,$(LOCAL_PATH))

2.编译报错1:in6_flowlabel_req重复定义,增加IPERF_HOST编译选项

文件:iperf\src\flowlabel.h

#if IPERF_HOST
struct in6_flowlabel_req
{
    struct in6_addr flr_dst;
    __u32   flr_label;
    __u8    flr_action;
    __u8    flr_share;
    __u16   flr_flags;
    __u16   flr_expires;
    __u16   flr_linger;
    __u32   __flr_pad;
    /* Options in format of IPV6_PKTOPTIONS */
};
#endif

3.编译报错2:t_uuid,t_units,t_timer中的main重复定义

直接删除t_timer.c,t_uuid.c,t_units.c文件

4.报错3:错误路径报错

在文件iperf_api.c中iperf_new_stream()中,
char template[] = “/tmp/iperf3.XXXXXX”;
安卓中找不到tmp这个路径,改成:
char template[] = “/data/local/tmp/iperf3.XXXXXX”;

5.修改src/config.h.in为src/config.h

6.mm编译

生成了iperf文件。生成路径:system\xbin\iperf
这样就可以在android中使用iperf命令了。

iPerf使用方法

建议使用iperf -h或者iperf -help看一下命令参数说明。根据说明来使用iPerf。

window平台和android设备网络测试:

现在window下创建iperf的服务器端,
命令:iperf -s

在android中创建客户端并指定服务端ip地址,tcp/udp,时间,带宽。
命令:iperf -c 192.168.20.77 -t 10 -b 100M
命令:iperf -c 192.168.20.77 -t 10 -b 100M -u
加-u为测试udp数据。

TCP测试数据:
iPerf工具android9.0移植和使用介绍_第1张图片
iPerf工具android9.0移植和使用介绍_第2张图片

UDP测试数据:
iPerf工具android9.0移植和使用介绍_第3张图片
iPerf工具android9.0移植和使用介绍_第4张图片

UDP测试多了延迟数据和丢包数据。jitter和Lost Datagrams

安卓工具使用

下载地址:https://iperf.fr/iperf-download.php

你可能感兴趣的:(iperf,android9.0,网络性能,带宽,移植)