Re: Unified ACK frame encoding

Martin Thomson <martin.thomson@gmail.com> Mon, 13 August 2018 06:29 UTC

Return-Path: <martin.thomson@gmail.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 9B295130E7A for <quic@ietfa.amsl.com>; Sun, 12 Aug 2018 23:29:55 -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, FREEMAIL_FROM=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=gmail.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 0WmrQWIywAVk for <quic@ietfa.amsl.com>; Sun, 12 Aug 2018 23:29:54 -0700 (PDT)
Received: from mail-oi0-x235.google.com (mail-oi0-x235.google.com [IPv6:2607:f8b0:4003:c06::235]) (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 EF716129385 for <quic@ietf.org>; Sun, 12 Aug 2018 23:29:53 -0700 (PDT)
Received: by mail-oi0-x235.google.com with SMTP id w126-v6so25384544oie.7 for <quic@ietf.org>; Sun, 12 Aug 2018 23:29:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=O/uSyyicYNuP4B1ebuYFOAZML6GnPVK9MgNr4ok1f5A=; b=u9PcWaqBAmOPjf7hAlwYttouZndISiQxRAjU0lfLWLcHh0g9lqqTw2Nbi4t/RvzTvw PWxGxm//pd040/3Cn+Jo3hkj69OR9znrsOhNlUECZ3sn+WAsdz7AeJGkuhYuHpRIk7y5 crbntEHXq4+0WVS086+HuNPnuR1N2pHp9D8WisAlZVn1AzF/48onU+nHlNTuCZ7A1xxL OSutvEevCK6Hhm7gBzOw8AJ9QHl2zGIyLwjpj4Raz5EEJgM39Fr16NXMjmSGQELl9/lD nbwqCieHR8UPSwdDstV6flu0MNWpDrskk9E/ErwUNTJGbwM0msNTutspJhis+twDn9y9 b89A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=O/uSyyicYNuP4B1ebuYFOAZML6GnPVK9MgNr4ok1f5A=; b=Ad2TK4F3mpqsglqKP3wAfgF280VhygPvfA7BDWjZzOGpt1iN839aXLTQ5nMWIEJPRd 2LkRMvZrH9k2no1A+jf45dx3bU8XHuaxad6OfDO8FU2S2HCw8eJYdtC85JNKnMWSFXAc 1CJxO8CaPU3tq5MpiNEcwpSz9iw4aB6iI46p3jYbFdS4EWXD8IzXq91vnLxXK5vpH1Om UcXOi3Ruj+YNeoy1LKyzLpIFqYJvRxiuVuL9e/7VzZ8nTEPxN53TAPFtC+ZtEwnECM+m Y6aZlFL0efoB3ADjpjBOvTPdBTHmW1gRzeWkS5cNuydvGbI7dzSaU363Wbm7GIN1cogB zkNw==
X-Gm-Message-State: AOUpUlHX6eNvSz7I2JYv4vFrtQ4F1ZGcHf9UEbwMQ5XRULHsxD9N4v2Q mbb9rW64MrEKSFJ63PSJK9Vy+4Jf+A7WWHRWJZA=
X-Google-Smtp-Source: AA+uWPzXzp1hqV2p4TXZOTfcb8N150mCWA+1jP7vhK0DL31ij5XFaJE3leVZpd+k09kfm7fxZDa73veiiM9tPMwW+gQ=
X-Received: by 2002:aca:df42:: with SMTP id w63-v6mr15977352oig.295.1534141793225; Sun, 12 Aug 2018 23:29:53 -0700 (PDT)
MIME-Version: 1.0
References: <CABkgnnX6T9nZWVZH5_PTjrKt+VBpaoAC+eCFTZ_ZLRD4kjnW3Q@mail.gmail.com> <CACpbDcda5zh0SAVRWBGkvoZs-MTetg0sz6JYOmnMrdMNhGd2iQ@mail.gmail.com> <116ABD4F-4707-4F15-B7D1-C4B4727534C6@trammell.ch> <CAKcm_gN4xdP_SObbhBt+arrKHmSdWi8rBq8919BdofySbX1Z0w@mail.gmail.com>
In-Reply-To: <CAKcm_gN4xdP_SObbhBt+arrKHmSdWi8rBq8919BdofySbX1Z0w@mail.gmail.com>
From: Martin Thomson <martin.thomson@gmail.com>
Date: Mon, 13 Aug 2018 16:29:43 +1000
Message-ID: <CABkgnnWCAObSsYNGxz6SA3PzFeF9y+u3y+vArEHpx_uEd+pURw@mail.gmail.com>
Subject: Re: Unified ACK frame encoding
To: Ian Swett <ianswett@google.com>
Cc: Brian Trammell <ietf@trammell.ch>, Jana Iyengar <jri.ietf@gmail.com>, Magnus Westerlund <magnus.westerlund@ericsson.com>, QUIC WG <quic@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/jmml9fGJXdlxr49HKKH0tpUOTTI>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.27
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: Mon, 13 Aug 2018 06:29:56 -0000

On Fri, Aug 10, 2018 at 6:15 AM Ian Swett <ianswett@google.com> wrote:
> There are a few things I like about this proposal:
> 1) It makes ECN and ACK_ECN either the same(or more similar)
> 2) As Kazuho said, it provides more precise feedback about which packets were marked, which avoids some edge cases we've had to write up in the current text around ack loss and being unsure of exactly when recovery is exited.
> 3) It doesn't get more expensive as the connection goes on.  This is an unfortunate property of the current design.
>
> I find Jana's variation on this particularly interesting, because if ECN isn't negotiated, I don't think there a reason to add any overhead.  From personal experience, if you find a form of feedback valuable(whether it's ECN or timestamps for one-way-delay), then you're happy to consume a few extra bytes to get better feedback.  If the extra information isn't useful for whatever reason, it's just wasted bytes.

OK, 4 values is definitely easier to reason about.  Merging ECT(0) and
ECT(1) into the same bucket is easy as long as we're OK with that.
The simpler encoding is easier to describe and write code for, and we
can just tolerate (or reject) two adjacent ranges of the same type,
just as we might tolerate (or reject) a trailing gap.

> So overall this seems like an improvement we should do, but I'd prefer a variant that doesn't increase the ACK frame size when ECN is disabled or there are no ECN marks to report.  FYI, if we need to steal a bit from the number of ack blocks, I'm ok with that since I expect more than 32 ack blocks to be very rare.

This is very close to a variant I suggested on the issue, which we
agreed pretty quickly wasn't great.  You can create two ACK frames,
one with the full expressiveness, and another that has the potential
to encode the ECN information.  Call the second one ACK_ECN...

I'm not convinced that optimizing for the awkward space between 16 and
64 is worth the extra complexity of a variant encoding of the frame.
There are other ways to optimize for the cost of that occasional octet
that seem like they would be more fruitful (like truncating ACK frames
more aggressively).