Re: [quicwg/base-drafts] add draft-ietf-quic-spin-exp (#1286)

Martin Thomson <notifications@github.com> Wed, 11 April 2018 21:24 UTC

Return-Path: <bounces+848413-a050-quic-issues=ietf.org@sgmail.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 C651012EBAB for <quic-issues@ietfa.amsl.com>; Wed, 11 Apr 2018 14:24:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level:
X-Spam-Status: No, score=-3.01 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, MAILING_LIST_MULTI=-1, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01] 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 W-JEj1WH_9Zr for <quic-issues@ietfa.amsl.com>; Wed, 11 Apr 2018 14:24:37 -0700 (PDT)
Received: from o10.sgmail.github.com (o10.sgmail.github.com [167.89.101.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D9EB112D93F for <quic-issues@ietf.org>; Wed, 11 Apr 2018 14:24:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=github.com; h=from:reply-to:to:cc:in-reply-to:references:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe; s=s20150108; bh=XvlKNB49EOPBOq4yZAokkgLeYh4=; b=C6jtMCO7wwO1wB8q cv367Nmutox6zBPhhv4c6wdL92OD62VjCQ4aHiO6ZLOtN6DWsWVQevIIA1zVHE3f dFXhwp4Sv8r9up2pl1nyDaGehbZb5WyTrrCqYDVPRs4O8bkIktN4g1ifL7lVv2Xy xUEL34fu2CD7Mner3Xs9+qtIxtg=
Received: by filter0581p1las1.sendgrid.net with SMTP id filter0581p1las1-18502-5ACE7CF5-1E 2018-04-11 21:24:05.81231701 +0000 UTC
Received: from smtp.github.com (out-3.smtp.github.com [192.30.252.194]) by ismtpd0003p1iad1.sendgrid.net (SG) with ESMTP id pXfjycDhSXOUo3UA6PTKfA for <quic-issues@ietf.org>; Wed, 11 Apr 2018 21:24:05.662 +0000 (UTC)
Date: Wed, 11 Apr 2018 21:24:05 +0000
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abdb0bfda374af99b8f3e3ededba3c63a349a40c8192cf0000000116e63ef592a169ce12ab1d25@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/1286/review/111383402@github.com>
In-Reply-To: <quicwg/base-drafts/pull/1286@github.com>
References: <quicwg/base-drafts/pull/1286@github.com>
Subject: Re: [quicwg/base-drafts] add draft-ietf-quic-spin-exp (#1286)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5ace7cf5843b6_49672b08d2466ecc23735d"; 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
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak2ziotMOARPNwH9ml3FoF3dVKDNKXl6ZR427C Kb8zvO5leY5NOK88KGqY/2RbWfQ6m3Le4LseR9dHfQV5sPistcO2pm3ZMq+iSVnbSNA0rLuIufS1kD jDouS+en++zfZ0byVnBV7jCdV5FjOd47ZfYdWDvwozYtMDMCXeKdMI1lha3zGbC4Aci17Uv/YZpI1w w=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/ZfDgpRyGsxMiL0uHjZMJ4vpsH_Y>
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: Wed, 11 Apr 2018 21:24:43 -0000

martinthomson approved this pull request.

This looks pretty good  I have a bunch of nits and cleanup notes, but I don't think that those need to be addressed before merging.

> ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+~~~~~
+{: #fig-short-header title="Short Header Format including proposed Spin Bit"}
+
+S: The Spin bit is set 0 or 1 depending on the stored spin value that is
+updated on packet reception as explained in {{spinbit}}.
+
+## Setting the Spin Bit on Outgoing Packets {#spinbit}
+
+Each endpoint, client and server, maintains a spin value, 0 or 1, for each
+QUIC connection, and sets the spin bit in the short header to the currently
+stored value when a packet with a short header is sent out. The spin value is
+initialized to 0 on both side, at the client as well as the server at
+connection start. Each endpoint also remembers the highest packet number seen
+from its peer on the connection. The spin value is then determined at each

I'd break a new paragraph after this period.

> +{: #fig-short-header title="Short Header Format including proposed Spin Bit"}
+
+S: The Spin bit is set 0 or 1 depending on the stored spin value that is
+updated on packet reception as explained in {{spinbit}}.
+
+## Setting the Spin Bit on Outgoing Packets {#spinbit}
+
+Each endpoint, client and server, maintains a spin value, 0 or 1, for each
+QUIC connection, and sets the spin bit in the short header to the currently
+stored value when a packet with a short header is sent out. The spin value is
+initialized to 0 on both side, at the client as well as the server at
+connection start. Each endpoint also remembers the highest packet number seen
+from its peer on the connection. The spin value is then determined at each
+endpoint as follows:
+
+* When it receives a packet from the client, if that packet has a short header

"it" here could be "server" and then the next "by the server" can be removed.  Same below.

> +
+* When it receives a packet from the server, if the packet has a short header
+  and if it increments the highest packet number seen by the client from the
+  server, it sets the spin value to the opposite of the spin bit in the
+  received packet.
+
+This procedure will cause the spin bit to change value in each direction once
+per round trip. Observation points can estimate the network latency by
+observing these changes in the latency spin bit, as described in {{usage}}.
+See {{?SPIN-BIT=I-D.trammell-quic-spin}} for further illustration of this
+mechanism in action.
+
+## Resetting Spin Value State
+
+Each client and server resets it spin value to zero when sending the first
+packet in a given with a new Connection ID. This reduces the risk that

s/in a given/  I think that we have stopped German-casing "connection ID" as well.

> +
+# Using the Spin Bit for Passive RTT Measurement {#usage}
+
+When a QUIC flow sends data continuously, the latency spin bit in each
+direction changes value once per round-trip time (RTT). An on-path observer
+can observe the time difference between edges (changes from 1 to 0 or 0 to 1)
+in the spin bit signal in a single direction to measure one sample of
+end-to-end RTT.
+
+An observer can keep the largest observed packet number per flow, and reject
+edges that do not have a packet number that is larger than the last largest
+observed packet number.  This will detect spurious edges caused by reordering
+across an edge, which would lead to low RTT estimates, if not ignored.
+
+The packet number can be used to filter out high RTT estimates due to loss of
+an actual edge in a burst of lost packets. If the spin bit edge occurs after a

These are two different concepts and might benefit from being separated better (by the appropriate joining word, or by putting them in different paragraphs).

> +
+The packet number can be used to filter out high RTT estimates due to loss of
+an actual edge in a burst of lost packets. If the spin bit edge occurs after a
+long packet number gap, it should be rejected.
+
+Note that this measurement, as with passive RTT
+measurement for TCP, includes any transport protocol delay (e.g., delayed
+sending of acknowledgements) and/or application layer delay (e.g., waiting for
+a request to complete). It therefore provides devices on path a good
+instantaneous estimate of the RTT as experienced by the application. A simple
+linear smoothing or moving minimum filter can be applied to the stream of RTT
+information to get a more stable estimate.
+
+However, application-limited and flow-control-limited senders can have
+application and transport layer delay, respectively, that are much greater
+than network RTT. When the sender is application-limited and e.g. only sends

"For example, when a sender spends time on processing or other tasks, the value measured using the spin bit includes that time in addition to the network RTT."

> +Note that this measurement, as with passive RTT
+measurement for TCP, includes any transport protocol delay (e.g., delayed
+sending of acknowledgements) and/or application layer delay (e.g., waiting for
+a request to complete). It therefore provides devices on path a good
+instantaneous estimate of the RTT as experienced by the application. A simple
+linear smoothing or moving minimum filter can be applied to the stream of RTT
+information to get a more stable estimate.
+
+However, application-limited and flow-control-limited senders can have
+application and transport layer delay, respectively, that are much greater
+than network RTT. When the sender is application-limited and e.g. only sends
+small amount of periodic application traffic, where that period is longer than
+the RTT, measuring the spin bit provides information about the application
+period, not the network RTT. Simple heuristics based on the observed data rate
+per flow or changes in the RTT series can be used to reject bad RTT samples
+due to application or flow control limitation.

"Simple heuristics" suggests something that you might have something you could cite or write down.  If this is "apply whatever magic you deem appropriate and the techniques are diverse", then you might want to consider removing this sentence.

> +Specifically, this experimentation is intended to determine:
+
+- the impact of the addition of the latency spin bit on implementation and
+  specification complexity; and
+- the accuracy and value of the information derived from spin bit measurement
+  on live network traffic.
+
+The information generated by this experiment will be used by the QUIC working
+group as input to a decision about the standardization of the latency spin
+bit.
+
+This document describes a one-bit latency spin signal. A three-bit latency
+spin signal, which provides reordering, loss, and edge delay resistance even
+without cleartext packet numbers in the QUIC header, is described in
+{{?QUIC-SPIN=I-D.trammell-quic-spin}}; experimentation with this approach is
+also encouraged.

Not sure that we want to drag more bits into this.

> @@ -0,0 +1,247 @@
+---
+title: The QUIC Latency Spin Bit
+abbrev: QUIC Spin Bit
+docname: draft-ietf-quic-spin-exp-latest
+date:

Note for fixup, use `{DATE}`.

> +        ins: D. Gugelmann
+      -
+        ins: N. Brownlee
+    date: 2014-04
+
+
+--- abstract
+
+This document specifies the addition of a latency spin bit to the QUIC
+transport protocol and describes how to use it to measure end-to-end latency.
+
+--- middle
+
+# Introduction
+
+The QUIC transport protocol {{?QUIC-TRANS=I-D.ietf-quic-transport}} uses

Note for fixup: use definition of -transport citation from other drafts.

> +can be seen by on-path observers and used to estimate end-to-end latency,
+QUIC's wire image (see {{?WIRE-IMAGE=I-D.trammell-wire-image}}) currently does
+not expose any information that can be used for passive latency measurement
+techniques that rely on this information (e.g. {{CACM-TCP}}, {{TMA-QOF}}).
+
+This document adds an explicit signal
+for passive latency measurability to the QUIC short header: a "spin bit".
+Passive observation of the spin bit provides one RTT sample per RTT to passive
+observers of QUIC traffic. This document describes the mechanism, how it can
+be added to QUIC, and how it can be used by passive measurement facilities to
+generate RTT samples.
+
+## About This Document
+
+This document is maintained in the GitHub repository
+https://github.com/britram/draft-trammell-quic-spin, and the editor's copy is

Note for fixup: point to new location.

> +
+This document describes a one-bit latency spin signal. A three-bit latency
+spin signal, which provides reordering, loss, and edge delay resistance even
+without cleartext packet numbers in the QUIC header, is described in
+{{?QUIC-SPIN=I-D.trammell-quic-spin}}; experimentation with this approach is
+also encouraged.
+
+# IANA Considerations
+
+This document has no actions for IANA.
+
+# Security and Privacy Considerations
+
+The spin bit is intended to expose end-to-end RTT to observers along the path,
+so the privacy considerations for the latency spin bit are essentially the
+same as those for passive RTT measurement in general. However, it has been

Is there any work that could be cited here?

-- 
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/1286#pullrequestreview-111383402