我在localhost:8080
中使用了一个Web服务器,我试图使用dummynet(ipfw)来模拟该服务器的延迟和低带宽,但不知怎的,我无法让它工作。
当我使用命令
时sudo ipfw add pipe 1 all from any to any
sudo ipfw pipe 1 config bw 400Kbit/s delay 100ms
然后ping localhost
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
我的问题是:
为什么ping往返时间(~400ms)比我指定的延迟(100ms)大4倍
带宽限制似乎也不起作用。当我尝试从Chrome中的地址http://localhost:8080/Testfile
下载6Mb测试文件时,我立即收到该文件,而不是按照我想要的费率
答案 0 :(得分:0)
无法回答#1,但对于#2 - 您可能会有更清晰的结果来测试您从网络中的其他计算机下载的内容。
您可能已经为网卡安装了虚拟网络驱动程序。我的理论是,如果您的浏览器正在联系localhost,它可能会绕过该网卡(或虚拟网络注入延迟的钩子?)
基本上,我无法使用dummynet为同一服务器上的任何内容注入延迟。例如,我有两个服务,他们立即相互沟通。另一台机器上的其他任何东西都会注入延迟。
您可以尝试Fiddler - http://helephant.com/2012/07/11/simulating-network-latency-with-fiddler/ - 这似乎也会在localhost上注入延迟。