【问题标题】:How to simulate bandwidth and delay in localhost with dummynet (ipfw)如何使用 dummynet (ipfw) 在 localhost 中模拟带宽和延迟
【发布时间】:2023-03-28 22:50:02
【问题描述】:

我在localhost:8080 中使用网络服务器,我正在尝试使用 dummynet (ipfw) 来模拟该服务器的延迟和低带宽,但不知何故我无法让它工作。

当我使用命令时

sudo ipfw add pipe 1 all from any to any
sudo ipfw pipe 1 config bw 400Kbit/s delay 100ms

然后 ping 本地主机

ping localhost

我得到了这些结果:

PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=686.512 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=848.309 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=409.890 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=410.988 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=424.014 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=411.002 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=409.175 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=417.517 ms

我的问题是:

  1. 为什么 ping 往返时间(~400ms)比我指定的延迟时间(100ms)大约大 4 倍

  2. 带宽限制似乎也不起作用。当我尝试在 Chrome 中从地址 http://localhost:8080/Testfile 下载 6Mb 测试文件时,我会立即获得该文件,而不是我想要的速率

【问题讨论】:

    标签: networking simulation ipfw dummynet


    【解决方案1】:

    无法回答 #1,但对于 #2 - 您可能会从网络中的另一台机器测试您的下载得到更清晰的结果。

    您应该已经为您的网卡安装了 dummynet 驱动程序。我的理论是,如果您的浏览器正在联系 localhost,它可能会绕过该网卡(或 dummynet 注入延迟的钩子?)

    基本上,我无法让 dummynet 向同一台服务器上的任何内容注入延迟。例如,我有两个服务,它们会立即相互通信。另一台机器上的任何其他东西都会注入延迟。

    您可以尝试 Fiddler - http://helephant.com/2012/07/11/simulating-network-latency-with-fiddler/ - 它似乎也会在 localhost 上注入延迟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 2015-06-26
      相关资源
      最近更新 更多