tc_start() { # add htb queue $TC qdisc add dev $INTERFACE root handle 1: htb default 30 # add root class $TC class add dev $INTERFACE parent 1: classid 1:1 htb rate $TOTAL_BAND_WIDTH ceil $TOTAL_BAND_WIDTH $TC class add dev $INTERFACE parent 1:1 classid 1:10 htb rate $BAND_WIDTH ceil $BAND_WIDTH $TC class add dev $INTERFACE parent 1:1 classid 1:20 htb rate $TCP_BAND_WIDTH ceil $TCP_BAND_WIDTH $TC class add dev $INTERFACE parent 1:1 classid 1:30 htb rate $TOTAL_BAND_WIDTH ceil $TOTAL_BAND_WIDTH
$TC filter add dev $INTERFACE parent 1: prio 4 protocol ip u32 match ip dst $FILTER_IP flowid 1:10 $TC filter add dev $INTERFACE parent 1: prio 4 protocol ip u32 match ip dst $TCP_FILTER_IP flowid 1:20 $TC qdisc add dev $INTERFACE parent 1:10 netem delay $DELAY loss $LOSS_RATE $TC qdisc add dev $INTERFACE parent 1:20 netem delay $TCP_DELAY loss $TCP_LOSS_RATE }
tc_stop() { $TC qdisc del dev $INTERFACE root }
tc_restart() { tc_stop sleep 1 tc_start }
tc_show() { echo "" echo -n "Qdisc:" #$TC qdisc show dev $INTERFACE $TC -s qdisc show dev $INTERFACE echo -n "Class:" #$TC class show dev $INTERFACE $TC -s class show dev $INTERFACE echo -n "Filter:" #$TC filter show dev $INTERFACE $TC -s filter show dev $INTERFACE echo "" }