TC-HTB.SH: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(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…“)
 
 
Zeile 9: Zeile 9:
 
start)
 
start)
 
echo "clean existing down- and uplink qdiscs, hide errors"
 
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 root    > /dev/null 2>&1
  tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
+
  tc qdisc del dev $DEV ingress > /dev/null 2>&1
echo set mangle tables  
+
echo set mangle tables  
  iptables -t mangle -D POSTROUTING -o $DEV  -j prio-1
+
  iptables -t mangle -D POSTROUTING -o $DEV  -j prio-1 > /dev/null 2>&1
  iptables -t mangle -F prio-1
+
echo flush prio-1
 +
  iptables -t mangle -F prio-1  > /dev/null  2>&1
 +
echo new prio-1
 
  iptables -t mangle -N prio-1
 
  iptables -t mangle -N prio-1
 +
echo add rule to prio-1
 
  iptables -t mangle -A prio-1  -d 192.168.240.200 -j MARK --set-mark 10
 
  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
+
  echo jump to prio-1
#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
 
  iptables -t mangle -A POSTROUTING -o $DEV  -j prio-1
 
echo install root HTB, point default traffic to 20   
 
echo install root HTB, point default traffic to 20   
Zeile 27: Zeile 28:
 
  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: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: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  
 
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 1 handle 10 fw flowid 1:10
Zeile 51: Zeile 50:
 
  tc -s qdisc ls dev $DEV
 
  tc -s qdisc ls dev $DEV
 
  tc -s class ls dev $DEV
 
  tc -s class ls dev $DEV
 +
;;
 +
*)
 +
echo  "$0 start DEV UP-MB DOWN-MB | stop | status DEV"
 
;;
 
;;
 
esac
 
esac
 
}
 
}
 +
  
  
 
</pre>
 
</pre>

Aktuelle Version vom 1. Oktober 2014, 15:26 Uhr

#!/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    > /dev/null 2>&1
 tc qdisc del dev $DEV ingress > /dev/null 2>&1
 echo set mangle tables 
 iptables -t mangle -D POSTROUTING -o $DEV  -j prio-1 > /dev/null 2>&1
 echo flush prio-1
 iptables -t mangle -F prio-1  > /dev/null  2>&1
 echo new prio-1
 iptables -t mangle -N prio-1
 echo add rule to prio-1
 iptables -t mangle -A prio-1  -d 192.168.240.200 -j MARK --set-mark 10
 echo jump to prio-1
 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
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
;;
*)
echo  "$0 start DEV UP-MB DOWN-MB | stop | status DEV"
;;
esac
}