资讯专栏INFORMATION COLUMN

网络性能测试工具iperf的使用与参数解析

icattlecoder / 276人阅读

摘要:介绍网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理网络存在安全漏洞等原因,都会导致网络带宽利用率不高。

介绍

  网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具。
  Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。
  下面介绍Iperf的主要功能。

  TCP方面:

  1. 测试网络带宽。
  2. 支持多线程,在客户端与服务端支持多重连接。
  3. 报告MSS/MTU值的大小。
  4. 支持TCP窗口值自定义并可通过套接字缓冲。

  UDP方面:

  1. 可以设置指定带宽的UDP数据流
  2. 可以测试网络抖动值、丢包数
  3. 支持多播测试
  4. 支持多线程,在客户端与服务端支持多重连接。

Iperf的安装与使用

  iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、Wi-Fi网络等。在工作模式上,iperf运行于服务器、客户端模式下,其服务器端主要用于监听到达的测试请求,而客户端主要用于发起连接会话,因此要使用iperf,需要两台服务器,一台运行在服务器模式下,另一台运行在客户端模式下。
  iperf支持Win32、Linux、FreeBSD、MacOS X、OpenBSD和Solaris等多种操作系统平台。读者可以从 iperf官方主页链接下载各种版本,目前最新的版本是iperf3.1.3:

下载后解压放在某个路径即可。
然后在cmd中带入参数执行iperf即可。

iperf参数介绍

  在完成iperf安装后,执行“iperf3 –h”即可显示iperf的详细用法。

D:/Program Files/iperf-3.1.3-win64>iperf3 -hUsage: 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  -B, --bind          bind to a specific interface  -V, --verbose             more detailed output  -J, --json                output in JSON format  --logfile f               send output to a log file  -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        run in client mode, connecting to   -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)  --cport             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)  -w, --window    #[KMG]    set window size / socket buffer size  -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"  -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  --udp-counters-64bit      use 64-bit counters in UDP test packets[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

  iperf的命令参数共分为三类,分别是客户端与服务器端公用参数、服务器端专用参数和客户端专用参数,下面对常用的选项进行介绍。

客户端与服务器端公用参数

-p, --port #

设置端口,与服务器端的监听端口一致。默认是5001端口,与ttcp的一样。

-f, --format [kmgKMG]

速率显示单位。分别表示以Kbits,Mbits,Gbits,KBytes,MBytes,GBytes,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K

-i, --interval #

设置每次报告之间的时间间隔,单位为秒。如果设置为非零值,就会按照此时间间隔输出测试报告。默认值为零。

-F, --file name

指定要传输的文件。

eg:iperf -c  -F 

-B, --bind

绑定到主机的多个地址中的一个(用于多网口的设备)。对于客户端来说,这个参数设置了出栈接口。对于服务器端来说,这个参数设置入栈接口。这个参数只用于具有多网络接口的主机。在Iperf的UDP模式下,此参数用于绑定和加入一个多播组。使用范围在224.0.0.0至239.255.255.255的多播地址。参考-T参数。

-V, --verbose

输出更多细节信息。

-J, --json

以JSON格式输出。

–logfile f

把输出信息保存到一个日志文件。

-d, --debug

debug信息输出。

-v, --version

显示版本信息。

-h, --help

显示帮助信息。输出iperf所有参数的格式和解释。

服务器端专用参数

-s, --server

以服务器模式运行。

-D, --daemon

将服务器作为守护进程运行。

-I, --pidfile file

写PID文件。

-1, --one-off

处理一个客户端连接,然后退出。

客户端专用参数

-c, --client

以客户端模式运行,连接到

-u, --udp

使用UDP,而不是TCP。

-b, --bandwidth #[KMG][/#]

带宽,单位为bits/sec (值设为0代表不限制)
UDP默认为1 Mbit/sec,TCP默认为不限制。

-t, --time #

设置传输的总时间。Iperf在指定的时间内,重复的发送指定长度的数据包。默认是10秒钟。

-n, --bytes #[KMG]

指定要传输的总字节数。(传输完成才停止,不管设置的传输总时间)
number of bytes to transmit (instead of -t)
eg:

iperf3 -c 222.35.11.23 -n 100000

-k, --blockcount #[KMG]

要传输的总数据包数。(不管-t或-n参数)
number of blocks (packets) to transmit (instead of -t or -n)

-l, --len #[KMG]

读写的缓冲区大小。
TCP默认是128KB,UDP默认是8KB。
eg:

iperf3 -c 222.35.11.23 -l 16

–cport

bind to a specific client port (TCP and UDP, default: ephemeral port)

-P, --parallel #

线程数。指定客户端与服务端之间使用的线程数。默认是1线程。需要客户端与服务器端同时使用此参数。

-R, --reverse

以反向模式运行。(服务器发送数据,客户端接收数据)

-w, --window #[KMG]

设置窗口大小。
set window size / socket buffer size

-M, --set-mss #

set TCP/SCTP maximum segment size (MTU - 40 bytes)

