From: Nivedita Singhvi <niv@us.ibm.com>
To: Paul Albrecht <palbrecht@qwest.net>
Cc: linux-kernel@vger.kernel.org, netdev <netdev@oss.sgi.com>
Subject: Re: question about linux tcp request queue handling
Date: Sun, 06 Jul 2003 22:51:11 -0700 [thread overview]
Message-ID: <3F090A4F.10004@us.ibm.com> (raw)
In-Reply-To: <000d01c3444f$e6439600$6801a8c0@oemcomputer>
Paul Albrecht wrote:
>>When you set a the backlog to 1 in the listen call, what is
>>being capped is the accept queue. So I would expect your
>>server to allow only one of those requests in the accept
>>queue, and the kernel will drop the other two requests.
> What you get when you set backlog to one is operating system dependent.
You asked about Linux 2.4.18, and I was speaking
strictly for it. This is after all linux-netdev :).
> Tracing the flows with tcpdump, I get two clean handshakes so presumeably,
> for linux, one means two. The third connection request *isn't* dropped;
Again, youre limiting the number of connnection requests
that are allowed to wait in the *accept* queue, where
we move to once we're ESTABLISHED. You arent limiting
a request sitting in the SYN queue.
> according to netstat, it's placed in the syn_recd state. I thought
> berkeley-derived implementations followed the rule that if there is no room
> on the backlog queue for the new connection, tcp ignored the the received
> syn.
>>Actually, details, but we also apply some other conditions
>>before we actually drop the connection request - we try not to be
>>so harsh if the syn queue is still fairly empty..
>>
>
>
> Irrespective of whatever conditions linux applies, how can the connection
> enter the syn_recd state if the backlog limit would be exceeded? What's the
> client supposed to do with the syn/ack from the server? What's the server
> supposed to do with the ack it get's back from the client?
Er, complete the 3 way handshake? If the client gets the syn/ack, it
should send a SYN in response, and move to ESTABLISHED state. If the
server gets an ack back from the client, we process the ack. Our
processing involves moving the request from the syn queue to the
accept queue. Should the accept queue be full (which could occur
anytime - eg it could have occurred *after* the server recvd this
SYN) we would drop the request. Should the client then send data,
it would get a RST, letting it know our side (srvr) has had to
throw the connection away. Its quite possible that the accept queue
clears and a request can be moved from the SYN queue to the
accept queue in the interval of the handshake being completed (?)
If we get a SYN, it doesn't seem unreasonable that we enter
SYN_RCVD state :).
thanks,
Nivedita
next prev parent reply other threads:[~2003-07-07 5:51 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-06 20:24 question about linux tcp request queue handling Nivedita Singhvi
2003-07-07 0:12 ` Paul Albrecht
2003-07-06 23:59 ` Nivedita Singhvi
2003-07-07 6:20 ` Paul Albrecht
2003-07-07 5:51 ` Nivedita Singhvi [this message]
2003-07-07 5:59 ` Nivedita Singhvi
2003-07-07 23:30 ` Paul Albrecht
[not found] <3F08858E.8000907@us.ibm.com.suse.lists.linux.kernel>
[not found] ` <001a01c3441c$6fe111a0$6801a8c0@oemcomputer.suse.lists.linux.kernel>
[not found] ` <3F08B7E2.7040208@us.ibm.com.suse.lists.linux.kernel>
[not found] ` <000d01c3444f$e6439600$6801a8c0@oemcomputer.suse.lists.linux.kernel>
[not found] ` <3F090A4F.10004@us.ibm.com.suse.lists.linux.kernel>
[not found] ` <001401c344df$ccbc63c0$6801a8c0@oemcomputer.suse.lists.linux.kernel>
2003-07-07 21:48 ` Andi Kleen
2003-07-07 22:25 ` Doug McNaught
2003-07-07 23:52 ` Andi Kleen
2003-07-08 0:17 ` Doug McNaught
2003-07-08 0:25 ` Andi Kleen
2003-07-08 4:14 ` Paul Albrecht
2003-07-08 19:23 ` Paul Albrecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3F090A4F.10004@us.ibm.com \
--to=niv@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@oss.sgi.com \
--cc=palbrecht@qwest.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).