Hi Toby, and thanks for your answer :)
Excuse me for the long reply, but I wanted to put my current
settings for tc just in case. Feel free to ignore.
* Toby <[EMAIL PROTECTED]> dixit:
> DervishD wrote:
> > tc filter add dev eth0 ... ip sport 0x3000 0x3000 flowid 1:111
> > tc filter add dev eth0 ... ip sport 0x4000 0x4000 flowid 1:111
> > tc filter add dev eth0 ... ip sport 0x20 0xff flowid 1:111
> >
> > I'm serving passive FTP only in ports from 0x3000 to 0x4fff, and
> > active FTP in port 20.
>
> Then you should use the following port numbers in your filters:
>
> 0x3000 0xf000
> 0x4000 0xf000
> 20 0xffff
>
> The first two of your filters were matching more ports than needed,
> while the latter WAS NOT MATCHING YOUR ACTIVE FTP TRAFFIC AT ALL.
>
> I suggest you read a tutorial on ip addresses and netmasks, that
> should cover the basis of how bitmasks work.
I know how they work, but sometimes my brain doesn't work
correctly ;)))) The first two are a typo, in my tc setup I have masks
0xf000 and 0xf000, I don't know why I made such mistake, because I
swear I cut'n'pasted it :??? and the third one is an error, caused
because I was testing with ports 0x??20 to differentiate connections
(to test settings for different FTP servers) with a hand made client
that used different ports for active connections. I simply didn't put
the mask back to 0xffff and worst, I didn't move to 20 *decimal* and
left the 0x. I chose 0x??20 because it was easier to remeber and
fancier to read O:) than 0x??14.
Thanks for advising, because right now I don't have active ftp
traffic and I would NEVER have spotted the errors. Thanks a lot,
really.
And I don't understand the typo :? I've seen the output of "tc
filter show dev eth0" and shows "match 30000000/f0000000 at 20".
> > Is there any value I can tweak to make general ADSL traffic more
> > responsive?
>
> Yes, you can make another HTB class, let's call it 1:112, for ICMP
> traffic (ie. ping, port unreachable...) and very small TCP packets
> (SYN, ACK, RST... all that stuff) and give it the highest priority.
But all that traffic goes already through a higher priority
class. The "general ADSL traffic" has a higher priority (prio 0) and
"ADSL outgoing FTP traffic" has prio 1 :??? Sorry but that value
doesn't show in what I posted, certainly I had a problem when cutting
and pasting... I had to modify what I cut because I took it from a
zsh script. Here is the real contents:
TCQA="tc qdisc add dev eth0 parent"
TCCA="tc class add dev eth0 parent"
TCFA="tc filter add dev eth0 protocol ip parent"
action "Starting traffic control on eth0"
# root qdisc, defaults to ADSL other traffic
$=TCQA root handle 1: htb default 21 r2q 1
# hispeed class (Ethernet)
$=TCCA 1: classid 1:1 htb rate 95Mbit ceil 95Mbit
$=TCQA 1:1 handle 10: sfq perturb 10
# lospeed class (ADSL)
$=TCCA 1: classid 1:2 htb rate 256kbit ceil 256kbit burst 16384 cburst 8192
# Other ADSL traffic
$=TCCA 1:2 classid 1:21 htb rate 224kbit ceil 256kbit prio 0 burst 16384
cburst 8192
$=TCQA 1:21 handle 21: sfq perturb 10
# FTP thru ADSL traffic
$=TCCA 1:2 classid 1:22 htb rate 64kbit ceil 160kbit prio 1
# Filters
$=TCFA 1:0 prio 1 u32 match ip dst 192.168.0.0/24 flowid 1:1
$=TCFA 1:0 prio 2 u32 match ip sport 0x3000 0xf000 flowid 1:22
$=TCFA 1:0 prio 2 u32 match ip sport 0x4000 0xf000 flowid 1:22
$=TCFA 1:0 prio 2 u32 match ip sport 20 0xffff flowid 1:22
I removed yesterday the old 1:1 class because I want no borrowing
between Ethernet general traffic and Ethernet ADSL traffic.
If I add this as you suggest (modifiying identifiers)
$=TCCA 1:2 classid 1:23 htb rate 1kbit ceil 256kbit prio 0
then it will have the same priority that general traffic. I don't
undertand why it should improve responsiveness :? I'm going to test,
or course :), but I don't understand...
> By the way, I didn't invent all this, it's by Bert Hubert.
> You should check his wondershaper script: http://lartc.org/wondershaper/
I did, but if I don't do any "borrowing" (as wondershaper seems
to do), latency is low. I want low latency when borrowing. With the
setup I've posted above (that is, reducing ftp ceil to 160kbit and
raising adsl-general rate to 250kbit) there's almost no latency, but
I would like to add a bit more of ceil to ftp traffic.
I'll test your suggestions, which I find quite interesting, and
if I have success, I'll tell :) Thanks for your invaluable help, but
if this works I'm afraid I won't understand why, because by default
all that traffic that will be matched by the new filters will go to
the fast-adsl class anyway :?
Would it be because it will go out of the queue *even before*
than general ADSL traffic? I think that's the reason, right?
Well, I've finally tested your suggestion, and I've noticed only
a marginal improvement in responsiveness and latency, around 10% more
or less. Anytime I increase the "ceil" of the FTP-thru-ADSL traffic
above 160kbit (that's the value I'm currently using), the latency
skyrockets and the download speed stinks. I no longer see any
improvement, then. With values near 160kbit, messing with "burst" and
"cburst" give as slight improvement and your suggestions give a 10%
more of download bandwidth and about the same improveness in latency
(please note that except the download bandwidth, the rest of
improvements are subjetive, they represent what I feel when using my
network).
This means that without the new class and filters I'm stuck with
160kbit max for the served FTP traffic, and with them I can raise
that limit a bit. Probably I'm making mistakes in my r2q value, the
burst and cburst values, etc. that have to be corrected, too O:)
Thanks again, Toby :) With your suggestion I've raised from
19kbps to almost 22kbps the FTP speed (that's an extra 11MB per hour
and almost 300MB a day, and that's GOOD!), while having a decent
latency.
BTW, this is what I have now:
TCQA="tc qdisc add dev eth0 parent"
TCCA="tc class add dev eth0 parent"
TCFA="tc filter add dev eth0 protocol ip parent"
action "Starting traffic control on eth0"
# root qdisc, defaults to ADSL other traffic
$=TCQA root handle 1: htb default 21 r2q 1
# hispeed class (Ethernet)
$=TCCA 1: classid 1:1 htb rate 95Mbit ceil 95Mbit
$=TCQA 1:1 handle 10: sfq perturb 10
# lospeed class (ADSL)
$=TCCA 1: classid 1:2 htb rate 256kbit ceil 256kbit burst 16384 cburst 8192
# Low latency ADSL traffic
$=TCCA 1:2 classid 1:20 htb rate 4kbit ceil 256kbit prio 0 burst 16384
cburst 8194
# Other ADSL traffic
$=TCCA 1:2 classid 1:21 htb rate 224kbit ceil 256kbit prio 1 burst 16384
cburst 8192
$=TCQA 1:21 handle 21: sfq perturb 10
# FTP thru ADSL traffic
$=TCCA 1:2 classid 1:22 htb rate 64kbit ceil 175kbit prio 2
# Filters
# Ethernet LAN traffic
$=TCFA 1:0 prio 1 u32 match ip dst 192.168.0.0/24 flowid 1:1
# Low latency traffic small TCP packets (<64 bytes)
$=TCFA 1:0 prio 2 u32 match ip protocol 6 0xff\
match u8 0x05 0x0f at 0\
match u16 0x0000 0xffc0 at 2\
flowid 1:20
# Low latency traffic, ICMP
$=TCFA 1:0 prio 2 u32 match ip protocol 1 0xff flowid 1:20
# FTP thru ADSL traffic
$=TCFA 1:0 prio 2 u32 match ip sport 0x3000 0xf000 flowid 1:22
$=TCFA 1:0 prio 2 u32 match ip sport 0x4000 0xf000 flowid 1:22
$=TCFA 1:0 prio 2 u32 match ip sport 20 0xffff flowid 1:22
Raúl Núñez de Arenas Coronado
--
Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to...
_______________________________________________
LARTC mailing list
[email protected]
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc