如何模拟低带宽,高延迟的环境?


201

我需要模拟与服务器的低带宽,高延迟连接,以便模拟远程站点上VPN的状况。带宽和延迟应该是可调整的,以便我可以找到最佳组合以运行我们的软件包。


7
好问题!我希望听到一些与ASP .NET Web开发有关的答案。
卡尔

Answers:


79

对于macOS,有一个网络链接调节器可以模拟可配置的带宽,延迟和数据包丢失。它包含在Xcode附加工具包中。 屏幕截图


12
“网络链接调节器”首选项窗格是XCode硬件IO工具的一部分,您可以从developer.apple.com/downloads
avernet

似乎不适用于Genymotion。(黑屏)
布鲁诺

1
较新的XCode版本的下载链接:developer.apple.com/download/more/?
q=Additional%20Tools

@ jstorm31谢谢。我已经用软件包的当前名称和当前链接更新了答案。
乔恩·科弗森

37

设置FreeBSD机器来做到这一点,这是一个很棒的文章-使用标准的旧台式机,扔一个附加的NIC,然后进行构建。

可以在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命令并获得相同的效果。


27

过去,我使用过使用Linux Netem(网络仿真)功能的网桥。它是高度可配置的-允许引入延迟(第一个示例是WAN),数据包丢失,损坏等。

编辑:还有MasterShaper Web界面来控制设置。

我注意到Netem对于我的应用程序非常有效,但是我最终还是使用WANem多次。提供的可启动ISO(和虚拟设备映像)非常方便。


非常适合我的需求,并且可以在Ubuntu 14.04服务器上直接使用!
RobM 2015年

21

查尔斯

我遇到了Web调试代理应用程序Charles,在模拟网络延迟方面取得了巨大的成功。它适用于Windows,Mac和Linux。

Mac上的Charles

带宽油门/带宽模拟器

Charles可用于调整Internet连接的带宽和延迟。这使您可以使用高速连接来模拟调制解调器条件。

带宽可以每秒限制为任意字节。这样可以模拟任何连接速度。

等待时间也可以设置为任意毫秒数。等待时间延迟模拟在较慢的连接上经历的等待时间,即发出请求和在另一端接收请求之间的延迟。

虚拟网

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


2
Charles是HTTP代理,因此仅适合测试HTTP应用程序。对于每个人来说,但是我认为这可能是我使用过的最差的软件。在Mac上工作时,我只使用了很短的时间。对于Windows用户,如果需要HTTP调试代理,建议使用Fiddler。不幸的是,除了Charles for OSX,我没有找到其他东西。
布拉德

6
嗨,布拉德。你能提到你遇到什么样的问题吗?
Ante 2015年

17

我找到了这个名为clumsy的小巧的Windows程序。它处于Alpha状态,但对我来说似乎很好用,并且它是开源的。

编辑:其他人已经注意到,您不能用笨拙的方式限制带宽,这是事实。您只能添加延迟和其他几个与网络相关的错误。这将取消该答案作为该问题的有效答案的资格,但是,由于当我想模拟一个不良网络时,我已经很好地使用了它,因此只要它的票数> 0或类似,我就将其保留在此处。


如何笨拙地控制带宽?
user3731622 '16

3
优秀的程序。正是我所需要的。我推荐它。像魅力一样工作,而且超级简单。
Jh62'6

1
当大多数人说“限制带宽”时,他们可能对简单地增加大量的延迟和数据包丢失感到满意,因为这些有效地限制了带宽。此外,该程序非常易于使用,胜过我在Windows上尝试过的所有其他功能。
轧辊

13

尝试WANem

WANem是一种广域网仿真器,旨在在LAN环境中进行应用程序开发/测试期间提供广域网/ Internet的真实体验。


1
我已经尝试过了,似乎无法正常工作。由于任何原因,它将无法从我们的网络获取IP地址,而其他任何计算机都没有问题。
Michael Beck


7

我会尝试在Linux上使用netem。使用它,您可以模拟其他延迟,损坏,数据包丢失和重复。它甚至可以在环回设备上使用。


嘿,您有一些等效于Windows的Netem命令吗?
Shashi Ranjan

6

另一个客户端程序(仅Windows)是NetLimiter- http://www.netlimiter.com


2
Netlimiter很好,但是我认为它只能提供低带宽-它不能更改延迟吗?
弥敦道

v3的Beta版计划将延迟模拟列为计划功能。这是最近发布的,我还没有使用它,看看是否能在功能使得它。
kaliatech

该功能并未将其添加到Beta版本9中。
cacba

4
即使是当前的测试版(NetLimiter 4)也不允许您更改延迟。
2014年

5

我在Windows计算机上使用NetBalancer。

http://seriousbit.com/netbalancer/

2017年10月7日更新NetBalancer的最新免费版本是9.2.7。该程序具有硬编码的到期日期。在启动NetBalancer服务之前,您需要在2016-10-18之前调回系统时钟。有关详细信息,请参见本文


谢谢!!NetBalancer是此页面上列出的唯一我可以使用的工具,它可以控制延迟。
进水



3

要使用Google Chrome模拟用于测试网站的低带宽连接,可以转到F12工具中的“网络”选项卡,然后选择要模拟的带宽级别或创建要模拟的自定义带宽。


1
谢谢!如果找不到它,则在Chrome控制台的“网络”标签中的“禁用缓存”按钮的右侧。默认值为“不限制”。
艾伦·威廉姆斯



1

http://www.shunra.com上有一个名为VE Desktop的产品,可用于模拟变化的网络条件。它允许您通过简单的UI调整延迟,带宽和丢包率。只有警告是,它不是免费的。希望这可以帮助。


1

一段时间以来,我一直在寻找一种易于使用的工具来进行此类测试。我前几天碰到了这一点: 网络延迟模拟器

如果您运行的是Windows,则应将其签出。设置和运行起来非常容易,并且看起来真的很好。它允许您定义每个方向上的带宽,延迟和数据包丢失。另一个真正的好处是,您可以定义“流匹配条件”,以使其仅影响您想要的流量。哦,是的,它是免费的。



1

看看NE-ONE网络仿真器,它使您可以配置带宽,延迟,数据包丢失,数据包重新排序,数据包复制,数据包分片,网络拥塞以及更多其他障碍,因此您可以在实验室中创建真实的网络条件。可以为上行链路和下行链路配置不同的损害,因此您可能会获得非常好的上行链路体验,但实际上会遇到非常糟糕的下行链路体验,非常适合查看应用程序如何处理TCP排队,因为通知不会及时返回并且总延迟因此增加!

http://www.youtube.com/watch?v=DwtqlE7LcrQ上有一个专门针对游戏开发人员的概述视频,但它显示了它的含义。NE-ONE使用网络浏览器进行配置,因此非常容易安装和配置-您无需成为网络专家:-)

有一个硬件版本-http: //www.itrinegy.com/index.php/products/network-emulators/ne-one-或您可以下载在VMware ESXi Server下运行的虚拟设备(软件)版本。可以从VMware的Solution Exchange下载虚拟设备-solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator



0

LANforge ICE是一种网络仿真器 ,重点在于虚拟路由,抖动,损坏和延迟。项目已使用它来仿真卫星链路,电缆和调制解调器连接以及高速(10Gbit)wan仿真。您可以使用Java GUI构建虚拟网络并生成非常详细的流量报告。LANforge产品还提供流量生成功能:帧,以太网,第3层和有状态流量(NFS,http)。LANforge的最新版本也具有完善的WiFi测试功能。


0

您可以尝试以下方法: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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.