From: "Wael Noureddine" <[EMAIL PROTECTED]>
Date: Sun, 21 Aug 2005 00:17:17 -0700

> How do you intend on avoiding huge stretch ACKs?

The implication is that stretch ACKs are bad, which is wrong.
Oh yes, that's right, you're the same person who earlier in this
thread tried to teach us that bursty TCPs are non-standard :-)

Stretch ACKs are actually a positive thing on a healthy connection and
do indeed help the sender.  And when loss events occur, LRO stops
immediately and delivers the packets as-is so that loss information
via ACKs with SACK blocks can immediately make their way to the
sender.

Linux does actually currently generate stretch ACKs, when beneficial.

What happens today, due mostly to interrupt mitigation, is that the
stack processes many consequetive packets, and spits out a ton of ACKs
one after another.  That's actually bad.  LRO will cause us to instead
do the right thing, which for a healthy connection is to scale the ACK
response rate to match the interarrival rate of data.

Making the sender process a lot of ACKs is bad, because those are
cycles that could be used to do the context switch that gets the
sender back onto the cpu to fill the send buffer.  What happens right
now is that the first ACK wakes up the task, then as we try to
schedule the process we're inundated with processing the subsequent
data packets and spitting the ACKs out, to the point where it takes
longer than necessary to get the process onto the cpu to fill the
send buffer.

I traced this extensively while working on our TSO implementation.

> This is again assuming TOE cannot implement these features. Users should 
> decide which features they care about, and if TOE doesn't have them then it 
> won't be a viable alternative for them. 

You're not going to replicate the entire Linux TCP stack onto your
card.  TOE is not a viable alternative for anyone who wants to do
anything out of the limited scope of features you'll have in your TOE
stack.

This means if we find an incredible new congestion control algorithm,
the TOE setups won't get it.  This means if the only way to work
around a security hole is to enable some netfilter rule until a better
fix exists, user's either stay vulnerable or lose TOE.

It's all a lose-lose situation for the user, and we're not going
to fall down that slipperly slope if there is anything I can do
about it.

But we don't need the limitation _at all_ with stateless offload
solutions.  That's our _whole point_.  Why do X with limitations
if we don't need do?

But I'm personally sick of talking about why TOE is so bad, and I'm
going to ignore those parts of this thread in the future, and instead
I'm going to participate in the discussions that will actually go
somewhere.  Those are the ones about getting a good LRO implementation
going and into the Linux networking stack.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to