Hi all !

I'm building a network appliance whose goals are to enhance Voip
quality on 512/128k DSL links. But, i have a voice quality problem,
and i think i'm doing something wrong, but i can't find what. Please
excuse my terrible english, i'm french.

From what i've read, tc is the tool i need. I read the documentations,
readmes and lartc.org howto, and came to the following setup:

NA = Linux-based network appliance (in fact a standard PC)

A--[Switch]--[eth1 NA eth0]--[DSL modem]

A = 1 pc and 1 ip phone on a 192.168.0.0/24 network
on the other side, the DSL modem is a bridge-type, thus i have my
internet ip on the NA  eth0 interface.
The DSL modem is actually a 15Mbit/1024Kbit ATM, but i want to limit
the upload to 128Kbit/s, to test the Voip thing.

My plan:

HTB qdisc with overall rate at 128kbit, and 2 classes, one with prio 1
(for VoIP) and one with prio 2 (For other data), each of them rated a
1kbit/s and ceiled at 128kbit/s. And, on top of this, SFQ qdiscs for
fairness.

So :

$TC qdisc add dev eth0 root handle 1: htb default 3
$TC class add dev eth0 parent 1: classid 1:1 htb rate 128kbit burst 6k
$TC class add dev eth0 parent 1:1 classid 1:2 htb quantum 1600 rate
1kbit ceil 128kbit  prio 1
$TC qdisc add dev eth0 parent 1:2 handle 2: sfq perturb 10
$TC class add dev eth0 parent 1:1 classid 1:3 htb quantum 1600 rate
1kbit ceil 128kbit  prio 2
$TC qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10

And my packets are classified by the following in the iptables mangle
table, forward chain: (my ip phone has 192.168.0.42, and pc
192.168.0.3)

Chain FORWARD (policy ACCEPT 3400K packets, 9214M bytes)
pkts bytes target     prot opt in     out     source
destination
 284  118K CLASSIFY   udp  --  eth1   eth0    192.168.0.42
0.0.0.0/0           CLASSIFY set 1:2
 284  118K RETURN     udp  --  eth1   eth0    192.168.0.42
0.0.0.0/0
12679   19M CLASSIFY   tcp  --  eth1   eth0    0.0.0.0/0
0.0.0.0/0           CLASSIFY set 1:3
12679   19M RETURN     tcp  --  eth1   eth0    0.0.0.0/0
0.0.0.0/0

(here a thing that i don't understand, is why i'm not classifying the
packets with 2: or 3: ? when i do, the traffic is entirely stopped...i
surely miss something here.)

So, the packets get classified, and effectively, they are prioritized.
_But_ i do hear some cuts in the voice that's sent through the NA,
when i'm doing some uploads.
(like some lazy wget --post-file=/tmp/some-big-iso-file.iso - Yeah i
could use nc, but.. :) )

Shouldn't the voice be absolutely clean with this setup ? or am i
missing something important ?

For the sake of completeness:

# tc -s -d qdisc show dev eth0
qdisc htb 1: r2q 10 default 5 direct_packets_stat 871 ver 3.17
Sent 25977039 bytes 18250 pkt (dropped 0, overlimits 28929 requeues 0)
rate 0bit 0pps backlog 0b 28p requeues 0
qdisc sfq 2: parent 1:2 limit 128p quantum 1514b flows 128/1024 perturb 10sec
Sent 162753 bytes 380 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 3: parent 1:3 limit 128p quantum 1514b flows 128/1024 perturb 10sec
Sent 25678966 bytes 16999 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 42392b 28p requeues 0


# tc -s -d class show dev eth0
class htb 1:1 root rate 128000bit ceil 128000bit burst 6Kb/8 mpu 0b
overhead 0b cburst 1664b/8 mpu 0b overhead 0b level 7
Sent 26406423 bytes 17759 pkt (dropped 0, overlimits 0 requeues 0)
rate 127968bit 10pps backlog 0b 0p requeues 0
lended: 17232 borrowed: 0 giants: 0
tokens: 92249 ctokens: -187751

class htb 1:2 parent 1:1 leaf 2: prio 1 quantum 1600 rate 1000bit ceil
128000bit burst 1600b/8 mpu 0b overhead 0b cburst 1664b/8 mpu 0b
overhead 0b level 0
Sent 166201 bytes 388 pkt (dropped 0, overlimits 0 requeues 0)
rate 856bit 0pps backlog 0b 0p requeues 0
lended: 388 borrowed: 0 giants: 0
tokens: 6986400 ctokens: 77500

class htb 1:3 parent 1:1 leaf 3: prio 3 quantum 1600 rate 1000bit ceil
128000bit burst 1600b/8 mpu 0b overhead 0b cburst 1664b/8 mpu 0b
overhead 0b level 0
Sent 26278072 bytes 17396 pkt (dropped 0, overlimits 0 requeues 0)
rate 127144bit 10pps backlog 0b 25p requeues 0
lended: 139 borrowed: 17232 giants: 0
tokens: -20775252 ctokens: -87749



Thank you all !
--
f00ty
"Tact is the art of making a point without making an enemy."
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

Reply via email to