I've been experimenting with QoS in my office for a while and seen great improvements to internet access and usability for all when used. Particularly VOIP calls are dramatically better.
Unfortuntely, to get clear sounding VOIP I've had to nearly half the upload rate. The reason being is that we have ADSL broadband into our office.
I have been experimenting with the tc-atm patches recently and seen a dramatic improvement, but I'm rather unsure whether I'm going about this the right way.
Let me describe the setup.
1) A Draytek Vigor 120 ADSL modem with briding on i.e. line is PPPoA/VCMux, the option: PPPoE Passthrough is checked. The description for this is: "If this box is checked while using the PPPoA protocol, the router will behave like a modem which only serves the PPPoE client on the LAN.". The PPPoE client is running on the next device i.e. 2) WRT54GL with Viktek tomato mod installed, PPPoE client running here. 3) Bunch of users connected to the linksys router either wirelessly or through cable.
Now my upload rate is 800kb/s & download is 760kb/s. Calculated according to the TC-ATM homepage.
Now here is where it gets confusing. Which overhead value do I use?
My current config file /etc/qos contains:
#!/bin/sh
I=ppp0
TQA="tc qdisc add dev $I"
TCA="tc class add dev $I"
TFA="tc filter add dev $I"
Q="sfq perturb 10"
case "$1" in
start)
tc qdisc del dev $I root 2>/dev/null
$TQA root handle 1: htb default 70 r2q 10
$TCA parent 1: classid 1:1 htb rate 700kbit ceil 700kbit
# egress 0: 12-40%
$TCA parent 1:1 classid 1:10 htb rate 84kbit ceil 280kbit prio 1 quantum 1472
$TQA parent 1:10 handle 10: $Q
$TFA parent 1: prio 10 protocol ip handle 1 fw flowid 1:10
# egress 1: 10-20%
$TCA parent 1:1 classid 1:20 htb rate 70kbit ceil 140kbit prio 2 quantum 1472
$TQA parent 1:20 handle 20: $Q
$TFA parent 1: prio 20 protocol ip handle 2 fw flowid 1:20
# egress 2: 12-80%
$TCA parent 1:1 classid 1:30 htb rate 84kbit ceil 560kbit prio 3 quantum 1472
$TQA parent 1:30 handle 30: $Q
$TFA parent 1: prio 30 protocol ip handle 3 fw flowid 1:30
# egress 3: 10-80%
$TCA parent 1:1 classid 1:40 htb rate 70kbit ceil 560kbit prio 4 quantum 1472
$TQA parent 1:40 handle 40: $Q
$TFA parent 1: prio 40 protocol ip handle 4 fw flowid 1:40
# egress 4: 5-80%
$TCA parent 1:1 classid 1:50 htb rate 35kbit ceil 560kbit prio 5 quantum 1472
$TQA parent 1:50 handle 50: $Q
$TFA parent 1: prio 50 protocol ip handle 5 fw flowid 1:50
# egress 5: 10-80%
$TCA parent 1:1 classid 1:60 htb rate 70kbit ceil 560kbit prio 6 quantum 1472
$TQA parent 1:60 handle 60: $Q
$TFA parent 1: prio 60 protocol ip handle 6 fw flowid 1:60
# egress 6: 5-80%
$TCA parent 1:1 classid 1:70 htb rate 35kbit ceil 560kbit prio 7 quantum 1472
$TQA parent 1:70 handle 70: $Q
$TFA parent 1: prio 70 protocol ip handle 7 fw flowid 1:70
$TFA parent 1: prio 14 protocol ip 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 1:10
$TFA parent 1: prio 13 protocol ip u32 match ip protocol 1 0xff flowid 1:10
;;
stop)
tc qdisc del dev $I root 2>/dev/null
tc qdisc del dev $I ingress 2>/dev/null
;;
*)
tc -s -d qdisc ls dev $I
echo
tc -s -d class ls dev $I
esac
Which is configured by the GUI.
I thought I could just put something like
tc class change dev ppp0 classid 1:10 htb prio 1 rate 800kbit ceil 800kbit overhead 32 atm
Which has certainly had a big effect but I am not sure about doing that. Do I need to put an atm line on the end of every single class line or can I just put it at the top one, i.e. $TCA parent 1: classid 1:1 htb rate 700kbit ceil 700kbit ? Would it be better to put the atm and overhead as a firewall script instead and forget the GUI?
And what should I use as the overhead value and optimal MTU?