模拟WAN网络的最佳方法

问题描述:

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

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

  1. 安装了3台机器(VMware的情况下)
  2. 在两个服务器上安装了2个应用程序。
  3. 设置了第三服务器做某种路由和远程访问魔法Windows上的两台机器之间坐2003
  4. 安装或者Traffic Shaper XPNetLimiter限制带宽
  5. 运行像TMnetSim Network Simulator模拟信号不良。

这听起来像一个好主意,或者有更好的方法吗?我在Linux上并不是那么舒服,我的队友更不是这样。

+0

你能详细说明你正在尝试做什么样的性能测试吗? – 2008-10-08 11:13:27

+0

我认为表现是错误的词。我真正想测试的是哪些下限(带宽,延迟,丢包)会停止测试软件的可靠性。 – 2008-10-08 12:05:28

FreeBSD的ipfw有规定模拟与给定的带宽,延迟或错误率的链接。在上面的设置中,您可以使用该FreeBSD机器作为您的机器“在中间”。

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

+0

许多年前,我和一位同事一起使用ipfw取得了代理负载测试的巨大成功。它取代了一个昂贵的解决方案(这个解决方案应该是没有名字的),这个解决方案效果很差,我试图让我们的钱回来。 – 2009-05-01 18:40:54

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

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

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

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

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

有人实际上已经打包了这些设置以及FreeBSD解决方案对于此问题的必要条件,他们称之为DUMMYNET

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

它可以准确地模拟你想要什么,它的*和将启动到商品硬件上。他们甚至有一个可以安装的小软盘,可以放在软盘上(!),你可以在那个链接下载。

WANem完全是这样。我们已经在桌面上的虚拟机和专用的旧电脑上使用了它,它运行得非常好。它可以模拟各种断开的连接。

也许现在是时候学习一些关于Linux,因为在每个输出数据包添加50ms的延迟可以只键入一个行完成:

tc qdisc add dev eth0 root netem delay 50ms 

更多看到Linux Traffic Control HOWTO

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

更多信息和下载链接可以在这里找到:MARCO blog post

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