Re: ACK Frame Issues

Jana Iyengar <jri@google.com> Tue, 12 September 2017 23:53 UTC

Return-Path: <jri@google.com>
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 7B0B113318A for <quic@ietfa.amsl.com>; Tue, 12 Sep 2017 16:53:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 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_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 nR_Nfi6Pn0Ff for <quic@ietfa.amsl.com>; Tue, 12 Sep 2017 16:53:33 -0700 (PDT)
Received: from mail-pf0-x236.google.com (mail-pf0-x236.google.com [IPv6:2607:f8b0:400e:c00::236]) (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 11EDC1320C9 for <quic@ietf.org>; Tue, 12 Sep 2017 16:53:33 -0700 (PDT)
Received: by mail-pf0-x236.google.com with SMTP id q76so7377175pfq.2 for <quic@ietf.org>; Tue, 12 Sep 2017 16:53:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=zw39slNvjbXrY+A/ldkmKj/K/Fa3KAQyN+bANgph9l0=; b=cFtbOH4mpL3JwOJyRAkJ+LnmQA34pCiAYe+ngZ+TVO/k85XxqgZAjZcM0l7WsLxGzY SBKIG0OXZ1hgfGbFAA2wFx9nHE/vsnL7a3N8xwOZyBZ/+dLG3WblcJlpUqdMYkYj6+4u vrjnGqy2i8EHSCHAXv8voJK1gbPrj4LaiH7+TdbhfFPuCHQ0+4/cvJoKeaPVzc2RdR3u k9xgKjrXckdCOhEatBp5/zJ2YuaLiZVQdNaA+x96cHDMjjGHrbL0yJb9aMAyCWuwvbSF z30hRLALWB2W6GDypaYIVHzlLKNg13FcHAl1B8R/CEHBCs0bBNpQKMbip/AQBU2o6JOn PEAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=zw39slNvjbXrY+A/ldkmKj/K/Fa3KAQyN+bANgph9l0=; b=lJzdpn+Priad80MfmC0tKzeJKChoW3Id4bvXH+aTRK63lHSkPGAdRaJaCXfcUMWiTG IPB/FoItdaz1yPWdXqOT37WQP1tr8smlNZG6KjZvL38DKN7FgkJWESRPD7JBmXjWCq2c tVSionD8MgsYVnPZVKRgxws4R4zY+VYMdW1gilTJAX/CHjFW0ALjdUv5zuZQ0u2DgSQU b17PGfolLD8G7mgIDcxjDIDFLv6c4Jg+2njgsbTzUhpP6dcJweLzdqi+9LlLdu//t4FT Lh7D/gHkNUYonjCBrIBQOtavxksXfXEVE3ERgmjHxo4NCG4I88J40t6JenLmSDXawKPA KdGA==
X-Gm-Message-State: AHPjjUhodRp+X05X+bt5DzVIdoJ2Tpoehz9jCZ0SFVL8tsl4wIOZCOrm POZquyzsPDxLb/5q2gp+i3TzvUG3Inkcf79gxYehXwZRVVA=
X-Google-Smtp-Source: ADKCNb5VcVzgm7eyMsvE83VUSMEGtCpDEBI73/H6m9q/eZRt4O0bsdM902enIdjAWvk6F0ajuZyVYaKOwLn6+eDzgW0=
X-Received: by 10.99.104.196 with SMTP id d187mr16343851pgc.163.1505260411950; Tue, 12 Sep 2017 16:53:31 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.145.144 with HTTP; Tue, 12 Sep 2017 16:53:31 -0700 (PDT)
In-Reply-To: <5fafb10e-1421-537e-bf8a-5fdfdd19b439@huitema.net>
References: <CAM4esxQAyXmh2KOwQSrj-ihB0HCu07mOfjtJTY6yoYtQ4qMM5A@mail.gmail.com> <5fafb10e-1421-537e-bf8a-5fdfdd19b439@huitema.net>
From: Jana Iyengar <jri@google.com>
Date: Tue, 12 Sep 2017 16:53:31 -0700
Message-ID: <CAGD1bZYAiP_xh+RDpOnh9kLUi6WR6vg6cBt4kCzAyRSVapA=2Q@mail.gmail.com>
Subject: Re: ACK Frame Issues
To: Christian Huitema <huitema@huitema.net>
Cc: IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="94eb2c1404b226816e055906c083"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/oRYlViIh-KrUkWuCv-WXdsL9QH4>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
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, 12 Sep 2017 23:53:35 -0000

Related to point (2), I've filed #774
<https://github.com/quicwg/base-drafts/issues/774>.

On Wed, Sep 6, 2017 at 2:47 PM, Christian Huitema <huitema@huitema.net>
wrote:

>
>
> On 9/6/2017 2:25 PM, Martin Duke wrote:
>
> ...
>
> (1) *The spec sorely needs more normative text.*
>
> ...
>
> (b) There are four ways to treat acks in flight on which the spec is
> silent:
>     (i) Do not repeat them in subsequent acks
>     (ii) Repeat them only if they do not require additional ack blocks
>     (iii) Repeat them only if they require *neither *additional ack
> blocks nor longer block lengths.
>     (iv) Always repeat them until acked
> Offline, Jana suggested that (iv) is what Google does, but you'd never
> guess that. I settled on (ii), for what it's worth.
>
>
> Picoquic also does (vi). It provides redundancy, so if an ACK is lost the
> next ACK will still acknowledge the received packets.
>
> ...
>
> (e) The spec is unclear if timestamps are sorted in order of arrival or
> reverse order of arrival. At least it's unclear to me! BTW having to sort
> new arrivals in both packet number and arrival order is unpleasant.
>
>
> Picoquic does not attempt to sort arrivals, but maintain a SACK structure
> similar to the "SACK dashboard" specified in TCP.
>
>
> I don't think the spec should prohibit any of this behavior. However, some
> normative text might indicate to implementors that they don't really need
> to worry about some of this stuff.
>
> (2) *The relationship between timestamps and ack blocks needs a rethink*
>
> People are all over the map on this. On the implementer slack channel, a
> lot of people are totally ignoring timestamps and don't think they're
> useful. Jana seems to view as a purely advisory channel. On the other hand,
> as issue #698 points out, a received timestamp means the packet has
> arrived, and sending an ack block for it in the same frame seems redundant.
>
>
> Yes. That syntax is wrong, because it creates a potential conflict.
>
>
> Finally, timestamps are a report with a completely different syntax.
> *Especially* if they are advisory, I believe there is a strong case for
> just putting it in its own frame and eliminating some of the weird
> dependencies (see (c) above) between largest_acked and the timestamp fields.
>
>
> No. There would still be a conflict. For example, in Picoquic, receiving
> at ACK erases the data related to the acknowledged packet -- including the
> timestamps. If the proposed "timestamp frame" arrived after the ACK frame,
> its information would be ignored because the packet was already marked
> received and the data erased.
>
>
> Personally, I would recommend the following:
> (1) Move timestamps into a separate frame.
> (2) A host that receives a timestamp frame MUST interpret a timestamp for
> a packet as an acknowledgement for that packet. Packet recievers MAY omit
> ack blocks for packets for which a timestamp is in flight.
> (3) (possibly) make timestamps something negotiable (in each direction) at
> the start of a connection. For example, a host may only want timestamps
> from its peer if it is using delay-based congestion control.
>
>
> My preference would be to have exactly one time stamp per ACK,
> corresponding to the time at which the "largest acknowledged" packet was
> received, and expressed as microseconds since the beginning of the
> connection. 24 bits is probably OK, as long as the RTT is lower than 16
> sec. 32 bit would be fine for anything but inter-planetary communications.
>
> -- Christian Huitema
>
> --
> Christian Huitema
>
>