部署完软路由系统后,有个很重要的动作就是测试并调试网络带宽性能。在路由器行业比较常见的网络吞吐量性能测试工具有图形化测试工具IQ ixChariot,以及命令行测试工具iperf。这里在Openwrt端我们以Iperf3为例来展示如何测试网络性能带宽。



#ssh [email protected]

#cd tmp




#opkg install iperf3_3.7-1_x86_64.ipk



这里以Mac OS客户端为例,其他Linux客户端和Windows客户端请自行在网上搜索之。

安装Homebrew 包管理器

#/usr/bin/ruby -e “$(curl -fsSL”


#brew install iperf3




# iperf3 -s  //临时开启进行,可以实时显示吞吐量

# iperf3 -s -D //开启后台常驻进程


2. 客户端开启测试

#iperf3 -c  //单线程TCP测试,这里的IP地址填你的openwrt路由器

#iperf3 -c  -b 1000m -t 300 -i 1 -u -P 2 #多线程UDP测速



1. 服务器端开启iperf3 -s 后,可以实时监听测试结果,如下图



2. 客户端测试完成后,会显示测试结果

#iperf3 -c -t 30  //测试30s



#[email protected]:~# iperf3 -h

Usage: iperf3 [-s|-c host] [options]

           iperf3 [-h|–help] [-v|–version]

Server or Client:

  -p, –port      #                      server port to listen on/connect to

  -f, –format   [kmgtKMGT]      format to report: Kbits, Mbits, Gbits, Tbits

  -i, –interval  #                       seconds between periodic throughput reports

  -F, –file name                       xmit/recv the specified file

  -A, –affinity n/n,m                 set CPU affinity

  -B, –bind      <host>              bind to the interface associated with the address <host>

  -V, –verbose                         more detailed output

  -J, –json                               output in JSON format

  –logfile f                               send output to a log file

  –forceflush                           force flushing output at every interval

  -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

  -I, –pidfile file                       write PID file

  -1, –one-off                          handle one client connection then exit

Client specific:

  -c, –client    <host>               run in client mode, connecting to <host>

  -u, –udp                               use UDP rather than TCP

  –connect-timeout #               timeout for control connection setup (ms)

  -b, –bitrate #[KMG][/#]          target bitrate in bits/sec (0 for unlimited)

                                              (default 1 Mbit/sec for UDP, unlimited for TCP)

                                              (optional slash and packet count for burst mode)

  –pacing-timer #[KMG]          set the timing for pacing, in microseconds (default 1000)

  –fq-rate #[KMG]                  enable fair-queuing based socket pacing in

                                              bits/sec (Linux only)

  -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, –length    #[KMG]            length of buffer to read or write

                                             (default 128 KB for TCP, dynamic or 1460 for UDP)

  –cport         <port>              bind to a specific client port (TCP and UDP, default: ephemeral port)

  -P, –parallel  #                    number of parallel client streams to run

  -R, –reverse                        run in reverse mode (server sends, client receives)

  –bidir                                  run in bidirectional mode.

                                             Client and server send and receive data.

  -w, –window    #[KMG]        set window size / socket buffer size

  -C, –congestion <algo>        set TCP congestion control algorithm (Linux and FreeBSD only)

  -M, –set-mss   #                 set TCP/SCTP maximum segment size (MTU – 40 bytes)

  -N, –no-delay                      set TCP/SCTP 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, 0-255.

                                              The usual prefixes for octal and hex can be used,

                                               i.e. 52, 064 and 0x34 all specify the same value.

  –dscp N or –dscp val           set the IP dscp value, either 0-63 or symbolic.

                                               Numeric values can be specified in decimal,

                                               octal and hex (see –tos above).

  -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

  –extra-data str                     data string to include in client and server JSON

  –get-server-output               get results from server

  –udp-counters-64bit             use 64-bit counters in UDP test packets

  –repeating-payload               use repeating pattern in payload, instead of

                                              randomized payload (like in iperf2)

[KMG] indicates options that support a K/M/G suffix for kilo-, mega-, or giga-

本文由作者 okass 发布在 WLink , 转载请联系客服授权处理,获得授权后请保留文章的完整性并附上原文链接:

We will be happy to hear your thoughts

Leave a reply

error: Content is protected !