On Tue, 12 Oct 2004, Eric Dumazet wrote:
Following this discussion on netdev, sorry to bother you again :)
Currently, linux cannot easily avoids the third packet (ACK only) of TCP
handshake, for connections initiated from linux side.
The send(socket, data) is denied (EAGAIN) if the socket is in NODELAY mode
and socket not yet connected (connect() done , but not in ESTABLISHED
state).
This is my observations as well.
So basically, a daemon willing to avoid the third packet must use one thread
for each outgoing pending connection, seting the socket in blocking mode and
blocking in send()/write() syscall. In my case, I would need about 1000
threads :(
Could we just delay (say up to 200ms) the ACK packet the tcp stack sends ?
What would this do to the initial RTT measurements?
From what I can see the RFCs only allow for delayed ACKs in response to a
data segment. Not sure if this includes SYN (or FIN).
Regards
Henrik
|