#!/bin/bash # tc per-flow rate limit – deployed via Ansible # Jede TCP-Connection bekommt max {{ tc_flow_limit }} IFACE="{{ tc_iface }}" FLOW_LIMIT="{{ tc_flow_limit }}" TOTAL_LIMIT="{{ tc_total_limit }}" BURST="{{ tc_burst }}" case "${1}" in start) tc qdisc del dev "${IFACE}" root 2>/dev/null tc qdisc add dev "${IFACE}" root handle 1: htb default 10 tc class add dev "${IFACE}" parent 1: classid 1:1 htb rate "${TOTAL_LIMIT}" burst "${BURST}" tc class add dev "${IFACE}" parent 1:1 classid 1:10 htb rate "${TOTAL_LIMIT}" burst "${BURST}" tc qdisc add dev "${IFACE}" parent 1:10 handle 10: fq maxrate "${FLOW_LIMIT}" flow_limit 200 echo "tc: ${FLOW_LIMIT}/flow on ${IFACE}" ;; stop) tc qdisc del dev "${IFACE}" root 2>/dev/null ;; status) tc -s qdisc show dev "${IFACE}" tc -s class show dev "${IFACE}" ;; *) echo "Usage: $0 {start|stop|status}"; exit 1 ;; esac