TC-HTB.SH

Aus Xinux Wiki
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…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
#!/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
}