限制流出速度,主要經過tc這個工具,經常使用的有三個隊列:html
tbf隊列,令牌桶隊列,適用於流量×××;windows
cbq隊列,分類的隊列,用於實現精細的qos控制,配置複雜;網絡
htb隊列,分層的令牌桶隊列,用於實現精細的qos控制,配置比cbq簡單些;ide
經過tbf限制流程速度的例子:工具
tc qdisc add dev eth0 root tbf rate 51200kbit latency 50ms minburst 200k burst 200k測試
限制網卡eth0流出速度爲51200kbit,正確的設置方法,和minburst這個參數有很大的關係,不一樣的硬件環境和系統須要具體調試。網站
經過htb實現不一樣目標地址的限速.net
刪除3d
tc qdisc del dev eth0 root tbf調試
修改
tc qdisc change dev eth0 root tbf rate 2200kbit latency 5000ms burst 1540
查看當天隊列
tc -s -d qdisc ls
經過htb隊列,針對不一樣ip源限速
刪除已有的隊列
tc qdisc del dev eth0 root
創建一個htb根隊列
tc qdisc add dev eth0 root handle 1: htb
創建一個父類1:1,速度爲100mbit
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
創建一個子類1:10,速度50mbit,這裏的50mbit包含在1:1的100mbit中
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50mbit ceil 50mbit
指定1:10是一個隨機公平隊列
tc qdisc add dev eth0 parent 1:10 sfq perturb 10
經過過濾器,保證1.1.1.1這個ip經過1:1這個隊列,優先級是2。
tc filter add dev eth0 protocol ip parent 1: prio 2 u32 match ip dst 1.1.1.1/32 flowid 1:1
經過過濾器,保證全部的其餘ip經過1:10這個隊列,優先級是50。
tc filter add dev eth0 protocol ip parent 1: prio 50 u32 match ip dst 0.0.0.0/0 flowid 1:10
經過iptables 限制流進速度
#iptables -A INPUT -s 61.61.61.61/32 -m limit --limit 60/s -j ACCEPT
#iptables -A INPUT -s 61.61.61.61/32 -j DROP
限制ip每秒流進速度不超過60個,經過iptables不能精確控制網速,只能控制包的個數,具體數對能夠用mtu乘包的個數計算。
Linux系統速度限制很是不錯的參考資料,《Linux高級路由和流量控制》
http://www.docin.com/p-4929331.html
經過組策略能夠限制流出速度,在開始運行輸入gpedit.msc
經過本地計算機---計算機配置----基於策略的qos選項,能夠實現網絡限速、源ip、基於應用的限速。
能夠下載Windows Server 2003 Resource Kit Tools,安裝後,運行安裝目錄下的tcmon.bat這個批處理安裝。
http://www.microsoft.com/en-us/download/details.aspx?id=17657
而後網卡屬性—服務—添加qos包隊列服務。
而後運行tcmon.exe程序。
能夠根據須要設置速率
須要過濾的ip
協議
可是這個工具我只在xp上測試經過, 在windows 2003上不能正常使用,查閱了許多國外的網站,也有許多人碰到相似的問題,目前沒有找到解決的方法,推測是微軟已經放棄了對這個工具的支持吧。另外這個工具只能如今流出速度,重啓後須要從新配置。
windows系統還可使用netlimit這個工具,這是一個收費工具,就不詳細介紹了,官網是http://www.netlimiter.com/,上面有詳細的介紹。
經過360衛生也能夠實現限速的功能,可是隻能基於應用。