#!/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 # Level 1 subclases (HTB) tc class add dev ${IFACE} parent 1:1 classid 1:1${grp} htb rate $[${RATE}/${GRPS}]kbit ceil ${RATE}kbit # Level 2 sublasses (PRIO) tc qdisc add dev ${IFACE} parent 1:1${grp} handle 1${grp}:0 prio bands ${BANDS} for band in $(seq ${BANDS}); do # Leaf qdiscs tc qdisc add dev ${IFACE} parent 1${grp}:${band} handle 1${grp}${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:1${grp} # Level 2 filtering (PRIO) tc filter add dev ${IFACE} parent 1${grp}:0 protocol ip handle {$grp}${band} fw flowid 1${grp}:${band} done done