模拟慢速网络连接的网络工具

261

我希望能够通过可视化评估网页响应时间来测试多种互联网连接类型(如DSL、Cable、T1、拨号等),同时我的浏览器和Web服务器在同一局域网中甚至在同一台机器上。是否有一些简单的网络工具或浏览器插件,可以降低网络带宽以模拟不同的真实连接情况。

非常感谢您的任何建议。


2
只是一点提醒,你可能需要在serverfault.com上同时发布这个问题。 - JP Alioto
6
苹果电脑用户可以使用网络链路调节器(Network Link Conditioner) - https://dev59.com/1mgt5IYBdhLWcg3w8h01. - Joe Masilotti
2
https://github.com/shopify/toxiproxy - serv-inc
1
相关链接:https://dev59.com/XnA65IYBdhLWcg3w-jym#58513277 - Eugene
16个回答

284

在Linux上,请参阅netem: 内核已经包含了流量整形的支持,可以模拟高延迟、低带宽、数据包丢失等各种不良条件,甚至可以在环回设备上进行测试(因此您不需要真实的物理网络来进行测试)。


56
赞同这个想法,真棒!通过一个简单的命令,我可以让“本地主机”在咖啡店的Wi-Fi上表现得像一个公共互联网服务:sudo tc qdisc add dev lo root netem delay 500ms - Sam Stokes
9
太好了!文档在这里:http://www.linuxfoundation.org/collaborate/workgroups/networking/netem - Thomas Ahle
51
非常酷。我只想补充一下如何再次移除仿真。添加:sudo tc qdisc add dev lo root netem delay 100ms 移除:sudo tc qdisc del dev lo root netem delay 100ms - freeall
16
您可以使用命令 sudo tc qdisc del dev lo root 来完全重置回环(loopback)的所有流量控制规则,如果您使用有线连接等其他类型的连接,请将 lo 更改为 eth0 - Hamish Downer
7
netem的最新版本通过rate选项支持限制带宽:tc qdisc add dev lo root handle 1:0 netem delay 10ms rate 1mbit limit 1000。请注意,对于一些设备(如环回设备),您还需要将其队列长度设置为非零值,才能使rate选项生效:ifconfig lo txqueuelen 1000。请参阅http://serverfault.com/a/394949/76090。 - z0r
显示剩余3条评论

81

我重启了这个帖子,因为最近我有同样的需求。 令人惊讶的是,我发现可以通过自定义规则并在OnBeforeResponse部分添加这行代码oSession["response-trickle-delay"] = "150";来使用 Fiddler 实现这个需求。

Fiddler真是太棒了。


36
在最近的 Fiddler 版本中,您只需要在“规则”->“性能”下启用“模拟调制解调器速度”即可。 - Markus Hedlund
4
Fiddler是一个非常好的工具,也许对于本身来说有些过于强大了,但是一定值得拥有。你可以使用进程过滤器轻松地让Fiddler只与一个程序交互,而无需在程序中设置代理! - Deebster
我已经是Fiddler的爱好者了,但现在我简直无法离开它。我不知道我每天都和我需要的工具在一起 :) - Ignacio Soler Garcia
5
请注意,这是仅适用于 Windows 的解决方案,除非您愿意尝试各种小技巧和变通方法。 - crazy2be

23

试试Traffic Shaper XP吧,这个应用可以轻松限制IE或其他浏览器的速度,并且还是免费软件。


