Re: [quicwg/base-drafts] Rewrite of RTT estimation section (#2592)

Martin Thomson <notifications@github.com> Tue, 09 April 2019 01:42 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 4D9E412024B for <quic-issues@ietfa.amsl.com>; Mon, 8 Apr 2019 18:42:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.001
X-Spam-Level:
X-Spam-Status: No, score=-8.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-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 dfUU-sNb6r1B for <quic-issues@ietfa.amsl.com>; Mon, 8 Apr 2019 18:41:59 -0700 (PDT)
Received: from out-6.smtp.github.com (out-6.smtp.github.com [192.30.252.197]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0DC58120243 for <quic-issues@ietf.org>; Mon, 8 Apr 2019 18:41:59 -0700 (PDT)
Date: Mon, 08 Apr 2019 18:41:58 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1554774118; bh=0g5cBxAoHz70GH/YJKXer23N5GmBN6v2WlSdxXw7kJ0=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=vFYYr+VAKDhXqBJYxXMJbzw/FNAvtrnq1x4Bvn9HUx/30FCEVS2rhKgzFGLJcJEOR xj4t1xJmrNVzgDvu1n2FMxs23ajaSEiyRH2/rCj2z0stsbxZIWm+ooEgUU6S9qrSTk T284NFCwnRGFamxtxiwACO84xmu9SXKvB2u1MvOQ=
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab01d6ebb436507eef2b729d5232480ebc7c86caff92cf0000000118c3ba6692a169ce19a545f4@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2592/review/224158497@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2592@github.com>
References: <quicwg/base-drafts/pull/2592@github.com>
Subject: Re: [quicwg/base-drafts] Rewrite of RTT estimation section (#2592)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5cabf866fc41_84f3fbc5bcd45b81836ab"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: martinthomson
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/sXw1wVihM_HeihpWTtcq8ruxw7I>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
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: Tue, 09 Apr 2019 01:42:02 -0000

martinthomson approved this pull request.

This is a big improvement over what we had.  Nice work.

> @@ -229,19 +229,23 @@ forward progress without relying on timeouts.
 ### Explicit Correction For Delayed Acknowledgements {#ack-delay}
 
 An endpoint measures the delay incurred between when a packet is received and
-when the corresponding acknowledgment is sent.  The endpoint encodes this host delay for
-the largest acknowledged packet in the Ack Delay field of an ACK frame (see
-Section 19.3 of {{QUIC-TRANSPORT}}).  This allows the receiver of the ACK to
-adjust for any host delays - importantly, for delayed acknowledgements - when
-estimating the path RTT.  Where possible, this delay can include the time that a
-packet was held in the OS kernel before being processed by a userspace QUIC
-stack.
+when the corresponding acknowledgment is sent.  The endpoint encodes this host
+delay for the largest acknowledged packet in the Ack Delay field of an ACK frame
+(see Section 19.3 of {{QUIC-TRANSPORT}}).  This allows the receiver of the ACK
+to adjust for any host delays - importantly, for delayed acknowledgements - when
+estimating the path RTT.  In certain deployments, a packet might be held in the
+OS kernel or elsewhere on the host before being processed by the QUIC
+stack. Where possible, an endpoint SHOULD include these delays when populating
+the Ack Delay field in an ACK frame.

Probably not for this change, but do we really want to encourage people to be estimating delays in the kernel?  Because it seems like the point of some of the other changes is to include that sort of delay in the RTT estimate.  What matters here is end-to-end delays - the time between when the packet was consumed and when the packet containing the ACK was sent out.  Yes, it's true that you get a bigger RTT estimate if you don't correct for delays in the kernel or NIC, but those are just another piece of the plumbing now.  If we fail to cover things like scheduling delays in the RTT estimate, we're just deluding ourselves about where the delays are.

>  
 An endpoint MUST NOT excessively delay acknowledgements of ack-eliciting
-packets. Specifically, an endpoint is expected to enforce a maximum delay to
+packets.  Specifically, an endpoint is expected to enforce a maximum delay to
 avoid causing spurious timeouts at the peer.  The maximum ack delay is

The text doesn't say what delay is being "enforced".  Maybe:

>[...] an endpoint is expected to send acknowledgments within its advertised delay to avoid causing spurious timeouts at its peer.

But maybe you can remove this sentence now that the "contract" text is here.


>  if (min_rtt + ack_delay < latest_rtt):
-  latest_rtt = latest_rtt - ack_delay
-smoothed_rtt = 7/8 * smoothed_rtt + 1/8 * latest_rtt
-rttvar_sample = abs(smoothed_rtt - latest_rtt)
+  corrected_rtt = latest_rtt - ack_delay

Maybe `adjusted_rtt` instead.  "Corrected" implies that there is some notion of "correctness" that applies.

-- 
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/pull/2592#pullrequestreview-224158497