on packet number echo

"Brian Trammell (IETF)" <ietf@trammell.ch> Tue, 14 March 2017 14:46 UTC

Return-Path: <ietf@trammell.ch>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2A626120263 for <quic@ietfa.amsl.com>; Tue, 14 Mar 2017 07:46:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7] autolearn=ham autolearn_force=no
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 M5g5jfG5cGE6 for <quic@ietfa.amsl.com>; Tue, 14 Mar 2017 07:46:34 -0700 (PDT)
Received: from gozo.iway.ch (gozo.iway.ch [IPv6:2001:8e0:40:325::36]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C865A131C2A for <quic@ietf.org>; Tue, 14 Mar 2017 07:46:33 -0700 (PDT)
Received: from gozo.iway.ch (localhost [127.0.0.1]) by localhost (Postfix) with ESMTP id BD480340E95 for <quic@ietf.org>; Tue, 14 Mar 2017 15:46:31 +0100 (CET)
Received: from localhost (localhost [127.0.0.1]) by localhost (ACF/22542.11908); Tue, 14 Mar 2017 15:46:31 +0100 (CET)
Received: from switchplus-mail.ch (switchplus-mail.ch [212.25.8.236]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by gozo.iway.ch (Postfix) with ESMTPS for <quic@ietf.org>; Tue, 14 Mar 2017 15:46:31 +0100 (CET)
Received: from [94.247.222.80] (account ietf@trammell.ch HELO [10.11.33.5]) by switchplus-mail.ch (CommuniGate Pro SMTP 6.1.14) with ESMTPSA id 11399777 for quic@ietf.org; Tue, 14 Mar 2017 15:46:31 +0100
From: "Brian Trammell (IETF)" <ietf@trammell.ch>
X-Pgp-Agent: GPGMail
Content-Type: multipart/signed; boundary="Apple-Mail=_3DF37EED-C617-4336-BE9A-3FDC829DF50B"; protocol="application/pgp-signature"; micalg="pgp-sha512"
Subject: on packet number echo
Date: Tue, 14 Mar 2017 15:46:30 +0100
Message-Id: <CD1C0795-963A-4C4B-A0E7-A5FA6CF52444@trammell.ch>
To: IETF QUIC WG <quic@ietf.org>
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
X-Mailer: Apple Mail (2.3124)
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/nfNu-oDNwssj0-snQlUCv8xH-2c>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Mar 2017 14:46:36 -0000

Greetings, all,

for those not watching github, there's a discussion on packet number echo; my summary post in PR#391 is reproduced below:

to summarize... there seem to be three possibilities emerging here:

### Echo (at least) once per RTT. Leave ACK frames unchanged.

(This is what's written up in this PR).

Rationale: What happens in the frame layer stays in the frame layer. Packet number echo is a pure packet-layer change to the transport protocol. Since this is additional overhead, we should work to minimize it, hence once per RTT, the minimum frequency that works for passive latency measurement.

Upsides: It's a tiny change to the protocol as presently described, for a low overhead cost per RTT (1-4 bytes, usually 2). The ACK frame remains self-describing, so the ack frame handling component in an implementation can remain separate from the packet handling component. Endpoints can choose to echo more frequently (e.g., when configured to do so for debugging purposes).

Downsides: an echoing endpoint with a passively-cooperative peer can intentionally skew passive measurements, since the value in the packet header is not necessarily joined to the value in the ack frame. The utility and practicality of such a thing is debatable. It's not clear how good the resulting number/echo stream will be for one-point loss and reordering estimation.

### Echo max-acked on every packet with an ACK frame, and remove it from the ack frame.

Rationale: This information already appears in the ACK layer, so there's no additional overhead.

Upsides: Echo frequency is higher; this should make loss and reordering estimation work better at a single observation point.  No additional overhead.

Downsides: Increased complexity of implementations, which have to pass packet number echo information up the stack. No endpoint control over how often packet numbers are echoed, since max-ack is required by the transport mechanisms.

Mixedsides (depending on your proclivities): The presence of an ACK frame is now exposed to the path. ACK-frame-containing packets can (and given the history of TCP, probably will) be treated differently by the network in certain circumstances.

### Don't echo packet numbers at all

(this is the no-build option)



Cheers,

Brian