TS HTB MANGLE

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
  1. !/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