如何模拟低带宽、高延迟的环境? [关闭]

Posted

技术标签:

【中文标题】如何模拟低带宽、高延迟的环境? [关闭]【英文标题】:How do I simulate a low bandwidth, high latency environment? [closed] 【发布时间】:2010-09-12 22:06:53 【问题描述】:

我需要模拟到服务器的低带宽、高延迟连接,以便在远程站点模拟 *** 的条件。带宽和延迟应该是可调整的,这样我才能找到最佳组合来运行我们的软件包。

【问题讨论】:

好问题!我很想听听一些与 ASP .NET Web 开发相关的答案。 相关/欺骗:Network tools that simulate slow network connection & Simulate delayed and dropped packets on Linux 【参考方案1】:

对于 ma​​cOS,有 Network Link Conditioner 可以模拟可配置的带宽、延迟和数据包丢失。它包含在Additional Tools for Xcode 包中。

【讨论】:

“网络链接调节器”首选项窗格是 XCode 硬件 IO 工具的一部分,您可以从 developer.apple.com/downloads 下载该工具 似乎不适用于 Genymotion。 (黑屏) XCode 较新版本的下载链接:developer.apple.com/download/more/?q=Additional%20Tools @jstorm31 谢谢。我已经用包的当前名称和当前链接更新了答案。【参考方案2】:

有一篇关于设置 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 命令并获得相同的效果。

【讨论】:

【参考方案3】:

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

我注意到 Netem 非常适合我的应用程序,但我也多次使用 WANem。提供的可引导 ISO(和虚拟设备映像)使其非常方便。

【讨论】:

完美满足我的需求,在我的 Ubuntu 14.04 服务器上开箱即用! 注意:MasterShaper 现在指向一些不相关的着陆页【参考方案4】:

查尔斯

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

带宽限制/带宽模拟器

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

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

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

虚拟网络

您也可以使用 vmware 来运行 BSD 或 Linux 并尝试 this article (DummyNet) 或 this one.

【讨论】:

Charles 是一个 HTTP 代理,因此仅适用于测试 HTTP 应用程序。每个人都有自己的想法,但在我看来,这可能是我用过的最糟糕的软件之一。我只用了很短的时间,而我不得不在 Mac 上工作。对于 Windows 用户,如果您需要 HTTP 调试代理,我会推荐 Fiddler。不幸的是,除了 Charles for OSX,我没有找到任何其他东西。 嗨布拉德。你能说说你遇到了什么问题吗?【参考方案5】:

我发现了这个小巧的 Windows 程序,名为 clumsy。它处于 alpha 状态,但对我来说似乎工作正常,而且它是开源的。

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

【讨论】:

笨拙如何控制带宽? 优秀的程序。正是我需要的。我推荐它。像魅力一样工作,超级简单。 当大多数人说“限制带宽”时,他们可能对简单地增加大量延迟和丢包非常满意,因为这些实际上限制了带宽。此外,这个程序使用起来非常简单,胜过我在 Windows 上尝试过的所有其他程序。【参考方案6】:

试试WANem

WANem 是一个广域网模拟器,旨在在 LAN 环境中的应用程序开发/测试期间提供广域网/互联网的真实体验。

【讨论】:

我已经尝试过了,但似乎无法让它工作。由于某种原因,它不会从我们的网络获取 IP 地址,而其他任何计算机都没有问题。【参考方案7】:

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

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

也许是唯一适用于 Windows 的。

【讨论】:

【参考方案8】:

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

【讨论】:

嘿,你有一些与 netem 等效的 windows 命令吗?【参考方案9】:

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

【讨论】:

Netlimiter 不错,但我认为它只做低带宽 - 它不能改变延迟? v3 的测试版计划将延迟模拟列为计划功能。它是最近发布的,我还没有使用它来查看该功能是否成功。 Beta 9 中没有该功能。呃。 即使是当前的测试版 (NetLimiter 4) 也不允许您更改延迟。【参考方案10】:

我在我的 Windows 机器上使用 NetBalancer。

http://seriousbit.com/netbalancer/

2017-10-07 更新:NetBalancer 的最后一个免费版本是 9.2.7。该程序有一个硬编码的到期日期。在启动 NetBalancer 服务之前,需要将系统时钟调回 2016-10-18 之前。详情请见this article。

【讨论】:

谢谢!! NetBalancer 是此页面上列出的唯一一个我能够开始工作并且可以控制延迟的工具。【参考方案11】:

使用 Fiddler 为 Windows 找到了这个(免费解决方案) http://www.logic-worx.com/index.php/tools-and-apps/fiddler-connection-simulator/

【讨论】:

Fiddler 本身有一个选项:Rules -> Performance -> Simulate Modem Speeds,如果您不想使用单独的插件。【参考方案12】:

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

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

【讨论】:

【参考方案13】:

要模拟低带宽连接以使用谷歌浏览器测试网站,您可以转到 F12 工具中的网络选项卡并选择一个带宽级别来模拟或创建自定义带宽来模拟。

【讨论】:

谢谢!如果找不到它,它位于 Chrome 控制台的“网络”选项卡中,位于“禁用缓存”按钮的右侧。它的默认值为“无节流”。【参考方案14】:

如果您使用的是 linux,我发现 Traffic Control 程序对这类事情有很大帮助。

【讨论】:

【参考方案15】:

http://www.shunra.com 有一款名为 VE Desktop 的产品,可用于模拟变化的网络条件。它允许您通过简单的 UI 调整延迟、带宽和丢包率。唯一需要注意的是,它不是免费的。希望这会有所帮助。

【讨论】:

【参考方案16】:

一段时间以来,我一直在寻找一种易于使用的工具来进行此类测试。我前几天刚遇到这个:Network Delay Simulator

如果您运行的是 Windows,则应该检查一下。设置和开始使用非常容易,而且看起来效果很好。它允许您定义每个方向的带宽、延迟和数据包丢失。另一个非常好的事情是您可以定义“流量匹配条件”,以便它只影响您想要的流量。哦,是的,而且它是免费的。

【讨论】:

链接失效。【参考方案17】:

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

【讨论】:

【参考方案18】:

看看 NE-ONE 网络仿真器,它允许您配置带宽、延迟、数据包丢失、数据包重新排序、数据包复制、数据包碎片、网络拥塞和更多损伤,以便您可以创建真实的网络条件在实验室。可以为上行链路和下行链路配置不同的损伤,因此您可以获得非常好的上行链路但非常糟糕的下行链路体验,非常适合查看应用程序如何处理 TCP 队列,因为 ack 不会及时返回以及整体延迟因此增加!

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

有一个硬件版本 - 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

【讨论】:

【参考方案19】:

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

【讨论】:

【参考方案20】:

你可以试试这个: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

【讨论】:

以上是关于如何模拟低带宽、高延迟的环境? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将实时视频流式传输到浏览器(低延迟)[关闭]

C# 中 UI 线程和子进程之间的低延迟 IPC [关闭]

用于实时数据流的 MQTT

直播P2P技术

suakit工作原理?

移动网站性能优化:网页加载(转)