TC-HTB.SH
Version vom 1. Oktober 2014, 14:53 Uhr von Thomas (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „<pre> #!/bin/bash function tc-htb() { UPLINK=$3 DOWNLINK=$4 DEV=$2 case $1 in start) echo "clean existing down- and uplink qdiscs, hide errors" tc qdisc del d…“)
#!/bin/bash
function tc-htb()
{
UPLINK=$3
DOWNLINK=$4
DEV=$2
case $1 in
start)
echo "clean existing down- and uplink qdiscs, hide errors"
tc qdisc del dev $DEV root 2> /dev/null > /dev/null
tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
echo set mangle tables
iptables -t mangle -D POSTROUTING -o $DEV -j prio-1
iptables -t mangle -F prio-1
iptables -t mangle -N prio-1
iptables -t mangle -A prio-1 -d 192.168.240.200 -j MARK --set-mark 10
#iptables -t mangle -A prio-1 -p tcp -m length --length :64 -j MARK --set-mark 10
#iptables -t mangle -A prio-1 -p icmp -j MARK --set-mark 10
#iptables -t mangle -A prio-1 -m tos --tos 0x10 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -o $DEV -j prio-1
echo install root HTB, point default traffic to 20
tc qdisc add dev $DEV root handle 1: htb default 20
echo shape everything at $UPLINK speed
tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}mbit
echo set low an high priority 40% 60% speed
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $((40*$UPLINK/100))mbit ceil ${UPLINK}mbit prio 1
tc class add dev $DEV parent 1:1 classid 1:20 htb rate $((60*$UPLINK/100))mbit ceil ${UPLINK}mbit prio 2
# tc class add dev $DEV parent 1:1 classid 1:10 htb rate $((40*$UPLINK/100))mbit ceil ${UPLINK}mbit burst 6k prio 1
# tc class add dev $DEV parent 1:1 classid 1:20 htb rate $((60*$UPLINK/100))mbit ceil ${UPLINK}mbit burst 6k prio 2
echo mangle mark to classes
tc filter add dev $DEV protocol ip parent 1:0 prio 1 handle 10 fw flowid 1:10
tc filter add dev $DEV protocol ip parent 1:0 prio 2 handle 20 fw flowid 1:20
echo all get stochastic fairness
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
echo ingress qdisc
tc qdisc add dev $DEV handle ffff: ingress
echo ingres filter
tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNLINK}mbit burst 10k drop flowid :1
;;
stop)
echo delete mangle
iptables -t mangle -F prio-1
iptables -t mangle -D POSTROUTING -o $DEV -j prio-1
echo delete qdisc
tc qdisc del dev $DEV root 2> /dev/null > /dev/null
tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
;;
status)
tc -s qdisc ls dev $DEV
tc -s class ls dev $DEV
;;
esac
}