Re: [tcpm] Adoption of draft-zimmermann-tcpm-cubic?
"Zimmermann, Alexander" <Alexander.Zimmermann@netapp.com> Thu, 19 March 2015 16:06 UTC
Return-Path: <Alexander.Zimmermann@netapp.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 F23F71A1A32 for <tcpm@ietfa.amsl.com>; Thu, 19 Mar 2015 09:06:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.911
X-Spam-Level:
X-Spam-Status: No, score=-6.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, 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 IBPLOTUA_MvH for <tcpm@ietfa.amsl.com>; Thu, 19 Mar 2015 09:06:53 -0700 (PDT)
Received: from mx144.netapp.com (mx144.netapp.com [216.240.21.25]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6F7461A1A11 for <tcpm@ietf.org>; Thu, 19 Mar 2015 09:06:53 -0700 (PDT)
X-IronPort-AV: E=Sophos;i="5.11,430,1422950400"; d="asc'?scan'208";a="30691924"
Received: from hioexcmbx08-prd.hq.netapp.com ([10.122.105.41]) by mx144-out.netapp.com with ESMTP; 19 Mar 2015 09:01:30 -0700
Received: from HIOEXCMBX06-PRD.hq.netapp.com (10.122.105.39) by hioexcmbx08-prd.hq.netapp.com (10.122.105.41) with Microsoft SMTP Server (TLS) id 15.0.995.29; Thu, 19 Mar 2015 09:01:30 -0700
Received: from HIOEXCMBX06-PRD.hq.netapp.com ([::1]) by hioexcmbx06-prd.hq.netapp.com ([fe80::6036:353f:66f7:c599%21]) with mapi id 15.00.0995.031; Thu, 19 Mar 2015 09:01:30 -0700
From: "Zimmermann, Alexander" <Alexander.Zimmermann@netapp.com>
To: Neal Cardwell <ncardwell@google.com>
Thread-Topic: [tcpm] Adoption of draft-zimmermann-tcpm-cubic?
Thread-Index: AdBhYjpPZb+rJ+RBQHOjk5FmqEicXAAAbAKgAA8umAAAHz5ZAAAevjIA
Date: Thu, 19 Mar 2015 16:01:29 +0000
Message-ID: <A5B4400E-33D0-42DB-B2C1-AE9DA2C40481@netapp.com>
References: <ae97de90f83c460f8cfd0273f47611dd@hioexcmbx05-prd.hq.netapp.com> <655C07320163294895BBADA28372AF5D16C60F4D@FR712WXCHMBA15.zeu.alcatel-lucent.com> <2235E611-C0A1-42A9-9B00-D584FF3C8B3B@netapp.com> <CADVnQyk-hqAf_2VDTx841yTRO3SaLJNZpi3XmnQcyKgcQ4nAPA@mail.gmail.com>
In-Reply-To: <CADVnQyk-hqAf_2VDTx841yTRO3SaLJNZpi3XmnQcyKgcQ4nAPA@mail.gmail.com>
Accept-Language: de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.2070.6)
x-originating-ip: [10.120.60.36]
Content-Type: multipart/signed; boundary="Apple-Mail=_CB11BA13-DE59-4210-876E-830F22070C55"; protocol="application/pgp-signature"; micalg="pgp-sha1"
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/tcpm/HvKoHCyHX4gWqzfmyH8r2SqnCZg>
Cc: "tcpm-chairs@tools.ietf.org" <tcpm-chairs@tools.ietf.org>, Eric Dumazet <edumazet@google.com>, "tcpm@ietf.org" <tcpm@ietf.org>
Subject: Re: [tcpm] Adoption of draft-zimmermann-tcpm-cubic?
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: Thu, 19 Mar 2015 16:06:56 -0000
Hi Neal, thank you so some much for this email. Especially for the summary of the changes you folks did at Google! See inline. > Am 19.03.2015 um 02:20 schrieb Neal Cardwell <ncardwell@google.com>: > > On Wed, Mar 18, 2015 at 6:26 AM, Zimmermann, Alexander > <Alexander.Zimmermann@netapp.com> wrote: >> Hi Michael, >> >>> Am 18.03.2015 um 11:18 schrieb Scharf, Michael (Michael) <michael.scharf@alcatel-lucent.com>: >>> >>> My understanding is that TCPM recharting is still pending and IESG waits for potential feedback until March 23 [1]. >>> >>> The chairs are well aware of the strong support for draft-zimmermann-tcpm-cubic during IETF 91. >>> We plan to run a formal adoption call once our charter explicitly allows adoption in TCPM. > > Regarding draft-zimmermann-tcpm-cubic-00: > > https://tools.ietf.org/id/draft-zimmermann-tcpm-cubic-00.txt > > I support this draft. > > But I did want to note that our experience with CUBIC at Google shows > that (1) it's important to consider stretch ACKs, and (2) it's critical to > carefully consider the maximum rate of cwnd increase for CUBIC > in congestion avoidance. > > I would suggest the following small diffs to the draft: Ack. If you take a look at my CUBIC presentation at the last IETF (https://tools.ietf.org/agenda/91/slides/slides-91-tcpm-3.pdf), one goal of this exercise will be to incorporate all changes with made to the Linux code so far. You save me a lot of time to scan the code for changes and compare it again w/ the draft. Thanks! > > Where the draft says (in sections "3.3. Concave region" and "3.4. > Convex region"): > > In this region, cwnd MUST be incremented by (W(t+RTT) - cwnd)/cwnd > for each received ACK. > > I'd suggest the following new text in these two spots: > > In this region, cwnd MUST be incremented by > min((W(t+RTT) - cwnd)/cwnd, 1/2) > for each newly-acknowledged packet. > > Detailed rationale: > > (1) First is the issue of the treatment of "stretch ACKs" covering > more than 2 packets. The CUBIC paper and the Linux code through v3.18 > cap the de facto maximum rate of cwnd increase (in congestion > avoidance) at 1 packet for every alternate ACK. In Google's experience > with high-BDP paths with receiver hosts using receive > offload/aggregation mechanisms (LRO and GRO in Linux terminology), the > ACKs for up to 40 or more packets at a time caused this cap of "1 > packet for every alternate ACK" to result in cwnd increases that were > too slow, leading to underutilization. So our team at Google > contributed some changes in v3.19 that changed the rate of increase to > be expressed in terms of packets ACKed, rather than number of ACKs. > This approach allows full utilization even with receiver offload > mechanisms. We may also then recommend ABC for CUBIC when byte based stacks are used… > > (2) Second is the issue of the maximum rate of increase of cwnd. As it > stands, this document says in section "3.4. Convex region" that: > > In this region, cwnd MUST be incremented by (W(t+RTT) - cwnd)/cwnd > for each received ACK. > > There is similar language in section "3.3. Concave region". > > Since the rate of increase of a cubic function can be quite large, if > we take this language literally then in steep sections of the curve > this can require that the sender "MUST" increase cwnd by quite > a large amount. > > I am not sure what other CUBIC implementations do, but this does not > match the CUBIC paper or the Linux implementation. As mentioned above, > the CUBIC paper and the Linux code through v3.18 actually cap the de > facto maximum rate of cwnd increase (in congestion avoidance) at 1 > packet for every alternate ACK. > > In our recent experiments with using CUBIC for YouTube video traffic > using the revised, stretch-ACK-savvy CUBIC logic in Linux v3.19 we saw > retransmit rates double due to v3.19 allowing cwnd to increase by 1 > packet for every packet ACKed. > > So in Linux v4.0 we set a limit of increasing cwnd by at most 1 packet > for every 2 packets ACKed, which restored the retransmit rates to > their previous low levels. > > For reference: > > (1) Commits in Linux v3.19 to make CUBIC stretch-ACK-savvy: > > http://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=e73ebb0881ea5534ce606c1d71b4ac44db5c6930 > http://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=814d488c61260521b1b3cc97063700a5a6667c8f > http://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=9cd981dcf174d26805a032aefa791436da709bee > http://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=d6b1a8a92a1417f8859a6937d2e6ffe2dfab4e6d > > (2) Commits slated for Linux v4.0 to fix excessive cwnd growth in CUBIC: > > http://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=9949afa42be0b76f5832db112ce51bb6b35b2abb > http://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=d578e18ce93f5d33a7120fd57c453e22a4c0fc37 > > neal
- Re: [tcpm] Adoption of draft-zimmermann-tcpm-cubi… Zimmermann, Alexander
- Re: [tcpm] Adoption of draft-zimmermann-tcpm-cubi… Scharf, Michael (Michael)
- [tcpm] Adoption of draft-zimmermann-tcpm-cubic? Scheffenegger, Richard
- Re: [tcpm] Adoption of draft-zimmermann-tcpm-cubi… Neal Cardwell
- Re: [tcpm] Adoption of draft-zimmermann-tcpm-cubi… Zimmermann, Alexander