FreeBSD 10でdummynetを使用してネットワークエミュレーションを実行しようとしています。これは9.3で機能していますが、状況が変わったはずで、正確に何を判断できないのですが、セットアップが機能しなくなりました。私はかなり基本的な設定をしています:
**/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までのpingテストを実行すると、常に成功しますが、ファイアウォールのヒットは次のようになります。
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
BSDマシンをシャットダウンすると、pingが機能しなくなるため、何らかの理由でpingがBSDによって確実にブリッジされていることがわかりますが、FreeBSD9.3のようにルールがヒットしていません。
それはすべてnet.inet.ip.dummynet.io_fast=1
のせいです。この変数は高速パケット処理をオンにしました。帯域幅が使い果たされていない間、すべてのパケットはブリッジを介して直接転送されます。シェイパーは完全にバイパスされ、DUMMYNETではパケットはカウントされません。
この動作は、関連性のない統計情報を犠牲にして、CPUオフロード用の高負荷ゲートウェイを特に対象としています。
オフにして、パケットが推定どおりにカウントされるようにしてください。