AltQ + ng_iface
Julian Elischer
julian at elischer.org
Fri Jul 29 03:05:35 GMT 2005
Chuck Swiger wrote:
> Daniel O'Connor wrote:
>
>> On Friday 29 July 2005 11:02, Chuck Swiger wrote:
>>
>>> Either the "established" or the "tcpflags !syn,ack" keywords in a rule
>>> adding matching packets to a high-priority queue ought to do it...? Or
>>> perhaps you meant something more specific than just "TCP packets with
>>> TH_ACK" set? :-)
>>
>>
>> Hmm, I guess you could make those skip the pipe..
>>
>>> Anyway, I'm not convinced that trying to classify packets within an
>>> established TCP connection in order to place them on different
>>> queues is a
>>> really good idea, since you're quite likely to reorder the packets
>>> by doing
>>> so. I'd expect both latency and bandwidth of a TCP connection to
>>> suffer
>>> very noticably if more than 10% or so of the packets arrive out of
>>> order...
>>
>>
>> The theory is that by prioritising outgoing ACKs you don't cause
>> downstream delays when your upstream is full. eg
>> http://www.benzedrine.cx/ackpri.html
>
>
> Ah. OK, it makes sense that delaying outgoing ACKs too much would
> slow things down. So you want to send dataless ACKs at a higher
> priority than generic big packets full of data, maybe via the "iplen"
> keyword with "established", look for packets smaller than ~100 bytes?
I do this to great effect..
consider:
two sites connected by links in which teh bottleneck is 200KB/sec (1 E1?)
when a lot of data is flowing from 1 to 2 then data from 2 to 1 is also
slowed
down because the acks have to go through the queues on ingress side of the
bottleneck router.
I add a dummynet entry on 1, limiting output to 190KB/sec, so that the queue
is in dummynet and not the intermediate router, and then allow small ack
packets
to bypass that queue. As a result the data from 2 to 1 also flows at
near capacity,
and with a much lower latency. SInce data flows tend to be large packets,
I sometimes actually prioitise ALL small packets allowing interactive
stuff to
bypass ftps etc. and sometimes I do it on both ends.
>
> My other thought on this is to wonder about window size and whether
> that was scaling properly up to a reasonable value, and whether both
> sides implement a sane network stack, or whether the other side was a
> windows box looking for quick responses and usage of SACK, rather than
> BSD (new-reno?) delayed ACKs...
>
>>> [ Hmm. I suppose that one could make an exception to the above
>>> generalization if URG was set, but the TCP stack already makes an
>>> effort to
>>> prioritize and deliver out-of-band urgent stuff as quickly as possible,
>>> anyway, right? ]
>>
>>
>> Maybe, but it doesn't appear to do a particularly good job for a lot
>> of situations :)
>
>
> I guess. :-) Getting 25% of the hoped-for max performance under a
> problematic case isn't so horrible, either, but I suspect other
> factors were involved, too.
>
> A tcpdump would've been informative....
>
More information about the freebsd-net
mailing list