Linux每天一个命令:iperf
iperf命令
Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。
下载地址:https://iperf.fr/iperf-download.php#fedora
用户文档地址:https://iperf.fr/iperf-doc.php
安装iperf:
[root@server-A ~]# rpm -ivh iperf3-3.1.-.fc24.x86_64.rpm
Preparing... ################################# [%]
Updating / installing...
:iperf3-3.1.-.fc24 ################################# [%]
[root@server-A ~]# rpm -ql iperf3
/usr/bin/iperf3
/usr/lib64/libiperf.so.
/usr/lib64/libiperf.so.0.0.
/usr/share/doc/iperf3
/usr/share/doc/iperf3/LICENSE
/usr/share/doc/iperf3/README.md
/usr/share/doc/iperf3/RELEASE_NOTES
/usr/share/man/man1/iperf3..gz
/usr/share/man/man3/libiperf..gz
iperf3选项:
| 通用选项 | |
|---|---|
| 命令行选项 | 描述 |
| -p, --port n | 服务器端口供服务器监听,客户端连接。在客户端和服务器端都应该是相同的。默认是5201 |
| --cport n | 指定客户端端口的选项。(新iPerf 3.1) |
| -f, --format [kmKM] |
格式化带宽数输出。支持的格式有:
'k' = Kbits/sec 'K' = KBytes/sec
'm' = Mbits/sec 'M' = MBytes/sec
|
| -i, --interval n | 设置每次报告之间的时间间隔,单位为秒。如果设置为非零值,就会按照此时间间隔输出测试报告。默认值为零。 |
| -F, --file name | 客户端:从文件中读取并写入网络,而不是使用随机数据; 服务器端:从网络读取并写入文件,而不是将数据丢弃。 |
| -A, --affinity n/n,m-F | 如果可能的话,设置CPU关联性(仅为Linux和FreeBSD)。在客户机和服务器上,您都可以使用这个参数的n形式来设置本地关联(在这里n是一个CPU数字)。此外,在客户端,您可以使用n、m的参数形式来覆盖服务器的亲合性。注意,在使用这个特性时,进程只会绑定到一个CPU(而不是一个包含潜在的多个CPU的集合)。 |
| -B, --bind host | 绑定到主机一个地址。对于客户端,这设置了出站接口。对于服务器,这将设置传入的接口。只适用于多网卡主机。 |
| -V, --verbose | 给更详细的输出 |
| -J, --json | 以JSON格式输出 |
| --logfile file | 将输出发送到一个日志文件。(新iPerf 3.1) |
| --d, --debug | 显示debug信息 |
| -v, --version | 显示版本信息并退出。 |
| -h, --help | 显示帮助信息 |
| 服务器选项 | |
| 命令行选项 | 描述 |
| -s, --server | 在服务器模式下运行iPerf。(这一次只允许一次iperf连接) |
| -D, --daemon | 在后台运行服务器作为守护进程。 |
| -I, --pidfilefile | 使用进程ID编写一个文件,在作为守护进程运行时最有用。(新iPerf 3.1) |
| 客户端选项 | |
| 命令行选项 | 描述 |
| -c, --client host | 在客户端模式下运行iPerf,连接到在主机上运行的iPerf服务器。 |
| --sctp | 使用SCTP而不是TCP(Linux、FreeBSD和Solaris)。(新iPerf 3.1) |
| -u, --udp | 使用UDP而不是TCP。参见-b选项。 |
| -b, --bandwidth n[KM] | UDP模式使用的带宽,单位bits/sec。此选项与-u选项相关。默认值是1 Mbit/sec。 |
| -t, --time n | 设置传输的总时间。Iperf在指定的时间内,重复的发送指定长度的数据包。默认是10秒钟。参考-l与-n选项。 |
| -n, --num n[KM] | 传送的缓冲器数量。通常情况,Iperf按照10秒钟发送数据。-n参数跨越此限制,按照指定次数发送指定长度的数据,而不论该操作耗费多少时间。参考-l与-t选项。 |
| -k, --blockcount n[KM] | 用于传输的块(数据包)的数量。(而不是-t或-n)也可以看到-t,-l和-n选项 |
| -l, --length n[KM] | 设置读写缓冲区的长度。TCP方式默认为8KB,UDP方式默认为1470字节。 |
| -P, --parallel n | 线程数。指定客户端与服务端之间使用的线程数。默认是1线程。需要客户端与服务器端同时使用此参数。 |
| -R, --reverse | 以反向模式运行(服务器发送,客户端接收)。 |
| -w, --window n[KM] | 将套接字缓冲区大小设置为指定的值。对于TCP,这设置了TCP窗口的大小。 |
| -M, --set-mss n | 尝试设置TCP最大段大小(MSS)。MSS通常是MTU-40字节的ip报头。对于以太网,MSS是1460字节(1500字节MTU)。 |
| -N, --no-delay | 设置TCP不延迟选项,使Nagle的算法失效。通常情况下,像telnet这样的交互式应用程序通过禁用。 |
| -4, --version4 | 只使用IPv4。 |
| -6, --version4 | o只使用IPv6。 |
| -S, --tos n |
用于输出数据包的服务类型。(许多路由器忽略了TOS字段。)您可以使用“0x”前缀指定十六进制值,在八进制中使用“0”前缀,或在十进制中。例如,'0x10'十六进制='020'八进制='16'小数。RFC 1349中指定的图号是: IPTOS_LOWDELAY minimize delay 0x10 IPTOS_THROUGHPUT maximize throughput 0x08 IPTOS_RELIABILITY maximize reliability 0x04 IPTOS_LOWCOST minimize cost 0x02 |
| -L, --flowlabel n | 设置IPv6流标签(目前仅在Linux上支持)。 |
| -Z, --zerocopy | 使用“零拷贝”发送数据的方法,例如sendfile(2),而不是通常的写入(2)。这使用了更少的CPU。 |
| -O, --omit n | 忽略测试的前n秒,跳过TCP TCP慢启动周期。 |
| -T, --title str | 在每个输出行前面加上这个字符串。 |
| -C, --linux-congestion algo | 设置拥塞控制算法(Linux只针对iPerf 3.0、Linux和FreeBSD为iPerf 3.1)。 |
iperf3实例:
带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
UDP模式:在client端使用-u选项
server:
[root@server-A ~]# iperf3 -s -V
iperf 3.1.
Linux server-A 3.10.-.el7.x86_64 # SMP Tue Nov :: UTC x86_64
-----------------------------------------------------------
Server listening on
-----------------------------------------------------------
Time: Wed, Sep :: GMT
Accepted connection from 192.168.1.120, port
Cookie: client-B.1505859092.776727.2dfae62a4
[ ] local 192.168.1.130 port connected to 192.168.1.120 port
Starting Test: protocol: UDP, streams, byte blocks, omitting seconds, second test
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ ] 0.00-1.00 sec KBytes Kbits/sec 1638910.193 ms / (%)
[ ] 1.00-2.00 sec KBytes 1.05 Mbits/sec 583573.766 ms / (%)
[ ] 2.00-2.05 sec 0.00 Bytes 0.00 bits/sec 583573.766 ms / (%)
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ ] 0.00-2.05 sec 0.00 Bytes 0.00 bits/sec 583573.766 ms / (%)
CPU Utilization: local/receiver 0.0% (0.0%u/0.0%s), remote/sender 0.0% (0.0%u/0.0%s)
iperf 3.1.
Linux server-A 3.10.-.el7.x86_64 # SMP Tue Nov :: UTC x86_64
-----------------------------------------------------------
Server listening on
-----------------------------------------------------------
client:
#设置传输时间为2秒
[root@client-B ~]# iperf3 -c 192.168.1.130 -t -u
Connecting to host 192.168.1.130, port
[ ] local 192.168.1.120 port connected to 192.168.1.130 port
[ ID] Interval Transfer Bandwidth Total Datagrams
[ ] 0.00-1.01 sec KBytes 1.04 Mbits/sec
[ ] 1.01-2.00 sec KBytes 1.05 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ ] 0.00-2.00 sec KBytes 1.05 Mbits/sec 583573.766 ms / (%)
[ ] Sent datagrams iperf Done.
#客户端同时向服务器端发起30个连接线程,以5Mbps为数据发送速率。
[root@client-B ~]# iperf3 -u -c 192.168.1.130 -b 5M -P -t
#以100M为数据发送速率,进行上下行带宽测试。 #上传带宽测试
[root@client-B ~]# iperf3 -u -c 192.168.1.130 -b 100M -t #下载带宽测试,使用-R选项
[root@client-B ~]# iperf3 -u -c 192.168.1.130 -b 100M -R -t
TCP模式:默认使用TCP
server:
[root@server-A ~]# iperf3 -s -V
iperf 3.1.
Linux server-A 3.10.-.el7.x86_64 # SMP Tue Nov :: UTC x86_64
-----------------------------------------------------------
Server listening on
-----------------------------------------------------------
Time: Wed, Sep :: GMT
Accepted connection from 192.168.1.120, port
Cookie: client-B.1505860318.231455.1c28c3a96
TCP MSS: (default)
[ ] local 192.168.1.130 port connected to 192.168.1.120 port
Starting Test: protocol: TCP, streams, byte blocks, omitting seconds, second test
[ ID] Interval Transfer Bandwidth
[ ] 0.00-1.00 sec MBytes 4.18 Gbits/sec
[ ] 1.00-2.00 sec MBytes 4.19 Gbits/sec
[ ] 2.00-2.04 sec 17.8 MBytes 3.79 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval Transfer Bandwidth
[ ] 0.00-2.04 sec 0.00 Bytes 0.00 bits/sec sender
[ ] 0.00-2.04 sec MBytes 4.18 Gbits/sec receiver
CPU Utilization: local/receiver 5.4% (0.0%u/5.4%s), remote/sender 0.0% (0.0%u/0.0%s)
client:
#在tcp模式下,客户端到服务器192.168.1.1上传带宽测试,测试时间为60秒。
[root@client-B ~]# iperf3 -c 192.168.1.130 -t
Connecting to host 192.168.1.130, port
[ ] local 192.168.1.120 port connected to 192.168.1.130 port
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ ] 0.00-1.00 sec MBytes 4.17 Gbits/sec 2.03 MBytes
[ ] 1.00-2.00 sec MBytes 3.89 Gbits/sec 2.49 MBytes
[ ] 2.00-3.00 sec MBytes 4.25 Gbits/sec 1.80 MBytes
[ ] 3.00-4.00 sec MBytes 4.47 Gbits/sec 1.88 MBytes
[ ] 4.00-5.00 sec MBytes 4.36 Gbits/sec 1.97 MBytes
[ ] 5.00-6.00 sec MBytes 3.98 Gbits/sec 2.04 MBytes
[ ] 6.00-7.00 sec MBytes 4.36 Gbits/sec 1.48 MBytes
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ ] 0.00-7.52 sec 3.69 GBytes 4.22 Gbits/sec sender
[ ] 0.00-7.52 sec 0.00 Bytes 0.00 bits/sec receiver
iperf3: interrupt - the client has terminated
#客户端同时向服务器端发起30个连接线程。
[root@client-B ~]# iperf3 -c 192.168.1.130 -P -t
#进行上下行带宽测试。 #上传带宽测试
[root@client-B ~]# iperf3 -c 192.168.1.130 -t #下载带宽测试,使用-R选项
[root@client-B ~]# iperf3 -c 192.168.1.130 -R -t
iperf3介绍到此结束;有兴趣的朋友可以看下用户文档,其中也有iperf版本2的详细介绍
***********************************************************
学习永远不晚。——高尔基
***********************************************************
Linux每天一个命令:iperf的更多相关文章
- LINUX上一个命令计算PI
Linux上一个命令计算PI – 笑遍世界 http://smilejay.com/2017/11/calculate-pi-with-linux-command/ [root@d1 goEcho]# ...
- Linux每天一个命令:grep
grep (缩写来自Globally search a Regular Expression and Print) 是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出 ...
- Linux每天一个命令:tar
Linux tar命令简介: tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来在磁 ...
- Linux每天一个命令:cat
Linux cat命令 命令:cat cat 命令用于连接文件并打印到标准输出设备上. 使用权限 所有使用者 语法格式 cat [-AbeEnstTuv] [--help] [--version] f ...
- Linux每天一个命令:nc/ncat
nmap-ncat.x86_64版nc/ncat nc/ncat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了.你能建立一个服务器,传输文件,与朋友聊天,传输流媒 ...
- linux 每天一个命令
Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 使用命令关闭占用80端口的程序 sudo fuser ...
- Linux每天一个命令:iostat
iostat用于输出CPU和磁盘I/O相关的统计信息 安装Sysstat工具包 centos: yum install sysstat ubuntu: sudo apt-get install sys ...
- linux系统及命令学习
1,基本概念 Shell(命令行):是一个程序,接受键盘输入的命令,并将命令传递给操作系统进行执行. Bash:Bourne Again Shell, 是大多数linux系统分之中所带的一种shell ...
- linux常用终端命令(一)终端命令格式(二)文件和目录常用命令
一.linux终端命令格式 1.终端命令格式 command [-options] [parameter] 说明: command :命令名,相应功能的英文单词或单词的缩写 [-options] ...
随机推荐
- CSS3新特性,兼容性,兼容方法总结
css3手册css3手册 边框 border-radius 用于添加圆角效果 语法: border-radius:[ <length> | <percentage> ]{1,4 ...
- gulp学习。
安装gulp 安装gulp之前必须先安装node.js,然后在命令行里输入 $ npm install gulp-cli -g (-g 表示全局安装)然后在输入$ gulp -v ,验证,安装完成后再 ...
- 数据库还原错误:指定的转换无效。(SqlManagerUI)
SSMS在一定程度上方便我们进行一些常见的操作.但有时候它处理得又不是那么不人性化.尤其是错误信息. 今天我在进行数据库还原的时候就碰到一个错误:指定的转换无效.(SqlManagerUI) Spec ...
- MySQL客户端连接方式
MySQL连接方式MySQL除了最常见的TCP连接方式外,还提供SOCKET(LINUX默认连接方式).PIPE和SHARED MEMORY连接方式.各连接方式的服务器.客户端启动选项,及连接默认值见 ...
- python常用内置模块
#持续更新 #在使用内置模块的时候需要导入,例如import abc,则导入abc模块,当然模块也可以自己写,相当于一个类,后面放到类里说,这个因为环境闲置,有些无法执行,只能理解了 #os系统操作 ...
- [Spark SQL_1] Spark SQL 配置
0. 说明 Spark SQL 的配置基于 Spark 集群搭建 && Hive 的安装&配置 1. 简介 Spark SQL 是构建在 Spark Core 模块之上的四大 ...
- CentOS7 安装 JDK
安装步骤 1. 将 jdk 安装包传到 用户 centos 的 home 目录 (/home/centos) 通过 Xftp 将安装包( jdk-8u161-linux-x64.tar.gz )传到用 ...
- SDN 第四次作业
阅读 了解SDN控制器的发展 http://www.sdnlab.com/13306.html http://www.docin.com/p-1536626509.html 了解ryu控制器 http ...
- Monad、Actor与并发编程--基于线程与基于事件的并发编程之争
将线程.事件.状态等包装成流的源. 核心:解决线程的消耗和锁的效率问题. Java和Node.js可以说分别是基于线程和基于事件的两个并发编程代表,它们互相指责瞧不起对方,让我们看看各种阵营的声音: ...
- C# ActiveX 网页打包验证自动升级
原文地址:http://www.cnblogs.com/yilin/p/csharp-activex.html 注意事项:Win10下需要设置兼容模式,F12仿真切换到IE6-8(版本参考——BT90 ...