>>> Also for HFSC.
>> My understanding was that you ignore the PRIORITY column in tcclasses
>> for HFSC as it doesn't support it.
>
> No, I don't ignore it. It is still used for prioritizing the filters.
>
> Attached are the tcdevices and tcclasses files from one of my test hfsc
> configurations. Also attached is the output of 'shorewall show
> classifiers' with that configuration running. In that output, the 'pref'
> setting is the filter priority.
A couple of things:
You introduced this <class priority> << 8 | XX malarkey with RC1, which was
released a couple of hours ago. Your test results and the files you have
attached in your previous post have used this not-yet-released RC1 version of
shorewall!
My name is not Mystic Meg and I don't have a crystal ball to see whether you
are going to release a new version of shorewall in which to include this << 8 |
XX calculation. My testing and subsequent results were based on the latest
released version of shorewall at the time (Beta3), with the exception of the
patches you have provided me with.
> Note that the firewall mark classifiers all have their priority set to (
> <class priority> << 8 ) | 20 and that the tcp-ack and tos-minimize-delay
> rules have priority ( <class priority> << 8 ) | 10.
Care to explain the reason behind this priority calculation - why ( <class
priority> << 8 ) | 10?
Also, you have used MARK - I don't use that. May be that is why I am not
getting any priorities set at all when I use HFSC? When I use HTB (again,
without MARK being specified!) all class priority values are set *exactly* as
specified in tclasses, which is what I wanted in the first place.
> The classifiers would look exactly the same if HTB were used.
See above - when I do *not* use MARK and with HFSC specified, I don't have any
priorities set.
When I employ HTB (again, with *no* MARK specified), I see the priorities
values set *exactly* as specified in tcclassess/tcfilters - this has all being
tested with Beta3, as well as the newly-released RC1 - the end result is the
same as far as priorities go, with the exception of automatic priority
numbering (1-X) in RC1 in all "tc filter add" statements if I do not specify
any priority value in tcfilters, which is to be expected really.
So, for avoidance of any doubt and to stop us going round circles I am
attaching a couple of files:
1. tcrules, tcclasses & tcdevices - these are exactly the same as I attached to
you previously, with the only exception being that in tcdevices "hfsc" and
"htb" can be interchanged for testing different disciplines.
2. tcfilters - the new PRIORITY column has been used which mirrors its counter
part in tcclasses. Please note that in two of the tests (see
firewall_tc_*_rc1_no_prio attached) I did not have anything in PRIORITY
(tcfilters) to see how this is going to translate in the resulting file.
3. firewall_tc_hfsc_rc1_no_prio - HFSC discipline used and no PRIORITY in
tcfilters is specified. Please note the absence of any class priorities (which
you, apparently, have when hfsc & mark is used).
4. firewall_tc_hfsc_rc1 - same as 3 above, but this time with PRIORITY in
tcfilters specified. Again, even though there are "filter" priorities set,
there are no class priorities specified of any kind.
5. firewall_tc_htb_rc1_no_prio - HTB discipline used, with no priorities
specified in tcfilters. Please note that the value of all class priorities is
set exactly as specified in tcclasses - none of this << 8 | XX malarkey, which
is what I wanted really. Also, the filter priorities are 1-X (in that order)
which is normal as I did not specify any in tcfilters.
6. firewall_tc_htb_rc1 - same as 5 above, but with priorities specified in
tcfilters - all "prio" values are set *exactly* as specified in
tcclasses/tcfilters in the resulting compilation - none of this << 8 | XX
malarkey, which is what I wanted really.
The results of the Beta3 testing I did yesterday are very similar and I can
attach these files, if needed - let me know if that is the case.
#
# Shorewall version 4 - Tcrules File
#
# For information about entries in this file, type "man shorewall-tcrules"
#
# See http://shorewall.net/traffic_shaping.htm for additional information.
# For usage in selecting among multiple ISPs, see
# http://shorewall.net/MultiISP.html
#
# See http://shorewall.net/PacketMarking.html for a detailed description of
# the Netfilter/Shorewall packet marking mechanism.
######################################################################################################################
#MARK SOURCE DEST PROTO DEST SOURCE USER TEST LENGTH
TOS CONNBYTES HELPER
# PORT(S) PORT(S)
e:12 $FW 1.2.1.12
e:13 $FW 1.2.1.13
e:14 $FW 1.2.1.14
e:15 $FW 1.2.1.15
e:16 $FW 1.2.1.16
e:17 $FW 1.2.1.17
#
# Shorewall version 4 - Tcclasses File
#
# For information about entries in this file, type "man shorewall-tcclasses"
#
# See http://shorewall.net/traffic_shaping.htm for additional information.
#
###############################################################################
#INTERFACE:CLASS MARK RATE: CEIL
PRIORITY OPTIONS
# DMAX:UMAX
e:10 - 10*full/100 full 1
tcp-ack
e:11 - 300kbps 50mbit 4
e:11:12 - 100kbps full 4
e:11:13 - 150kbps full 5
e:11:14 - 50kbps full 6
e:15 - 50kbps full 2
e:16 - 50*full/100 full 3
e:17 - 9*full/100 full 7
default
be:20 - 10*full/100 full 1
tcp-ack
be:21 - 400kbps 50mbit 4
be:21:22 - 150kbps full 4
be:21:23 - 150kbps full 5
be:21:24 - 100kbps full 6
be:25 - 50kbps full 2
be:26 - 50*full/100 full 3
be:27 - 9*full/100 full 7
default
#
# Shorewall version 4 - Tcdevices File
#
# For information about entries in this file, type "man shorewall-tcdevices"
#
# See http://shorewall.net/traffic_shaping.htm for additional information.
#
###############################################################################
#NUMBER: IN-BANDWITH OUT-BANDWIDTH OPTIONS REDIRECTED
#INTERFACE INTERFACES
e:eth0 - 1000mbit classify,htb
be:ifb0 - 1000mbit htb eth0
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
# See http://shorewall.net/traffic_shaping.htm for additional information.
#
################################################################################################
#INTERFACE: SOURCE DEST PROTO DEST SOURCE TOS
LENGTH PRIORITY
#CLASS PORT(S) PORT(S)
#
# ifb0->eth0
#
be:22 1.1.1.22 - - - - -
- 4
be:23 1.1.1.23 - - - - -
- 5
be:24 1.1.1.24 - - - - -
- 6
be:26 1.1.1.26 - - - - -
- 3
be:25 1.1.1.25 - - - - -
- 2
be:27 1.1.1.27 - - - - -
- 7
#
# Configure Traffic Shaping for eth0
#
setup_eth0_tc() {
if interface_is_up eth0; then
qt $TC qdisc del dev eth0 root
qt $TC qdisc del dev eth0 ingress
eth0_mtu=$(get_device_mtu eth0)
eth0_mtu1=$(get_device_mtu1 eth0)
run_tc qdisc add dev eth0 root handle e: hfsc default 17
run_tc class add dev eth0 parent e: classid e:1 hfsc sc rate
1000000kbit ul rate 1000000kbit
[ $eth0_mtu -gt 2500 ] && quantum=$eth0_mtu || quantum=2500
run_tc class add dev eth0 parent e:1 classid e:10 hfsc sc rate
100000kbit ul rate 1000000kbit
run_tc qdisc add dev eth0 parent e:10 handle 1: sfq limit 127 perturb 10
run_tc filter add dev eth0 parent e:0 protocol ip prio 266 u32\
match ip protocol 6 0xff\
match u8 0x05 0x0f at 0\
match u16 0x0000 0xffc0 at 2\
match u8 0x10 0xff at 33 flowid e:10
progress_message " TC Class e:10 defined."
[ $eth0_mtu -gt 60 ] && quantum=$eth0_mtu || quantum=60
run_tc class add dev eth0 parent e:1 classid e:11 hfsc sc rate 2400kbit
ul rate 50000kbit
progress_message " TC Class e:11 defined."
[ $eth0_mtu -gt 20 ] && quantum=$eth0_mtu || quantum=20
run_tc class add dev eth0 parent e:11 classid e:12 hfsc sc rate 800kbit
ul rate 50000kbit
run_tc qdisc add dev eth0 parent e:12 handle 2: sfq limit 127 perturb 10
progress_message " TC Class e:12 defined."
[ $eth0_mtu -gt 30 ] && quantum=$eth0_mtu || quantum=30
run_tc class add dev eth0 parent e:11 classid e:13 hfsc sc rate
1200kbit ul rate 50000kbit
run_tc qdisc add dev eth0 parent e:13 handle 3: sfq limit 127 perturb 10
progress_message " TC Class e:13 defined."
[ $eth0_mtu -gt 10 ] && quantum=$eth0_mtu || quantum=10
run_tc class add dev eth0 parent e:11 classid e:14 hfsc sc rate 400kbit
ul rate 50000kbit
run_tc qdisc add dev eth0 parent e:14 handle 4: sfq limit 127 perturb 10
progress_message " TC Class e:14 defined."
[ $eth0_mtu -gt 10 ] && quantum=$eth0_mtu || quantum=10
run_tc class add dev eth0 parent e:1 classid e:15 hfsc sc rate 400kbit
ul rate 1000000kbit
run_tc qdisc add dev eth0 parent e:15 handle 5: sfq limit 127 perturb 10
progress_message " TC Class e:15 defined."
[ $eth0_mtu -gt 12500 ] && quantum=$eth0_mtu || quantum=12500
run_tc class add dev eth0 parent e:1 classid e:16 hfsc sc rate
500000kbit ul rate 1000000kbit
run_tc qdisc add dev eth0 parent e:16 handle 6: sfq limit 127 perturb 10
progress_message " TC Class e:16 defined."
[ $eth0_mtu -gt 2250 ] && quantum=$eth0_mtu || quantum=2250
run_tc class add dev eth0 parent e:1 classid e:17 hfsc sc rate
90000kbit ul rate 1000000kbit
run_tc qdisc add dev eth0 parent e:17 handle 7: sfq limit 127 perturb 10
progress_message " TC Class e:17 defined."
progress_message " TC Device eth0 defined."
else
error_message "WARNING: Device eth0 is not in the UP state --
traffic-shaping configuration skipped"
fi
}
#
# Configure Traffic Shaping for ifb0
#
setup_ifb0_tc() {
if interface_is_up ifb0; then
qt $TC qdisc del dev ifb0 root
qt $TC qdisc del dev ifb0 ingress
ifb0_mtu=$(get_device_mtu ifb0)
ifb0_mtu1=$(get_device_mtu1 ifb0)
run_tc qdisc add dev ifb0 root handle be: hfsc default 27
run_tc class add dev ifb0 parent be: classid be:1 hfsc sc rate
1000000kbit ul rate 1000000kbit
run_tc qdisc add dev eth0 handle ffff: ingress
run_tc filter add dev eth0 parent ffff: protocol all u32 match u32 0 0
action mirred egress redirect dev ifb0 > /dev/null
[ $ifb0_mtu -gt 2500 ] && quantum=$ifb0_mtu || quantum=2500
run_tc class add dev ifb0 parent be:1 classid be:20 hfsc sc rate
100000kbit ul rate 1000000kbit
run_tc qdisc add dev ifb0 parent be:20 handle 8: sfq limit 127 perturb
10
run_tc filter add dev ifb0 parent be:0 protocol ip prio 266 u32\
match ip protocol 6 0xff\
match u8 0x05 0x0f at 0\
match u16 0x0000 0xffc0 at 2\
match u8 0x10 0xff at 33 flowid be:20
progress_message " TC Class be:20 defined."
[ $ifb0_mtu -gt 80 ] && quantum=$ifb0_mtu || quantum=80
run_tc class add dev ifb0 parent be:1 classid be:21 hfsc sc rate
3200kbit ul rate 50000kbit
progress_message " TC Class be:21 defined."
[ $ifb0_mtu -gt 30 ] && quantum=$ifb0_mtu || quantum=30
run_tc class add dev ifb0 parent be:21 classid be:22 hfsc sc rate
1200kbit ul rate 50000kbit
run_tc qdisc add dev ifb0 parent be:22 handle 9: sfq limit 127 perturb
10
progress_message " TC Class be:22 defined."
[ $ifb0_mtu -gt 30 ] && quantum=$ifb0_mtu || quantum=30
run_tc class add dev ifb0 parent be:21 classid be:23 hfsc sc rate
1200kbit ul rate 50000kbit
run_tc qdisc add dev ifb0 parent be:23 handle a: sfq limit 127 perturb
10
progress_message " TC Class be:23 defined."
[ $ifb0_mtu -gt 20 ] && quantum=$ifb0_mtu || quantum=20
run_tc class add dev ifb0 parent be:21 classid be:24 hfsc sc rate
800kbit ul rate 50000kbit
run_tc qdisc add dev ifb0 parent be:24 handle b: sfq limit 127 perturb
10
progress_message " TC Class be:24 defined."
[ $ifb0_mtu -gt 10 ] && quantum=$ifb0_mtu || quantum=10
run_tc class add dev ifb0 parent be:1 classid be:25 hfsc sc rate
400kbit ul rate 1000000kbit
run_tc qdisc add dev ifb0 parent be:25 handle c: sfq limit 127 perturb
10
progress_message " TC Class be:25 defined."
[ $ifb0_mtu -gt 12500 ] && quantum=$ifb0_mtu || quantum=12500
run_tc class add dev ifb0 parent be:1 classid be:26 hfsc sc rate
500000kbit ul rate 1000000kbit
run_tc qdisc add dev ifb0 parent be:26 handle d: sfq limit 127 perturb
10
progress_message " TC Class be:26 defined."
[ $ifb0_mtu -gt 2250 ] && quantum=$ifb0_mtu || quantum=2250
run_tc class add dev ifb0 parent be:1 classid be:27 hfsc sc rate
90000kbit ul rate 1000000kbit
run_tc qdisc add dev ifb0 parent be:27 handle f: sfq limit 127 perturb
10
progress_message " TC Class be:27 defined."
run_tc filter add dev ifb0 protocol ip parent be:0 prio 1 u32\
match ip src 1.1.1.22/32\
flowid be:22
run_tc filter add dev ifb0 protocol ip parent be:0 prio 2 u32\
match ip src 1.1.1.23/32\
flowid be:23
run_tc filter add dev ifb0 protocol ip parent be:0 prio 3 u32\
match ip src 1.1.1.24/32\
flowid be:24
run_tc filter add dev ifb0 protocol ip parent be:0 prio 4 u32\
match ip src 1.1.1.26/32\
flowid be:26
run_tc filter add dev ifb0 protocol ip parent be:0 prio 5 u32\
match ip src 1.1.1.25/32\
flowid be:25
run_tc filter add dev ifb0 protocol ip parent be:0 prio 6 u32\
match ip src 1.1.1.27/32\
flowid be:27
progress_message " TC Device ifb0 defined."
else
error_message "WARNING: Device ifb0 is not in the UP state --
traffic-shaping configuration skipped"
fi
}
#
# Configure Traffic Shaping for eth0
#
setup_eth0_tc() {
if interface_is_up eth0; then
qt $TC qdisc del dev eth0 root
qt $TC qdisc del dev eth0 ingress
eth0_mtu=$(get_device_mtu eth0)
eth0_mtu1=$(get_device_mtu1 eth0)
run_tc qdisc add dev eth0 root handle e: hfsc default 17
run_tc class add dev eth0 parent e: classid e:1 hfsc sc rate
1000000kbit ul rate 1000000kbit
[ $eth0_mtu -gt 2500 ] && quantum=$eth0_mtu || quantum=2500
run_tc class add dev eth0 parent e:1 classid e:10 hfsc sc rate
100000kbit ul rate 1000000kbit
run_tc qdisc add dev eth0 parent e:10 handle 1: sfq limit 127 perturb 10
run_tc filter add dev eth0 parent e:0 protocol ip prio 266 u32\
match ip protocol 6 0xff\
match u8 0x05 0x0f at 0\
match u16 0x0000 0xffc0 at 2\
match u8 0x10 0xff at 33 flowid e:10
progress_message " TC Class e:10 defined."
[ $eth0_mtu -gt 60 ] && quantum=$eth0_mtu || quantum=60
run_tc class add dev eth0 parent e:1 classid e:11 hfsc sc rate 2400kbit
ul rate 50000kbit
progress_message " TC Class e:11 defined."
[ $eth0_mtu -gt 20 ] && quantum=$eth0_mtu || quantum=20
run_tc class add dev eth0 parent e:11 classid e:12 hfsc sc rate 800kbit
ul rate 50000kbit
run_tc qdisc add dev eth0 parent e:12 handle 2: sfq limit 127 perturb 10
progress_message " TC Class e:12 defined."
[ $eth0_mtu -gt 30 ] && quantum=$eth0_mtu || quantum=30
run_tc class add dev eth0 parent e:11 classid e:13 hfsc sc rate
1200kbit ul rate 50000kbit
run_tc qdisc add dev eth0 parent e:13 handle 3: sfq limit 127 perturb 10
progress_message " TC Class e:13 defined."
[ $eth0_mtu -gt 10 ] && quantum=$eth0_mtu || quantum=10
run_tc class add dev eth0 parent e:11 classid e:14 hfsc sc rate 400kbit
ul rate 50000kbit
run_tc qdisc add dev eth0 parent e:14 handle 4: sfq limit 127 perturb 10
progress_message " TC Class e:14 defined."
[ $eth0_mtu -gt 10 ] && quantum=$eth0_mtu || quantum=10
run_tc class add dev eth0 parent e:1 classid e:15 hfsc sc rate 400kbit
ul rate 1000000kbit
run_tc qdisc add dev eth0 parent e:15 handle 5: sfq limit 127 perturb 10
progress_message " TC Class e:15 defined."
[ $eth0_mtu -gt 12500 ] && quantum=$eth0_mtu || quantum=12500
run_tc class add dev eth0 parent e:1 classid e:16 hfsc sc rate
500000kbit ul rate 1000000kbit
run_tc qdisc add dev eth0 parent e:16 handle 6: sfq limit 127 perturb 10
progress_message " TC Class e:16 defined."
[ $eth0_mtu -gt 2250 ] && quantum=$eth0_mtu || quantum=2250
run_tc class add dev eth0 parent e:1 classid e:17 hfsc sc rate
90000kbit ul rate 1000000kbit
run_tc qdisc add dev eth0 parent e:17 handle 7: sfq limit 127 perturb 10
progress_message " TC Class e:17 defined."
progress_message " TC Device eth0 defined."
else
error_message "WARNING: Device eth0 is not in the UP state --
traffic-shaping configuration skipped"
fi
}
#
# Configure Traffic Shaping for ifb0
#
setup_ifb0_tc() {
if interface_is_up ifb0; then
qt $TC qdisc del dev ifb0 root
qt $TC qdisc del dev ifb0 ingress
ifb0_mtu=$(get_device_mtu ifb0)
ifb0_mtu1=$(get_device_mtu1 ifb0)
run_tc qdisc add dev ifb0 root handle be: hfsc default 27
run_tc class add dev ifb0 parent be: classid be:1 hfsc sc rate
1000000kbit ul rate 1000000kbit
run_tc qdisc add dev eth0 handle ffff: ingress
run_tc filter add dev eth0 parent ffff: protocol all u32 match u32 0 0
action mirred egress redirect dev ifb0 > /dev/null
[ $ifb0_mtu -gt 2500 ] && quantum=$ifb0_mtu || quantum=2500
run_tc class add dev ifb0 parent be:1 classid be:20 hfsc sc rate
100000kbit ul rate 1000000kbit
run_tc qdisc add dev ifb0 parent be:20 handle 8: sfq limit 127 perturb
10
run_tc filter add dev ifb0 parent be:0 protocol ip prio 266 u32\
match ip protocol 6 0xff\
match u8 0x05 0x0f at 0\
match u16 0x0000 0xffc0 at 2\
match u8 0x10 0xff at 33 flowid be:20
progress_message " TC Class be:20 defined."
[ $ifb0_mtu -gt 80 ] && quantum=$ifb0_mtu || quantum=80
run_tc class add dev ifb0 parent be:1 classid be:21 hfsc sc rate
3200kbit ul rate 50000kbit
progress_message " TC Class be:21 defined."
[ $ifb0_mtu -gt 30 ] && quantum=$ifb0_mtu || quantum=30
run_tc class add dev ifb0 parent be:21 classid be:22 hfsc sc rate
1200kbit ul rate 50000kbit
run_tc qdisc add dev ifb0 parent be:22 handle 9: sfq limit 127 perturb
10
progress_message " TC Class be:22 defined."
[ $ifb0_mtu -gt 30 ] && quantum=$ifb0_mtu || quantum=30
run_tc class add dev ifb0 parent be:21 classid be:23 hfsc sc rate
1200kbit ul rate 50000kbit
run_tc qdisc add dev ifb0 parent be:23 handle a: sfq limit 127 perturb
10
progress_message " TC Class be:23 defined."
[ $ifb0_mtu -gt 20 ] && quantum=$ifb0_mtu || quantum=20
run_tc class add dev ifb0 parent be:21 classid be:24 hfsc sc rate
800kbit ul rate 50000kbit
run_tc qdisc add dev ifb0 parent be:24 handle b: sfq limit 127 perturb
10
progress_message " TC Class be:24 defined."
[ $ifb0_mtu -gt 10 ] && quantum=$ifb0_mtu || quantum=10
run_tc class add dev ifb0 parent be:1 classid be:25 hfsc sc rate
400kbit ul rate 1000000kbit
run_tc qdisc add dev ifb0 parent be:25 handle c: sfq limit 127 perturb
10
progress_message " TC Class be:25 defined."
[ $ifb0_mtu -gt 12500 ] && quantum=$ifb0_mtu || quantum=12500
run_tc class add dev ifb0 parent be:1 classid be:26 hfsc sc rate
500000kbit ul rate 1000000kbit
run_tc qdisc add dev ifb0 parent be:26 handle d: sfq limit 127 perturb
10
progress_message " TC Class be:26 defined."
[ $ifb0_mtu -gt 2250 ] && quantum=$ifb0_mtu || quantum=2250
run_tc class add dev ifb0 parent be:1 classid be:27 hfsc sc rate
90000kbit ul rate 1000000kbit
run_tc qdisc add dev ifb0 parent be:27 handle f: sfq limit 127 perturb
10
progress_message " TC Class be:27 defined."
run_tc filter add dev ifb0 protocol ip parent be:0 prio 4 u32\
match ip src 1.1.1.22/32\
flowid be:22
run_tc filter add dev ifb0 protocol ip parent be:0 prio 5 u32\
match ip src 1.1.1.23/32\
flowid be:23
run_tc filter add dev ifb0 protocol ip parent be:0 prio 6 u32\
match ip src 1.1.1.24/32\
flowid be:24
run_tc filter add dev ifb0 protocol ip parent be:0 prio 3 u32\
match ip src 1.1.1.26/32\
flowid be:26
run_tc filter add dev ifb0 protocol ip parent be:0 prio 2 u32\
match ip src 1.1.1.25/32\
flowid be:25
run_tc filter add dev ifb0 protocol ip parent be:0 prio 7 u32\
match ip src 1.1.1.27/32\
flowid be:27
progress_message " TC Device ifb0 defined."
else
error_message "WARNING: Device ifb0 is not in the UP state --
traffic-shaping configuration skipped"
fi
}
#
# Configure Traffic Shaping for eth0
#
setup_eth0_tc() {
if interface_is_up eth0; then
qt $TC qdisc del dev eth0 root
qt $TC qdisc del dev eth0 ingress
eth0_mtu=$(get_device_mtu eth0)
eth0_mtu1=$(get_device_mtu1 eth0)
run_tc qdisc add dev eth0 root handle e: htb default 17 r2q 5000
run_tc class add dev eth0 parent e: classid e:1 htb rate 1000000kbit
$eth0_mtu1
[ $eth0_mtu -gt 2500 ] && quantum=$eth0_mtu || quantum=2500
run_tc class add dev eth0 parent e:1 classid e:10 htb rate 100000kbit
ceil 1000000kbit prio 1 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:10 handle 1: sfq quantum $quantum
limit 127 perturb 10
run_tc filter add dev eth0 parent e:0 protocol ip prio 266 u32\
match ip protocol 6 0xff\
match u8 0x05 0x0f at 0\
match u16 0x0000 0xffc0 at 2\
match u8 0x10 0xff at 33 flowid e:10
progress_message " TC Class e:10 defined."
[ $eth0_mtu -gt 60 ] && quantum=$eth0_mtu || quantum=60
run_tc class add dev eth0 parent e:1 classid e:11 htb rate 2400kbit
ceil 50000kbit prio 4 $eth0_mtu1 quantum $quantum
progress_message " TC Class e:11 defined."
[ $eth0_mtu -gt 20 ] && quantum=$eth0_mtu || quantum=20
run_tc class add dev eth0 parent e:11 classid e:12 htb rate 800kbit
ceil 50000kbit prio 4 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:12 handle 2: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:12 defined."
[ $eth0_mtu -gt 30 ] && quantum=$eth0_mtu || quantum=30
run_tc class add dev eth0 parent e:11 classid e:13 htb rate 1200kbit
ceil 50000kbit prio 5 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:13 handle 3: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:13 defined."
[ $eth0_mtu -gt 10 ] && quantum=$eth0_mtu || quantum=10
run_tc class add dev eth0 parent e:11 classid e:14 htb rate 400kbit
ceil 50000kbit prio 6 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:14 handle 4: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:14 defined."
[ $eth0_mtu -gt 10 ] && quantum=$eth0_mtu || quantum=10
run_tc class add dev eth0 parent e:1 classid e:15 htb rate 400kbit ceil
1000000kbit prio 2 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:15 handle 5: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:15 defined."
[ $eth0_mtu -gt 12500 ] && quantum=$eth0_mtu || quantum=12500
run_tc class add dev eth0 parent e:1 classid e:16 htb rate 500000kbit
ceil 1000000kbit prio 3 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:16 handle 6: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:16 defined."
[ $eth0_mtu -gt 2250 ] && quantum=$eth0_mtu || quantum=2250
run_tc class add dev eth0 parent e:1 classid e:17 htb rate 90000kbit
ceil 1000000kbit prio 7 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:17 handle 7: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:17 defined."
progress_message " TC Device eth0 defined."
else
error_message "WARNING: Device eth0 is not in the UP state --
traffic-shaping configuration skipped"
fi
}
#
# Configure Traffic Shaping for ifb0
#
setup_ifb0_tc() {
if interface_is_up ifb0; then
qt $TC qdisc del dev ifb0 root
qt $TC qdisc del dev ifb0 ingress
ifb0_mtu=$(get_device_mtu ifb0)
ifb0_mtu1=$(get_device_mtu1 ifb0)
run_tc qdisc add dev ifb0 root handle be: htb default 27 r2q 5000
run_tc class add dev ifb0 parent be: classid be:1 htb rate 1000000kbit
$ifb0_mtu1
run_tc qdisc add dev eth0 handle ffff: ingress
run_tc filter add dev eth0 parent ffff: protocol all u32 match u32 0 0
action mirred egress redirect dev ifb0 > /dev/null
[ $ifb0_mtu -gt 2500 ] && quantum=$ifb0_mtu || quantum=2500
run_tc class add dev ifb0 parent be:1 classid be:20 htb rate 100000kbit
ceil 1000000kbit prio 1 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:20 handle 8: sfq quantum $quantum
limit 127 perturb 10
run_tc filter add dev ifb0 parent be:0 protocol ip prio 266 u32\
match ip protocol 6 0xff\
match u8 0x05 0x0f at 0\
match u16 0x0000 0xffc0 at 2\
match u8 0x10 0xff at 33 flowid be:20
progress_message " TC Class be:20 defined."
[ $ifb0_mtu -gt 80 ] && quantum=$ifb0_mtu || quantum=80
run_tc class add dev ifb0 parent be:1 classid be:21 htb rate 3200kbit
ceil 50000kbit prio 4 $ifb0_mtu1 quantum $quantum
progress_message " TC Class be:21 defined."
[ $ifb0_mtu -gt 30 ] && quantum=$ifb0_mtu || quantum=30
run_tc class add dev ifb0 parent be:21 classid be:22 htb rate 1200kbit
ceil 50000kbit prio 4 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:22 handle 9: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:22 defined."
[ $ifb0_mtu -gt 30 ] && quantum=$ifb0_mtu || quantum=30
run_tc class add dev ifb0 parent be:21 classid be:23 htb rate 1200kbit
ceil 50000kbit prio 5 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:23 handle a: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:23 defined."
[ $ifb0_mtu -gt 20 ] && quantum=$ifb0_mtu || quantum=20
run_tc class add dev ifb0 parent be:21 classid be:24 htb rate 800kbit
ceil 50000kbit prio 6 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:24 handle b: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:24 defined."
[ $ifb0_mtu -gt 10 ] && quantum=$ifb0_mtu || quantum=10
run_tc class add dev ifb0 parent be:1 classid be:25 htb rate 400kbit
ceil 1000000kbit prio 2 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:25 handle c: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:25 defined."
[ $ifb0_mtu -gt 12500 ] && quantum=$ifb0_mtu || quantum=12500
run_tc class add dev ifb0 parent be:1 classid be:26 htb rate 500000kbit
ceil 1000000kbit prio 3 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:26 handle d: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:26 defined."
[ $ifb0_mtu -gt 2250 ] && quantum=$ifb0_mtu || quantum=2250
run_tc class add dev ifb0 parent be:1 classid be:27 htb rate 90000kbit
ceil 1000000kbit prio 7 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:27 handle f: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:27 defined."
run_tc filter add dev ifb0 protocol ip parent be:0 prio 1 u32\
match ip src 1.1.1.22/32\
flowid be:22
run_tc filter add dev ifb0 protocol ip parent be:0 prio 2 u32\
match ip src 1.1.1.23/32\
flowid be:23
run_tc filter add dev ifb0 protocol ip parent be:0 prio 3 u32\
match ip src 1.1.1.24/32\
flowid be:24
run_tc filter add dev ifb0 protocol ip parent be:0 prio 4 u32\
match ip src 1.1.1.26/32\
flowid be:26
run_tc filter add dev ifb0 protocol ip parent be:0 prio 5 u32\
match ip src 1.1.1.25/32\
flowid be:25
run_tc filter add dev ifb0 protocol ip parent be:0 prio 6 u32\
match ip src 1.1.1.27/32\
flowid be:27
progress_message " TC Device ifb0 defined."
else
error_message "WARNING: Device ifb0 is not in the UP state --
traffic-shaping configuration skipped"
fi
}
#
# Configure Traffic Shaping for eth0
#
setup_eth0_tc() {
if interface_is_up eth0; then
qt $TC qdisc del dev eth0 root
qt $TC qdisc del dev eth0 ingress
eth0_mtu=$(get_device_mtu eth0)
eth0_mtu1=$(get_device_mtu1 eth0)
run_tc qdisc add dev eth0 root handle e: htb default 17 r2q 5000
run_tc class add dev eth0 parent e: classid e:1 htb rate 1000000kbit
$eth0_mtu1
[ $eth0_mtu -gt 2500 ] && quantum=$eth0_mtu || quantum=2500
run_tc class add dev eth0 parent e:1 classid e:10 htb rate 100000kbit
ceil 1000000kbit prio 1 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:10 handle 1: sfq quantum $quantum
limit 127 perturb 10
run_tc filter add dev eth0 parent e:0 protocol ip prio 266 u32\
match ip protocol 6 0xff\
match u8 0x05 0x0f at 0\
match u16 0x0000 0xffc0 at 2\
match u8 0x10 0xff at 33 flowid e:10
progress_message " TC Class e:10 defined."
[ $eth0_mtu -gt 60 ] && quantum=$eth0_mtu || quantum=60
run_tc class add dev eth0 parent e:1 classid e:11 htb rate 2400kbit
ceil 50000kbit prio 4 $eth0_mtu1 quantum $quantum
progress_message " TC Class e:11 defined."
[ $eth0_mtu -gt 20 ] && quantum=$eth0_mtu || quantum=20
run_tc class add dev eth0 parent e:11 classid e:12 htb rate 800kbit
ceil 50000kbit prio 4 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:12 handle 2: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:12 defined."
[ $eth0_mtu -gt 30 ] && quantum=$eth0_mtu || quantum=30
run_tc class add dev eth0 parent e:11 classid e:13 htb rate 1200kbit
ceil 50000kbit prio 5 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:13 handle 3: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:13 defined."
[ $eth0_mtu -gt 10 ] && quantum=$eth0_mtu || quantum=10
run_tc class add dev eth0 parent e:11 classid e:14 htb rate 400kbit
ceil 50000kbit prio 6 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:14 handle 4: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:14 defined."
[ $eth0_mtu -gt 10 ] && quantum=$eth0_mtu || quantum=10
run_tc class add dev eth0 parent e:1 classid e:15 htb rate 400kbit ceil
1000000kbit prio 2 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:15 handle 5: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:15 defined."
[ $eth0_mtu -gt 12500 ] && quantum=$eth0_mtu || quantum=12500
run_tc class add dev eth0 parent e:1 classid e:16 htb rate 500000kbit
ceil 1000000kbit prio 3 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:16 handle 6: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:16 defined."
[ $eth0_mtu -gt 2250 ] && quantum=$eth0_mtu || quantum=2250
run_tc class add dev eth0 parent e:1 classid e:17 htb rate 90000kbit
ceil 1000000kbit prio 7 $eth0_mtu1 quantum $quantum
run_tc qdisc add dev eth0 parent e:17 handle 7: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class e:17 defined."
progress_message " TC Device eth0 defined."
else
error_message "WARNING: Device eth0 is not in the UP state --
traffic-shaping configuration skipped"
fi
}
#
# Configure Traffic Shaping for ifb0
#
setup_ifb0_tc() {
if interface_is_up ifb0; then
qt $TC qdisc del dev ifb0 root
qt $TC qdisc del dev ifb0 ingress
ifb0_mtu=$(get_device_mtu ifb0)
ifb0_mtu1=$(get_device_mtu1 ifb0)
run_tc qdisc add dev ifb0 root handle be: htb default 27 r2q 5000
run_tc class add dev ifb0 parent be: classid be:1 htb rate 1000000kbit
$ifb0_mtu1
run_tc qdisc add dev eth0 handle ffff: ingress
run_tc filter add dev eth0 parent ffff: protocol all u32 match u32 0 0
action mirred egress redirect dev ifb0 > /dev/null
[ $ifb0_mtu -gt 2500 ] && quantum=$ifb0_mtu || quantum=2500
run_tc class add dev ifb0 parent be:1 classid be:20 htb rate 100000kbit
ceil 1000000kbit prio 1 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:20 handle 8: sfq quantum $quantum
limit 127 perturb 10
run_tc filter add dev ifb0 parent be:0 protocol ip prio 266 u32\
match ip protocol 6 0xff\
match u8 0x05 0x0f at 0\
match u16 0x0000 0xffc0 at 2\
match u8 0x10 0xff at 33 flowid be:20
progress_message " TC Class be:20 defined."
[ $ifb0_mtu -gt 80 ] && quantum=$ifb0_mtu || quantum=80
run_tc class add dev ifb0 parent be:1 classid be:21 htb rate 3200kbit
ceil 50000kbit prio 4 $ifb0_mtu1 quantum $quantum
progress_message " TC Class be:21 defined."
[ $ifb0_mtu -gt 30 ] && quantum=$ifb0_mtu || quantum=30
run_tc class add dev ifb0 parent be:21 classid be:22 htb rate 1200kbit
ceil 50000kbit prio 4 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:22 handle 9: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:22 defined."
[ $ifb0_mtu -gt 30 ] && quantum=$ifb0_mtu || quantum=30
run_tc class add dev ifb0 parent be:21 classid be:23 htb rate 1200kbit
ceil 50000kbit prio 5 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:23 handle a: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:23 defined."
[ $ifb0_mtu -gt 20 ] && quantum=$ifb0_mtu || quantum=20
run_tc class add dev ifb0 parent be:21 classid be:24 htb rate 800kbit
ceil 50000kbit prio 6 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:24 handle b: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:24 defined."
[ $ifb0_mtu -gt 10 ] && quantum=$ifb0_mtu || quantum=10
run_tc class add dev ifb0 parent be:1 classid be:25 htb rate 400kbit
ceil 1000000kbit prio 2 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:25 handle c: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:25 defined."
[ $ifb0_mtu -gt 12500 ] && quantum=$ifb0_mtu || quantum=12500
run_tc class add dev ifb0 parent be:1 classid be:26 htb rate 500000kbit
ceil 1000000kbit prio 3 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:26 handle d: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:26 defined."
[ $ifb0_mtu -gt 2250 ] && quantum=$ifb0_mtu || quantum=2250
run_tc class add dev ifb0 parent be:1 classid be:27 htb rate 90000kbit
ceil 1000000kbit prio 7 $ifb0_mtu1 quantum $quantum
run_tc qdisc add dev ifb0 parent be:27 handle f: sfq quantum $quantum
limit 127 perturb 10
progress_message " TC Class be:27 defined."
run_tc filter add dev ifb0 protocol ip parent be:0 prio 4 u32\
match ip src 1.1.1.22/32\
flowid be:22
run_tc filter add dev ifb0 protocol ip parent be:0 prio 5 u32\
match ip src 1.1.1.23/32\
flowid be:23
run_tc filter add dev ifb0 protocol ip parent be:0 prio 6 u32\
match ip src 1.1.1.24/32\
flowid be:24
run_tc filter add dev ifb0 protocol ip parent be:0 prio 3 u32\
match ip src 1.1.1.26/32\
flowid be:26
run_tc filter add dev ifb0 protocol ip parent be:0 prio 2 u32\
match ip src 1.1.1.25/32\
flowid be:25
run_tc filter add dev ifb0 protocol ip parent be:0 prio 7 u32\
match ip src 1.1.1.27/32\
flowid be:27
progress_message " TC Device ifb0 defined."
else
error_message "WARNING: Device ifb0 is not in the UP state --
traffic-shaping configuration skipped"
fi
}
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
Shorewall-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/shorewall-devel