#!/bin/bash function dec_to_hex { echo `printf %x $1` } RATE="500kbit" DIVISOR="512" PERTURB="20" tc qdisc del root dev ppp0 tc qdisc add dev ppp0 root handle 1: htb default 10 tc class add dev ppp0 parent 1: classid 1:1 htb rate ${RATE} tc class add dev ppp0 parent 1:1 classid 1:10 htb rate ${RATE} ceil ${RATE} prio 0 echo "DRR" tc qdisc add dev ppp0 parent 1:10 handle 2: drr for J in `seq ${DIVISOR}`; do tc class add dev ppp0 parent 2: classid 2:`dec_to_hex ${J}` drr tc qdisc add dev ppp0 parent 2:`dec_to_hex ${J}` pfifo limit 15 done echo "Filter" #tc filter add dev ppp0 prio 1 protocol all parent 2: handle 10 flow hash keys src,dst,proto,proto-src,proto-dst divisor ${DIVISOR} baseclass 2:1 tc filter add dev ppp0 prio 1 protocol all parent 2: handle 10 flow hash keys src,dst,proto,proto-src,proto-dst,tunnel-src,tunnel-dst,tunnel-proto,tunnel-proto-src,tunnel-proto-dst divisor ${DIVISOR} perturb ${PERTURB} baseclass 2:1