1

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

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

  1. 在节点 1 (10.0.0.2) 上启动 iperf 服务器 iperf -s
  2. 在节点 2 (10.0.0.3) 上启动 iperf 客户端 iperf -c 10.0.0.2
  3. 测试完成

节点 2(客户端)显示带宽为 11.2Mbps,测试时间为 10.4 秒。节点 1(服务器)显示带宽为 9.56Mbps,测试时间为 12.2 秒。客户端和服务器都显示相同的传输大小(13.9Mb)。

这个时差是由于每个单独的数据包的延迟造成的吗?TCP 窗口大小为 85.6 KB,因此为在网络上发送的每个数据包添加 10 毫秒的延迟大致允许差异。但是,我原以为延迟会是 20 毫秒,因为发送端和接收端都有 10 毫秒的网络延迟 - 为什么不是这样?

我希望这是有道理的。

4

3 回答 3

0

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

于 2015-10-27T22:18:28.217 回答
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
于 2021-07-28T10:55:57.313 回答
0

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

我建议您以 0 毫秒的延迟重复您的实验。

于 2015-10-28T00:35:49.703 回答