Try something like this:
#!/bin/bash
IFSPEED="100mbit"
SPEEDLIMIT="512kbit"
SHAPEIPS=`echo 192.168.1.{10..20}`
STARTSHAPECLASS=10
addtc()
{
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb
tc class add dev $DEV parent 1: classid 1:1 htb rate "$IFSPEED" burst 15k quantum 60000
SHAPECLASS=$STARTSHAPECLASS
for IP in `echo "$SHAPEIPS"`
do
tc class add dev $DEV parent 1:1 classid 1:"$SHAPECLASS" htb rate "$SPEEDLIMIT" quantum 3000
SHAPECLASS=$(($SHAPECLASS+1))
done
SHAPECLASS=$STARTSHAPECLASS
for IP in `echo "$SHAPEIPS"`
do
tc filter add dev $DEV protocol ip parent 1:1 prio 1 u32 match ip $1 "$IP" flowid 1:"$SHAPECLASS"
SHAPECLASS=$(($SHAPECLASS+1))
done
}
DEV="eth0"
addtc src
DEV="venet0"
addtc dst
This will limit each VE IP address in the range of 192.168.1.10 through 192.168.1.20 to 512kbit/sec in and out. I didn't actually test this but it does seem to produce valid commands and should serve your needs.
The commands this example executes are:
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit burst 15k quantum 60000
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:16 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:17 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:18 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:19 htb rate 512kbit quantum 3000
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 512kbit quantum 3000
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.10 flowid 1:10
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.11 flowid 1:11
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.12 flowid 1:12
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.13 flowid 1:13
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.14 flowid 1:14
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.15 flowid 1:15
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.16 flowid 1:16
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.17 flowid 1:17
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.18 flowid 1:18
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.19 flowid 1:19
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip src 192.168.1.20 flowid 1:20
tc qdisc del dev venet0 root
tc qdisc add dev venet0 root handle 1: htb
tc class add dev venet0 parent 1: classid 1:1 htb rate 100mbit burst 15k quantum 60000
tc class add dev venet0 parent 1:1 classid 1:10 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:11 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:12 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:13 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:14 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:15 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:16 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:17 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:18 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:19 htb rate 512kbit quantum 3000
tc class add dev venet0 parent 1:1 classid 1:20 htb rate 512kbit quantum 3000
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.10 flowid 1:10
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.11 flowid 1:11
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.12 flowid 1:12
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.13 flowid 1:13
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.14 flowid 1:14
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.15 flowid 1:15
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.16 flowid 1:16
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.17 flowid 1:17
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.18 flowid 1:18
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.19 flowid 1:19
tc filter add dev venet0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.20 flowid 1:20
[Updated on: Tue, 01 July 2008 02:56]
Report message to a moderator