<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="iPerf3使用教程">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2023-04-30 13:42<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
iPerf3使用教程




iPerf功能上分为：服务端和客户端，但程序用的都是官网下载的那个iperf，这一点不像ixchariot，它的控制端和客户端是不一样的。


要想测试一段链路的带宽，需要两端都安装iperf，然后用命令的方式指定哪一端工作在服务器模式，哪一端工作在客户端模式。


 


简单常用版


服务端：用-s参数，指明这端是服务端。


iperf3  -s  


服务端通常就用-s一个参数就可以了，更多的操作往往是在客户端加参数实现。


 


客户端：用-c参数，指明这端是客户端，后面要跟服务器端的ip。


iperf3  -c 192.168.3.120    


&zwj;其中，192.168.3.120是服务端ip。


这种情况下，iperf默认是单线程、TCP连接，数据流方向是：客户端--&gt;服务器端，也即客户端发送、服务端接收。


 


为了测试更准确，通常会用-P参数来启动多个线程，以保证吃满带宽，让测试结果更准确。但也不用太多，一般来说10个线程已经足够了。


iperf3  -c 192.168.3.120 -P 10


如果你想要测试下载方向的带宽（站在客户端角度），只需在客户端加参数-R，此时，数据流的方向就变成了：服务端--&gt;客户端。


iperf3  -c 192.168.3.120 -R


 


UDP测试


在客户端加参数-u，表示使用UDP协议，如果不加-u参数，默认使用TCP协议。


iperf3  -c 192.168.100.3 -u


 


结合官方文档-b参数的介绍可知，UDP默认是1Mbits/s（TCP不限制），所以，上面才只跑出这么低的带宽。因此，-u通常需要与-b参数结合使用，才能测出实际链路最大带宽。


iperf3  -c 192.168.100.3 -u -b 1000M


 


进阶玩法


 


1、双向同时打流


这种方法主要为了测试上传、下载同时工作时的最大带宽，因为目前的链路基本上都是全双工，所以，理论上，上传和下载都应该同时达到链路最大带宽。


方法：


需要分别在服务端和客户端起2个进程，windows需要开2个CMD窗口，这样才能实现双向同时打流（客户端的其中一个进程加-R参数即可）、或单向多进程打流。


因为iperf3没有双向同时打流的参数，所以只能用这种方式。但iperf是支持的。


服务端：


iperf3  -s -p 5201


iperf3  -s -p 5202


客户端：


iperf3  -c 192.168.100.3 -p 5201


iperf3  -c 192.168.100.3 -p 5202 -R


论双向打流，还得用ixchariot。


 


2、小包测试


小包测试建议用UDP模式，TCP模式设置难度高，且很容易出问题。


方法：


UDP模式，并设置l=18，即可得到64B的最小帧（可通过抓包软件验证，wireshark抓包会显示为60B，至于为什么不是64B，详见-l参数介绍），这样也就能获得64B小包发送速率了。


iperf3  -c 192.168.100.3 -u -b 1000m -l 18


-b：设置发送带宽，注意它设置的是单个线程的带宽，单位bits/s。哪怕你是千兆链路，如果你-b=100M，那么测试结果最大也不会超过100Mbits/s。


默认值：UDP是1Mbits/s，TCP是不限制。因此，这个参数通常与-u搭配使用，虽然它也可以与TCP搭配使用。


-l：length of buffer to read or write。


设置每次发送报文的最大长度，默认TCP是128KB, UDP是8KB。


-i：设置输出频率，也就是多久报告一次结果。默认是1s一次，你不仅可以设置成5s一次，还可以设置成丧心病狂的0.1s一次。我测试最多也就精确到0.1s了，再往下0.01s这个级别是设置不成功的。还可以设置为0，表示仅输出一条，也就类似于仅输出结果。


iperf3  -c 192.168.100.3 -i 0.1


-t：设置测试时长，单位s，默认测试时长为10s。输出的频率跟你设置的-i参数有关，默认是i=1,也就是1s输出一次，如果t=3，则只输出3次（如下）；如果-i=0.1，则输出3/0.1=30次。


