TS HTB MANGLE

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
#!/bin/bash
UPLINK=100
DOWNLINK=8
DEV=eth1
case $1 in
start)
 echo delete mangle 
 iptables -t mangle -F
 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
 echo set mangle tables 
 iptables -A POSTROUTING -t mangle -o $DEV -p tcp -m length --length :64 -j MARK --set-mark 10 
 iptables -A POSTROUTING -t mangle -o $DEV -p icmp -j MARK --set-mark 10 
 iptables -A POSTROUTING -t mangle -o $DEV -m tos --tos 0x10  -j MARK --set-mark 10 
 
 tc qdisc add dev $DEV root handle 1: htb default 30
 tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}mbit
 tc class add dev $DEV parent 1:1 classid 1:10 htb rate $[50*UPLINK/100]mbit ceil ${UPLINK}mbit burst 6k prio 1
 tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[30*UPLINK/100]mbit ceil ${UPLINK}mbit burst 6k prio 2
 tc class add dev $DEV parent 1:1 classid 1:30 htb rate $[20*UPLINK/100]mbit ceil ${UPLINK}mbit burst 6k prio 3
 tc class add dev $DEV parent 1:1 classid 1:40 htb rate $[10*UPLINK/100]mbit ceil ${UPLINK}mbit burst 6k prio 4
 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
 tc filter add dev $DEV protocol ip parent 1:0 prio 3 handle 30 fw flowid 1:30
 tc filter add dev $DEV protocol ip parent 1:0 prio 4 handle 40 fw flowid 1:40
 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
 tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10
 tc qdisc add dev $DEV parent 1:40 handle 40: 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
 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