2
卡巴斯基报告称从该网站下载的内容包含木马下载程序。 - Bob Moore
20
似乎在Windows 7上无法运行。 - Markus Hedlund
1
我无法让它工作。它支持流量到本地主机或127.0.0.1地址吗? - Anderson
1
@Anderson,可能不行。据我所记,Windows 没有像 *nix 通常那样的内部网络堆栈用于本地连接。 - Matthew Scharley
5
我使用Clumsy (http://jagt.github.io/clumsy/index.html)。 - simongus
显示剩余2条评论

21

2
是的,我认为它在驱动程序级别上运行正常。 - Eran Betzalel
1
我尝试过了,但是我无法弄清楚 - 有帮助文件吗? - UpTheCreek
1
我了解基本的网络概念,但是无法让它实现任何功能。 - UpTheCreek
1
我也是一个开发者,之前写过TCP级别的C++代码--已经详细配置了路由器的QoS(和许多其他东西)--我正在运行一个网络密集型应用程序(现在下载/上传2-4 Mb/s)--尝试了跟踪,还有“操作->切换跟踪”,但什么都没有发生。也没有看到任何相关的设置带宽限制的方法...所以这很烦人。 - BrainSlugs83
3
我虽然不像你们那样懂网络知识,但在观看了这个 YouTube 视频后,我成功让 NEWT 起作用了:https://www.youtube.com/watch?v=s5o_GnYOloA。希望这能有所帮助。 - Jimmery
显示剩余5条评论

18

1
+1 基于Java,因此在OSX上运行良好(尚未在Windows或Linux上尝试)-易于安装和运行,透明地工作,并且之后不会留下任何混乱! - Richard Inglis
是的,这是一个优秀的工具,基于Web的jnlp(无需安装,只需启动它)。它会在本地主机上创建代理,端口可配置,速度可以动态更改+32 ;)。 - jobwat
我以前用过 sloppy 并且很喜欢它,但遗憾的是它不支持 https:https://groups.google.com/forum/#!topic/sloppy-discuss/tOyCx7igfkw - Jess
不过,它不会模拟糟糕网络的数据包丢失。 - catbadger

14
我已成功使用TMnetSim(页面底部“其他工具”下方 - 链接名称大致为“ZIP: TMnetSim网络模拟器版本2.4 32位(600KB)”)
它不仅适用于网站 - 您可以减缓任何TCP端口的连接速度。我正在使用它来模拟缓慢的SQL Server(端口1433)。

你用的是什么操作系统?我在32位的Windows 7下根本无法让它工作... - GuyBehindtheGuy
@GuyBehindtheGuy:你有没有运气好一点?我也有同样的需求和操作系统... - D'Arcy Rittich
2
我最终使用了DummyNet。这里有一个Windows版本:http://info.iet.unipi.it/~luigi/dummynet/ - GuyBehindtheGuy
1
+1 这个完全符合我的需求,而且没有任何多余的麻烦。感谢你的建议! - wasatz
当前版本在64位的Windows 8.1上运行良好。 - Jaime Hablutzel
TMnetSim可以用来模拟本地机器上运行的SQL Server连接缓慢吗?如果可以,需要哪些设置? - Ben

6

DummyNet

试试这个基于FreeBSD的VMWare映像。它还有一个非常好的教程,完全免费,只需20分钟即可完成安装。

更新:现在DummyNet也支持Linux、OSX和Windows。


1
谢谢你的提示。事实证明,现在有一个本地的Windows版本可用,我已经成功使用了它。 - GuyBehindtheGuy
我走了这条路。但是配置花了我大约4个小时的时间。我应该知道要将“192.168.0。”替换为“192.168.196。”(子网)通过所有的rc.conf和rc.firewall。 - bohdan_trotsenko

6

我喜欢 Charles

免费版对我来说完全够用。

限速、重写和断点等功能都非常棒。


2
是的,它可以正常工作30天... :-/ - BrainSlugs83
1
对我来说,即使在30天后它也能正常工作,你只需要等待更长的时间,它会在30分钟后重新启动。但是你总是可以获得许可证。 - Roland Keesom
版本3.7?网站似乎暗示着30天后您必须购买才能继续使用它。 - BrainSlugs83
1
你的假设是错误的。在前30天内,您可以无延迟地使用它。之后会有小延迟,并且每30分钟重新启动一次。 - Roland Keesom
4
从他们的网站上可以了解到:如果您在30天后决定继续使用Charles,您必须购买许可证。 - Florian Fida
为了他人的利益:当我进行限制时,Charles 3和4给我的结果非常不稳定。除了利用率%之外,几乎所有的限制设置都没有按预期工作。 - Darkhydro

6

对于Linux或OSX,您可以使用ipfw

来自Quora (http://www.quora.com/What-is-the-best-tool-to-simulate-a-slow-internet-connection-on-a-Mac)

基本上是使用防火墙限制所有网络数据:

定义一个规则,使用管道将任何源地址到任何目标地址的所有流量重新路由,执行以下命令(作为root或使用sudo):

$ ipfw add pipe 1 all from any to any

要配置此规则以将带宽限制为300Kbit / s并施加单向200ms的延迟:

$ ipfw pipe 1 config bw 300Kbit/s delay 200ms

要删除所有规则并恢复原始网络连接:

$ ipfw flush


4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接