|
@@ -7,7 +7,7 @@
|
7
|
7
|
# it under the terms of the GNU General Public License version 2 as
|
8
|
8
|
# published by the Free Software Foundation.
|
9
|
9
|
#
|
10
|
|
-# Copyright (C) 2012-4 Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
|
|
10
|
+# Copyright (C) 2012-5 Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
|
11
|
11
|
|
12
|
12
|
# Compared to the complexity that debloat had become
|
13
|
13
|
# this cleanly shows a means of going from diffserv marking
|
|
@@ -26,15 +26,18 @@ ipt_setup() {
|
26
|
26
|
ipt -t mangle -N QOS_MARK_${IFACE}
|
27
|
27
|
|
28
|
28
|
case $QDISC in
|
29
|
|
- cake*) sqm_logger cake does all the diffserv work - no need for iptables rules ;;
|
|
29
|
+ cake*)
|
|
30
|
+ sqm_logger cake does all the diffserv work - no need for iptables rules
|
|
31
|
+ ;;
|
30
|
32
|
*)
|
31
|
|
-ipt -t mangle -A QOS_MARK_${IFACE} -j MARK --set-mark 0x2${IPT_MASK_STRING}
|
32
|
|
-# You can go further with classification but...
|
33
|
|
-ipt -t mangle -A QOS_MARK_${IFACE} -m dscp --dscp-class CS1 -j MARK --set-mark 0x3${IPT_MASK_STRING}
|
34
|
|
-ipt -t mangle -A QOS_MARK_${IFACE} -m dscp --dscp-class CS6 -j MARK --set-mark 0x1${IPT_MASK_STRING}
|
35
|
|
-ipt -t mangle -A QOS_MARK_${IFACE} -m dscp --dscp-class EF -j MARK --set-mark 0x1${IPT_MASK_STRING}
|
36
|
|
-ipt -t mangle -A QOS_MARK_${IFACE} -m dscp --dscp-class AF42 -j MARK --set-mark 0x1${IPT_MASK_STRING}
|
37
|
|
-ipt -t mangle -A QOS_MARK_${IFACE} -m tos --tos Minimize-Delay -j MARK --set-mark 0x1${IPT_MASK_STRING}
|
|
33
|
+ ipt -t mangle -A QOS_MARK_${IFACE} -j MARK --set-mark 0x2${IPT_MASK_STRING}
|
|
34
|
+ # You can go further with classification but...
|
|
35
|
+ ipt -t mangle -A QOS_MARK_${IFACE} -m dscp --dscp-class CS1 -j MARK --set-mark 0x3${IPT_MASK_STRING}
|
|
36
|
+ ipt -t mangle -A QOS_MARK_${IFACE} -m dscp --dscp-class CS6 -j MARK --set-mark 0x1${IPT_MASK_STRING}
|
|
37
|
+ ipt -t mangle -A QOS_MARK_${IFACE} -m dscp --dscp-class EF -j MARK --set-mark 0x1${IPT_MASK_STRING}
|
|
38
|
+ ipt -t mangle -A QOS_MARK_${IFACE} -m dscp --dscp-class AF42 -j MARK --set-mark 0x1${IPT_MASK_STRING}
|
|
39
|
+ ipt -t mangle -A QOS_MARK_${IFACE} -m tos --tos Minimize-Delay -j MARK --set-mark 0x1${IPT_MASK_STRING}
|
|
40
|
+ ;;
|
38
|
41
|
esac
|
39
|
42
|
|
40
|
43
|
# and it might be a good idea to do it for udp tunnels too
|
|
@@ -88,49 +91,51 @@ LQ="quantum `get_mtu $IFACE $CEIL`"
|
88
|
91
|
|
89
|
92
|
$TC qdisc del dev $IFACE root 2> /dev/null
|
90
|
93
|
case $QDISC in
|
91
|
|
- cake*) $TC qdisc add dev $IFACE root $QDISC bandwidth ${CEIL}kbit ;;
|
|
94
|
+ cake*)
|
|
95
|
+ $TC qdisc add dev $IFACE root $QDISC bandwidth ${CEIL}kbit get_cake_lla_string ${EQDISC_OPTS}
|
|
96
|
+ ;;
|
92
|
97
|
*)
|
93
|
|
-$TC qdisc add dev $IFACE root handle 1: `get_stab_string` htb default 12
|
94
|
|
-$TC class add dev $IFACE parent 1: classid 1:1 htb $LQ rate ${CEIL}kbit ceil ${CEIL}kbit `get_htb_adsll_string`
|
95
|
|
-$TC class add dev $IFACE parent 1:1 classid 1:10 htb $LQ rate ${CEIL}kbit ceil ${CEIL}kbit prio 0 `get_htb_adsll_string`
|
96
|
|
-$TC class add dev $IFACE parent 1:1 classid 1:11 htb $LQ rate 128kbit ceil ${PRIO_RATE}kbit prio 1 `get_htb_adsll_string`
|
97
|
|
-$TC class add dev $IFACE parent 1:1 classid 1:12 htb $LQ rate ${BE_RATE}kbit ceil ${BE_CEIL}kbit prio 2 `get_htb_adsll_string`
|
98
|
|
-$TC class add dev $IFACE parent 1:1 classid 1:13 htb $LQ rate ${BK_RATE}kbit ceil ${BE_CEIL}kbit prio 3 `get_htb_adsll_string`
|
|
98
|
+ $TC qdisc add dev $IFACE root handle 1: `get_stab_string` htb default 12
|
|
99
|
+ $TC class add dev $IFACE parent 1: classid 1:1 htb $LQ rate ${CEIL}kbit ceil ${CEIL}kbit `get_htb_adsll_string`
|
|
100
|
+ $TC class add dev $IFACE parent 1:1 classid 1:10 htb $LQ rate ${CEIL}kbit ceil ${CEIL}kbit prio 0 `get_htb_adsll_string`
|
|
101
|
+ $TC class add dev $IFACE parent 1:1 classid 1:11 htb $LQ rate 128kbit ceil ${PRIO_RATE}kbit prio 1 `get_htb_adsll_string`
|
|
102
|
+ $TC class add dev $IFACE parent 1:1 classid 1:12 htb $LQ rate ${BE_RATE}kbit ceil ${BE_CEIL}kbit prio 2 `get_htb_adsll_string`
|
|
103
|
+ $TC class add dev $IFACE parent 1:1 classid 1:13 htb $LQ rate ${BK_RATE}kbit ceil ${BE_CEIL}kbit prio 3 `get_htb_adsll_string`
|
99
|
104
|
|
100
|
|
-$TC qdisc add dev $IFACE parent 1:11 handle 110: $QDISC `get_limit ${ELIMIT}` `get_target "${ETARGET}" ${UPLINK}` `get_ecn ${EECN}` `get_quantum 300` `get_flows ${PRIO_RATE}` ${EQDISC_OPTS}
|
101
|
|
-$TC qdisc add dev $IFACE parent 1:12 handle 120: $QDISC `get_limit ${ELIMIT}` `get_target "${ETARGET}" ${UPLINK}` `get_ecn ${EECN}` `get_quantum 300` `get_flows ${BE_RATE}` ${EQDISC_OPTS}
|
102
|
|
-$TC qdisc add dev $IFACE parent 1:13 handle 130: $QDISC `get_limit ${ELIMIT}` `get_target "${ETARGET}" ${UPLINK}` `get_ecn ${EECN}` `get_quantum 300` `get_flows ${BK_RATE}` ${EQDISC_OPTS}
|
|
105
|
+ $TC qdisc add dev $IFACE parent 1:11 handle 110: $QDISC `get_limit ${ELIMIT}` `get_target "${ETARGET}" ${UPLINK}` `get_ecn ${EECN}` `get_quantum 300` `get_flows ${PRIO_RATE}` ${EQDISC_OPTS}
|
|
106
|
+ $TC qdisc add dev $IFACE parent 1:12 handle 120: $QDISC `get_limit ${ELIMIT}` `get_target "${ETARGET}" ${UPLINK}` `get_ecn ${EECN}` `get_quantum 300` `get_flows ${BE_RATE}` ${EQDISC_OPTS}
|
|
107
|
+ $TC qdisc add dev $IFACE parent 1:13 handle 130: $QDISC `get_limit ${ELIMIT}` `get_target "${ETARGET}" ${UPLINK}` `get_ecn ${EECN}` `get_quantum 300` `get_flows ${BK_RATE}` ${EQDISC_OPTS}
|
103
|
108
|
|
104
|
|
-# Need a catchall rule
|
|
109
|
+ # Need a catchall rule
|
105
|
110
|
|
106
|
|
-$TC filter add dev $IFACE parent 1:0 protocol all prio 999 u32 \
|
107
|
|
- match ip protocol 0 0x00 flowid 1:12
|
|
111
|
+ $TC filter add dev $IFACE parent 1:0 protocol all prio 999 u32 \
|
|
112
|
+ match ip protocol 0 0x00 flowid 1:12
|
108
|
113
|
|
109
|
|
-# FIXME should probably change the filter here to do pre-nat
|
|
114
|
+ # FIXME should probably change the filter here to do pre-nat
|
110
|
115
|
|
111
|
|
-$TC filter add dev $IFACE parent 1:0 protocol ip prio 1 handle 1 fw classid 1:11
|
112
|
|
-$TC filter add dev $IFACE parent 1:0 protocol ip prio 2 handle 2 fw classid 1:12
|
113
|
|
-$TC filter add dev $IFACE parent 1:0 protocol ip prio 3 handle 3 fw classid 1:13
|
|
116
|
+ $TC filter add dev $IFACE parent 1:0 protocol ip prio 1 handle 1 fw classid 1:11
|
|
117
|
+ $TC filter add dev $IFACE parent 1:0 protocol ip prio 2 handle 2 fw classid 1:12
|
|
118
|
+ $TC filter add dev $IFACE parent 1:0 protocol ip prio 3 handle 3 fw classid 1:13
|
114
|
119
|
|
115
|
|
-# ipv6 support. Note that the handle indicates the fw mark bucket that is looked for
|
|
120
|
+ # ipv6 support. Note that the handle indicates the fw mark bucket that is looked for
|
116
|
121
|
|
117
|
|
-$TC filter add dev $IFACE parent 1:0 protocol ipv6 prio 4 handle 1 fw classid 1:11
|
118
|
|
-$TC filter add dev $IFACE parent 1:0 protocol ipv6 prio 5 handle 2 fw classid 1:12
|
119
|
|
-$TC filter add dev $IFACE parent 1:0 protocol ipv6 prio 6 handle 3 fw classid 1:13
|
|
122
|
+ $TC filter add dev $IFACE parent 1:0 protocol ipv6 prio 4 handle 1 fw classid 1:11
|
|
123
|
+ $TC filter add dev $IFACE parent 1:0 protocol ipv6 prio 5 handle 2 fw classid 1:12
|
|
124
|
+ $TC filter add dev $IFACE parent 1:0 protocol ipv6 prio 6 handle 3 fw classid 1:13
|
120
|
125
|
|
121
|
|
-# Arp traffic
|
|
126
|
+ # Arp traffic
|
122
|
127
|
|
123
|
|
-$TC filter add dev $IFACE parent 1:0 protocol arp prio 7 handle 1 fw classid 1:11
|
|
128
|
+ $TC filter add dev $IFACE parent 1:0 protocol arp prio 7 handle 1 fw classid 1:11
|
124
|
129
|
|
125
|
|
-# ICMP traffic - Don't impress your friends. Deoptimize to manage ping floods
|
126
|
|
-# better instead
|
|
130
|
+ # ICMP traffic - Don't impress your friends. Deoptimize to manage ping floods
|
|
131
|
+ # better instead
|
127
|
132
|
|
128
|
|
-$TC filter add dev $IFACE parent 1:0 protocol ip prio 8 \
|
129
|
|
- u32 match ip protocol 1 0xff flowid 1:13
|
|
133
|
+ $TC filter add dev $IFACE parent 1:0 protocol ip prio 8 \
|
|
134
|
+ u32 match ip protocol 1 0xff flowid 1:13
|
130
|
135
|
|
131
|
|
-$TC filter add dev $IFACE parent 1:0 protocol ipv6 prio 9 \
|
132
|
|
- u32 match ip protocol 1 0xff flowid 1:13
|
133
|
|
-;;
|
|
136
|
+ $TC filter add dev $IFACE parent 1:0 protocol ipv6 prio 9 \
|
|
137
|
+ u32 match ip protocol 1 0xff flowid 1:13
|
|
138
|
+ ;;
|
134
|
139
|
esac
|
135
|
140
|
|
136
|
141
|
#diffserv $IFACE
|
|
@@ -157,13 +162,15 @@ then
|
157
|
162
|
sqm_logger "Do not perform DSCP based filtering on ingress. (1-tier classification)"
|
158
|
163
|
# Revert to no dscp based filtering
|
159
|
164
|
case $QDISC in
|
160
|
|
- cake*) $TC qdisc add dev $DEV root $QDISC bandwidth ${DOWNLINK}kbit besteffort ;;
|
|
165
|
+ cake*)
|
|
166
|
+ $TC qdisc add dev $DEV root $QDISC bandwidth ${DOWNLINK}kbit besteffort get_cake_lla_string ${IQDISC_OPTS}
|
|
167
|
+ ;;
|
161
|
168
|
*)
|
162
|
|
-$TC qdisc add dev $DEV root handle 1: `get_stab_string` htb default 10
|
163
|
|
-$TC class add dev $DEV parent 1: classid 1:1 htb $LQ rate ${DOWNLINK}kbit ceil ${DOWNLINK}kbit `get_htb_adsll_string`
|
164
|
|
-$TC class add dev $DEV parent 1:1 classid 1:10 htb $LQ rate ${DOWNLINK}kbit ceil ${DOWNLINK}kbit prio 0 `get_htb_adsll_string`
|
165
|
|
-$TC qdisc add dev $DEV parent 1:10 handle 110: $QDISC `get_limit ${ILIMIT}` `get_target "${ITARGET}" ${DOWNLINK}` `get_ecn ${IECN}` `get_flows ${DOWNLINK}` ${IQDISC_OPTS}
|
166
|
|
-;;
|
|
169
|
+ $TC qdisc add dev $DEV root handle 1: `get_stab_string` htb default 10
|
|
170
|
+ $TC class add dev $DEV parent 1: classid 1:1 htb $LQ rate ${DOWNLINK}kbit ceil ${DOWNLINK}kbit `get_htb_adsll_string`
|
|
171
|
+ $TC class add dev $DEV parent 1:1 classid 1:10 htb $LQ rate ${DOWNLINK}kbit ceil ${DOWNLINK}kbit prio 0 `get_htb_adsll_string`
|
|
172
|
+ $TC qdisc add dev $DEV parent 1:10 handle 110: $QDISC `get_limit ${ILIMIT}` `get_target "${ITARGET}" ${DOWNLINK}` `get_ecn ${IECN}` `get_flows ${DOWNLINK}` ${IQDISC_OPTS}
|
|
173
|
+ ;;
|
167
|
174
|
esac
|
168
|
175
|
|
169
|
176
|
else
|