#!/bin/bash # # download interface # DEV=eth0 #lan interface FULL_RATE_DEV=1000mbit RATE1=1000kbit RATE2=2000kbit RATE3=3000kbit RATE4=4000kbit PENALITY=500kbit DEFAULT_CLASS=10 if [ "$1" = "status" ] then tc -s qdisc ls dev $DEV tc -s class ls dev $DEV exit fi if [ "$1" = "setting" ] then echo "" echo "* * * show value setting * * *" echo " Qos mode: $MODE" echo "Interface: $DEV" echo "" exit fi # Flush QoS qdiscs, classes and filters on interface tc qdisc del dev $DEV root if [ "$1" = "stop" ] then exit fi # Root qdisc 1:0 ---------- tc qdisc add dev $DEV root handle 1:0 htb default $DEFAULT_CLASS tc class add dev $DEV parent 1:0 classid 1:1 htb rate $FULL_RATE_DEV tc class add dev $DEV parent 1:1 classid 1:10 htb rate $FULL_RATE_DEV ceil $FULL_RATE_DEV prio 0 tc class add dev $DEV parent 1:1 classid 1:20 htb rate $RATE2 burst 15k prio 1 tc class add dev $DEV parent 1:1 classid 1:30 htb rate $RATE3 burst 15k prio 2 tc class add dev $DEV parent 1:1 classid 1:40 htb rate $RATE4 burst 15k prio 3 tc class add dev $DEV parent 1:1 classid 1:50 htb rate $PENALITY burst 15k prio 4 tc qdisc add dev $DEV parent 1:10 handle 10: pfifo tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10 tc qdisc add dev $DEV parent 1:40 handle 40: sfq perturb 10 tc qdisc add dev $DEV parent 1:50 handle 50: sfq perturb 10 # Filter ---------- #tc filter add dev $DEV protocol ip parent 1:0 prio 10 u32 match ip dst 192.168.99.10 match ip sport 80 0xffff flowid 1:50 #tc filter add dev $DEV protocol ip parent 1:0 prio 10 u32 match ip dst 192.168.99.15 flowid 1:40 #download use dst #tc filter add dev $DEV protocol ip parent 1:0 prio 10 u32 match ip dst 192.168.99.15 flowid 1:40 #download use dst #tc filter add dev $DEV protocol ip parent 1:0 prio 10 u32 match ip dst 192.168.99.15 flowid 1:40 #download use dst #tc filter add dev $DEV protocol ip parent 1:0 prio 10 u32 match ip dst 192.168.99.15 flowid 1:40 #download use dst