iperf与iperf3使用方法

iperf vs iperf3

iperf系列工具是使用最普遍的网络流量测试工具,除非测试组播,其他情况下都优先使用iperf2。

  • iperf3 server端自适应tcp, ump, iperf3 -s即可,不需要使用-u参数决定开启tcp还是udp。网络测试经常udp与tcp交叉组合测试,自适应udp、tcp非常方便。
  • iperf3 --omit参数支持忽略测试歧视的最初几秒,在测试是否丢包的场景下非常有用
  • iperf3作者还在维护发布新版本,iperf2基本停滞了
  • iperf3提供了library,可以通过python等语言直接调用iperf3库控制iperf3,iperf2不支持
  • iperf3 -R 参数支持reverse模式,即在client端增加此参数即可进行反向流量测试
  • iperf3目前不支持组播, iperf2支持
  • iperf3是单进程模式,不支持多clients同时连接server端的iperf3

iperf2 VS iperf3 详细对比

你必须了解的信息

在可以使用iperf3的情况下,不要使用iperf2

iperf3使用起来更方便一些,除此之外,iperf3能做到的,好像iperf2基本也能做到

编译新的版本,而不是使用发行版自带的版本

发行版自带的版本一般比较老,尤其是centos系列,建议自己编译安装一下。

  • 请注意IPerf3编译后的二进制文件直接拷贝到其他服务器是不行的,因为还有so库,因此尽量不要尝试通过拷贝编译好的iperf3的方式,你可能会遇到某些莫名奇妙的问题
  • iperf3进行测试时,服务器端和客户端要使用一致的版本,否则你可能会遇到莫名其妙的错误提示
    IPerf3的错误提示比较丑陋,网上资料也不多,当你发现使用--bidir等参数无法进行测试时,请注意检查server端和client端的版本是否一致

容易犯的错误

  • udp测试时,client端不需要与服务器端通信即可发送;tcp测试时,client端需要先与服务器端建立tcp连接后才会发送流量

为什么说这点,当进行udp测试时,不需要进行三次握手,client端马上打印发送数据情况,此时你可能误以为网络是通的,然后测试tcp时,就奇怪为什么iperf什么打印都没有。

  • linux收取udp报文有限速,当发送udp报文过大时,会丢包
  • iperf3在测试结束后会打印汇总信息:发送,接收报文数目,丢包数目等,udp测试的前1s一般会丢少量包,如果长时间测试需要看udp是否丢包,则使用--omit 2参数忽略前两秒的丢包统计

速率测试场景

速率测试一般测试带宽和收发报文数统计
考虑如下问题:

  • 发送端与接收端(linux)带宽和速率统计
  • 中间测试设备(网关)带宽和速率统计
    linux下带宽和速率统计使用ifpps工具即可,ifpps默认统计间隔为1s,

iperf2 组播测试

server端、加入组播组:./iperf -s -u -B 230.1.1.1

[root@TENCENT64 ~]# iperf -c 230.1.1.110 -u -b 10m -t 100000 -i 10 -T 64 -B 192.70.70.1

Client connecting to 230.1.1.110, UDP port 5001
Binding to local address 192.70.70.1
Sending 1470 byte datagrams, IPG target: 1176.00 us (kalman adjust)
Setting multicast TTL to 64
UDP buffer size: 224 KByte (default)


[ 3] local 192.70.70.1 port 41673 connected with 230.1.1.110 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 11.9 MBytes 10.0 Mbits/sec** # 只有单通通,即iperf server和client能够交互数据后,才开始发送组播包**
[ 3] 10.0-20.0 sec 11.9 MBytes 10.0 Mbits/sec

client端、发送组播流:./iperf -c 230.1.1.1 -u -b 1m -i 5 -t 100 -B 192.168.100.1

[root@VM_0_14_centos ~]# iperf -s -u -i 5 -B 230.1.1.110

Server listening on UDP port 5001
Binding to local address 230.1.1.110
Joining multicast group 230.1.1.110
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)


[ 3] local 230.1.1.110 port 5001 connected with 192.70.70.1 port 41673
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 5.0 sec 5.96 MBytes 10.0 Mbits/sec 0.001 ms 365155/369407 (99%) # 当组播流量点播下来后,才开始打印。在单播通,组播不通的情况下,不会打印类似这行的信息
[ 3] 5.0-10.0 sec 5.96 MBytes 10.0 Mbits/sec 0.001 ms 0/ 4252 (0%)

参考资料

https://linux.die.net/man/1/iperf

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容