iperf3  -c 192.168.100.3 -t 3


-n：指定要发送多少的数据量，单位是Byte。不指定单位，表示多少个字节；可以指定单位为k/m/g（大小写一样的效果）。注意：这个参数表示一共发送多少数据量，且直到发完为止，而不管多长时间，因此，它和-t参数是冲突的，不能同时使用的。它还与-k参数冲突。


iperf3  -c 192.168.100.3  -n 10m


-k：要发送多少个数据包，发完为止、发完即止。因此，它也是跟-t参数冲突的。而且也跟-n冲突。


iperf3  -c 192.168.100.3 -k 20


-tnk这3个参数是相互冲突的，不能同时使用这3个参数中的任意2个或3个，同一时间只能使用其中一个。且-nk参数会覆盖默认测试时长10s的限制。


另外，需要注意的是，如果某些参数设置的太小（比如-nkwl），可能会导致带宽测试结果不准确。比如：你是千兆带宽，却只设置发送一个1M的包，测试结果是不可能准确的。


-F：用在不同的端，代表不同的含义。用在客户端，表示发送实际文件，而不是用软件提供的随机数据；用在服务端，表示把从客户端发送过来的数据，写入文件（默认是写入iperf的文件夹中），而不是默认丢弃收到的数据。另外，发现我不管在客户端指定多大的文件，都只发送一部分（26%左右）大小的数据，而不是整个文件发送完再结束（均是在windows下测试的）。


iperf3  -c 192.168.100.3 -F d:\123.iso


因此，它可以跟-tnk同时使用，哪个值先到，以哪个为准。即最多只能发送文件的26%左右就停止了，不管你-t设置了多少s。除非你设置的t值小于发送26%所需时间，才生效。


iperf3  -c 192.168.100.3 -F d:\456.iso -t 10


iperf3  -c 192.168.100.3 -F d:\456.iso -t 3


-v（小写）：查看iperf版本信息：


iperf3  -v


-V（大写）：输出更为详细的信息：会发现多了iperf版本、TCP MSS大小、CPU占用率、时间等信息。


iperf3  -c 192.168.3.120


iperf3  -c 192.168.3.120 -V


-B：绑定网卡，用在有多个网卡的主机。对于客户端，这将设置出站接口。对于服务器，这将设置传入接口


iperf3  -s -B 192.168.100.3


-S：设置被发送出去报文的类型（TOS字段），用的不多，可以参考文末提供的链接文档。


-h：显示帮助


iperf3  -h


-O：官方文档写的忽略前几秒的测试结果，用来跳过TCP慢启动过程，从而让测试结果更加接近链路的最大带宽。但我测试发现，这个参数也是可以跟-u结合使用的，表示忽略前多少秒的输出结果。


UDP测试：


iperf3  -c 192.168.100.3 -u -b 1000M -O 2


TCP测试：


iperf3  -c 192.168.100.3 -O 2


-N：设置 TCP 无延迟选项，禁用 Nagle 算法。通常这个选项只用于交互式人机对话的应用程序中，比如Telnet。可与-l参数配合使用，来限制单个数据包的大小，用法可参见-l参数。


-d：输出debug信息。很有用，可以查看一些详细信息：


iperf3  -c 192.168.9.68 -d -l 1


 


常见问题：


1、命令参数要区分大小写的。


比如：-p的意思是指定端口，-P的意思是指定并发线程数量。


2、如果客户端连不上服务器，检查关闭防火墙，再试。


3、windows端和linux端的iperf是可以互通的。


iPerf官网：https://iperf.fr/


官方下载：https://iperf.fr/iperf-download.php


iPerf3 GitHub：https://github.com/esnet/iperf


本文地址：https://mp.weixin.qq.com/s/1yA7zGnhwnemTvafwB14cA


官方教程：


https://iperf.fr/iperf-doc.php


https://software.es.net/iperf/invoking.html


参考链接：


https://www.592850.com/archives/1036.html


https://software.es.net/iperf/faq.html


https://software.es.net/iperf/dev.html


https://github.com/esnet/iperf/discussions


</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
