I'm in the process of building a new gateway to use the newer complex traffic controls in Shorewall instead of hand-crafted tc commands.
At present I have (considering only outbound traffic, and omitting actual rates for clarity) : # External I/F run_tc qdisc add dev ethext root handle 1: htb default 12 run_tc class add dev ethext parent 1: classid 1:1 htb rate ... d dev ethext parent 1:1 classid 1:10 htb rate ... prio 1 run_tc class add dev ethext parent 1:10 classid 1:11 htb rate ... prio 1 run_tc class add dev ethext parent 1:10 classid 1:12 htb rate ... prio 2 run_tc class add dev ethext parent 1:10 classid 1:13 htb rate ... prio 3 run_tc class add dev ethext parent 1:10 classid 1:14 htb rate ... prio 4 run_tc qdisc add dev ethext parent 1:11 handle 11: sfq perturb 10 run_tc qdisc add dev ethext parent 1:12 handle 12: sfq perturb 10 run_tc qdisc add dev ethext parent 1:13 handle 13: sfq perturb 10 run_tc qdisc add dev ethext parent 1:14 handle 14: sfq perturb 10 And a load more groups of classes for different customers or groups of servers. Am I right in thinking that this would translate to the following in tcclasses ? #INTERFACE MARK RATE CEIL PRIORITY OPTIONS ethext:1 - ... ... 1 ethext:1:10 - ... ... 1 ethext:10:11 - ... ... 1 tcp-ack,tos-minimize-delay ethext:10:12 - ... ... 2 default ethext:10:13 - ... ... 3 ethext:10:14 - ... ... 4 ethext:1:20 - ... ... 1 ethext:20:11 - ... ... 1 tcp-ack,tos-minimize-delay and so on ... As for devices, at present I do inbound control on the internal interface of the router. As I read it, to use an IFB device I just need this in tcdevices : #INTERFACE IN-BANDWIDTH OUT-BANDWIDTH OPTIONS REDIRECTED ethext - 1024kbit classify ifb0 - 1024kbit classify ethext and then use IFB0 as the interface in tcclasses. Is that correct ? Also, is there an error in http://shorewall.net/manpages/shorewall-tcclasses.html