htb使用心得

7039 ワード


1.filterでflowidをleaf葉classにする必要があります.そうしないと有効になりません.(たとえば、次の設定を1:4にすると、親ノードclassは有効になりません.デフォルトのclass、すなわちdefault 3になります)
#tc filter add dev peth0 parent 1:0 protocol ip prio 6 u32  match ip src 10.241.32.17/32  flowid 1:3
2.次のルールでは、1:5に有効ではありません.すなわち、ack、synなどが1:5のclassに行かなかったのはおかしいですか.(発注過程で1:5のtokenは減少していない)
3. iptables -t mangle -L target     prot opt source               destination         MARK       tcp  --  anywhere             anywhere            tcp flags:SYN,RST,ACK/SYN MARK set 0x1 RETURN     tcp  --  anywhere             anywhere            tcp flags:SYN,RST,ACK/SYN MARK icmp--anywhere anywhere MARK set 0 x 1 RETURN icmp--anywhere anywhere注:mangleルールは加算されています
4.netstat-p--tcpでモニタリング
fitlerの表示:tc-s filter ls dev peth 0
Qdiscの表示:tc qdiscls dev peth 0
 
5,patch:wgetftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20100218.tar.bz2
 
5.htbのr 2 q:r 2 q=100(default=10)を設定する
tc qdisc add dev peth0 root handle 1: htb r2q 100 default 3
 
6.ackを入れ、Tcpのackをflowid 1:5:
# TCP ACK tc filter add dev peth0 parent 1:0 protocol ip prio 1 u32 match ip protocol 6 0xff match u8 0x10 0xff at 33 match u16 0x0000 0xffc0 at 2 flowid 1:5 # ICMP tc filter add dev peth0 parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:5 
 
6.iptables-p tcp--tcp-flags SYN,FIN,ACK SYNは、SYNタグが設定されていないパケットに一致することを示し、各タグの間にスペースがなくカンマが1つしかないことに注意する.
 
7.注:htbのパラメータはhtbが有効かどうかに影響し、quantum、元の測定時、平均帯域幅がありますが、数十Kに調整して測定し、htbが有効になり、quantum、rate、burstが確かに影響したことを証明します.
http://www.docum.org/docum.org/faq/cache/31.html
 
 
8.
指定デバイス(ここではimq 1)の分類状況tc class ls dev imq 1|moreを簡単に表示
指定デバイス(ここではimq 1)の分類状況tc-s class ls dev imq 1|moreを詳細に表示する
class htb 2:3102 parent 2:2 prio 6 rate 480000bit ceil 2048Kbit burst 1659b cburst 1856b Sent 104421 bytes 783 pkt (dropped 0, overlimits 0 requeues 0) rate 2464bit 1pps backlog 0b 0p requeues 0 lended: 769 borrowed: 14 giants: 0 tokens: 26600 ctokens: 7001

例えば、上記分類class htb 2:3102は783個のパケットを送信し、データ流量は104421バイト、破棄されたパケット数は0、レート制限を超えたパケット数は0である.
フィルタの状況tc-s filter ls dev imq 1|moreを表示
 
 
 
tc qdisc del dev peth0 root 2>/dev/null
iptables -F -t mangle iptables -X -t mangle iptables -Z -t mangle
# special info
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
iptables -t mangle -A PREROUTING -p icmp -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p icmp -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m length --length :128 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp -m length --length :128 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 22 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 22 -j RETURN
 
