#! /bin/sh
# Simple bandwidth limiter - <[email]j@4u.net[/email]>
# Change this to your link bandwidth
# (for cable modem, DSL links, etc. put the maximal bandwidth you can
# get, not the speed of a local Ethernet link)
REAL_BW='10Mbit'
# Change this to the bandwidth you want to allocate to WEB.
# We're talking about megabits, not megabytes, so 80Kbit is
# 10 Kilobytes/s
WEB_BW='1000Kbit'
# Change this to your physical network device (or 'ppp0')
NIC='eth0'
tc qdisc del dev "$NIC" root 2> /dev/null
tc qdisc add dev "$NIC" root handle 1: cbq \
bandwidth "$REAL_BW" avpkt 1000
tc class add dev "$NIC" parent 1: classid 1:1 cbq bandwidth "$REAL_BW" \
rate "$REAL_BW" maxburst 1 avpkt 1000
tc class add dev "$NIC" parent 1:1 classid 1:10 cbq \
bandwidth "$REAL_BW" rate "$WEB_BW" maxburst 1 avpkt 1000 bounded
tc qdisc add dev "$NIC" parent 1:10 sfq perturb 10
tc filter add dev "$NIC" parent 1: protocol ip handle 1 fw classid 1:10
iptables -t mangle -A OUTPUT -p tcp --sport 80 -j MARK --set-mark 1