[quicwg/base-drafts] Eliminating the fixed minimum RTO (#1017)

janaiyengar <notifications@github.com> Fri, 15 December 2017 19:55 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 60DEC124F57 for <quic-issues@ietfa.amsl.com>; Fri, 15 Dec 2017 11:55:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.5
X-Spam-Level:
X-Spam-Status: No, score=-6.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
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 y7XuFoF9V_p8 for <quic-issues@ietfa.amsl.com>; Fri, 15 Dec 2017 11:55:00 -0800 (PST)
Received: from github-smtp2a-ext-cp1-prd.iad.github.net (github-smtp2-ext8.iad.github.net [192.30.252.199]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6565F124D6C for <quic-issues@ietf.org>; Fri, 15 Dec 2017 11:55:00 -0800 (PST)
Date: Fri, 15 Dec 2017 11:54:59 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1513367699; bh=1gdKShN0n9KWDjIuHM/AH05iZQHrJSP5nsBFXaUEc2A=; h=From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=sHBFXoEi7HwJStpR2Msj+MY9TExW4LwY7qOzNDSU0XAOL3zGvfYdkhCvLCYGWGoK1 DkDpf0LLBAeFuOEeV9sFlsknZS3K90jhVfJcdACMAxnxvo6nmztfYAGji1/RCuPbam CbPmQ1fU3s8X9F/XcHT+WqeDSRx9mgKHUcWIcUkE=
From: janaiyengar <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab6a34ebbd1d6e313c0deed46388ed70801f0e0d3892cf00000001164bea9392a169ce10d715c1@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/1017@github.com>
Subject: [quicwg/base-drafts] Eliminating the fixed minimum RTO (#1017)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5a34289384cf3_177c3fd8522ecf38120283"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: janaiyengar
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/kPBM0O5SU9DhySHFeh32UcpWPSQ>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.22
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 15 Dec 2017 19:55:03 -0000

TL;DR: QUIC currently uses a minimum RTO of 200ms. Given that (i) the cost of a spurious RTO is substantially reduced in QUIC, (ii) we have the ability to track the receiver's delayed ack timeout as discussed in #981, and (iii) QUIC is strongly leaning towards being latency-sensitive, we should consider eliminating the fixed minimum RTO for QUIC in its RTO computations. Argument follows.

[RFC 6298](https://tools.ietf.org/html/rfc6298) for TCP conservatively uses a 1 second minimum RTO, and the QUIC recovery draft uses 200 ms since that's what Linux TCP does. A fixed minimum RTO is used in TCP (and by inheritance, in QUIC) to protect a sender from the cost of spurious RTOs. See [RFC 6298, rule 2.4 in section 2](https://tools.ietf.org/html/rfc6298#section-2): "Research suggests that a large minimum RTO is needed to keep TCP conservative and avoid spurious retransmissions [AP99]".

Spurious RTOs can occur due to several reasons, for instance (i) delayed ack timeout at the receiver is not always sampled in the RTT measurements, so minRTO provides protection at the sender, or (ii) the RTO computation uses EWMAs, which always lag, causing spurious RTOs when the underlying network RTT increases. 

AIUI, the primary reason to avoid spurious RTOs in RFC 6298 is the cost of an RTO firing, which hurts sender performance  by reducing the congestion window to 1 MSS. (There are secondary costs of additional load on the network, but that's not debilitating, since TLP demonstrates that this load is manageable.) 

QUIC's loss recovery does not suffer this problem because the sender handles spurious RTO detection as part of its loss recovery logic. Specifically, QUIC does not reduce the congestion window to 1 on an RTO, but reduces it if the RTO is verified to be real, when an ACK is received for the retransmission but not the transmission. Alternatively, if an ACK for an earlier packet is received after an RTO fires, the RTO is considered spurious and does not cause the sender to reduce its congestion window. See [Section 3.3.2 of the draft-ietf-quic-recovery]((https://quicwg.github.io/base-drafts/draft-ietf-quic-recovery.html#rfc.section.3.3.2)).

A minimum RTO potentially imposes a fixed latency cost on loss recovery and on detecting path failures. Additionally, a minimum RTO imposes a fixed wait time independent of the underlying network, which causes performance issues on networks with smaller RTTs (see the [MAD proposal for TCP](https://tools.ietf.org/html/draft-wang-tcpm-low-latency-opt))

Given that (i) the cost of a spurious RTO is substantially reduced in QUIC, (ii) we have the ability to track the receiver's delayed ack timeout as discussed in #981, and (iii) QUIC is strongly leaning towards being latency-sensitive, I propose that we consider removing the fixed minimum RTO for QUIC in its RTO computations.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1017