用TC對8080埠限速的問題
大家好,現在又一個需求,是對伺服器的8080埠限速,我想用TC實現,於是搭了個測試環境,系統內核版本是:Linux test-redhat5.2 2.6.18-92.el5
分別使用了CBQ和HTB演算法實現,腳本如下:
CBQ:
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1:0 cbq bandwidth 100Mbit avpkt 1000 cell 8
tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 100Mbit rate 20Mbit weight 2Mbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded
tc class add dev eth0 parent 1:1 classid 1:4 cbq bandwidth 100Mbit rate 20Mbit weight 2Mbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000
tc qdisc add dev eth0 parent 1:4 handle 40: sfq
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport 8080 0xffff flowid 1:4
HTB:
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate 11mbit burst 15k
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10mbit burst 15k
tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
U32="tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32"
$U32 match ip sport 8080 0xffff flowid 1:10
均成功了,但是在生產機上運行腳本,完全沒有反應,達不到限速的目的。生產機內核版本是:Linux localhost 2.6.18-92.el5PAE
我懷疑是內核不支持的問題 應該怎麼解決呢?
PS:對Linux內核不太了解
《解決方案》
在生產機上設置成功了么?用 tc qdisc查看一下,會不會是限速的網卡設置錯了?
《解決方案》
HTB:
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate 11mbit burst 15k
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10mbit burst 15k
tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
U32="tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32"
$U32 match ip sport 8080 0xffff flowid 1:10
default 30
樓主沒有設置30這個子類好呀。那麼不匹配的數據流該無法出去。
tc -s qdisc
tc -s class
tc -s filter
看看數據流。
《解決方案》
http://lartc.org樓主下載文檔研究下吧
《解決方案》
看看內核.config文件,配置HTB了嗎?
《解決方案》
回復 #2 陽神 的帖子
網卡都是eth0的
《解決方案》
沒設置子類就會按默認的出去 而不會限速
《解決方案》
回復 #1 serwei 的帖子
在生產機上看看默認的qdisc的隊列信息以及class的信息