模拟WAN网络的最佳方式

时间:2008-10-08 10:40:44

标签: testing networking bandwidth wan

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

我认为我会做的是以下内容:

  1. 设置3台计算机(VMware实例)
  2. 在两台服务器上安装2个应用程序。
  3. 在Windows 2003上通过路由和远程访问实现某种魔力,将第三台服务器安装在两台机器之间
  4. 安装Traffic Shaper XPNetLimiter以限制带宽
  5. 运行TMnetSim Network Simulator之类的内容来模拟连接错误。
  6. 听起来这是个好主意还是有更简单/更好的方法?我在Linux上并不那么舒服,我的队友也不那么熟悉。

6 个答案:

答案 0 :(得分:9)

WANem就是这样做的。我们已经在桌面上的虚拟机和专用的旧PC上使用它,它运行良好。它可以模拟各种破坏的连接。

答案 1 :(得分:3)

FreeBSDs ipfw具有模拟具有给定带宽,延迟或错误率的链接的规定。在上面的设置中,您可以将FreeBSD计算机用作“中间”的计算机。

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

答案 2 :(得分:2)

有人实际打包了FreeBSD解决方案所遇到的设置和所需的内容,他们称之为DUMMYNET

  

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

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

答案 3 :(得分:2)

也许现在是时候学习一下Linux了,因为只需输入一行就可以在每个输出数据包上添加50ms的延迟:

tc qdisc add dev eth0 root netem delay 50ms

有关详情,请参阅Linux Traffic Control HOWTO

答案 4 :(得分:1)

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

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

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

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

我记得我们必须通过线程来阻止延迟影响链路上的反向流量。

答案 5 :(得分:0)

有一个非常好(和免费)的微软解决方案,我们使用它已经有一段时间了,它工作得很好,它可以非常容易地模拟每件事(丢包,低带宽,断开,延迟.... ) 这是我在Windows环境中找到的最佳解决方案

可在此处找到更多信息和下载链接:MARCO blog post

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