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

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

对于macOSnetworking链路调节器模拟可configuration的带宽,延迟和数据包丢失。 它包含在Xcode的硬件IO工具中 。 截图

有一个很好的build立一个FreeBSD机器来做这件事 – 把你的标准旧桌面,折腾在一个额外的网卡,并build立。

这篇文章可以在http://www.freebsd.org/doc/en/articles/filtering-bridges/article.htmlfind

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

创build一个文件/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。 我做了同样的事情,通过路由networkingstream量通过机场,并通过以太网,设置它,以便通过机场来的任何东西都具有相同的特征,我试图效仿。 您可以直接从terminal调用ipfw命令并获得相同的效果。

在过去,我使用Linux networking (networking仿真)function的桥梁。 它是高度可configuration的 – 允许引入延迟(第一个例子是针对WAN),丢包,损坏等。

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

我注意到,Netem对我的应用程序工作得非常好,但是我也最终多次使用了WANem 。 提供的可启动ISO(和虚拟设备映像)使它非常方便。

查尔斯

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

查尔斯在Mac上

带宽节制/带宽模拟器

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

带宽可能被限制为每秒任意字节数。 这使得可以模拟任何连接速度。

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

DUMMYNET

你也可以使用vmware来运行BSD或Linux,并尝试这篇文章(DummyNet)或者这个。

尝试WANEM

WANem是一个广域网仿真器,旨在提供广域网/互联网的真实体验,在LAN环境中进行应用开发/testing。

对于Windows,您可以使用此应用程序: http : //www.softperfect.com/products/connectionemulator/

适用于Windows 2000,XP,2003,Vista,Seven和2008的WAN连接模拟器。

也许是唯一可用于Windows的一个。

我发现这个小巧整洁的程序笨拙 。 这是一种阿尔法状态,但它似乎为我工作得很好,它是开源的。

编辑:其他人已经注意到,你不能限制带宽笨拙,这是真的。 您只能添加延迟和其他一些networking相关的错误。 这将会使这个答案成为这个问题的有效答案,但是因为当我想要模拟一个不好的networking时,我已经很好的使用了它,所以只要它具有> 0票或相似的结果,我就把它留在这里。

我会尝试在Linux上使用netem 。 有了它,你可以模拟额外的延迟,损坏,丢包和重复。 它甚至在回送设备上工作。

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

我在Windows机器上使用NetBalancer。

http://seriousbit.com/netbalancer/

2017年10月7日更新NetBalancer的最后一个免费版本是9.2.7。 该程序有一个硬编码的到期date。 在启动NetBalancer服务之前,您需要在2016-10-18之前closures系统时钟。 详情请参阅这篇文章 。

使用Fiddler(免费解决scheme)为Windowsfind这一个http://www.logic-worx.com/index.php/tools-and-apps/fiddler-connection-simulator/

我想tc可以在基于UNIX的平台上完成这项工作。

tc用于在Linux内核中configurationstream量控制
http://lartc.org/manpages/tc.txt

要模拟用于testing网站的低带宽连接,使用Google Chrome,可以转到F12工具中的networking选项卡,然后select带宽级别来模拟或创build自定义带宽以进行模拟。

如果你在linux上,我发现交通控制程序对这种事情很有帮助。

有一个来自http://www.shunra.com的产品叫做VE Desktop,它可以用来模拟不同的networking条件。 它允许你用简单的UI来调整延迟,带宽和packetloss。 只有警告,它不是免费的。 希望这可以帮助。

我一直在寻找一种易于使用的工具来进行这种types的testing。 networking延迟模拟器

如果你正在运行Windows,你应该检查出来。 这是非常容易build立起来,似乎工作得很好。 它允许您定义每个方向的带宽,延迟和数据包丢失。 另一个非常好的事情是,你可以定义“stream量匹配条件”,以便它只影响你想要的stream量。 哦,是的,它是免费的。

我想我find了我需要的东西。 也许你可以使用charles proxy或slowy 。 希望它有帮助。

我们在虚拟机里面使用过这个软件来做一些带宽testing:

http://www.softinengines.com/index.php?section=download&langu=en

这不是免费的,但有30天的试用期。

看一下NE-ONEnetworking仿真器,它允许您configuration带宽,延迟,丢包,数据包重新sorting,数据包复制,数据包碎片,networking拥塞以及更多的损伤,以便您可以在实验室中创build真实的networking条件。 可以为上行链路和下行链路configuration不同的损伤,因此您可以获得非常好的上行链路,但下行链路的体验非常糟糕,非常适合查看应用程序如何处理TCP排队,因为这些问题不及时回复,整体延迟因此增加!

这里有一个概述videohttp://www.youtube.com/watch?v=DwtqlE7LcrQ专门针对游戏开发者,但它显示了它是什么。 NE-ONE使用networking浏览器进行configuration,因此安装和configuration起来非常简单 – 您无需成为networking专家:-)

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

LANforge ICE是一款强调虚拟路由,抖动,损坏和延迟的networking仿真器 。 项目使用它来仿真卫星链路,电缆和调制解调器连接,以及高速(10Gbit)云仿真。 您可以使用Java GUI来构build您的虚拟networking并生成非常详细的stream量报告。 LANforge产品还提供stream量生成function:帧,以太网,第3层和有状态stream量(NFS,http)。 最近的LANforge版本也具有复杂的WiFitestingfunction。