总结方法:
1、两台linux 终端都装有iperf工具
2、一台作为服务端:
TCP: iperf -s
UDP:iperf -s -u
3、一台作为客户端:
TCP:iperf -c [服务端ip]
UDP:iperf -c [服务端ip] -u -b 1000m
带宽计算:
1000M=1000Mbps=1000M bytes /sec
1bit=8byte
93.9Mbits/sec=93.9*8=751.2 Mbps
------------------------------------------------------------------------------------------------------------------------------------------------------------------
https://blog.csdn.net/yunweimao/article/details/106687997
iperf是一种命令行工具,用于通过测量服务器可以处理的最大网络吞吐量来诊断网络速度问题。它在遇到网络速度问题时特别有用,通过该工具可以确定哪个服务器无法达到最大吞吐量。
IPerf开始出现的时候是在03年,版本是基于1.7.0 进行介绍和解析的,貌似1.7.0还是使用C++编写比较多,后面到了IPerf2版本,C++和C结合,现在出来一个法国人团队另起炉灶重构出不向下兼容的IPerf3,他们开了一个论坛专门讨论维护,但因为是法语所以跟我也无法沟通,所以也没怎么上去看,一开始入门的时候就只能上处链接的文章,还好有所帮助。
现在IPerf的官方网站为:https://iperf.fr/
iperf分为两种版本,Unix/Linux版和Windows版,Unix/Linux版更新比较快,版本最新。Windows版更新慢。Windows版的iperf叫jperf,或者xjperf。jperf是在iperf基础上开发了更好的UI和新的功能。
1、Centos安装iperf
[root@docker-02 ~]# yum install iperf
2、如何使用iperf
1、必须在测试的两台计算机上同时安装iPerf。如果在个人计算机上使用基于Unix或 Linux的操作系统,则可以在本地计算机上安装iPerf。
2、但是,如果要测试网络提供商的吞吐量,最好使用另一台服务器作为终点,因为本地ISP可能会施加影响测试结果的网络限制。
3、TCP客户端和服务器
iperf需要两个系统,因为一个系统必须充当服务端,另外一个系统充当客户端,客户端连接到需要测试速度的服务端。
3.1在需要测试的两台电脑上,以服务器模式启动iperf
#iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
3.2在第二台电脑上,以客户端模式启动iperf连接到第一台电脑,替换198.51.100.5为本地电脑的ip地址
#iperf -c 198.51.100.5
------------------------------------------------------------
Client connecting to 198.51.100.5, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 198.51.100.6 port 50616connected with 198.51.100.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
3.3这时可以在第一步中的服务端终端看到连接和结果
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 198.51.100.5 port 5001connected with 198.51.100.6 port 50616
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
注
要停止iperf服务进程,请按CTRL+c
4、UDP客户端和服务器
使用iperf,还可以测试通过UDP连接实现的最大吞吐量,这里我用两台linux服务器做实验。
4.1启动UDP iperf服务
[root@docker-02 ~]# iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470byte datagrams
UDP buffer size: 8.00 MByte (default)
------------------------------------------------------------
4.2将客户端连接到iperf UDP服务器
[root@docker-02 ~]# iperf -c 172.17.120.50 -u
------------------------------------------------------------
Client connecting to 172.17.120.50, UDP port 5001
Sending 1470byte datagrams, IPG target: 11215.21 us (kalman adjust)
UDP buffer size: 8.00 MByte (default)
------------------------------------------------------------
[ 3] local 172.17.120.51 port 41017connected with 172.17.120.50 port 5001
read failed: Connection refused
[ 3] WARNING: did not receive ack of last datagram after 1tries.
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 892datagrams
注
1.05Mbits/sec远低于TCP测试中观察到的值,它也远远低于1GB 的最大出站贷款上限,这是因为默认情况下,iperf讲UDP客户端的贷款限制为每秒1Mbit。
可以用-b标志更改此值,将数字替换为要测试的最大带宽速率。如果需要测试网络速度,可以将数字设置为高于网络提供商提供的最大带宽上线:
[root@docker-02 ~]# iperf -c 172.17.120.50 -u -b 1000m
------------------------------------------------------------
Client connecting to 172.17.120.50, UDP port 5001
Sending 1470byte datagrams, IPG target: 11.76 us (kalman adjust)
UDP buffer size: 8.00 MByte (default)
------------------------------------------------------------
[ 3] local 172.17.120.51 port 46870connected with 172.17.120.50 port 5001
read failed: Connection refused
[ 3] WARNING: did not receive ack of last datagram after 5tries.
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.16 GBytes 1000Mbits/sec
[ 3] Sent 850341datagrams
注
这将告诉客户端我们希望尽可能达到每秒1000Mbits的最大值,该-b标志仅在使用UDP连接时有效,因为iperf未在TCP客户端上设置带宽限制。
5、双向测试
在某些情况下,可能希望测试两台服务器以获得最大吞吐量。使用iperf提供的内置双向测试功能可以轻松完成此测试。
5.1要测试两个连接,从客户端运行一下命令,替换ip为服务端ip地址
#iperf -c 198.51.100.5 -d
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 198.51.100.5, TCP port 5001
TCP window size: 351KByte (default)
------------------------------------------------------------
[ 3] local 198.51.100.6 port 50618connected with 198.51.100.5 port 5001
[ 5] local 198.51.100.6 port 5001connected with 198.51.100.5 port 58650
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
[ 3] 0.0-10.2 sec 1.28 GBytes 1.08 Gbits/sec
注
结果是iperf将在客户端服务器上启动服务器和客客户端(198.51.100.6)连接。完成此操作后,iperf会将iperf服务器连接到客户端,该连接现在既充当服务器连接又充当客户端连接。
5.2在服务器是哪个,可以看到
------------------------------------------------------------
Client connecting to 198.51.100.6, TCP port 5001
TCP window size: 153KByte (default)
------------------------------------------------------------
[ 6] local 198.51.100.5 port 58650connected with 198.51.100.6 port 5001
[ 6] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
[ 5] 0.0-10.2 sec 1.28 GBytes 1.08 Gbits/sec
6、常用选项
选项
描述
-F
更改运行测试的格式。例如,您可以使用-f k以每秒Kbits而不是每秒Mbits的速度获得结果。有效选项包括m(Mbits,默认),k(Kbits),K(KBytes)和M(MBytes)。
-V
强制iPerf使用IPv6而不是IPv4。
-i
更改带宽测试之间的间隔。例如,-i 60将每60秒生成一个新的带宽报告。默认值为零,执行一次带宽测试。
-p
更改端口。未指定时,默认端口为5001.您必须在客户端和服务器上都使用此标志。
-B
将iPerf绑定到特定的接口或地址。如果通过server命令传递,则将设置传入接口。如果通过client命令传递,则将设置传出接口。
————————————————
版权声明:本文为CSDN博主「运维猫(运维开发)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yunweimao/article/details/106687997