rendered paste bodyINT=eth1
# creating root and root class
tc qdisc add dev $INT root handle 1: htb default 10
tc class add dev $INT parent 1: classid 1:1 htb rate 1000mbit prio 0
# class for not forwarded traffic (and sfq leaf)
tc class add dev $INT parent 1:1 classid 1:10 htb \
rate 997mbit ceil 1000mbit prio 1
tc qdisc add dev $INT parent 1:10 handle 10: sfq perturb 10
# class for forwarded traffic
tc class add dev $INT parent 1:1 classid 1:11 htb \
rate 2500kbit ceil 2500kbit prio 0
# class for highest prio VOIP (and sfq leaf)
tc class add dev $INT parent 1:11 classid 1:110 htb \
rate 200kbit ceil 2500kbit prio 0
tc qdisc add dev $INT parent 1:110 handle 110: sfq perturb 10
# class for higher prio traffic (and sfq leaf)
tc class add dev $INT parent 1:11 classid 1:111 \
htb rate 1200kbit ceil 1500kbit prio 1
tc qdisc add dev $INT parent 1:111 handle 111: sfq perturb 10
# class for low prio traffic (and sfq leaf)
tc class add dev $INT parent 1:11 classid 1:112 htb \
rate 100kbit ceil 800kbit prio 2
tc qdisc add dev $INT parent 1:112 handle 112: sfq perturb 10
# filters for forwarded traffic
tc filter add dev $INT parent 1: prio 0 protocol ip handle 110 fw flowid 1:110
tc filter add dev $INT parent 1: prio 1 protocol ip handle 111 fw flowid 1:111
tc filter add dev $INT parent 1: prio 2 protocol ip handle 112 fw flowid 1:112
# iptables ruels for marking forwarded traffic
# put everything to lowest prio
iptables -t mangle -A FORWARD -o $INT -j MARK --set-mark 112
# VOIP traffic -> 110
iptables -t mangle -A FORWARD -o $INT -p udp --sport sip \
-j MARK --set-mark 110
iptables -t mangle -A FORWARD -o $INT -p udp --dport sip \
-j MARK --set-mark 110
iptables -t mangle -A FORWARD -o $INT -p udp --dport 10000:10500 \
-j MARK --set-mark 110
# higher prio
iptables -t mangle -A FORWARD -o $INT -p tcp -m multiport \
--sports 22,80,443,143 -j MARK --set-mark 111
iptables -t mangle -A FORWARD -o $INT -p icmp -j MARK --set-mark 111