Re: HTTP/3 Preface (PRI method)

ben@yocto.nu Thu, 08 July 2021 10:33 UTC

Return-Path: <ben@yocto.nu>
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 CB2323A1DC7; Thu, 8 Jul 2021 03:33:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.698
X-Spam-Level:
X-Spam-Status: No, score=-1.698 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=neutral reason="invalid (public key: OpenSSL error: bad base64 decode)" header.d=yocto.nu
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 n94FNTimkhpf; Thu, 8 Jul 2021 03:33:11 -0700 (PDT)
Received: from vps.yocto.eu (vps.yocto.eu [IPv6:2a01:7c8:d002:313::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B94513A1DC4; Thu, 8 Jul 2021 03:33:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=yocto.nu; s=x; h=Content-Type:Message-ID:References:In-Reply-To:Subject:Cc:To:From: Date:MIME-Version:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=hDsjfNtCEQ3/dEpXg5c7n/BIuNXp5K3VC5LvJyYAJEs=; b=e8jZ0cE/QA7vZIA5s06nWCNSL0 /ec//GWaGuHW+u9qoLfzS65Qdxb912IBfqOQbRiyW6yPTGm6bkzEGdTQvLhif8V4a9cr/tKkPQvbS YTwDrmxfxvLy6pGK61h6WBe1sJZT34ZVv32VCwIbKhGfIJuiiallChFw+Vc4H1+QpImUhZajO/a/h POBWDgcxoSqDX8P725ksYrvByBEq04a+VnAYPNJ/x+m7ZHgXggzz01+PjcafIQROltlcCw88614O7 7ezBKVxqW4+snNi96O4aSO5BvNaiN/Ft1h3kcaaeDg4KcJbSUIs5dWgl7EmmMgwShuJPEs31hXUqI VM3FjtQA==;
Received: from localhost ([::1]) by vps.yocto.eu with esmtpa (Exim 4.94) (envelope-from <ben@yocto.nu>) id 1m1RLA-0005OG-0R; Thu, 08 Jul 2021 10:33:08 +0000
MIME-Version: 1.0
Date: Thu, 08 Jul 2021 12:33:07 +0200
From: ben@yocto.nu
To: Piers O'Hanlon <piers.ohanlon@bbc.co.uk>
Cc: ben=40yocto.nu@dmarc.ietf.org, quic@ietf.org
Subject: Re: HTTP/3 Preface (PRI method)
In-Reply-To: <A75BD23A-040B-44DD-B6D5-B7386ACCC474@bbc.co.uk>
References: <4723f90d822b18e3d0402b6496ac1d02@yocto.nu> <A75BD23A-040B-44DD-B6D5-B7386ACCC474@bbc.co.uk>
Message-ID: <e49f0b430ed8098bf28852a0a9fbc30d@yocto.nu>
X-Sender: ben@yocto.nu
Content-Type: multipart/alternative; boundary="=_dbb2ddeb07f0d208088403f4a54c0180"
X-Authenticated-Id: ben@yocto.nu
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/QxvwXS9Eu2HXhgGm0BqDHIemrEo>
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: Thu, 08 Jul 2021 10:33:17 -0000

I understand. It would be only useful when having HTTP/3 on TCP without 
SSL/TLS. I should read more to find out if that is even possible, but if 
it is, I think you need a preface. HTTP/3 over unsecured TCP would not 
be useful except for debugging/test purposes, so there is no need for 
adding preface to the spec, unless this feature will be covered too.

Piers O'Hanlon schreef op 2021-07-08 11:38:

> Hi Ben,
> 
> It is also being proposed (and implemented by a number of organisations 
> including Apple see: 
> https://github.com/MikeBishop/dns-alt-svc/blob/master/svcb-implementations.md) 
> that the ALPN (and IP address(es)) may be obtained via the new proposed 
> "HTTPS"  DNS resource record request:
> https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https
> 
> Using this approach one can in principle pre-empt a "preface", though 
> clients would need to handle a potential discrepancy.
> 
> Best,
> 
> Piers O'Hanlon
> 
>> On 29 Jun 2021, at 20:10, 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