[tcpm] Delayed ACKs vs. Nagle (was: RE: [aqm] TCP ACK Suppression)

"Scharf, Michael (Michael)" <michael.scharf@alcatel-lucent.com> Sun, 11 October 2015 14:41 UTC

Return-Path: <michael.scharf@alcatel-lucent.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 3CB071A8A68 for <tcpm@ietfa.amsl.com>; Sun, 11 Oct 2015 07:41:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.909
X-Spam-Level:
X-Spam-Status: No, score=-6.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, T_RP_MATCHES_RCVD=-0.01] 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 8DwTtRwmWbIK for <tcpm@ietfa.amsl.com>; Sun, 11 Oct 2015 07:41:24 -0700 (PDT)
Received: from smtp-fr.alcatel-lucent.com (fr-hpgre-esg-01.alcatel-lucent.com [135.245.210.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1762E1A8A67 for <tcpm@ietf.org>; Sun, 11 Oct 2015 07:41:23 -0700 (PDT)
Received: from fr711usmtp1.zeu.alcatel-lucent.com (unknown [135.239.2.122]) by Websense Email Security Gateway with ESMTPS id 66F305114BA96; Sun, 11 Oct 2015 14:41:18 +0000 (GMT)
Received: from FR711WXCHHUB01.zeu.alcatel-lucent.com (fr711wxchhub01.zeu.alcatel-lucent.com [135.239.2.111]) by fr711usmtp1.zeu.alcatel-lucent.com (GMO) with ESMTP id t9BEfKjG010315 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Sun, 11 Oct 2015 16:41:20 +0200
Received: from FR712WXCHMBA15.zeu.alcatel-lucent.com ([169.254.7.114]) by FR711WXCHHUB01.zeu.alcatel-lucent.com ([135.239.2.111]) with mapi id 14.03.0195.001; Sun, 11 Oct 2015 16:41:20 +0200
From: "Scharf, Michael (Michael)" <michael.scharf@alcatel-lucent.com>
To: Yuchung Cheng <ycheng@google.com>, Praveen Balasubramanian <pravb@microsoft.com>, Wesley Eddy <wes@mti-systems.com>
Thread-Topic: Delayed ACKs vs. Nagle (was: RE: [tcpm] [aqm] TCP ACK Suppression)
Thread-Index: AQHRBDLkoeCMEiaauUmhCORc+sdhww==
Date: Sun, 11 Oct 2015 14:41:20 +0000
Message-ID: <655C07320163294895BBADA28372AF5D484FFC3F@FR712WXCHMBA15.zeu.alcatel-lucent.com>
References: <alpine.DEB.2.02.1510060748480.8750@uplift.swm.pp.se> <D2394BB6.548C5%g.white@cablelabs.com> <0A452E1DADEF254C9A7AC1969B8781284A7D9B66@FR712WXCHMBA13.zeu.alcatel-lucent.com> <5616DCD9.8@isi.edu> <alpine.DEB.2.02.1510081428470.3852@nftneq.ynat.uz> <CAK6E8=ePXkK4-=As2QQJCZjOyK7-NvC2njiYrsLzGEsqqFDJxg@mail.gmail.com> <655C07320163294895BBADA28372AF5D484FCA01@FR712WXCHMBA15.zeu.alcatel-lucent.com> <5617C4BF.6040504@mti-systems.com> <655C07320163294895BBADA28372AF5D484FD4EA@FR712WXCHMBA15.zeu.alcatel-lucent.com> <96FC85CD93C14C7FADC014391BAFE03E@srichardlxp2> <BN1PR03MB008B0DCB234493AD83A6695B6340@BN1PR03MB008.namprd03.prod.outlook.com> <CAK6E8=cMQG2YMtJKkOD0tR=tjtdiBs9KNe9qnkRCXr+PLonD7A@mail.gmail.com>
In-Reply-To: <CAK6E8=cMQG2YMtJKkOD0tR=tjtdiBs9KNe9qnkRCXr+PLonD7A@mail.gmail.com>
Accept-Language: de-DE, en-US
Content-Language: de-DE
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [135.239.27.40]
Content-Type: multipart/alternative; boundary="_000_655C07320163294895BBADA28372AF5D484FFC3FFR712WXCHMBA15z_"
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/tcpm/keMSbDDao2MHURU4PhU9OSMz_MA>
Cc: "tcpm@ietf.org" <tcpm@ietf.org>
Subject: [tcpm] Delayed ACKs vs. Nagle (was: RE: [aqm] TCP ACK Suppression)
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 11 Oct 2015 14:41:28 -0000

As far as I recall (Wes can correct me if I am wrong) we have an open issue in 793bis regarding that issue.

See draft-ietf-tcpm-rfc793bis-01 Section 4:

   11.  look at possible mention of draft-minshall-nagle (e.g. as in
        Linux)

The challenge is that for 793bis we would need a Proposed Standard RFC specifying how to sort out this interaction, unless we extend the scope of 793bis beyond what we agreed upon (i.e., only clarification, no protocol changes).

I have personally never looked at how that logic is actually implemented in different stacks, and I actually don’t know if there has ever been community consensus on how the exact solution to that interaction should look like.

But if we have a gap to what is widely implemented, and if it was realistic to publish a PS RFC before completing 793bis (I guess it could be a 2-page RFC), I’d argue in favor of a “fast track” PS publication. (Well, with ‘fast’ being relative to our normal PS publication speed.)

Michael


From: Yuchung Cheng [mailto:ycheng@google.com]
Sent: Saturday, October 10, 2015 2:19 AM
To: Praveen Balasubramanian
Cc: Richard Scheffenegger; Scharf, Michael (Michael); Wesley Eddy; Joe Touch; LAUTENSCHLAEGER, Wolfram (Wolfram); David Lang; tcpm@ietf.org
Subject: Re: [tcpm] [aqm] TCP ACK Suppression



On Fri, Oct 9, 2015 at 4:25 PM, Praveen Balasubramanian <pravb@microsoft.com<mailto:pravb@microsoft.com>> wrote:
Agreed that delayed ACK timeout should be a function of RTT than a hardcoded value. Windows 8 onwards this is the behavior for high latency connections. Windows Server uses a 1 msec delayed ACK timeout for low latency (datacenter) connections.

And while we are on the topic of delayed ACKs, the bad interaction between Nagling and delayed ACKs is well known. John Nagle's comment in HN which suggests a per connection logic to throttle delayed ACKs:
"If you're going to do that, it's a good time to fix delayed ACK as well. As is well known, the interaction between delayed ACKs and the Nagle algorithm is awful. This is a historical accident; I implemented one, the Berkeley guys implemented the other, and by the time I found out I was out of networking and involved with a small startup called Autodesk. So that never got fixed. Here's how to think about that. A delayed ACK is a bet. You're betting that there will be a reply, upon with an ACK can be piggybacked, before the fixed timer runs out. If the fixed timer runs out, and you have to send an ACK as a separate message, you lost the bet. Current TCP implementations will happily lose that bet forever without turning off the ACK delay. That's just wrong. The right answer is to track wins and losses on delayed and non-delayed ACKs. Don't turn on ACK delay unless you're sending a lot of non-delayed ACKs closely followed by packets on which the ACK could have been piggybacked. Turn it off when a delayed ACK has to be sent."
Well .. Mr. Nagle will be glad to learn that Linux has implemented his (or similar) idea for years. It's called QUICK_ACK. The decision window is a bit short and can use some tuning. But it is not "never" fixed.

Agree on that 500ms is ridiculous.


-----Original Message-----
From: tcpm [mailto:tcpm-bounces@ietf.org<mailto:tcpm-bounces@ietf.org>] On Behalf Of Richard Scheffenegger
Sent: Friday, October 9, 2015 3:53 PM
To: Scharf, Michael (Michael) <michael.scharf@alcatel-lucent.com<mailto:michael.scharf@alcatel-lucent.com>>; Wesley Eddy <wes@mti-systems.com<mailto:wes@mti-systems.com>>; Joe Touch <touch@isi.edu<mailto:touch@isi.edu>>
Cc: LAUTENSCHLAEGER, Wolfram (Wolfram) <wolfram.lautenschlaeger@alcatel-lucent.com<mailto:wolfram.lautenschlaeger@alcatel-lucent.com>>; tcpm@ietf.org<mailto:tcpm@ietf.org>; David Lang <david@lang.hm<mailto:david@lang.hm>>
Subject: Re: [tcpm] [aqm] TCP ACK Suppression

This might also be an opportunity to go more into the reasoning for the 500ms maximum...

Many implementations interpret  "the delay MUST be less than 0.5 seconds" to trigger the delayed ACK timer at 500ms (with this time a fixed, compile-time
value) - while it has been shown, that making that dynamic (or a based on RTT and pps might be a more efficient approach (especially during loss at end-of-stream), depending on the environment [1].

[I thought to have read a recent paper on tuning the delayed ACK timer down to 1ms in datacenter environments, but cann't find that now].

Best regards,
  Richard




[1] Altman, Eitan, and Tania Jiménez. "Novel delayed ACK techniques for improving TCP performance in multihop wireless networks." Personal Wireless Communications. Springer Berlin Heidelberg, 2003.


----- Original Message -----
From: "Scharf, Michael (Michael)" <michael.scharf@alcatel-lucent.com<mailto:michael.scharf@alcatel-lucent.com>>
To: "Wesley Eddy" <wes@mti-systems.com<mailto:wes@mti-systems.com>>; "Joe Touch" <touch@isi.edu<mailto:touch@isi.edu>>
Cc: "LAUTENSCHLAEGER, Wolfram (Wolfram)"
<wolfram.lautenschlaeger@alcatel-lucent.com<mailto:wolfram.lautenschlaeger@alcatel-lucent.com>>; "Greg White"
<g.white@cablelabs.com<mailto:g.white@cablelabs.com>>; <tcpm@ietf.org<mailto:tcpm@ietf.org>>; "David Lang" <david@lang.hm<mailto:david@lang.hm>>
Sent: Friday, October 09, 2015 5:21 PM
Subject: Re: [tcpm] [aqm] TCP ACK Suppression


> Yes, I have realized today myself that 793bis lacks that section. I agree
> that ACK generation belongs into 793bis.
>
> 793bis actually may open an opportunity to rethink the exact wording that
> explains this SHOULD. Personally, I believe replacing this SHOULD is not
> an option for a bis document.
>
> But if deviations from that SHOULD are widely deployed in the meantime,
> 793bis could possibly comment on that. Also, having some informational
> reference could perhaps be an option.
>
> Michael
>
>
> -----Original Message-----
> From: Wesley Eddy [mailto:wes@mti-systems.com<mailto:wes@mti-systems.com>]
> Sent: Friday, October 09, 2015 3:45 PM
> To: Scharf, Michael (Michael); Joe Touch
> Cc: LAUTENSCHLAEGER, Wolfram (Wolfram); Greg White; tcpm@ietf.org<mailto:tcpm@ietf.org>; David
> Lang
> Subject: Re: [tcpm] [aqm] TCP ACK Suppression
>
> On 10/9/2015 5:21 AM, Scharf, Michael (Michael) wrote:
>> [Removing AQM, adding TCPM]
>>
>>
>>
>> Hi Joe,
>>
>>
>>
>> I don't find this text in RFC 793, but it is contained in RFC 2581,
>> which is obsolete by RFC 5681.
>>
>>
>
>
> To confuse matters further, there's also 1122 text with requirements
> language:
>
>            A TCP SHOULD implement a delayed ACK, but an ACK should not
>            be excessively delayed; in particular, the delay MUST be
>            less than 0.5 seconds, and in a stream of full-sized
>            segments there SHOULD be an ACK for at least every second
>            segment.
>
> This probably belongs in 793bis.  In my view, normative acknowledgement
> behavior belongs in the base spec rather than particular congestion
> control descriptions, since there may be more than CC that depends upon it
> or makes assumptions about it.
>
>
> --
> Wes Eddy
> MTI Systems
>
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org<mailto:tcpm@ietf.org>
> https://www.ietf.org/mailman/listinfo/tcpm
>

_______________________________________________
tcpm mailing list
tcpm@ietf.org<mailto:tcpm@ietf.org>
https://www.ietf.org/mailman/listinfo/tcpm

_______________________________________________
tcpm mailing list
tcpm@ietf.org<mailto:tcpm@ietf.org>
https://www.ietf.org/mailman/listinfo/tcpm