Re: [tcpm] draft-minshall-nagle

Wesley Eddy <wes@mti-systems.com> Wed, 04 June 2014 03:21 UTC

Return-Path: <wes@mti-systems.com>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 322901A01CA for <tcpm@ietfa.amsl.com>; Tue, 3 Jun 2014 20:21:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VzhtVDJDoED1 for <tcpm@ietfa.amsl.com>; Tue, 3 Jun 2014 20:21:04 -0700 (PDT)
Received: from atl4mhob10.myregisteredsite.com (atl4mhob10.myregisteredsite.com [209.17.115.48]) by ietfa.amsl.com (Postfix) with ESMTP id 4479B1A01CB for <tcpm@ietf.org>; Tue, 3 Jun 2014 20:21:04 -0700 (PDT)
Received: from mailpod.hostingplatform.com ([10.30.71.210]) by atl4mhob10.myregisteredsite.com (8.14.4/8.14.4) with ESMTP id s543KuIx022628 for <tcpm@ietf.org>; Tue, 3 Jun 2014 23:20:56 -0400
Received: (qmail 4571 invoked by uid 0); 4 Jun 2014 03:20:56 -0000
X-TCPREMOTEIP: 69.81.143.143
X-Authenticated-UID: wes@mti-systems.com
Received: from unknown (HELO ?192.168.1.108?) (wes@mti-systems.com@69.81.143.143) by 0 with ESMTPA; 4 Jun 2014 03:20:56 -0000
Message-ID: <538E9094.4020205@mti-systems.com>
Date: Tue, 03 Jun 2014 23:20:52 -0400
From: Wesley Eddy <wes@mti-systems.com>
Organization: MTI Systems
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0
MIME-Version: 1.0
To: Joe Touch <touch@isi.edu>, Neal Cardwell <ncardwell@google.com>
References: <538D2BCC.8030906@mti-systems.com> <538DE3EA.2030104@isi.edu> <CADVnQy=Jmi10aFiSr1vnziY5bDNBv_W4+qhSkwMEiS4hSsRTkQ@mail.gmail.com> <538E00D9.4030802@isi.edu>
In-Reply-To: <538E00D9.4030802@isi.edu>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/tcpm/qQ_J0MLFMrYfftYExlWZPvDM_2o
Cc: "tcpm@ietf.org" <tcpm@ietf.org>
Subject: Re: [tcpm] draft-minshall-nagle
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 04 Jun 2014 03:21:06 -0000

On 6/3/2014 1:07 PM, Joe Touch wrote:
> 
> 
> On 6/3/2014 8:15 AM, Neal Cardwell wrote:
>> On Tue, Jun 3, 2014 at 11:04 AM, Joe Touch <touch@isi.edu> wrote:
>>> Hi, Wes,
>>>
>>> Although I don't recall this and only scanned it briefly, I don't quite
>>> understand the problem.
>>>
>>> I thought it was widely known that Nagle was useful for single-character
>>> interactive traffic, but also widely known as something that should be
>>> disabled for any multi-character interactive traffic - including
>>> multi-character encodings, HTTP, etc.
>>>
>>> If Nagle is off - as it should be for interactive web traffic - then the
>>> optimizations in this draft won't have any impact.
>>>
>>> So what kind of traffic does this actually help? Or is this an
>>> optimization
>>> of a path that either isn't or shouldn't be used?
>>
>>
>> The Minshall algorithm is a nice win for some workloads other than web
>> traffic:
>>
>>    Application performance pitfalls and TCP's Nagle algorithm
>>    http://dl.acm.org/citation.cfm?id=346012
> 
> My point is that even by the time of this paper, it was well-understood
> that Nagle should not be used in these environments. The paper cites
> 1999 personal communication with Jim Gettys for this, but it was
> well-known long before it was recited as an issue in this 1996 paper:
> http://ccr.sigcomm.org/archive/1997/apr97/ccr-9704-heidemann.pdf


Even before that!  RFC 1122 (from 1989) says:

   Some applications (e.g., real-time display window
   updates) require that the Nagle algorithm be turned
   off, so small data segments can be streamed out at the
   maximum rate.


> The use case cited is quite dated - network news has been largely
> abandoned. Is there a currently relevant use case for this approach, and
> given that interactive apps already should be disabling Nagle, how much
> will it help?
> 


I agree that disabling Nagle for "interactive" flows should be a
recognized best current practice.  (assuming they're aiming for
a packets/segments per second rate that isn't absurd)

I think this would be a part of the "TCP Usage Guidelines"
analogue to RFC 5405 (for UDP) that Lars once thought about.

Since Nagle is on by default in many OSes, and deciding to turn
it off means a developer has to know what it is, and that it's
even there to be turned off, the Minshall tweak to Nagle does
seem to make it "more friendly" default to a diversity of
application behaviors (small writes, or odd patterns of writes),
while retaining the benefit of conserving packet count.

I've noticed some people seem to have a tendency to disable Nagle
automatically, whether or not that's really necessary, since
maybe it bit them once in the distant past, and was difficult to
debug or understand.  The Minshall flavor stands a better chance
of not indoctrinating people against Nagle this way.

That said, this is not a burning problem.

-- 
Wes Eddy
MTI Systems