iperf服务器和客户端差异

时间:2015-10-14 09:36:53

标签: networking bandwidth mininet openflow iperf

请原谅我,如果这是错误的地方 - 这是我的第一篇文章。

我在Mininet中建立了一个网络 - 创建了两个具有相同带宽和延迟的节点(带宽:10Mbps,延迟:10ms)。使用iperf进行测试时,我执行以下步骤:

  1. 在节点1上启动iperf服务器(10.0.0.2) iperf -s
  2. 在节点2上启动iperf客户端(10.0.0.3) iperf -c 10.0.0.2
  3. 测试完成
  4. 节点2(客户端)显示带宽为11.2Mbps,测试时间为10.4秒。节点1(服务器)显示带宽为9.56Mbps,测试时间为12.2秒。客户端和服务器都显示相同的传输大小(13.9Mb)。

    这个时间差是由于每个数据包的延迟造成的吗? TCP窗口大小为85.6千字节,因此在网络上发送的每个数据包上加上10毫秒的延迟大致可以实现差异。但是,我认为延迟将是20ms,因为发送端和接收端都有10ms的网络延迟 - 为什么不是这种情况?

    我希望这是有道理的。

3 个答案:

答案 0 :(得分:0)

测试开始/结束应由计时器触发。真正的开始/结束时间应该涉及一些信号通知/处理开销,以便双方的实时时间不同。

答案 1 :(得分:0)

不幸的是,mininet显示了一组尚未解决的BUG。其中一个错误与吞吐量相关,可用带宽更高。此外,使用带宽延迟显示应该考虑的另一个问题。

我建议你以0ms的延迟重复你的实验。

答案 2 :(得分:0)

根据我的测试,他们使用的只是1000和1024之间的转换。假设我有这个案例:

h1 iperf -s -u -p 2000 -i 1
h3 iperf -u -c 10.0.0.1 -p 2000 -b 20M -i 1

服务器和客户端默认都使用 1000 进行转换。大写和小写字母 [kmgKMG](带有 -b 标志)用于表示用于转换的值。在这种情况下,'M' 将使用 1024 进行转换,而 'm' 将使用 1000 进行转换。默认情况下,它们使用小写字母,因此为 1000。因此,如果我们在客户端上写入 -b 20M,则会发送 20x1024x1024 位数据。服务器接收 20x1024x1024 位并使用 1000 进行转换,即(20x1024x1024 位)/1000/1000=20.97≈21Mbits。这是客户端和服务器报告的值。我们发送了 20M(通过参数)但得到了 ≈21M。在发送之前,这些值在显示时使用不同的单位进行转换和转换。要在服务器上也显示 20M,请使用 -f M 标志使用 1024 格式化输出。 总之,使用大写和小写字母来表示 -b 和 -f 标志。如果您想避免在服务器上使用 -f 标志,请在客户端使用 -b 20m。

h3 iperf -u -c 10.0.0.1 -p 2000 -b 20m -i 1