#default 3は他のルールに合わないclassid 1:3の3を歩くことを指します!!!テスト環境で帯域幅が11.2 MBytes/secで満たされている
tc qdisc add dev peth0 root handle 1: htb default 3
tc class add dev peth0 parent 1:0 classid 1:1 htb rate 8mbps ceil 11mbps mtu 40000
# for usual users
tc class add dev peth0 parent 1:0 classid 1:3 htb rate 3mbps ceil 3mbps  mtu 40000
# for vip users
tc class add dev peth0 parent 1:1 classid 1:4 htb rate 8mbps ceil 8mbps  mtu 40000
tc class add dev peth0 parent 1:4 classid 1:6 htb rate 2mbps ceil 2mbps  mtu 40000
tc class add dev peth0 parent 1:4 classid 1:7 htb rate 4mbps ceil 4mbps  mtu 40000
# for SYN,ACK,TCP
tc class add dev peth0 parent 1:1 classid 1:5 htb rate 2mbps ceil 2mbps  mtu 40000
# qdiscs
tc qdisc add dev peth0 parent 1:3 handle 3: pfifo limit 1000
tc qdisc add dev peth0 parent 1:5 handle 5: pfifo limit 1000
tc qdisc add dev peth0 parent 1:6 handle 6: pfifo limit 1000
tc qdisc add dev peth0 parent 1:7 handle 7: pfifo limit 1000
 
tc filter add dev peth0 parent 1:0 protocol ip  prio 1 handle 1 fw flowid 1:5
# 35's bandwith is rate 4mbps ceil 4mbps tc filter add dev peth0 parent 1:0 protocol ip prio 2 u32 match ip src 10.241.32.35/32 flowid 1:7
# 42's bandwith is rate 2mbps ceil 2mbps tc filter add dev peth0 parent 1:0 protocol ip prio 3 u32 match ip src 10.241.32.42/32 flowid 1:6
#tc filter add dev peth0 parent 1:0 protocol ip prio 6 u32  match ip src 10.241.32.17/32  flowid 1:3
#tc filter add dev peth0 parent 1:0 protocol ip prio 7 u32  match ip src 10.241.32.128/32  flowid 1:3
 
#watch tc -s -d class show dev peth0
 
watchのフォーマット:
******************************************************************************************
class htb 1:1 root rate 64000Kbit ceil 88000Kbit burst 72000b/256 mpu 0b overhead 0b cburst 83996b/256 mpu 0b overhead 0b level 7  Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)             rate 0bit 0pps backlog 0b 0p requeues 0       lended: 0 borrowed: 0 giants: 0  tokens: 9000 ctokens: 7636
class htb 1:3 root leaf 3: prio 0 quantum 200000 rate 24000Kbit ceil 24000Kbit burst 51999b/256 mpu 0b overhead 0b cburst 51999b/256  mpu 0b overhead 0b level 0  Sent 193206522 bytes 2794 pkt (dropped 0, overlimits 0 requeues 0)  rate 9952bit 3pps backlog 0b 0p requeues 0      lended: 20521 borrowed: 0 giants: 0  tokens: 17333 ctokens: 17333
class htb 1:4 parent 1:1 rate 64000Kbit ceil 64000Kbit burst 72000b/256 mpu 0b overhead 0b cburst 72000b/256 mpu 0b overhead 0b leve l 6  Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)             rate 0bit 0pps backlog 0b 0p requeues 0       lended: 0 borrowed: 0 giants: 0  tokens: 9000 ctokens: 9000
class htb 1:5 parent 1:1 leaf 5: prio 0 quantum 100000 rate 8000Kbit ceil 8000Kbit burst 44000b/256 mpu 0b overhead 0b cburst 44000b/256 mpu 0b overhead 0b level 0  Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)  rate 0bit 0pps backlog 0b 0p requeues 0  lended: 0 borrowed: 0 giants: 0  tokens: 44000 ctokens: 44000
class htb 1:6 parent 1:4 leaf 6: prio 0 quantum 200000 rate 16000Kbit ceil 16000Kbit burst 48000b/256 mpu 0b overhead 0b cburst 4800 0b/256 mpu 0b overhead 0b level 0  Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)  rate 0bit 0pps backlog 0b 0p requeues 0  lended: 0 borrowed: 0 giants: 0  tokens: 24000 ctokens: 24000
class htb 1:7 parent 1:4 leaf 7: prio 0 quantum 200000 rate 32000Kbit ceil 32000Kbit burst 56000b/256 mpu 0b overhead 0b cburst 5600 0b/256 mpu 0b overhead 0b level 0  Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)            rate 0bit 0pps backlog 0b 0p requeues 0       lended: 0 borrowed: 0 giants: 0     tokens: 14000 ctokens: 14000
*******************************************************************************