[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
转载于:https://blog.51cto.com/371969/545401