11

简而言之,我有一个应用程序,其中数据旨在通过互联网在两台服务器之间流动。理想情况下,我想测试软件在什么时候停止运行。在什么下限(带宽、延迟、丢弃的数据包)下,事情会停止工作以测试软件的可靠性。

我想我会做的是以下几点:

  1. 设置 3 台机器(VMware 实例)
  2. 在两台服务器上安装 2 个应用程序。
  3. 通过在 Windows 2003 上使用路由和远程访问来设置第三台服务器以坐在两台机器之间
  4. 安装Traffic Shaper XPNetLimiter以限制带宽
  5. 运行类似TMnetSim 网络模拟器的东西来模拟一个坏的连接。

这听起来是个好主意还是有更简单/更好的方法来做到这一点?我在 Linux 上不太舒服,我的队友更不习惯。

4

6 回答 6

9

WANem正是这样做的。我们在桌面上的虚拟机和专用的旧电脑上都使用过它,效果很好。它可以模拟各种断开的连接。

于 2009-05-06T05:53:51.950 回答
3

FreeBSDs ipfw 提供了模拟具有给定带宽、延迟或错误率的链接。您可以在上述设置中使用该 FreeBSD 机器作为“中间”机器。

如果您想减少所涉及的服务器数量,您可能还可以在同一台机器上运行至少一个端点。

于 2008-10-08T11:49:08.377 回答
2

也许是时候了解一下 Linux 了,因为只需键入一行就可以在每个传出数据包上添加 50 毫秒的延迟:

tc qdisc add dev eth0 root netem delay 50ms

有关更多信息,请参阅Linux 流量控制 HOWTO

于 2010-11-10T01:11:55.383 回答
2

有人实际上打包了 FreeBSD 解决此问题所需的设置和其他东西,他们称之为DUMMYNET

它模拟/强制执行队列和带宽限制、延迟、数据包丢失和多路径效应。它还实现了加权公平队列的一种变体,称为 WF2Q+。它可以在用户的​​工作站上使用,或者在 FreeBSD 机器上用作路由器或网桥。

它可以准确地模拟您想要的东西,而且它是免费的,并且可以启动到商品硬件上。他们甚至有一个罐头安装,它小到可以放在软盘上(!),您可以从该链接下载。

于 2008-10-08T22:53:03.170 回答
1

大约十年前我们有类似的要求——我会看看我是否能回忆起我们是如何管理它的。

如果我记得,我们在 UNIX 机器上编写了一个由 inetd 控制的套接字代理程序。此套接字将接受来自客户端的连接并打开到服务器的等效会话。然后它会循环,双向传递消息。

我们实现 WAN 特性的方法是在连接建立和链路建立后的数据传递中引入随机延迟(有上限和下限)。

它还具有偶尔断开链接的功能,因为 WAN 链接对我们来说不如本地流量可靠。

我记得我们必须使其线程化以阻止延迟影响链接上的反向流量。

于 2008-10-08T11:52:49.727 回答
0

有一个非常好的(免费的)微软解决方案,我们使用了很长一段时间,效果很好,它可以很容易地模拟每件事(丢包、低带宽、断开连接、延迟......)这是我为 Windows 环境找到的最佳解决方案

更多信息和下载链接可在此处找到:MARCO 博客文章

该产品经过了一些改进,现在作为自动化测试的一部分集成到了 Visual Studio 中,但我发现使用独立的(很难找到,所以保留一个本地副本)工作得更好。请记住,您至少需要两台计算机(或虚拟机),因为您需要通过网络适配器才能使应用程序发挥其魔力。

于 2014-04-15T20:09:25.590 回答