0

I have this shaping script that is supposed to penalise downloads larger than 10mb by downgrading their connection speed.

If I test with one connection the penalty is in effect and the download speed is lowered to set value. If I open a new download in paralel, the penalty download rate is shared between the two penalised connections. My goal is to offer a guaranteed penalty rate, not a shared one. Any ideas what am I doing wrong?

dev=eth0

rate_full=100000mbit
conn_rate_limit=10mbit
conn_rate_ceil=20mbit
conn_rate_burst=30mbit

htb_class=10
max_byte=10485760


tc qdisc del dev $dev root > /dev/null 2>&1
tc qdisc add dev $dev root handle 1: htb

tc class add dev $dev parent 1: classid 1:1 htb rate $rate_full
tc class add dev $dev parent 1: classid 1:$htb_class htb rate $conn_rate_limit ceil $conn_rate_ceil burst $conn_rate_burst
tc filter add dev $dev parent 1: prio 0 protocol ip handle $htb_class fw flowid 1:$htb_class

#after 10 megabyte a connection is considered a download
iptables -t mangle -A OUTPUT -p tcp -m connbytes --connbytes $max_byte: --connbytes-dir both --connbytes-mode bytes -j MARK --set-mark $htb_class
Romeo Mihalcea
  • 502
  • 1
  • 6
  • 24

0 Answers0