3 # Copyright: George Milescu 2010 - george.milescu@gmail.com
6 # * http://tldp.org/HOWTO/html_single/Traffic-Control-HOWTO/
7 # * http://lartc.org/howto/lartc.adv-filter.html#LARTC.ADV-FILTER.U32
8 # * http://www.topwebhosts.org/tools/traffic-control.php
9 # * http://atmail.com/kb/2009/throttling-bandwidth/
10 # * http://www.docstoc.com/docs/20252486/Manual-tc-Packet-Filtering-and-netem
12 # This script needs to be run on the vmware machine, to control the traffic between the openvz containers
15 if test $# -ne 1; then
16 echo "Usage: $0 set|del"
22 # delete all tc on venet0
23 tc qdisc del dev venet0 root handle 1:0
25 # add root(outgress) qdisc on venet0
26 tc qdisc add dev venet0 root handle 1:0 htb default 90
28 # class for coord <-> seeders
29 tc class add dev venet0 parent 1:0 classid 1:1 htb rate 512kbit ceil 512kbit
30 tc class add dev venet0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit #coord <-> seeder1/2/3
32 # class for coord <-> helpers
33 tc class add dev venet0 parent 1:0 classid 1:2 htb rate 4096kbit ceil 4096kbit
34 tc class add dev venet0 parent 1:2 classid 1:20 htb rate 4096kbit ceil 4096kbit #coord <-> helper1/2
36 # class for helper1 <-> seeders
37 tc class add dev venet0 parent 1:0 classid 1:3 htb rate 8192kbit ceil 8192kbit
38 tc class add dev venet0 parent 1:3 classid 1:30 htb rate 8192kbit ceil 8192kbit #helper1 <-> seeder1/2/3
39 # class for helper2 <-> seeders
40 tc class add dev venet0 parent 1:0 classid 1:4 htb rate 8192kbit ceil 8192kbit
41 tc class add dev venet0 parent 1:4 classid 1:40 htb rate 8192kbit ceil 8192kbit #helper2 <-> seeder1/2/3
43 #tc qdisc add dev venet0 parent 1:10 handle 10: sfq perturb 10
44 #tc qdisc add dev venet0 parent 1:20 handle 20: sfq perturb 10
45 #tc qdisc add dev venet0 parent 1:30 handle 30: sfq perturb 10
46 #tc qdisc add dev venet0 parent 1:40 handle 40: sfq perturb 10
48 # Filters for coord <-> seeders
50 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.5.1/32 flowid 1:10
51 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.5.1/32 match ip dst 10.10.2.1/32 flowid 1:10
53 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.6.1/32 flowid 1:10
54 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.6.1/32 match ip dst 10.10.2.1/32 flowid 1:10
56 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.7.1/32 flowid 1:10
57 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.7.1/32 match ip dst 10.10.2.1/32 flowid 1:10
59 # Filters for coord <-> helpers
61 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.3.1/32 flowid 1:20
62 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.2.1/32 flowid 1:20
64 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.2.1/32 match ip dst 10.10.4.1/32 flowid 1:20
65 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.2.1/32 flowid 1:20
67 # Filters for helpers <-> seeders
69 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.5.1/32 flowid 1:30
70 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.5.1/32 match ip dst 10.10.3.1/32 flowid 1:30
72 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.6.1/32 flowid 1:30
73 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.6.1/32 match ip dst 10.10.3.1/32 flowid 1:30
75 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.3.1/32 match ip dst 10.10.7.1/32 flowid 1:30
76 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.7.1/32 match ip dst 10.10.3.1/32 flowid 1:30
78 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.5.1/32 flowid 1:40
79 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.5.1/32 match ip dst 10.10.4.1/32 flowid 1:40
81 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.6.1/32 flowid 1:40
82 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.6.1/32 match ip dst 10.10.4.1/32 flowid 1:40
84 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.4.1/32 match ip dst 10.10.7.1/32 flowid 1:40
85 tc filter add dev venet0 parent 1:0 protocol ip u32 match ip src 10.10.7.1/32 match ip dst 10.10.4.1/32 flowid 1:40
89 tc qdisc del dev venet0 root handle 1:
93 echo "Usage: $0 set|del"