Re: [QUIC] Draft charter

Jana Iyengar <jri@google.com> Wed, 01 June 2016 06:20 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 ABF2C12D114 for <quic@ietfa.amsl.com>; Tue, 31 May 2016 23:20:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.126
X-Spam-Level:
X-Spam-Status: No, score=-4.126 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_LOW=-0.7, RP_MATCHES_RCVD=-1.426, 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 vvuxzxGesz1i for <quic@ietfa.amsl.com>; Tue, 31 May 2016 23:20:28 -0700 (PDT)
Received: from mail-yw0-x22d.google.com (mail-yw0-x22d.google.com [IPv6:2607:f8b0:4002:c05::22d]) (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 4DD9212B02D for <quic@ietf.org>; Tue, 31 May 2016 23:20:28 -0700 (PDT)
Received: by mail-yw0-x22d.google.com with SMTP id h19so9507507ywc.0 for <quic@ietf.org>; Tue, 31 May 2016 23:20:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=+UDEjHdMV/pik169ssh60iCs8qsQB9RGmlh3ggbtd/A=; b=Wt2Rwnx7qVYPFwQDH5yiyUrfHED+50njGcCkuPTBvlkBj0f56+uTEPDNUQxpmTRno/ c1HH8HFxnHQzrMBCBJybHcQgCvDAkPTTlKkNeOjbkE/CLX72Y7znBdX6tK/UFTnBebCy sH8ZrEJoBtbfBSiDkosqQgOU3T3jcMuzlzQ/hpc2l2i+AjxVX0I/h5ZeKdrW62xpxvfB yGjos65EjGRjfbzpSWM1WLi6/cdcX9wgV5Sbj4Wb5nn3OOvnkXr4de3oGwovbASyAI/c meam87ZbmtfRXMv0swy7iwvXYfHSf4c+1FlWuJhzBU2L7w7YofNWCdsnPeZRWWkdRWHu 2tBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=+UDEjHdMV/pik169ssh60iCs8qsQB9RGmlh3ggbtd/A=; b=V29cTUPXK3Pc1AywcA3r3Nhwh1pwJGE00/9jTy8Un48Tgb5EQ40kjbB1sat0YYC06B HsnkikwKs4ZIC6CZwGJAb7/Y657QkXYMG/9KY1ZkVHyoHyKQKN3+F7n5Ra3soGlVKdlP pjBYBduLUN7H3rAxnOm4uXt1e3nIwR82pyZuC5mjyg1fjy+lc/FQJIcuM6f+K1r4VAog y/PJXuETtF1q8e7APlp2vIWnKlkQC1gn6wZJyAHJjweYegSX8Kt6ZscRt3U5V7FUZlip fz0w5Wwpom6xQDg6OIZugSYbOL8p43moEjiqWmXyiSFDkVzYPAK238wuvGrZScrnr8XA lwMQ==
X-Gm-Message-State: ALyK8tL5RV6LnmCqhR77G1On2BwCCWRYQ4jCEWMjTdLy8L+5u3Wff33lQDwywZYxSVYwwlhSKgH7xWtKOiodis63
X-Received: by 10.129.121.81 with SMTP id u78mr1176099ywc.239.1464762027004; Tue, 31 May 2016 23:20:27 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.37.221.193 with HTTP; Tue, 31 May 2016 23:20:24 -0700 (PDT)
In-Reply-To: <3DC70DE0-FF05-4511-BCE2-2EC6A58C4407@mnot.net>
References: <CA+9kkMDkPZC-8YP9FXbWDohVriMO=mYEqGhf7bkdObNob=RNFw@mail.gmail.com> <CAGHOz8v+O-B5m+NBYuGNy7v3JTj11s5nyAsM2X7usPF3KONoTg@mail.gmail.com> <CA+9kkMCFm5KDS7_NQUC9FEj9vz1j9bYDMQU6TSQCCHAvxLcWfg@mail.gmail.com> <ffa8bd15-de33-e619-80d4-52a95a240e1b@gmail.com> <DM2PR0301MB065582053611967840ABA986A8470@DM2PR0301MB0655.namprd03.prod.outlook.com> <3DC70DE0-FF05-4511-BCE2-2EC6A58C4407@mnot.net>
From: Jana Iyengar <jri@google.com>
Date: Tue, 31 May 2016 23:20:24 -0700
Message-ID: <CAGD1bZY=-vmAfDTh1dP1o=pcXAX3JC7ocCOrKBk53WXsMJr0bQ@mail.gmail.com>
To: Mark Nottingham <mnot@mnot.net>
Content-Type: multipart/alternative; boundary="94eb2c0a7b684d3db50534317c2c"
Archived-At: <http://mailarchive.ietf.org/arch/msg/quic/cE0aTW1MURBBE4osgKKqipo8t0U>
Cc: Tim Wicinski <tjw.ietf@gmail.com>, Christian Huitema <huitema@microsoft.com>, "quic@ietf.org" <quic@ietf.org>
Subject: Re: [QUIC] Draft charter
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Mailing list to discuss QUIC standardization <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: Wed, 01 Jun 2016 06:20:32 -0000

Christian, Mark,

I'll start off by agreeing with Christian that QUIC is functionally
separable into "layers" (for lack of a better word). But this is not new.
Any transport that tries to separate application semantics from
network-level functions such as loss recovery and congestion control is
bound to be complex enough to be implementing these separable functions.
SCTP, SST, QUIC, are all good examples of this general idea, and that's
because these are all relatively complex transports. They are different
however in the boundaries that they collapse. (From this point of view,
QUIC is actually closer to SST than it is to SCTP.)

Bryan Ford and I did some transport decomposition work a while ago (you may
be familiar with it), and here's a section of an architectural draft we
wrote in 2009 that is relevant here:
https://tools.ietf.org/html/draft-iyengar-ford-tng-00#section-3.
Specifically, it separates the functions you mention into multiple
connection contexts, with multiple streams stacked on top of multiple
connection contexts.

So, it seems architecturally sensible (at least to me) to think about these
functions separately. That said, any protocol instantiation of these
functions will appropriately collapse these layering boundaries for
efficiency. The real question here is whether the particular set of
transport functions that QUIC implements and the set of "layering"
boundaries that QUIC collapses result in something powerful enough to be
useful and general enough to be extensible. In other words, IMO, the
question about QUIC ought to be whether it is specific enough to provide
performance benefits for particular applications, and general enough to
allow more applications to extend it in the future.

The answer to the first question is a resounding yes. We have running
deployed code and we have presented data about the benefits of QUIC for
HTTP traffic. The answer to the second question is something we'll only
know by trying. The charter is currently scoped to pursue the first
question first -- by building QUIC for HTTP as the first application. The
QUIC wg can and should continue chasing more application mappings after
HTTP, to see how general QUIC ends up being. If  QUIC falls short of a next
application that we thought might fit, that's an argument for either
refitting QUIC, or for building a different protocol that collapses these
functional boundaries differently, and maybe even chooses different
functional components. I think this is a perfectly reasonable outcome that
we should anticipate. DPRIVE or DNS may not fit on top of QUIC, and that's
fine (*).

I think this is also exactly how we should pursue new transport work at the
IETF. I would strongly argue against generalizing QUIC too much before
building it for HTTP. I am very wary of building a "kitchen-sink" transport
that tries to satisfy several applications at once. At the same time, I
would not start by strait-jacketing QUIC to be only for HTTP. The core
primitives are not going to be universally useful, but they will be
undoubtedly more generally useful than just for HTTP. The document division
in the charter captures this thinking, and I think that it's workable.

Just my thoughts.

(*) - In principle, I think you can do this though. QUIC, like SST, has
lightweight streams. You can map a transactional app by mapping a stream to
each transaction... and this has some really nice properties for the
application. But I don't want to rathole on designing QUIC for DNS here.

- jana







On Tue, May 31, 2016 at 7:03 PM, Mark Nottingham <mnot@mnot.net> wrote:

> Hi Christian,
>
> > On 1 Jun 2016, at 11:11 AM, Christian Huitema <huitema@microsoft.com>
> wrote:
> >
> > I think that QUIC really has two layers. There is a bottom layer that
> manages the transmission of encrypted packets, the detection of errors, and
> possibly the forward error correction. Then there is an upper layer that
> manages the multiplexing of streams, and that cooperates with the bottom
> layer to manage retransmissions.
> >
> > Currently, the two layers are tied in multiple ways. The encryption
> layer cannot function without passing the stream 1 packets to the TLS
> machinery. The stream management frames share a number space with the error
> management frames. The per connection receive window is managed as the
> aggregate of the per stream receive window. But these are in fact simple
> problems, and it should be possible to disentangle the error detection
> layer and the stream management layer.
> >
> > After that, yes, there are quite a few possible innovations. The stream
> abstraction works well for HTTP 2.0, but I would rather use a
> transaction-based logic for DPRIVE, and maybe something different still for
> real-time multi-media. Or, if we think of multi-path, I could see a stream
> layer being multiplexed over two separate lower layers, managed as two
> separate connections.
> >
> > The whole point of defining a user mode transport is to enable this kind
> of innovation!
>
> This makes me wonder if QUIC is anything but a collection of functions
> that can be assembled by an application; as it is, the charter carves off
> crypto into TLS; FEC and congestion control are defined externally;
> multi-path is an extension. If streams are also optional, what's left? Loss
> recovery?
>
> I'm not against such a modular approach, but standardising it IMO will
> present some real challenges. Enough to make me wonder if just defining
> QUIC as HTTP/2-over-UDP is better; other applications could reuse its
> primitives as they like. It might not be as tidy, but it's a lot more
> workable...
>
> Cheers,
>
> --
> Mark Nottingham   https://www.mnot.net/
>
> _______________________________________________
> QUIC mailing list
> QUIC@ietf.org
> https://www.ietf.org/mailman/listinfo/quic
>