zoukankan      html  css  js  c++  java
  • iperf/iperf3网络测试工具的安装与使用

    1.官网及下载路径:

    iperf3 homepage at: http://software.es.net/iperf/
    Report bugs to: https://github.com/esnet/iperf

    2.iperf3命令选项

    [ubuntu @meta]$ iperf3 
    iperf3: parameter error - must either be a client (-c) or server (-s)
    
    Usage: iperf [-s|-c host] [options]
           iperf [-h|--help] [-v|--version]
    
    Server or Client:
      -p, --port      #         server port to listen on/connect to
      -f, --format    [kmgKMG]  format to report: Kbits, Mbits, KBytes, MBytes
      -i, --interval  #         seconds between periodic bandwidth reports
      -F, --file name           xmit/recv the specified file
      -A, --affinity n/n,m      set CPU affinity
      -B, --bind      <host>    bind to a specific interface
      -V, --verbose             more detailed output
      -J, --json                output in JSON format
      -d, --debug               emit debugging output
      -v, --version             show version information and quit
      -h, --help                show this message and quit
    Server specific:
      -s, --server              run in server mode
      -D, --daemon              run the server as a daemon
    Client specific:
      -c, --client    <host>    run in client mode, connecting to <host>
      -u, --udp                 use UDP rather than TCP
      -b, --bandwidth #[KMG][/#] target bandwidth in bits/sec (0 for unlimited)
                                (default 1 Mbit/sec for UDP, unlimited for TCP)
                                (optional slash and packet count for burst mode)
      -t, --time      #         time in seconds to transmit for (default 10 secs)
      -n, --bytes     #[KMG]    number of bytes to transmit (instead of -t)
      -k, --blockcount #[KMG]   number of blocks (packets) to transmit (instead of -t or -n)
      -l, --len       #[KMG]    length of buffer to read or write
                                (default 128 KB for TCP, 8 KB for UDP)
      -P, --parallel  #         number of parallel client streams to run
      -R, --reverse             run in reverse mode (server sends, client receives)
      -w, --window    #[KMG]    TCP window size (socket buffer size)
      -C, --linux-congestion <algo>  set TCP congestion control algorithm (Linux only)
      -M, --set-mss   #         set TCP maximum segment size (MTU - 40 bytes)
      -N, --nodelay             set TCP no delay, disabling Nagle's Algorithm
      -4, --version4            only use IPv4
      -6, --version6            only use IPv6
      -S, --tos N               set the IP 'type of service'
      -L, --flowlabel N         set the IPv6 flow label (only supported on Linux)
      -Z, --zerocopy            use a 'zero copy' method of sending data
      -O, --omit N              omit the first n seconds
      -T, --title str           prefix every output line with this string
      --get-server-output       get results from server
    
    [KMG] indicates options that support a K/M/G suffix for kilo-, mega-, or giga-
    iperf3 homepage at: http://software.es.net/iperf/
    Report bugs to:     https://github.com/esnet/iperf

    3.iperf3的测试例子

    测试1:
    一台电脑本地回环测试
    打开两个终端t1和t2,在t1中输入命令:iperf3 -s 在t2中输入命令: iperf3 -c 127.0.0.1 -t 5
    本例中t2向t1发送5秒中的数据包
    测试2:
    一台电脑的实际网卡:
    打开两个终端t1和t2,在t1中输入命令:iperf3 -s 在t2中输入命令: iperf3 -c 10.219.119.21
    测试3:
    两台电脑之间发包测试,在电脑A中打开终端t1,在电脑B中打开终端t2,确保两台电脑在同一个局域网中并假设t1的IP地址为192.168.1.123,t2的IP地址为192.168.1.124
    在t1中输入命令: iperf3 -s 在t2中输入命令: iperf3 -c 192.168.1.123 -t 5
    如果出现错误iperf3: error - unable to connect to server: No route to host,请修改电脑A的防火墙规则。
    
    防火墙规则修改方法:
    防火墙会阻止两台电脑之间的通信。centos7.0自带的防火墙为firewalld,可以先把firewalld删除,再安装iptalbes。
    在t1中输入以下两条的命令来停用firewalld: 
    1.删除firewalld的命令如下
    sudo systemctl stop firewalld //关闭
    sudo systemctl disable firewalld //禁止开机启动
    2.安装iptables的命令如下 
    sudo yum install -y iptables-services.x86_64 iptables-devel.x86_64
    重新测试iperf3,在t1中输入命令: 
    sudo iptables -I INPUT 1 -s 192.168.1.124 -j ACCEPT
    sudo service iptables save
    iperf3 -s
    在t2中输入命令: 
    iperf3 -c 192.168.1.123 -t 5
    3. Apple手机测试
    开发板host,ip:172.27.0.25,App手机做client:
    测试UDP:
    开发板:# iperf -V -s -u
    手机:iperf -p 5001 -l 1448 -w 131072 -i 1.0 -u -c 172.27.0.25 -t 10.0 -b 100m
    测试TCP:
    开发板:# iperf -V -s
    手机:iperf -p 5001 -l 131072 -w 131072 -i 1.0 -c 172.27.0.25 -t 10.0
    
    开发板client,App手机做service,ip:172.27.0.165
    测试TCP:
    开发板:# iperf -c 172.27.0.165 -w 128k -t 10.0 -i 1.0 -p 6001
    手机:# iperf -p 6001 -l 131072 -w 131072 -i 1.0 -s
    测试UDP:
    开发板:# iperf -c 172.27.0.165 -w 128k -t 10.0 -i 1.0 -p 6001 -l 1448 -u -b 50m
    手机:# iperf -p 6001 -l 1448 -w 131072 -i 1.0 -u -s

    4.iperf3卸载
    查看所有已经安装的软件:
    sudo yum list installed
    删除iperf3:
    sudo yum -y remove iperf3.x86_64

    5.软件包中的test_command.sh

    #!/bin/sh
    #
    # This is a set of commands to run and verify they work before doing a new release.
    # Eventually they should also use the -J flag to generate JSON output, and a program should 
    # be written to check the output.
    # Be sure to test both client and server on Linux, BSD, and OSX
    #
    
    if [ $# -ne 1 ]
    then
      echo "Usage: `basename $0` hostname"
      exit $E_BADARGS
    fi
    
    set -x
    
    host=$1
    
    # basic testing
    ./src/iperf3 -c $host -V -t 5 -T "test1"
    ./src/iperf3 -c $host -u -V -t 5
    # omit mode
    ./src/iperf3 -c $host -i .3 -O 2 -t 5
    # JSON mode
    ./src/iperf3 -c $host -i 1 -J -t 5
    # force V4
    ./src/iperf3 -c $host -4 -t 5
    ./src/iperf3 -c $host -4 -u -t 5
    # force V6
    ./src/iperf3 -c $host -6 -t 5
    ./src/iperf3 -c $host -6 -u -t 5
    # parallel streams
    ./src/iperf3 -c $host -P 3 -t 5 
    ./src/iperf3 -c $host -u -P 3 -t 5
    # reverse mode
    ./src/iperf3 -c $host -P 2 -t 5 -R
    ./src/iperf3 -c $host -u -P 2 -t 5 -R
    # zero copy
    ./src/iperf3 -c $host -Z -t 5 
    ./src/iperf3 -c $host -Z -t 5 -R
    # window size
    ./src/iperf3 -c $host -t 5 -w 8M 
    # -n flag
    ./src/iperf3 -c $host -n 5M  
    ./src/iperf3 -c $host -n 5M -u -b1G
    # conflicting -n -t flags
    ./src/iperf3 -c $host -n 5M -t 5
    # -k mode
    ./src/iperf3 -c $host -k 1K  
    ./src/iperf3 -c $host -k 1K -u -b1G
    # CPU affinity
    ./src/iperf3 -c $host -A 2/2
    ./src/iperf3 -c $host -A 2/2 -u -b1G
    # Burst mode
    ./src/iperf3 -c $host -u -b1G/100
    # change MSS
    ./src/iperf3 -c $host -M 1000 -V
    # test congestion control option (linux only)
    ./src/iperf3 -c $host -C reno -V

    6. 若网络媒体出现卡顿可以是用iperf测试卡顿时网络的带宽,以定位是否是底层问题。

  • 相关阅读:
    AttributeError: 'DatabaseFeatures' object has no attribute 'autocommits_when_autocommit_is_off'
    mac 添加adb环境变量
    ios环境搭建
    接口自动化测试平台介绍
    听风系统介绍
    nginx启动报错整理
    Mongodb: Sort operation used more than the maximum 33554432 bytes of RAM
    Mac上python 在终端使用pip3安装包报ConnectTimeoutError错误
    crontab -让服务器执行定时任务
    koajs项目之memcached实现session共享
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/9350606.html
Copyright © 2011-2022 走看看