-N, --no-delay

设置TCP/SCTP不延时。
set TCP/SCTP no delay, disabling Nagle’s Algorithm

-4, --version4

只使用IPv4。

-6, --version6

只使用IPv6。

-S, --tos N

set the IP ‘type of service’

-Z, --zerocopy

use a ‘zero copy’ method of sending data

-O, --omit N

omit the first n seconds

-T, --title str

在每个输出行前面加上此字符串。

–get-server-output

get results from server

–udp-counters-64bit

use 64-bit counters in UDP test packets

例子1

TCP模式

服务端

iperf -s -i 1   //设置作为服务端,速率报告间隔时间1s

客户端
单线程上行:

iperf -c 220.180.239.212 -p 8009  -i 1 -t 20     

//向对应ip和端口中TCP测试20秒,并每秒打印一次吞吐量

多线程上行:

iperf -c 220.180.239.212 -p 8009  -i 1 -t 20 -P 2/3/4/…

UDP模式

服务端

iperf -s -u

客户端
//单线程上行

iperf -c 220.180.239.212 -p 8010 -b 100M  -i 1 -t 20   

//以100M的带宽向指定IP和端口灌包测试20秒,并且每秒上报一次发送的数据量和速率
多线程上行:

iperf -c 220.180.239.212 -p 8010 -b 100M -i 1 -t 20 -P 2/3/4/…

例子2

TCP Mode:

Server:

iperf3 -s -p 5600

Client Example:
Single-threaded uplink:

iperf3 -c 220.180.239.212 -p 5600 -i 1 -t 20

Multi-threaded uplink :

iperf3 -c 220.180.239.212 -p 5600 -i 1 -t 20 -P 4 // Multi-threading is recommended

Single-threaded downlink :

iperf3 -c 220.180.239.212 -p 5600 -I 1 -t 20 -R

UDP Mode:

Server:

iperf3 -s -p 5600

Client Example:
Single-threaded uplink :

iperf3 -u -c 220.180.239.212 -p 5600 -b 100M -i 1 -t 20

Multi-threaded downlink :

iperf3 -u -c 220.180.239.212 -p 5600 -b 100M -i 1 -t 20 -P 4 -R

例子3

iperf3 -u -c 192.168.9.3 -i 1 -t 60 -b 100M

以udp模式向客户端192.168.9.3发送100M带宽的数据,持续60秒,每秒发送一次报告。

iperf -c 59.128.103.56 -f K -i 2 -w 300K

设定报告间隔为2秒,服务器端和客户端的TCP窗口都开到300KB

iperf -c 59.128.103.56 -f K -i 2 -w 300K –n 1000000

测试传输约1MB数据

iperf -c 59.128.103.56 -f K -i 2 -w 300K –t 36

测试持续36秒

iperf -c 59.128.103.56 -f K -i 2 -w 300K -n 10400000 –d

测试双向的传输

iperf -c 59.128.103.56 -f K -i 2 -w 300K –u

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121355.html

相关文章

  • 一文掌握 Linux 性能分析之网络篇(续)

    ...路由 dtrace:TCP/IP 栈跟踪 iperf / netperf / netserver:网络性能测试工具 perf 性能分析神器 由于篇幅有限,本文会先介绍前面两个,其他工具留作后面介绍,大家可以持续关注。 sar sar 是一个系统历史数据统计工具。统计信息非常...

    chengjianhua 评论0 收藏0
  • 一文掌握 Linux 性能分析之网络篇(续)

    ...路由 dtrace:TCP/IP 栈跟踪 iperf / netperf / netserver:网络性能测试工具 perf 性能分析神器 由于篇幅有限,本文会先介绍前面两个,其他工具留作后面介绍,大家可以持续关注。 sar sar 是一个系统历史数据统计工具。统计信息非常...

    zero 评论0 收藏0
  • 一文掌握 Linux 性能分析之网络篇(续)

    ...路由 dtrace:TCP/IP 栈跟踪 iperf / netperf / netserver:网络性能测试工具 perf 性能分析神器 由于篇幅有限,本文会先介绍前面两个,其他工具留作后面介绍,大家可以持续关注。 sar sar 是一个系统历史数据统计工具。统计信息非常...

    lx1036 评论0 收藏0
  • 一文掌握 Linux 性能分析之网络

    ...特征 dtrace:TCP/IP 栈跟踪 iperf / netperf / netserver:网络性能测试工具 perf 性能分析神器 本文先来看前面 7 个。 ping ping 发送 ICMP echo 数据包来探测网络连通性,除了能直观地看出网络连通状况外,还能获得本次连接往返时间...

    wean 评论0 收藏0
  • 一文掌握 Linux 性能分析之网络

    ...特征 dtrace:TCP/IP 栈跟踪 iperf / netperf / netserver:网络性能测试工具 perf 性能分析神器 本文先来看前面 7 个。 ping ping 发送 ICMP echo 数据包来探测网络连通性,除了能直观地看出网络连通状况外,还能获得本次连接往返时间...

    loostudy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<