看起来确实如此。我为每个传出和传入的数据包添加了很大的额外延迟,除了使用 Scapy 发送的数据包之外,一切都变慢了。
$ ipfw add pipe 1 from any to any
$ ipfw pipe 1 config delay 500ms
$ ping www.google.com
PING www.l.google.com (173.194.34.18) 56(84) bytes of data.
64 bytes from par03s02-in-f18.1e100.net (173.194.34.18): icmp_req=1 ttl=54 time=1011 ms
64 bytes from par03s02-in-f18.1e100.net (173.194.34.18): icmp_req=2 ttl=54 time=1010 ms
所以看起来还可以。但是,一旦我使用 Scapy 发送数据包,就会发生以下情况:
>>> from scapy.all import *
>>> p = IP(dst="www.google.com", ttl=1) / TCP(sport=222, dport=2999)
>>> ans,unans = sr(p*3)
>>> ans[0][1].time - ans[0][0].sent_time
0.0002701282501220703 #usual value for such RTT
有什么办法可以强制它通过dummynet?
编辑如果我有另一台机器可供使用,我可以在那里使用 dummynet 并将我的所有流量引导到它,然后再进入 Internet。不过,我更愿意在本地做所有事情。