QOS в Linux

Пример реализации трафик шейпера в корпоративной сети.

tc qdisc del dev ppp0 root
tc qdisc add dev ppp0 root handle 1: htb default 2
tc class add dev ppp0 parent 1: classid 1:1 htb rate 9mbit
# BAD
tc class add dev ppp0 parent 1:1 classid 1:2 htb rate 8kbit prio 7
tc qdisc add dev ppp0 parent 1:2 handle 2: sfq perturb 7
# NORMAL
tc class add dev ppp0 parent 1:1 classid 1:3 htb rate 128kbit prio 3
tc qdisc add dev ppp0 parent 1:3 handle 3: sfq perturb 10
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 21 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 20 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 109 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 6677 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 5190 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 5222 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 2041 0xffff classid 1:3
tc filter add dev ppp0 parent 1:0 prio 3 protocol ip u32 match ip dport 2042 0xffff classid 1:3
# GOOD
tc class add dev ppp0 parent 1:1 classid 1:4 htb rate 256kbit ceil 512kbit prio 2
tc qdisc add dev ppp0 parent 1:4 handle 4: sfq perturb 10
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 25 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 110 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 143 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 220 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 465 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 995 0xffff classid 1:4
tc filter add dev ppp0 parent 1:0 prio 2 protocol ip u32 match ip dport 993 0xffff classid 1:4
# HIGH
tc class add dev ppp0 parent 1:1 classid 1:5 htb rate 1mbit ceil 5mbit prio 1
tc qdisc add dev ppp0 parent 1:5 handle 5: sfq perturb 10
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 8080 0xffff classid 1:5
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 8081 0xffff classid 1:5
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 53 0xffff classid 1:5
tc filter add dev ppp0 parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:5
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 80 0xffff classid 1:5
tc filter add dev ppp0 parent 1:0 prio 1 protocol ip u32 match ip dport 443 0xffff classid 1:5
# VERY HIGH
tc class add dev ppp0 parent 1:1 classid 1:6 htb rate 9mbit prio 0
tc qdisc add dev ppp0 parent 1:6 handle 6: sfq perturb 10
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip u32 match ip sport 3389 0xffff classid 1:6
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip u32 match ip sport 4444 0xffff classid 1:6
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip u32 match ip sport 22 0xffff classid 1:6
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip u32 match ip dport 33333 0xffff classid 1:6