[tcpm] Nagle Algorithm and Delayed ACKs
Thomas Narten <narten@us.ibm.com> Fri, 24 July 2009 19:53 UTC
Return-Path: <narten@us.ibm.com>
X-Original-To: tcpm@core3.amsl.com
Delivered-To: tcpm@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C08AA3A69A7 for <tcpm@core3.amsl.com>; Fri, 24 Jul 2009 12:53:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.599
X-Spam-Level:
X-Spam-Status: No, score=-6.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5cRSh2daqQsT for <tcpm@core3.amsl.com>; Fri, 24 Jul 2009 12:53:58 -0700 (PDT)
Received: from e3.ny.us.ibm.com (e3.ny.us.ibm.com [32.97.182.143]) by core3.amsl.com (Postfix) with ESMTP id 5B8D33A67E4 for <tcpm@ietf.org>; Fri, 24 Jul 2009 12:53:32 -0700 (PDT)
Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e3.ny.us.ibm.com (8.13.1/8.13.1) with ESMTP id n6OJkXnK007575 for <tcpm@ietf.org>; Fri, 24 Jul 2009 15:46:33 -0400
Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id n6OJqRf8258256 for <tcpm@ietf.org>; Fri, 24 Jul 2009 15:52:27 -0400
Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n6OJqQXh030584 for <tcpm@ietf.org>; Fri, 24 Jul 2009 15:52:26 -0400
Received: from cichlid.raleigh.ibm.com (sig-9-65-207-1.mts.ibm.com [9.65.207.1]) by d01av01.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id n6OJqPnN030447 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <tcpm@ietf.org>; Fri, 24 Jul 2009 15:52:26 -0400
Received: from cichlid (localhost [127.0.0.1]) by cichlid.raleigh.ibm.com (8.14.3/8.12.5) with ESMTP id n6OJqMVZ006081 for <tcpm@ietf.org>; Fri, 24 Jul 2009 15:52:24 -0400
Message-Id: <200907241952.n6OJqMVZ006081@cichlid.raleigh.ibm.com>
To: tcpm@ietf.org
Date: Fri, 24 Jul 2009 15:52:22 -0400
From: Thomas Narten <narten@us.ibm.com>
Subject: [tcpm] Nagle Algorithm and Delayed ACKs
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/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: Fri, 24 Jul 2009 19:53:59 -0000
It has been long known that the Nagle Algorithm and Delayed ACKs combine in ways that can be problematic. Googling around, I found Stewart Chesire's writeup (http://www.stuartcheshire.org/papers/NagleDelayedAck/) as well as an ancient (!) ID from Greg Minshall (http://lists.w3.org/Archives/Public/ietf-discuss/1998Dec/0025.html) The TCP_NODELAY socket option can be used to turn off the Nagle Algorithm, but applications have to know to enable it -- which they often don't know, until after they've run into problems and traced them down to the specific problem. This can be a long and expensive process (e.g., involve help desk calls). What is the current thinking on this problem? Am I right in assuming that: - the Nagle Algorithm is still a SHOULD to implement - Delayed ACKs are also a SHOULD to implement? - Most everyone provides a TCP_NODELAY type socket option? Is that all there is to it? Is this considered good enough? Have there not been in any attempts over the last ten years to update the above recommendations to make them work together better without an application needing to set the TCP_NODELAY option, in those cases where it matters? Thomas
- [tcpm] Nagle Algorithm and Delayed ACKs Thomas Narten
- Re: [tcpm] Nagle Algorithm and Delayed ACKs Michael Tüxen
- Re: [tcpm] Nagle Algorithm and Delayed ACKs Carsten Bormann