0

我正在使用网络服务器,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. 带宽限制似乎也不起作用。当我尝试从http://localhost:8080/TestfileChrome 中的地址下载 6Mb 测试文件时,我会立即获得该文件,而不是以我想要的速率

4

1 回答 1

0

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

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

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

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

于 2015-05-22T03:33:45.287 回答