RATE=256

tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1:0 htb

tc class add dev eth0 parent 1:0 classid 1:1 htb rate ${RATE}kbit
tc class add dev eth0 parent 1:1 classid 1:11 htb rate $[${RATE}/4]kbit ceil ${RATE}kbit
tc class add dev eth0 parent 1:1 classid 1:12 htb rate $[${RATE}/4]kbit ceil ${RATE}kbit
tc class add dev eth0 parent 1:1 classid 1:13 htb rate $[${RATE}/4]kbit ceil ${RATE}kbit
tc class add dev eth0 parent 1:1 classid 1:14 htb rate $[${RATE}/4]kbit ceil ${RATE}kbit

tc qdisc add dev eth0 parent 1:11 handle 11:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 12:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 13:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 14:0 sfq perturb 10

iptables -t mangle -F FORWARD
iptables -t mangle -A FORWARD -j MARK --set-mark 4
iptables -t mangle -A FORWARD -d 192.168.0.1 -j MARK --set-mark 1
iptables -t mangle -A FORWARD -d 192.168.0.2 -j MARK --set-mark 2
iptables -t mangle -A FORWARD -d 192.168.0.3 -j MARK --set-mark 3

iptables -t mangle -F OUTPUT
iptables -t mangle -A OUTPUT -p tcp --sport 3128 -j MARK --set-mark 4
iptables -t mangle -A OUTPUT -p tcp --sport 3128 -d 192.168.0.1 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p tcp --sport 3128 -d 192.168.0.2 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --sport 3128 -d 192.168.0.3 -j MARK --set-mark 3

tc filter add dev eth0 parent 1:0 protocol ip handle 1 fw flowid 1:11
tc filter add dev eth0 parent 1:0 protocol ip handle 2 fw flowid 1:12
tc filter add dev eth0 parent 1:0 protocol ip handle 3 fw flowid 1:13
tc filter add dev eth0 parent 1:0 protocol ip handle 4 fw flowid 1:14

