Split error codes in two

Martin Thomson <martin.thomson@gmail.com> Mon, 04 September 2017 04:55 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 8E794124207 for <quic@ietfa.amsl.com>; Sun, 3 Sep 2017 21:55:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 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_LOW=-0.7, 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 Ub6XgKmuBxkj for <quic@ietfa.amsl.com>; Sun, 3 Sep 2017 21:55:04 -0700 (PDT)
Received: from mail-oi0-x229.google.com (mail-oi0-x229.google.com [IPv6:2607:f8b0:4003:c06::229]) (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 21FD61204DA for <quic@ietf.org>; Sun, 3 Sep 2017 21:55:04 -0700 (PDT)
Received: by mail-oi0-x229.google.com with SMTP id r203so36686133oih.0 for <quic@ietf.org>; Sun, 03 Sep 2017 21:55:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=DWmkIHOPZazc6PSFmyuCTPT2JfTnTOkoKyjqZCqyZxs=; b=Cb0NAJQh+aJAq9ZRxJphC1fqlhdKXY2jwCVHosQiTjhYXtkYLQFnn98c3U8Y6oFWzj uXQLfly+Aufhhs2vEkejkr2VyLW+g2pPjADm/iS53tZMUh8tQdgleDREYK1v/PlMv0mm XDAQhKeSCYSrrjMN2JQLzppBqHNixRn/+K4QU/wdTUjb3J1SkjhGAdbSLMuH4cNm3F+C 0xC6tIGBwT0o7Ae3DVJ8i7jl5lHDv6doDCmVAzsffwLdTyn1geRuWTsERsytFha1e7XQ PJ0UyaDME6aWsCs01bhWicEvBtqEvmbKkK4JZzRLwOBcBsQ+xS+3YpOzR/3NCV1w5F4v Ej+w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=DWmkIHOPZazc6PSFmyuCTPT2JfTnTOkoKyjqZCqyZxs=; b=J1BNXsPRTDpQxRynd0O3nm709ZYbLcw6pvsVtX5+47m/aQ3vyGSbF7wxMSWSP0aC4K ANK5JmjrY4Yc1O95vg+VdDGqPkpOWhqVEeUhMKut/HbTn+hLuMdv32iYif+bGP0z8HS0 4bxkyz9lL+AFl+tU8ngNytSWbs/Rb4nPQeLbTUxNMON4KJe6XvbiLmYDl0h7YVbtfDwe 1cZDGpGWJ9NwKRQJBw84SClJi25Esu4VhdSeNvh4naTXyiu/PtXH1XEj6TWEa8FhpdUb zqNTHSd0VXHkDv+aoiDQGllKcV7FmcBwP4bRK/WUcGCXT43+Y4opnDE0MxHlLZPwrrTA 5hXA==
X-Gm-Message-State: AHPjjUjX75QQXg0d59VhNpak42aMgfV/QX8kYrKbA+T2I3txrEPAoASZ Q1h0weT5jmKzgMbk5o6TtIJDio3h2JgNLKg=
X-Google-Smtp-Source: ADKCNb6615vxugJz4HXCPSQ53OqHjHgfZ8MxynjO5bhqQCNlaVeINmDXxvNUrn/9rye9NfnNBKJR2iKlxmkT43H449U=
X-Received: by 10.202.229.198 with SMTP id c189mr195862oih.5.1504500903147; Sun, 03 Sep 2017 21:55:03 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.157.14.77 with HTTP; Sun, 3 Sep 2017 21:55:02 -0700 (PDT)
From: Martin Thomson <martin.thomson@gmail.com>
Date: Mon, 04 Sep 2017 14:55:02 +1000
Message-ID: <CABkgnnWwGAyHzkST9o9ueVmBw3_TpJun=dv2X+HL2snXSZJgew@mail.gmail.com>
Subject: Split error codes in two
To: QUIC WG <quic@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/kXbLC2ctCQe9EgR5jAF0E7chU34>
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: Mon, 04 Sep 2017 04:55:05 -0000

Input sought.

I've a proposal in that splits the error code space:

   https://github.com/quicwg/base-drafts/pull/722

The basic idea here - one that I believe that we have agreement on,
but would like to confirm - is that only applications should be
cancelling streams.  In short: if the transport kills a stream that
the application was relying on, the whole application protocol state
becomes indeterminate.

In order to ensure no possibility of confusion, I think that it is
cleaner to have transport errors and application errors.  The above PR
makes that split.

It's a pretty clean cut, but there are a few costs: CONNECTION_CLOSE
needs to be split because both application and transport might need to
kill a connection.  The NO_ERROR code is then duplicated.  There is
surprisingly little need for overlap on other error codes.


In doing this, I realized two further things:

1. STOP_SENDING is a purely application-layer construct, but it's a
transport-layer frame.  That makes it much harder to manage with this
change.  Moving it to HTTP makes a lot of sense (to me).

   https://github.com/quicwg/base-drafts/pull/759

2. We are now nudging 20 error codes (plus the per-frame-type ones).
4 billion might be a little more space than we need, so halving the
number of bits with give error cords seems reasonable:

   https://github.com/quicwg/base-drafts/pull/723