FreeBSDIPFW帶寬控制
環境:FreeBSD 4.5-Release
在FreeBSD下可以通過ipfw+dummynet來進行帶寬控制,具體實現如下:
1、 修改kernel configuration file, 加入對IPFW和DUMMYNET的支持
options IPFIREWALL
options DUMMYNET
重新編譯,安裝新的kernel
注:如果原內核中支持IPFILTER, 請注釋 options IPFILTER。
2、 新內核缺省是deny所有的連接,因此在/etc/rc.conf文件裡加入以下行:
# ---------------------------------------------------------------------------
firewall_enable="YES" # Set to YES to enable firewall functionality
firewall_script="/etc/rc.firewall" # Which script to run to set up the firewall
firewall_type="open" # Firewall type (see /etc/rc.firewall)
# ---------------------------------------------------------------------------
注:因為是測試FreeBSD的帶寬管理, 不想在ipfw上浪費時間,因此我們將firewall設置
為open狀態, 允許所有包的in, out
3、 重新啟動系統,讓新內核起作用。在ipfw裡加入自己的rules來進行帶寬管理:
# ipfw pipe 1 config bw 128Kbytes/s
# ipfw add 1000 pipe 1 ip from 172.22.4.90 to 172.22.0.0/24 out
注:172.22.4.90是FreeBSD網卡的ip address, 172.22.0.0/16是它所在的網段
第一條rule定義了一個128Kbytes/s的pipe
第二條rule 是將從172.22.4.90-〉172.22.0.0/16 的packet送到pipe 1處理
測試結果:
加入兩條rule前從FreeBSD上下載文件速率是900K Bytes/s(10M局域網)
加入兩條rule後從FreeBSD上下載文件速率是127K Bytes/s
以上只是一個很簡單的測試,但從結果看FreeBSD下通過ipfw+dummynet可以很好的進行帶寬
的控制。大家可以參考dummynet手冊來定制更復雜的rule來滿足自己的需求!