[root@new-fiberlink ~]# cat /etc/tc.sh

#!/bin/bash
 
TC=/sbin/tc
 
stop() {
        $TC qdisc del dev eth0 root
}
 
start() {
        $TC qdisc add dev eth0 root handle 1: htb default 999 
        $TC class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
        $TC class add dev eth0 parent 1:1 classid 1:999 htb rate 1mbit ceil 2mbit
        $TC qdisc add dev eth0 parent 1:999 handle 999: sfq
 
        $TC class add dev eth0 parent 1:1 classid 1:2  htb rate 1mbit ceil 100mbit
        $TC filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 219.143.67.0/29 flowid 1:2
        $TC qdisc add dev eth0 parent 1:2 handle 2: sfq
 
        # 00:1D:4F:4B:48:D8
        $TC class add dev eth0 parent 1:1 classid 1:3 htb rate 128kbit ceil 896kbit
        $TC filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match u16 0x0800 0xffff at -2 match u32 0x4F4B48D8 0xffffffff at -12 match u16 0x001D 0xffff at -14 flowid 1:3
        # 00:1A:A0:3B:15:A0
        $TC filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match u16 0x0800 0xffff at -2 match u32 0xA03B15A0 0xffffffff at -12 match u16 0x001A 0xffff at -14 flowid 1:3
        $TC qdisc add dev eth0 parent 1:3 handle 3: sfq
 
 
        # 00:E0:81:41:E1:B0
        #$TC class add dev eth0 parent 1:1 classid 1:4 htb rate 128kbit ceil 896kbit
        #$TC filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match u16 0x0800 0xffff at -2 match u32 0x8141E1B0 0xffffffff at -12 match u16 0x00E0 0xffff at -14 flowid 1:4
        #$TC qdisc add dev eth0 parent 1:4 handle 4: sfq
 
 
        for ((i=6;i<65;i++)) ; do 
                $TC class add dev eth0 parent 1:1 classid 1:$i htb rate 128kbit ceil 896kbit
                $TC filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.$i flowid 1:$i
                $TC qdisc add dev eth0 parent 1:$i handle $i: sfq
        done
        for ((i=66;i<71;i++)) ; do
                $TC class add dev eth0 parent 1:1 classid 1:$i htb rate 128kbit ceil 896kbit
                $TC filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.$i flowid 1:$i
                $TC qdisc add dev eth0 parent 1:$i handle $i: sfq
        done
        for ((i=72;i<86;i++)) ; do
                $TC class add dev eth0 parent 1:1 classid 1:$i htb rate 128kbit ceil 896kbit
                $TC filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.$i flowid 1:$i
                $TC qdisc add dev eth0 parent 1:$i handle $i: sfq
        done
        for ((i=87;i<100;i++)) ; do
                $TC class add dev eth0 parent 1:1 classid 1:$i htb rate 128kbit ceil 896kbit
                $TC filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.$i flowid 1:$i
                $TC qdisc add dev eth0 parent 1:$i handle $i: sfq
        done
 
        for ((i=101;i<=254;i++)) ; do
                $TC class add dev eth0 parent 1:1 classid 1:$i htb rate 128kbit ceil 896kbit
                $TC filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.$i flowid 1:$i
                $TC qdisc add dev eth0 parent 1:$i handle $i: sfq
        done
 
}
 
case "$1" in
    start)
        stop
        start
        RETVAL=$?
        ;;
    stop)
        stop
        RETVAL=$?
        ;;
    *)
        echo $"Usage: $0 {start|stop}"
        exit 1
        ;;
esac
 
 
 
 
30 8 * * * /etc/tc.sh start
00 20 * * * /etc/tc.sh stop