如何使用iperf测试一个客户端和多个服务器的吞吐量?

时间:2017-12-29 04:00:23

标签: python networking mininet iperf pox

作为标题,我想测试包含2个服务器(h1,h3)的网络的吞吐量,只有1个客户端(h2)以及主机和目标之间的一些交换机,拓扑结构可能如下所示,我已经实现了使用mininet进行拓扑,并使用pox控制器控制路由规则。

enter image description here

现在我想测试网络的吞吐量,我希望h3和h1同时将数据发送到h2,我怎样才能使用iperf呢?

我已经尝试了下面的代码(python代码),但是当h3-> h2时前10秒的数据将消失(如果我在h1-> h2之前写了h3-> h2,而不是第一个中的数据10秒的h1-> h2将消失)

h1.cmd('iperf -s -p 5201 -u -i 1 > results &')
print h2.cmd('iperf -c 10.0.0.1 -p 5201 -u -b 10m -t 20')
h3.cmd('iperf -s -p 5205 -u -i 1 > results2 &')
print h2.cmd('iperf -c 10.0.0.3 -p 5205 -u -b 10m -t 20')
h1.cmd('kill %iperf') 
h3.cmd('kill %iperf')

我如何解决这个问题,或者有人可以告诉我如何让h3和h1同时使用其他方法将数据发送到h2,谢谢。

2 个答案:

答案 0 :(得分:0)

这是因为您使用的端口可能正在忙于其他作业。 1.最初,当您在h1,h2中将端口5201用于iperf时,会得到 流程细节 2.但是之后,当您在h1,h3中为iperf使用端口5205时,它可能不是空闲的。即使我也遇到了同样的问题,因为我在5201中使用了单个端口。我通过在客户端和服务器之间的每个后续iperf之后关闭端口来对其进行排序。

您的案件与我的案件相似。您没有在h2,h3之间获得流量统计信息的原因是因为端口5205不能空闲。我的建议是,您已使用端口5201,请先关闭连接再使用它,然后再使用它。因此,为iperf分配一个端口并使用它。每次进行iperf传输后,请不要忘记关闭端口。
为了关闭活动端口,请使用以下命令:

fuser -k -n tcp 3000

其中tcp是我们使用的连接类型,而5201是端口号

答案 1 :(得分:-1)

您可能需要考虑在asyncio上使用iperf 2.0.10+和flows code,这需要python 3.5或更高版本。如果您尝试并有疑问,请告诉我。它确实假设ssh和无密码操作来控制运行iperf的主机。