-b这个参数是用来设置本次测试的发送带宽成n比特/秒的(对UDP来说默认是1M 比特/秒,对TCP来说默认是不限制),

如果同时还设置了多线程(-P选项),当前这个-b的带宽指定的是每个线程的发送带宽。我们还可以在带宽后面加上“/数字”。

我们称这个为“突发脉冲模式”。加了这个“/数字”后,iperf3客户端会一次连续发送指定数量的数据包,这指定数量的数据包

中间不做任何间隔。但每一批次(指定数量的这n个报文)报文之间的时间间隔是平均的(即使中间是某些时间间隔会有

超出指定带宽限制)。不加这个 "/数字"时,iperf3会根据每个报文的长度,算出为了达到指定的带宽,每秒需要发送几个

报文,然后每个数据报文会被以平均的时间间隔进行发送。

1)iperf3 -c 192.168.0.10 -u -b 200k,不加"/数字"的方式

这里iperf3客户端默认会往iperf3服务器端以200kbps的速度发送,如下图所示:

我们可以看到iperf3客户端每秒发送17或者18个数据报文,以达到200kbps的速度,默认连续发送10s钟时间。

下面是服务端收包的情况:

我们可以看到10秒钟内全部数据包被正常的接收,总计173个报文。

那么按上面所述这173个报文是在10秒钟时间内以平均时间间隔被发送的

如上图所示,比如在4秒中时间内,需要发送8个报文,则每隔0.5秒发送一个报文(相邻二个报文间隔0.5秒),叫做以平均时间间隔发送。

那么我们在10秒中之内发送173个报文,我们可以算出每二个报文之间的时间间隔应该 是10秒除以173 = 57.8毫秒。

此时我们看一下tcpdump的结果:

我们可以看到第1个\第2个\第3个...倒数第2个\最后一个报文的发送时间如下

19:20:13:861261

19:20:13:918095

19:20:13:976111

...

19:20:23:765086

19:20:23:823122

第1个报文和第2个报文的时间间隔是918095-861261=56.834毫秒,

第2个和第3个报文的时间间隔是976111-918095=58.016毫秒,

...

倒数第2个和最后一个报文的时间间隔是823122-765086=58.036毫秒,

全部都是在57.8毫秒左右(考虑软件处理的抖动是正常的)

2)iperf3 -c 192.168.0.10 -u -b 200k/40,加"/数字"的方式

加了这个“/数字”后,iperf3客户端会一次连续发送指定数量的数据包,这指定数量的数据包中间不做任何间隔。

但每一批次(指定数量的这n个报文)报文之间的时间间隔是平均的。(即使中间会有偶尔的超出带宽限制)。

以下图所示的样式发送:

客户端:

第一秒连续发送了指定的40个报文(速率为463kbps超出设定的200kbps),

第二秒无数据发送(和第一秒加起来平均大约是200kbps)

第三秒连续发送了指定的40个报文(速率为463kbps超出设定的200kbps),

第四秒无数据发送(和第三秒加起来平均大约是200kbps)

...

服务端

看到的数据和客户端一样。

tcpdump

我们可以看到

1-40个报文在19:55:10秒发送的,

41-80个报文在19:55:12秒发送的,

81-120个报文在19:55:14秒发送的,

...

倒数41-80个报文在19:55:17秒发送的,

倒数1-40个报文在19:55:19秒发送的,

每个burst之间间隔约1.5秒,每人burst内部的每个报文是连续发送的(间隔非常小,是每个数据生产发送所需要的时间)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