You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by "Roy T. Fielding" <fi...@ebuilt.com> on 2001/07/27 04:32:50 UTC

FWD: RE: [e2e] Windows NT implementation of TCP

We might trip over this one at some point, so I figured it is worth
placing in the archive.

....Roy

Re: RE: [e2e] Windows NT implementation of TCP

Posted by Bill Stoddard <bi...@wstoddard.com>.
> From: "William A. Rowe, Jr." <wr...@rowe-clan.net>
> Sent: Thursday, July 26, 2001 10:00 PM
>
>
> > From: "Roy T. Fielding" <fi...@ebuilt.com>
> > Sent: Thursday, July 26, 2001 9:32 PM
> >
> >
> > > We might trip over this one at some point, so I figured it is worth
> > > placing in the archive.
> >
> > Bill Stoddard's efforts have been in exactly the _opposite_ direction :-)
> > Our aim is to reuse the socket, rather than a fast-disconnect and close.
>
> I stand corrected... we do accept the APR_SENDFILE_DISCONNECT_SOCKET option,
> and we do slam that closed on c->keepalive in the core.  Actually, we go a
> step further and TF_REUSE_SOCKET, which is sort of known not to really be
> well supported.
>

Actually I think the DISCONNECT|REUSE is a relatively well known and used optimization. I
have not observed any problems with it on NT 4.0. Never tested it on 2000 though. Reusing
the accept socket on AcceptEx provides a -really- big performance boost for non-keep alive
connections.  I wonder if the problem happens with the REUSE flag? in addition to the
DISCONNECT?  Will do some digging around...

Bill


Re: RE: [e2e] Windows NT implementation of TCP

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
From: "William A. Rowe, Jr." <wr...@rowe-clan.net>
Sent: Thursday, July 26, 2001 10:00 PM


> From: "Roy T. Fielding" <fi...@ebuilt.com>
> Sent: Thursday, July 26, 2001 9:32 PM
> 
> 
> > We might trip over this one at some point, so I figured it is worth
> > placing in the archive.
> 
> Bill Stoddard's efforts have been in exactly the _opposite_ direction :-)
> Our aim is to reuse the socket, rather than a fast-disconnect and close.

I stand corrected... we do accept the APR_SENDFILE_DISCONNECT_SOCKET option,
and we do slam that closed on c->keepalive in the core.  Actually, we go a
step further and TF_REUSE_SOCKET, which is sort of known not to really be
well supported.


Re: RE: [e2e] Windows NT implementation of TCP

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
From: "Roy T. Fielding" <fi...@ebuilt.com>
Sent: Thursday, July 26, 2001 9:32 PM


> We might trip over this one at some point, so I figured it is worth
> placing in the archive.

Bill Stoddard's efforts have been in exactly the _opposite_ direction :-)
Our aim is to reuse the socket, rather than a fast-disconnect and close.

But worth noting, thank you for forwarding this, Roy!



----- Original Message ----- 
From: "Christian Huitema" <hu...@windows.microsoft.com>
To: "Christian Huitema" <HU...@windows.microsoft.com>; "Sally Floyd" <fl...@aciri.org>; "Tan Koan-Sin" <fr...@csie.nctu.edu.tw>
Cc: <en...@postel.org>
Sent: Thursday, July 26, 2001 2:40 PM
Subject: RE: [e2e] Windows NT implementation of TCP 


> Last Monday, I sent a message announcing that a specific bug was fixed
> in Windows 2000 since SP1, and I was wrong:
> 
> > > While it it true that Windows NT and Windows 2000 both implement
> > > Fast Retransmit, in many cases, due to a bug in the implementation,
> > > Fast Retransmit is never invoked, and the TCP sender has to wait
> > > for a Retransmit Timeout to retransmit a lost packet.  This is
> > > discussed in more detail in the TBIT paper by Padhye and Floyd,
> > > available from "http://www.aciri.org/tbit/".
> > 
> > The bug occurred in Windows 2000, and has been fixed in the Service
> > Pack 1 issued in July 2000. The bug does not affect NT4 or XP, or any
> > version of W2K SP1 or greater.
> 
> It turns out that I had a "communication failure" with the developers in
> charge of correcting the said bug, which is not fixed in either W2K SP1
> or SP2. I am also told that it will be fixed shortly. 
> 
> To reproduce the bug (for those who care) you have to use a Microsoft
> specific socket command, "TransmitFile()" and you have to set the
> "TF_DISCONNECT" parameter to request an automatic disconnect at the end
> of the file transmission.
> 
> -- Christian Huitema 
>