#!/bin/sh
#
# Paweł Maziarz
echo "Starting htb -> ograniczanie pasma..."
tc qdisc del root dev eth1
tc qdisc add dev eth1 root handle 1: htb
tc class add dev eth1 parent 1: classid 1:1 htb rate 1400Kbps ceil 1400Kbps
# 128kbps -> .4 - .20
for i in `seq 4 20`; do
tc class add dev eth1 parent 1:1 classid 1:$i htb rate 16Kbps ceil 16Kbps
done
# testowe .2 -> 128kbps
tc class add dev eth1 parent 1:1 classid 1:2 htb rate 16Kbps ceil 16Kbps
# 128kbps -> .105, .102
tc class add dev eth1 parent 1:1 classid 1:102 htb rate 16Kbps ceil 16Kbps
tc class add dev eth1 parent 1:1 classid 1:105 htb rate 16Kbps ceil 16Kbps
# 128kbps dla dwóch, po połowie. -> .106, .107
tc class add dev eth1 parent 1:1 classid 1:300 htb rate 16Kbps ceil 16Kbps
tc class add dev eth1 parent 1:300 classid 1:106 htb rate 8Kbps ceil 16Kbps
tc class add dev eth1 parent 1:300 classid 1:107 htb rate 8Kbps ceil 16Kbps
for i in `seq 4 20`; do
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.$i flowid 1:$i
done
# to to testowe
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.2 flowid 1:2
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.102 flowid 1:102
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.105 flowid 1:105
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.106 flowid 1:106
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.107 flowid 1:107
# i jeszcze troche sprawiedliwości dla połącze7
for i in `seq 4 20`; do
tc qdisc add dev eth1 parent 1:$i handle $i:0 sfq perturb 10
done
tc qdisc add dev eth1 parent 1:2 handle 2:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:102 handle 102:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:105 handle 105:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:107 handle 106:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:106 handle 107:0 sfq perturb 10