我需要模拟到服务器的低带宽、高延迟连接,以模拟远程站点上VPN的条件。带宽和延迟应该是可调整的,这样我就可以发现最好的组合来运行我们的软件包。


当前回答

您可以试试这个:CovenantSQL/GNTE 就像这样写YAML:

group:
  - 
    name: china
    nodes:
      - 
        ip: 10.250.1.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.1.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "100ms 10ms 30%"
    loss: "1% 10%"
  - 
    name: us
    nodes:
      - 
        ip: 10.250.2.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.2.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "1000ms 10ms 30%"
    loss: "1% 10%"

network:
  -
    groups:
      - china
      - us
    delay: "200ms 10ms 1%"
    corrupt: "0.2%"
    rate: "10mbit"

运行。/generate scripts/your.yaml

其他回答

我一直在寻找一种易于使用的工具来进行这种类型的测试。前几天我偶然发现了这个:网络延迟模拟器

如果你用的是Windows系统,你应该试试。它超级容易设置和开始,而且似乎工作得很好。可以自定义各个方向的带宽、时延和丢包。另一个非常好的事情是,你可以定义“流量匹配条件”,这样它只影响你想要它的流量。是的,而且是免费的。

有一篇很棒的关于如何设置一台FreeBSD机器的文章——使用你的标准旧桌面,加上一个额外的网卡,然后构建。

文章可以在http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html上找到。

在上述指令的第5步中,您启用了防火墙。为了模拟不同的IP连接,你可以(例如)执行以下操作:

创建文件“/etc/rc.firewall”。56k,包含以下内容:

ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in    
ipfw pipe 1 config bw 56Kbit/s   
ipfw pipe 2 config bw 56Kbit/s

修改/etc/rc.conf…更换线路

firewall_type="open"

firewall_type="/etc/rc.firewall.56k"

重新启动,你就有了一个56K的桥!

如果你碰巧在Macintosh上工作,该操作系统默认内置了ipfw。我做了同样的事情,通过机场和以太网路由网络流量,设置它,以便任何经过机场的东西都具有与我试图模拟的东西相同的特征。可以直接在终端上调用ipfw命令,效果相同。

我发现这个简洁的Windows程序叫笨笨。它还处于alpha阶段,但对我来说工作得很好,而且它是开源的。

编辑:其他人已经注意到你不能用笨拙来限制带宽,这是真的。您只能添加延迟和其他一些与网络相关的错误。 这将取消这个答案作为问题的有效答案的资格,但是,由于我想要模拟一个糟糕的网络时,它很有用,所以我将把它留在这里,只要它有> 0票或类似的投票。

使用Fiddler在Windows上找到了这个(免费解决方案) http://www.logic-worx.com/index.php/tools-and-apps/fiddler-connection-simulator/

查尔斯

我遇到了Charles web调试代理应用程序,并在模拟网络延迟方面取得了巨大的成功。它可以在Windows、Mac和Linux上运行。

Bandwidth throttle / Bandwidth simulator Charles can be used to adjust the bandwidth and latency of your Internet connection. This enables you to simulate modem conditions using your high-speed connection. The bandwidth may be throttled to any arbitrary bytes per second. This enables any connection speed to be simulated. The latency may also be set to any arbitrary number of milliseconds. The latency delay simulates the latency experienced on slower connections, that is the delay between making a request and the request being received at the other end.

虚拟网

您也可以使用vmware来运行BSD或Linux,并尝试本文(DummyNet)或本文。