我需要模拟到服务器的低带宽、高延迟连接,以便在远程站点模拟 VPN 的条件。带宽和延迟应该是可调整的,因此我可以找到最佳组合来运行我们的软件包。
20 回答
对于macOS,有一个Network Link Conditioner可以模拟可配置的带宽、延迟和数据包丢失。它包含在Xcode 的附加工具包中。
有一篇关于设置 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 命令并获得相同的效果。
查尔斯
我遇到了Charles的 Web 调试代理应用程序,并在模拟网络延迟方面取得了巨大成功。它适用于 Windows、Mac 和 Linux。
带宽节流阀/带宽模拟器
Charles 可用于调整 Internet 连接的带宽和延迟。这使您能够使用高速连接模拟调制解调器条件。
带宽可以限制为每秒任意任意字节。这可以模拟任何连接速度。
延迟也可以设置为任意毫秒数。延迟延迟模拟在较慢的连接上经历的延迟,即发出请求和另一端接收请求之间的延迟。
虚拟网
您也可以使用 vmware 来运行 BSD 或 Linux,并尝试这篇文章 (DummyNet)或这篇文章。
我发现了这个用于 Windows 的小程序,叫做clumsy。它处于 alpha 状态,但对我来说似乎工作正常,而且它是开源的。
编辑:其他人已经注意到你不能用笨拙的方式限制带宽,这是真的。您只能添加延迟和其他一些与网络相关的错误。这将取消此答案作为该问题的有效答案的资格,但是因为当我想模拟一个糟糕的网络时我很好地使用了它,所以只要它有 > 0 票或类似的票数,我就会把它留在这里。
试试万能
WANem 是一个广域网模拟器,旨在在 LAN 环境中的应用程序开发/测试期间提供广域网/互联网的真实体验。
对于 Windows,您可以使用此应用程序:http: //www.softperfect.com/products/connectionemulator/
适用于 Windows 2000、XP、2003、Vista、7 和 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 之前。有关详细信息,请参阅本文。
使用 Fiddler(免费解决方案)为 Windows 找到了这个 http://www.logic-worx.com/index.php/tools-and-apps/fiddler-connection-simulator/
我想tc
可以在基于 UNIX 的平台上完成这项工作。
tc
用于在Linux内核中配置Traffic Control
http://lartc.org/manpages/tc.txt
要模拟低带宽连接以使用 Google Chrome 测试网站,您可以转到 F12 工具中的网络选项卡并选择一个带宽级别来模拟或创建自定义带宽来模拟。
http://www.shunra.com有一款名为 VE Desktop 的产品,可用于模拟变化的网络条件。它允许您通过简单的 UI 调整延迟、带宽和丢包率。唯一需要注意的是,它不是免费的。希望这可以帮助。
一段时间以来,我一直在寻找一种易于使用的工具来进行此类测试。前几天我刚遇到这个: 网络延迟模拟器
如果你运行的是 Windows,你应该检查一下。设置和开始使用非常容易,而且看起来效果很好。它允许您定义每个方向的带宽、延迟和数据包丢失。另一个非常好的事情是您可以定义“流量匹配条件”,以便它只影响您想要的流量。哦,是的,而且它是免费的。
如果您使用的是 linux,我发现Traffic Control程序对这类事情有很大帮助。
我想我找到了我需要的东西。也许您可以使用charles proxy或slowy。希望能帮助到你。
看看 NE-ONE 网络仿真器,它允许您配置带宽、延迟、数据包丢失、数据包重新排序、数据包复制、数据包分段、网络拥塞和更多损伤,以便您可以在实验室中创建真实的网络条件. 可以为上行链路和下行链路配置不同的损伤,因此您可以获得非常好的上行链路但非常糟糕的下行链路体验,非常适合查看应用程序如何处理 TCP 队列,因为 ack 不会及时返回以及整体延迟因此增加!
这里有一个概述视频http://www.youtube.com/watch?v=DwtqlE7LcrQ专门针对游戏开发人员,但它显示了它的内容。NE-ONE 使用网络浏览器进行配置,因此安装和配置非常容易 - 您无需成为网络专家 :-)
有一个硬件版本 - http://www.itrinegy.com/index.php/products/network-emulators/ne-one - 或者您可以下载在 VMware ESXi Server 下运行的虚拟设备(软件)版本。可以从 VMware 的解决方案交换处下载虚拟设备 - solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator
你可以试试这个: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
LANforge ICE 是一个网络仿真器 ,强调虚拟路由、抖动、损坏和延迟。项目已使用它来模拟卫星链路、电缆和调制解调器连接,以及高速 (10Gbit) WAN 模拟。您可以使用 Java GUI 来构建您的虚拟网络并生成非常详细的流量报告。LANforge 产品还提供流量生成功能:帧、以太网、第 3 层和有状态流量(NFS、http)。LANforge 的最新版本也具有复杂的 WiFi 测试功能。