Re: HTTP/3 Preface (PRI method)
Nick Harper <ietf@nharper.org> Tue, 29 June 2021 19:41 UTC
Return-Path: <nharper@nharper.org>
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 B56633A3EC6 for <quic@ietfa.amsl.com>; Tue, 29 Jun 2021 12:41:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=unavailable 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 a850TQDGaLnC for <quic@ietfa.amsl.com>; Tue, 29 Jun 2021 12:40:57 -0700 (PDT)
Received: from mail-ua1-f43.google.com (mail-ua1-f43.google.com [209.85.222.43]) (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 447A63A3EC4 for <quic@ietf.org>; Tue, 29 Jun 2021 12:40:57 -0700 (PDT)
Received: by mail-ua1-f43.google.com with SMTP id g21so27469uaw.3 for <quic@ietf.org>; Tue, 29 Jun 2021 12:40:57 -0700 (PDT)
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; bh=Fua0P6IZIZ5zWMyihweR3/JCPOxryPw0TJCQ/GWKyc4=; b=NUX6UYyYQe6lCf5crgiKtTsG6/XPCaB8HP95u39o5Tq7E2rsjQylsLX2nRNxGJ2ZRV vnmsoR7+msz8GjdZQ7HV4A+bmOr8YUdUjujVaBF88qV3bnFV/BAUT+49lzOSkkqpguq8 mekc6e+rA/ze/z1QheDX3Jxv/xTZKmR/TnqtXrh0V+RQEp2IC12QiH12buv5wCaXY1zt /KAj71owWrnNoaxRKh3gbRTINidbCgvH6GxQvTV65dWTuhPmZMfKsQ8b9nC67gB929JY zyGEZ2L5c9I4z0xHpPp7mk4jzz5omvtk5qVR5sGzolO229SHEjlVB9/+F1L+CrfH0T4a l/kQ==
X-Gm-Message-State: AOAM533sFuNS8TH1aIRGvm8/oJoHZpA1I2r9yWQIOtBZCWiRvxUo7Qid oQwxqbWrnQXaXFrl/9kcXhCbw09DqolCLgY4v3zo9w==
X-Google-Smtp-Source: ABdhPJyOMJXM8a2guh9LgPZGr8zRCYLOBdiUpmdTCBqdTk3eYgxJ/0rAhw28Nv7bwOalOsInQLyqClx2qS+s69mJrXY=
X-Received: by 2002:ab0:7196:: with SMTP id l22mr1830068uao.21.1624995655403; Tue, 29 Jun 2021 12:40:55 -0700 (PDT)
MIME-Version: 1.0
References: <4723f90d822b18e3d0402b6496ac1d02@yocto.nu> <CADdTf+im9s_A4LXiwR15R=iLr6X8PJR=J3xq7302WWeGEiOy1A@mail.gmail.com>
In-Reply-To: <CADdTf+im9s_A4LXiwR15R=iLr6X8PJR=J3xq7302WWeGEiOy1A@mail.gmail.com>
From: Nick Harper <ietf@nharper.org>
Date: Tue, 29 Jun 2021 12:40:44 -0700
Message-ID: <CACcvr=muAnmJTm-abN1iQ2JMDiBfYnEUU-27V_78Fn09gvXkbQ@mail.gmail.com>
Subject: Re: HTTP/3 Preface (PRI method)
To: Matt Joras <matt.joras@gmail.com>
Cc: ben=40yocto.nu@dmarc.ietf.org, IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000cd63ba05c5ecc85f"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/tzNxuBvlNswRGGiiJV-3-XqYW_o>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
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, 29 Jun 2021 19:41:02 -0000
I agree with Matt that the signalling of the application protocol is best handled via ALPN and no in-band (e.g. in a STREAM frame) signalling is needed. There's also a more fundamental problem with having a preface in HTTP/3. Unlike a TCP connection where there is a single stream of data (and a preface can be placed at the beginning of the connection), a QUIC connection has multiple independent streams of data. There's no sensible place to place a preface like what HTTP/2 has on a QUIC connection. On Tue, Jun 29, 2021 at 12:31 PM Matt Joras <matt.joras@gmail.com> wrote: > Hi Ben, > > This issue in general, if I'm understanding you correctly, is solved via > the ALPN[1]. I.e., as part of the TLS handshake the server will be able to > know which application is being used. For example, "h2" corresponds to > HTTP/2 and "h3" corresponds to HTTP/3. Also note that there are no > standardized mappings of HTTP over QUIC except for the currently-pending > HTTP/3 specification. Future versions of HTTP over QUIC would also be > distinguished via ALPN, presumably. > > Best, > Matt Joras > > [1] https://datatracker.ietf.org/doc/html/rfc7301 > > On Tue, Jun 29, 2021 at 12:11 PM <ben=40yocto.nu@dmarc.ietf.org> wrote: > >> Hello all, >> >> When reading about QUIC, it comes to me as a better alternative of TCP, >> build upon UDP. >> In this case, servers that run on TCP could easily also run on UDP/QUIC; >> think about DNS, SMTP, FTP. >> >> Now there is also a new version of HTTP. HTTP/3. This version will be >> transfered over QUIC by default. >> However, as I mentioned above, it could be possible to have "TCP >> protocols" that use QUIC too. >> That makes me think about also transfering some old HTTP versions, for >> example HTTP/0.9 (I came across a library that transfered HTTP/0.9 over >> QUIC). >> But also HTTP/1.0, HTTP/1.1 and HTTP/2 are possible. >> >> All older HTTP versions send the following request line: <METHOD> <PATH> >> [VERSION] \n >> If an endpoint is directly accessed (without some negotiation), it will >> find out the version directly by reading the first line. >> For 0.9 the version will be absent. For 2.0 this will be a preface with >> a PRI method and * as path. >> >> When I think about running a HTTP server, I think about this: >> >> TCP (80) or TCP/SSL (443): >> - HTTP/0.9 >> - HTTP/1.0 >> - HTTP/1.1 >> - HTTP/2.0 >> - HTTP/3.0 (I think this is possible too) >> >> UDP/QUIC: >> - HTTP/0.9 (HTTP/0.9 but over QUIC) >> - HTTP/1.0 (HTTP/1.0 but over QUIC) >> - HTTP/1.1 (HTTP/1.1 but over QUIC) >> - HTTP/2.0 (HTTP/2.0 but over QUIC) >> - HTTP/3.0 (Default) >> >> However, if I listen for all versions on my HTTP-QUIC server, how am I >> supposed to know that it is HTTP/3? Does HTTP/3 has a preface? And if >> not, why not? >> I think the preface of HTTP/2 is great and I think it would be great in >> HTTP/3 too: PRI * HTTP/3.0 >> >> I would like to see a preface added to HTTP/3.0. It is only 18 extra >> bytes at the beginning of the request. It could be ignored by some >> servers if they want, but for servers that want to have backwards >> compatibility it would be a great feature. (Luckily HTTP/3 is not a >> released standard yet.) >> >> Ben >> >>
- Re: HTTP/3 Preface (PRI method) Matt Joras
- HTTP/3 Preface (PRI method) ben
- Re: HTTP/3 Preface (PRI method) Nick Harper
- Re: HTTP/3 Preface (PRI method) ben
- Re: HTTP/3 Preface (PRI method) Ryan Hamilton
- RE: HTTP/3 Preface (PRI method) Mike Bishop
- Re: HTTP/3 Preface (PRI method) Roberto Peon
- Re: HTTP/3 Preface (PRI method) ben
- Re: HTTP/3 Preface (PRI method) Piers O'Hanlon