iperf2.0和iperf3比较以及影响udp丢包率的参数

文章背景:

最近在做40G交换板的TCP带宽和UDP带宽、丢包率、抖动测试;

发现iperf与iperf3版本不同对测试结果有较大影响;通过自己试验与网络查找资料有结论如下。

第一部分:iperf与iperf3比较

1)iperf3较iperf测试UDP丢包率和带宽,相同硬件条件下,iperf3测试带宽更高,但是存在严重丢包

      iperf测试UDP带宽较小,但是不丢包。(x86硬件平台)
2)iperf 2.05,客户端可以使用参数"-d"来进行双工测试,先测试发送,client向server发送数据,等到测试时间结束后(默认为10s,可以通过-t选项来更改),然后再测试接收,client端接收server发送数据,最后得出发送和接收吞吐率。iperf3不支持双工测试。

3)iperf3 和 iperf2 使用上, iperf3 server端使用了统一的命令iperf3 -s,不在区分测试UDP还是TCP;

4)测试是,需要保证被测试网卡的MTU值>测试包的长度,即-l 的值,默认packet size是1470,加上udp和ip头的长度28, 等于1498。若默认packet size > MTU,将会出现接收端收不到数据。

第二部分:iperf主要影响丢包率的参数

-b   使用iperf生成并发送数据,在数据包长度固定的情况下(L默认为1470字节),带宽越大,每秒钟发送的数据包越多。当链路延时较大时,每秒发送的数据包数量太多时会造成比较大的丢包率。

-l    可以设置发送包的长度。TCP方式默认为8KB,UDP方式默认为1470字节。增加包的长度增大缓冲区长度可以减少丢包率,因为包长度很小的话会造成包的数量更多,更易造成拥塞。

在发送包为大包情况下,保障不丢包的方式,应当同时增大系统的读写缓冲区大小,修改/etc/sysctl.conf

udp模式下丢包的原因可以根本在于发送端和接受端速度不匹配导致的,除了分析iperf参数设置上是否保证接收端能够及时处理数据外,还应该看发送端设备和接受端设备的状态。比如上周困扰我的一个丢包率问题,发送端32核计算机,接收端24核计算机。

 

 

 

 

 

 

你可能感兴趣的:(linux,网络测试)