-1

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

在此处输入图像描述

现在我想测试网络的吞吐量,我希望 h3 和 h1 同时向 h2 发送数据,我该如何使用 iperf 呢?

我试过下面的代码(python代码),但是h3->h2前10秒的数据会消失(如果我在h1->h2之前写h3->h2,比h1->前10秒的数据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 发送数据,谢谢。

4

2 回答 2

0

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

你的情况和我的情况类似。您没有得到 h2,h3 之间的流量统计的原因是因为端口 5205 不能空闲。我的建议是,当您使用端口 5201 时,通过关闭连接再次使用它,然后再次使用它。因此,为 iperf 目的分配一个端口并使用它。不要忘记在每次后续的 iperf 传输后关闭端口。
要关闭处于活动状态的端口,请使用以下命令:

定影器 -k -n tcp 3000

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

于 2020-03-02T14:47:37.880 回答
-1

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

于 2018-01-03T03:22:17.643 回答