[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0910160053001.22897@melkinkari.cs.Helsinki.FI>
Date: Fri, 16 Oct 2009 13:08:45 +0300 (EEST)
From: "Ilpo Järvinen" <ilpo.jarvinen@...sinki.fi>
To: Julian Anastasov <ja@....bg>
cc: Willy Tarreau <w@....eu>, David Miller <davem@...emloft.net>,
Netdev <netdev@...r.kernel.org>,
Eric Dumazet <eric.dumazet@...il.com>
Subject: Re: TCP_DEFER_ACCEPT is missing counter update
On Wed, 14 Oct 2009, Julian Anastasov wrote:
>
> Hello,
>
> On Wed, 14 Oct 2009, Willy Tarreau wrote:
>
> > > > I was trying to use TCP_DEFER_ACCEPT and noticed that if the
> > > > client does not talk, the connection is never accepted and
> > > > remains in SYN_RECV state until the retransmits expire, where
> > > > it finally is deleted. This is bad when some firewall such as
> > >
> > > I think, this is by design, there is big comment in
> > > tcp_check_req().
> >
> > I'm not sure. That would considerably reduce the usefulness of
> > the feature. The comment I see there is just a one line explaining
> > why we drop the ACK. It does not indicate any strategy on what to
> > do when the counter expires.
>
> There were attempts to switch the server socket to
> established state, no SYN-ACK retransmissions after client ACK
> and send FIN (or RST) to client on TCP_DEFER_ACCEPT expiration
> but due to some locking problems it was reverted:
>
> http://marc.info/?t=121318919000001&r=1&w=2
For the record,
I think you underestimate that particular change by putting it like that.
After being there and figuring out all the what that change did I'd say it
attempted even more ambitious goal, ie., to allow ofo data to be queued.
And that was the cause for all the troubles as the full state was created
without a wakeup resulting in plurality in locks that one had to acquire
when waking up and all the havoc broke loose due to lack of locking (or
deadlockish ordering)...
...So the problem is not in the "ESTABLISHED" (or like) state itself, but
in the fact that full state was created before the wakeup which needs to
access the listening socket state too.
--
i.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists