iperf测试UDP带宽

使用iperf的-b参数可以指定带宽大小,请注意这个指定的带宽大小并不是我们要测试的网络的带宽,我们测试的网络的带宽是最大值。

要获得带宽数据,需要通过-b不断在client端增加带宽值,直到server端出现轻微的丢包为止,此时server端显示的带宽就是被测系统的吞吐量。

[ ID] Interval      Transfer    Bandwidth       Jitter  Lost/Total Datagrams

3] 0.0- 1.0 sec 1.40 MBytes 11.7 Mbits/sec  0.069 ms   0/14671 (0%)

3] 1.0- 2.0 sec 1.40 MBytes 11.8 Mbits/sec  0.050 ms   0/14703 (0%)

 Bandwidth的速率乘以时间不等于Transfer的原因是,发送数据包之间有时间间隔。

这里注意,iperf的代码中发送两个数据报之间的时间间隔主要取决于write函数执行时间(while循环的快),如果write发送的数据包大,则write阻塞的时间会长一点,所以发送两个数据报之间的时间间隔也长一点,则相同时间发送的数据报的个数就少。所以虽然数据包大小不一样,但是在同样带宽同样时间的情况下发送的数据总量确是一样的

经过读iperf代码,发现这个结论是错误的,iperf控制UDP模式下的带宽大小是通过控制while循环的delay_loop()函数实现的,在delay_loop()函数中有一个精确的延时nanosleep(),从而控制调用write的时间间隔。

你可能感兴趣的:(毕业第一年,TCP/IP协议,工作笔记)