我需要模拟与服务器的低带宽,高延迟连接,以便模拟远程站点上VPN的条件.带宽和延迟应该是可调整的,因此我可以发现最佳组合以运行我们的软件包.
对于macOS,网络链路调节器可模拟可配置的带宽,延迟和数据包丢失.它包含在Xcode的硬件IO工具中.
设置一个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命令并获得相同的效果.
过去,我使用了Linux Netem(网络仿真)功能的桥接器.它具有高度可配置性 - 允许引入延迟(第一个示例适用于WAN),数据包丢失,损坏等.
编辑:还有MasterShaper Web界面来控制设置.
我注意到Netem在我的应用程序中工作得很好,但我最终也使用了几次WANem.提供的可引导ISO(和虚拟设备映像)使其非常方便.
我遇到了Charles调试代理应用程序,并在模拟网络延迟方面取得了巨大成功.它适用于Windows,Mac和Linux.
带宽节流/带宽模拟器
Charles可用于调整Internet连接的带宽和延迟.这使您可以使用高速连接模拟调制解调器条件.
带宽可以被限制为每秒任意字节.这样可以模拟任何连接速度.
延迟也可以设置为任意数毫秒.延迟延迟模拟在较慢连接上经历的延迟,即在发出请求和在另一端接收请求之间的延迟.
您也可以使用vmware运行BSD或Linux并尝试本文(DummyNet)或此文章.
我发现这个小巧整洁的程序很笨拙.它具有alpha状态,但它似乎对我来说很好,而且它是开源的.
编辑:其他人已经注意到你不能用笨拙来限制带宽,这是真的.您只能添加延迟和其他一些与网络相关的错误.这将取消这个答案作为问题的有效答案,但是因为当我想模拟一个糟糕的网络时我很好地使用它,所以只要它有> 0票或类似的话,我就把它留在这里.
试试WANem
WANem是一种广域网仿真器,旨在通过LAN环境进行应用程序开发/测试期间提供广域网/ Internet的真实体验.
对于Windows,您可以使用此应用程序:http://www.softperfect.com/products/connectionemulator/
用于Windows 2000,XP,2003,Vista,Seven和2008的WAN连接仿真器.
也许是Windows唯一可用的.
我会尝试在linux上使用netem.有了它,您可以模拟额外的延迟,损坏,丢包和重复.它甚至适用于环回设备.
另一个客户端程序(仅限Windows)是NetLimiter - http://www.netlimiter.com
我在Windows机器上使用NetBalancer.
http://seriousbit.com/netbalancer/
2017-10-07更新:NetBalancer的最后一个免费版本是9.2.7.该程序具有硬编码的到期日期.在启动NetBalancer服务之前,您需要在2016-10-18之前关闭系统时钟.有关详细信息,请参阅此文