Re: Summary of responses so far and proposal moving forward[WasRe: [tcpm] Is this a problem?]

Ethan Blanton <> Tue, 27 November 2007 23:34 UTC

Return-path: <>
Received: from [] ( by with esmtp (Exim 4.43) id 1Ix9ws-0003jr-Kg; Tue, 27 Nov 2007 18:34:38 -0500
Received: from tcpm by with local (Exim 4.43) id 1Ix9wr-0003jl-Q9 for; Tue, 27 Nov 2007 18:34:37 -0500
Received: from [] ( by with esmtp (Exim 4.43) id 1Ix9wr-0003ja-F3 for; Tue, 27 Nov 2007 18:34:37 -0500
Received: from ([]) by with esmtp (Exim 4.43) id 1Ix9wq-0003N8-Sg for; Tue, 27 Nov 2007 18:34:37 -0500
Received: from [] ( by with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.68 (FreeBSD)) (envelope-from <>) id 1Ix9wk-0002jp-Dg for; Tue, 27 Nov 2007 23:34:36 +0000
Received: from colt.internal (colt []) by (Postfix) with ESMTP id 1186D2BE21 for <>; Tue, 27 Nov 2007 18:34:27 -0500 (EST)
Received: by colt.internal (Postfix, from userid 3000) id 417C02842B; Tue, 27 Nov 2007 18:34:27 -0500 (EST)
Date: Tue, 27 Nov 2007 18:34:27 -0500
From: Ethan Blanton <>
Subject: Re: Summary of responses so far and proposal moving forward[WasRe: [tcpm] Is this a problem?]
Message-ID: <>
References: <> <> <>
MIME-Version: 1.0
In-Reply-To: <>
X-GnuPG-Fingerprint: A290 14A8 C682 5C88 AE51 4787 AFD9 00F4 883C 1C14
User-Agent: Mutt/1.5.13 (2006-08-11)
X-Spam-Score: -102.6 (---------------------------------------------------)
X-Spam-Score: 0.0 (/)
X-Scan-Signature: f66b12316365a3fe519e75911daf28a8
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
Content-Type: multipart/mixed; boundary="===============1955261237=="

Mahesh Jethanandani spake unto us the following wisdom:
> RFC1122:
>            A TCP MAY keep its offered receive window closed
>            indefinitely.  As long as the receiving TCP continues to
>            send acknowledgments in response to the probe segments, the
>            sending TCP MUST allow the connection to stay open.
>            DISCUSSION:
>                 It is extremely important to remember that ACK
>                 (acknowledgment) segments that contain no data are not
>                 reliably transmitted by TCP.  If zero window probing is
>                 not supported, a connection may hang forever when an
>                 ACK segment that re-opens the window is lost.
> This tells me that the concern was with ACK's getting lost in the 
> network and that is why the need to keep the connection open. The point 
> we bring up in the draft is in the case the ACK's are being received 
> reliably then the need to keep the connection open just to make sure the 
> ACK has made it to the other end goes away. That is why the request to 
> change the language to say that *in case of reliable ACK*, TCP MAY tear 
> the connection down if it is not able to service existing or new 
> connections.

I hate to wade back into this, and this may be tangential to the
discussion at hand, but the reason for allowing TCP connections to
persist indefinitely is NOT because ACKs may be lost; it is because
applications may be busy indefinitely.  ACK loss is merely the reason
for continued ZWP.

> >As has already been stated, the issue is what should the OS do when it 
> >runs out of resources.  TCP implementations typically oversubscribe 
> >their resources, and run into problems when all the open connections 
> >try to use up all the resources that they've been told they can use.  
> >In this situation, the OS has to figure out some way to free up 
> >resources.  There may be some things it can do without killing 
> >connections (e.g., flush TCP resequencing queues), but usually that 
> >won't be sufficient if you have a runaway or malicious source that is 
> >causing the resource problem in the first place.  In this situation, 
> >anything the OS decides to do, including killing TCP connections, is 
> >at the discretion of the OS, and I don't that view as violating any 
> >RFC.  You're out of resources, you have to do something.  This is not 
> >a TCP protocol issue, it is an OS implementation issue.
> True. But it was caused by TCP's insistence on keeping the connection 
> open that causes the OS to even run out of resources, even if the reason 
> to keep the connection open (unreliable ACKs) may not be true.

Only in the *very specific* *corner case* that the open connections
are connections in PERSIST.  As best I can tell, you have noted
elsewhere that you have never even seen this in the wild; you ran your
own DoS with a homemade tool and called that the wild.  Again,
unreliable ACKs are NOT the reason to keep the connection open, you
misread or misunderstood 1122.

Your argument seems to dance around a lot, which makes it difficult to


The laws that forbid the carrying of arms are laws [that have no remedy
for evils].  They disarm only those who are neither inclined nor
determined to commit crimes.
		-- Cesare Beccaria, "On Crimes and Punishments", 1764
tcpm mailing list