#!/bin/sh # Bind to root and create main limiter tc qdisc del dev ${IFACE} root tc qdisc add dev ${IFACE} root handle 1:0 htb tc class add dev ${IFACE} parent 1:0 classid 1:1 htb rate ${RATE}kbit for grp in $(seq ${GRPS}); do g=$(expr ${grp} + 1) # Level 1 subclases (HTB) tc class add dev ${IFACE} parent 1:1 classid 1:${g} htb rate ${rate}kbit ceil ${RATE}kbit # Level 2 sublasses (PRIO) tc qdisc add dev ${IFACE} parent 1:${g} handle ${g}:0 prio bands ${BANDS} for band in $(seq ${BANDS}); do # Leaf qdiscs tc qdisc add dev ${IFACE} parent ${g}:${band} handle a${g}${band}:0 sfq perturb 5 # Level 1 filtering (HTB) tc filter add dev ${IFACE} parent 1:0 protocol ip handle ${grp}${band} fw flowid 1:${g} # Level 2 filtering (PRIO) tc filter add dev ${IFACE} parent ${g}:0 protocol ip handle ${grp}${band} fw flowid ${g}:${band} done done