网络性能测试工具iperf的使用与参数解析
介绍
网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具。
Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。
下面介绍Iperf的主要功能。
TCP方面:
- 测试网络带宽。
- 支持多线程,在客户端与服务端支持多重连接。
- 报告MSS/MTU值的大小。
- 支持TCP窗口值自定义并可通过套接字缓冲。
UDP方面:
- 可以设置指定带宽的UDP数据流
- 可以测试网络抖动值、丢包数
- 支持多播测试
- 支持多线程,在客户端与服务端支持多重连接。
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 -h
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-B, --bind <host> 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 quitServer 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 exitClient 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)--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)-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 <server address> -F <file-name>
-B, --bind <host>
绑定到主机的多个地址中的一个(用于多网口的设备)。对于客户端来说,这个参数设置了出栈接口。对于服务器端来说,这个参数设置入栈接口。这个参数只用于具有多网络接口的主机。在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 <host>
以客户端模式运行,连接到<host>
-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 <port>
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
测试结果
测试情况如图:
其中:
- Interval表示时间间隔。
- Transfer表示时间间隔里面转输的数据量。
- Bandwidth是时间间隔里的传输速率。
- jitter :抖动,网络中的延迟是指信息从发送到接收经过的延迟时间,一般由传输延迟及处理延迟组成。而抖动是指最大延迟与最小延迟的时间差,如最大延迟是20毫秒,最小延迟为5毫秒,那么网络抖动就是15毫秒,它主要标识一个网络的稳定性。
- packet loss:丢包率,封包在传送过程中因不明原因无法让接收者收到,丢失的封包就是 packet loss。
最后一行是本次测试的统计。测试可知带宽平均为490Mbit/s。
网络性能测试工具iperf的使用与参数解析相关推荐
- 网络性能测试工具Iperf和netperf
网络性能测试工具Iperf和netperf 一.iperf工具的使用 同主机网络传输速率吞吐率 网络响应时间 TCP/UDP吞吐率 跨主机网络传输速率吞吐率 网络响应时间 TCP/UDP吞吐率 1.测 ...
- tcp连接服务器性能测试,TCPIP网络性能测试工具 - Iperf.pdf
TCPIP网络性能测试工具 - Iperf.pdf TCP/IP 网络性能测试工具 - Iperf TCP/IP网络性能测试工具 - Iperf 1 简介 Iperf 是一个 TCP/IP 和 UDP ...
- 网络性能测试工具Iperf上手指南
Iperf是一个网络性能测试工具.可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失.Iperf在linux和windows平台均有二 ...
- Linux如何安装iperf软件,Linux 下网络性能测试工具 iperf 的安装和使用
很久没写文章,iperf 也一直有用,感受不错就记录一下html 说明: OS :CentOS 6.4 x86_64 Server: 192.168.100.55 Client: 192.168.10 ...
- iperf java_网络性能测试工具Iperf/Jperf
Iperf 是一个网络性能测试工具.Iperf 可以测试TCP 和UDP 带宽质量.Iperf 可以测量最大TCP 带宽,具有多种参数和UDP 特性. Iperf 可以报告带宽,延时抖动和数据包丢失. ...
- iperf java_网络性能测试工具Iperf/Jperf解读
Iperf 是一个网络性能测试工具.Iperf 可以测试TCP 和UDP 带宽质量.Iperf 可以测量最大TCP 带宽,具有多种参数和UDP 特性. Iperf 可以报告带宽,延时抖动和数据包丢失. ...
- 网络性能测试工具 -- iperf
Iperf 是一个网络性能测试工具.可以测试 TCP 和 UDP 带宽质量,可以测量最大 TCP 带宽,具有多种 参数和 UDP 特性,可以报告带宽,延迟抖动和数据包丢失. download:Inde ...
- 网络性能测试工具Iperf介绍
[概要]Iperf是一款网络性能测试工具,可以方便的用它进行SDN网络带宽和网络质量的测试,Iperf支持协议.定时.缓冲区等参数的配置调整,报告TCP/UDP最大带宽.延迟抖动.数据包丢失等统计信息 ...
- 网卡性能测试用什么软件,小巧好用的网络性能测试工具iPerf
作为一个网络工程师经常会遇到这种情况,需要在两点间测试实际可跑带宽. 带宽小的线路可以搭个FTP服务器,或者直接用scp拷文件这种方式,如果线路超过10G以上就不好用了,一方面需要准备大文件,另一方面 ...
最新文章
- MySQL 数据库linux系统下修改配置文件设置mysql是否大小写敏感实例演示
- Matplotlib绘制动态曲线图,超简单!!
- SharePoint 数据迁移解决方案
- 如何用鲲鹏弹性云服务器部署《Hadoop伪分布式》
- Unity开发《一起来捉妖》教程 | 1.陀螺仪控制相机
- Reddit 评级算法的工作原理
- Android ConstraintLayout 最新使用小结
- Mysql5.6 自动化部署
- Redhat 5.4 Oracle 10g RAC 删除节点
- 【VBScript恶搞代码】电脑自爆警告
- CorelDRAW X7 X8 2017 2018是什么关系?
- android打电话录音软件,Android uni-app实现音视频通话
- 麻油是什么,怎么用?
- WPF textbox禁用输入法
- 项目经理的专业面试10条经验总结
- 客厅与阳台之间的设计施工,要不要打通呢?
- 大工18秋计算机1答案,大工18秋《专业英语(计算机英语)》在线作业1.docx
- 圆柱模板计算器V1.0
- Shell的基础用法
- matlab赌徒输完问题,Gambler's Ruin(赌徒破产问题 概率论)
热门文章
- mac写python3_跟我读python3文档:004_mac与python3配置
- python源程序执行的方式是什么执行-python调用可执行文件的方法
- python 回归 显著_指南 | 量化选股with Python(2) 回归分析
- element表格多列排序_Excel表格在工作中的经典用法,建议收藏!
- HTC Link是仅适用于日本的6DOF VR头显
- 自动驾驶年度激辩:载货比载人更快,商业化应成为评价指标 | MEET2021
- 被「卡脖子」的尖端技术该如何前行?刘明张亚勤等院士大咖为你解惑 | CNCC2020...
- 谷歌重磅开源新技术:5行代码打造无限宽神经网络模型,帮助“打开ML黑匣子”...
- 项目中常用的 19 条 MySQL 优化总结
- docker-ce 配置初始化后服务启动报错