#!/bin/bashmodprobe ifb
#ifconfig ifb0 up
ip link set dev ifb0 up
#ip addr add 192.168.0.3/32 dev ifb0
tc qdisc del dev ifb0 root 2> /dev/null > /dev/null
tc qdisc del dev ibf0 ingress 2> /dev/null > /dev/null
tc qdisc del dev ppp0 root 2> /dev/null > /dev/null
tc qdisc del dev ppp0 ingress 2> /dev/null > /dev/null
tc qdisc del dev eth1 root 2> /dev/null > /dev/null
tc qdisc del dev eth1 ingress 2> /dev/null > /dev/null
#======interface ppp0======
#tc qdisc add dev ppp0 ingress handle ffff:
#redirect
#tc filter add dev ppp0 parent ffff: protocol ip prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0
#======interface ifb0======
tc qdisc add dev ifb0 root handle 1: htb default 120
#root class
tc class add dev ifb0 parent 1: classid 1:1 htb rate 512kbit ceil 512kbit
#admin
tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 128kbit ceil 128kbit prio 1
tc qdisc add dev ifb0 parent 1:10 handle 110: sfq perturb 10
#all user (local network)
tc class add dev ifb0 parent 1:1 classid 1:20 htb rate 384kbit ceil 512kbit prio 2
#user 1
tc class add dev ifb0 parent 1:20 classid 1:110 htb rate 64kbit ceil 128kbit prio 3
tc qdisc add dev ifb0 parent 1:110 handle 110: sfq perturb 10
#default
tc class add dev ifb0 parent 1:20 classid 1:120 htb rate 128kbit ceil 384kbit prio 4
tc qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10
#filters
tc filter add dev ifb0 parent 1: protocol ip prio 1 handle 10 fw flowid 1:10
tc filter add dev ifb0 parent 1: protocol ip prio 4 handle 20 fw flowid 1:20
tc filter add dev ifb0 parent 1: protocol ip prio 3 handle 110 fw flowid 1:110
tc filter add dev ifb0 parent 1: protocol ip prio 5 handle 120 fw flowid 1:120
tc qdisc add dev ppp0 ingress handle ffff:
#tc filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.0/24 \
#action ipt -j MARK --set-mark 20 \
#action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 1 u32 match ip dst 192.168.1.1 \
action ipt -j MARK --set-mark 10 \
action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 2 u32 match ip dst 192.168.1.3 \
action ipt -j MARK --set-mark 110 \
action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 3 u32 match ip dst 192.168.1.2 \
action ipt -j MARK --set-mark 120 \
action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 10 u32 match u32 0 0 \
action mirred egress redirect dev ifb0