Dummynet Filtering在FreeBSD 10上不起作用

我正在尝试在FreeBSD 10中使用dummynet进行networking仿真。我已经在9.3中工作了,但事情一定已经改变了,我无法确定除了我的设置之外什么都不起作用。 我有非常基本的configuration:

**/boot/loader.conf** dummynet_load="YES" if_bridge_load="YES" ipfw_load="YES" kern.hz=10000 **/etc/sysctl.conf** net.link.bridge.ipfw=1 net.inet.ip.fw.one_pass=1 net.inet.ip.forwarding=1 net.inet.ip.fastforwarding=1 net.inet.ip.dummynet.io_fast=1 net.inet.ip.dummynet.pipe_byte_limit=16777216 **/etc/rc.conf** cloned_interfaces="bridge0" ifconfig_bridge0="addm em0 addm em1 up" ifconfig_em0="up" ifconfig_em1="up" 

在我的防火墙脚本中,我有:

 ipfw pipe 111 config bw 1Mbit/s delay 10ms plr .01 queue 1000KB ipfw add pipe 111 log all from 10.25.0.129 to 10.25.0.11 

当我从10.25.0.129到10.25.0.11进行pingtesting时,它总是成功的,但是防火墙命中如下:

 root@dummynet:/etc/dummynet # ipfw -a list 00100 0 0 pipe 111 log ip from 10.25.0.129 to 10.25.0.11 65535 77 15511 deny ip from any to any 

如果我closures了BSD机器,那么ping就停止工作,所以我知道,由于某些原因,ping命令肯定会被BSD弥补,但是这个规则并没有像FreeBSD9.3那样受到打击。

这都是因为net.inet.ip.dummynet.io_fast=1 。 这个variables开启了快速的数据包处理:当带宽没有耗尽时,所有的数据包都直接通过网桥转发。 整形器完全被旁路 – 在DUMMYNET中没有数据包。

这种行为是特别针对负载较重的网关CPU卸载的成本不相关的统计数据。

尝试closures它,并确保数据包计算为估计。