如果这是错误的地方请原谅-这是我的第一个帖子。
我已经在Mininet中建立了一个网络-创建了两个具有相同带宽和延迟的节点(带宽:10Mbps,延迟:10ms)。当使用iperf进行测试时,我执行以下步骤:
- 在节点1(10.0.0.2)上启动iperf服务器iperf - s 在Node 2(10.0.0.3)上启动iperf客户端iperf -c 10.0.0.2
- 测试完成
节点2(客户端)的带宽为11.2Mbps,测试时间为10.4秒。节点1(服务器)的带宽为9.56Mbps,测试时间为12.2秒。客户机和服务器显示相同的传输大小(13.9Mb)。
这个时间差是由于每个单独数据包的延迟造成的吗?TCP窗口大小为85.6 Kbyte,因此在网络上发送的每个数据包中添加10ms的延迟大致允许这种差异。然而,我本以为延迟是20ms,因为发送端和接收端都有10ms的网络延迟——为什么不是这样呢?
我希望这是有意义的。
本测试的开始/结束应该由计时器触发。实际的开始/结束时间应该涉及一些信号通知/处理开销,以便双方的实时时间不同。
不幸的是,mininet显示了一组未解决的bug。它的一个缺陷与吞吐量比可用带宽高有关。此外,使用带宽延迟是另一个应该考虑的问题。
我建议你以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