RE: Clarification of transport and HTTP version compatibility

Mike Bishop <mbishop@evequefou.be> Wed, 09 May 2018 22:44 UTC

Return-Path: <mbishop@evequefou.be>
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 90F0D12D7E2 for <quic@ietfa.amsl.com>; Wed, 9 May 2018 15:44:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.911
X-Spam-Level:
X-Spam-Status: No, score=-1.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_DKIMWL_WL_MED=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=evequefou.onmicrosoft.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 MHQOvm9DXGwb for <quic@ietfa.amsl.com>; Wed, 9 May 2018 15:44:07 -0700 (PDT)
Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0133.outbound.protection.outlook.com [104.47.38.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C6DF612E055 for <quic@ietf.org>; Wed, 9 May 2018 15:43:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=evequefou.onmicrosoft.com; s=selector1-evequefou-be; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=MPFLkonBr96bHne3/QHCVr/BZIaZRcwI9P5QZiInP+E=; b=VJHmEZ+ybJ9vc4aAlcoXu6EcxIvJxjT+GPXKVUAAlQpTgJn1T5KhHz2lLPj1kyg4ieUL4B7//mQ+kSBvFTkOGmWvHqb9xa8vcG1UzL6AuQLzsQAYXuK5HNtoiaskep0est060MX71OcgAc/SnQCh+tLL0WsuMbQXurs19YRezhQ=
Received: from SN1PR08MB1854.namprd08.prod.outlook.com (10.169.39.8) by SN1PR08MB1342.namprd08.prod.outlook.com (10.162.1.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Wed, 9 May 2018 22:43:53 +0000
Received: from SN1PR08MB1854.namprd08.prod.outlook.com ([fe80::3c18:f60d:11c1:143d]) by SN1PR08MB1854.namprd08.prod.outlook.com ([fe80::3c18:f60d:11c1:143d%13]) with mapi id 15.20.0735.018; Wed, 9 May 2018 22:43:53 +0000
From: Mike Bishop <mbishop@evequefou.be>
To: Lucas Pardue <Lucas.Pardue@bbc.co.uk>, Sam Hurst-RD <samuelh@rd.bbc.co.uk>, IETF QUIC WG <quic@ietf.org>
Subject: RE: Clarification of transport and HTTP version compatibility
Thread-Topic: Clarification of transport and HTTP version compatibility
Thread-Index: AQHT56+xI3vQwOQ++kOo1AZLBRUIXaQno4FAgAANUQCAADE84IAAC+8AgAALO3A=
Date: Wed, 09 May 2018 22:43:52 +0000
Message-ID: <SN1PR08MB1854232CFA318E21E062BBE3DA990@SN1PR08MB1854.namprd08.prod.outlook.com>
References: <906fdff3-8009-238b-998b-4ea515a2684d@rd.bbc.co.uk>, <SN1PR08MB1854826DACF0454471CB162DDA990@SN1PR08MB1854.namprd08.prod.outlook.com> <7CF7F94CB496BF4FAB1676F375F9666A3BB2B67C@bgb01xud1012>, <SN1PR08MB1854FC73444239C609552459DA990@SN1PR08MB1854.namprd08.prod.outlook.com> <7CF7F94CB496BF4FAB1676F375F9666A3BB2B6A9@bgb01xud1012>
In-Reply-To: <7CF7F94CB496BF4FAB1676F375F9666A3BB2B6A9@bgb01xud1012>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=mbishop@evequefou.be;
x-originating-ip: [38.134.241.6]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; SN1PR08MB1342; 7:h+WdsylwMuQ/jhbmy5zmeXZVBIx5bA8GMlMGEMIYlCh9jhiZLaNhAf2eh0J5c/DDSo1ZyDHYjAiO1bgxcPDZsLqlJIVFwD0Akyk5NGPbRXYOfa8GcA9VW/SLfO99dyHebpidDaPDNpT5NLAMdaC0/umwwH7BXMT02faFQ7KAEcvONXWeketnLxxm90UTdpHZOmOckFVK5pD58KZvK53i6PrbsNzmdWFPcuAu/tTeIRQ9H3V8mKz2RoO03nDuK8Lh
x-ms-exchange-antispam-srfa-diagnostics: SOS;
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(7021125)(4534165)(7022125)(4603075)(4627221)(201702281549075)(7048125)(7024125)(7027125)(7028125)(7023125)(5600026)(2017052603328)(7153060)(7193020); SRVR:SN1PR08MB1342;
x-ms-traffictypediagnostic: SN1PR08MB1342:
x-microsoft-antispam-prvs: <SN1PR08MB13424E6F0A9A15D86B84436DDA990@SN1PR08MB1342.namprd08.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(158342451672863)(204407124797145)(35073007944872)(127952516941037);
x-ms-exchange-senderadcheck: 1
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(93006095)(93001095)(10201501046)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123558120)(2016111802025)(20161123564045)(20161123560045)(6043046)(6072148)(201708071742011); SRVR:SN1PR08MB1342; BCL:0; PCL:0; RULEID:; SRVR:SN1PR08MB1342;
x-forefront-prvs: 0667289FF8
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(346002)(39380400002)(39830400003)(396003)(366004)(199004)(189003)(53754006)(13464003)(7736002)(486006)(55016002)(11346002)(2900100001)(476003)(6246003)(53386004)(74316002)(6116002)(8676002)(8936002)(9686003)(6306002)(33656002)(53936002)(81156014)(74482002)(5660300001)(2906002)(25786009)(14454004)(305945005)(81166006)(3846002)(478600001)(446003)(6436002)(3660700001)(3280700002)(102836004)(105586002)(106356001)(66066001)(966005)(53546011)(6506007)(59450400001)(316002)(186003)(86362001)(76176011)(110136005)(229853002)(93886005)(7696005)(5250100002)(99286004)(97736004)(68736007)(26005)(5890100001); DIR:OUT; SFP:1102; SCL:1; SRVR:SN1PR08MB1342; H:SN1PR08MB1854.namprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:0; MX:1;
received-spf: None (protection.outlook.com: evequefou.be does not designate permitted sender hosts)
x-microsoft-antispam-message-info: iCUpVcQEZLY37s0bYGxrSlRervnT1hmfA+nWCQEvaARLkIwnKbhReG+FyK23ThThr4oRQRWtcLu9v9ZAaqfi6WWCM6g6AxcBhQHbDgU/CRGe8ddzIL32ZAlasFWRwKQEAIYVtQGeB8O1APlVIWiLGThHkQ6IWbT2GHig7HKyiDax4tbfyxahR9QCITLaXVdf
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Office365-Filtering-Correlation-Id: b8ebe604-0620-41b0-cd59-08d5b5fe571e
X-OriginatorOrg: evequefou.be
X-MS-Exchange-CrossTenant-Network-Message-Id: b8ebe604-0620-41b0-cd59-08d5b5fe571e
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 May 2018 22:43:52.4656 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 41eaf50b-882d-47eb-8c4c-0b5b76a9da8f
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR08MB1342
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/4OG52SSp3ItD52hZAEP4co_Vq6g>
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: Wed, 09 May 2018 22:44:11 -0000

I think your description of the process is correct.  But for something to fail post-handshake, both possibilities have to occur, not just one.  If a client naively offers an application protocol that doesn't work over the selected version, the server ought to ignore it (and abort the connection if it was the only one offered).  If a client correctly filters its list, the server can't accept what isn't offered even if it's buggy.  So if only one side is broken, what happens should be that the TLS handshake will fail to select an application-level protocol and the connection fails before any requests are sent.

What the TLS draft says about ALPN and versions is:
> If the server cannot select a compatible combination of application protocol and QUIC version, it MUST abort the connection. 
> A client MUST abort a connection if the server picks an incompatible combination of QUIC version and ALPN identifier.

It should be implied, but might be worth explicitly stating, that failure to agree on an ALPN is incompatible with all QUIC versions, always fatal.

>From the Alt-Svc perspective, the ALPN is proscriptive (7838 says fail if that particular ALPN isn't accepted) and the QUIC version is only advisory.  If the advertised version of HTTP/QUIC is no longer supported, they'll fail back to HTTPS, get a new Alt-Svc entry, and try again later.  If the advertised version of HTTP/QUIC *is* supported but a new transport version has become available, the client might try that if it believes the new transport version to be compatible with its existing HQ version.  If that works, it might get an updated Alt-Svc entry telling it that a new HQ version is available as well.

Now, if both sides have mutually agreed to speak an incompatible pair of application protocol and transport versions, then you're in uncharted territory.  If they both expect the same things about how those interact, it'll work; if not, it won't.  That's basically the same as anyone who mutually negotiates an option but disagrees about what the option means, and that's hard to guard against.

-----Original Message-----
From: Lucas Pardue [mailto:Lucas.Pardue@bbc.co.uk] 
Sent: Wednesday, May 9, 2018 2:43 PM
To: Mike Bishop <mbishop@evequefou.be>; Sam Hurst-RD <samuelh@rd.bbc.co.uk>; IETF QUIC WG <quic@ietf.org>
Subject: RE: Clarification of transport and HTTP version compatibility

I've not terribly familiar with the transport negotiation aspects, so I'm probably missing something sorry.

I guess what is not clear to me is the question, who is responsible for ensuring a sane answer is negotiated? (I suspect no one). It gets more annoying if the client is acting on information provided to it via Alt-Svc, which is quite liberal to from the sender perspective (there are some rules for the client defined in HTTP/QUIC 2.1.1.).

How I read things in the simple case was:

1) Transport version negotiation takes place and client chooses a version. Cryptographic handshake is next.
2) Client intitiates TLS 1.3 handshake with version info for revalidation, plus ALPN list of what it believes are application protocols that are compatible with the chosen version of QUIC.
   a) POSSIBILITY 1 in a pathological case it always sends the same list regardless of version.
3) Server selects an application protocol it believes is compatible with the chosen version of QUIC.
  b) POSSIBILITY 2 naive implementations just assume "hq" works for everything.
4) Client sends something the server is unhappy with and the connection bombs with a protocol error.

Cheers
Lucas
________________________________________
From: Mike Bishop [mbishop@evequefou.be]
Sent: 09 May 2018 22:01
To: Lucas Pardue; Sam Hurst-RD; IETF QUIC WG
Subject: RE: Clarification of transport and HTTP version compatibility

They *shouldn't* be unanticipated protocol errors, because both are negotiated.  I would expect (or at least hope) that these will manifest as negotiation failures at worst.

-----Original Message-----
From: Lucas Pardue [mailto:Lucas.Pardue@bbc.co.uk]
Sent: Wednesday, May 9, 2018 11:04 AM
To: Mike Bishop <mbishop@evequefou.be>; Sam Hurst-RD <samuelh@rd.bbc.co.uk>; IETF QUIC WG <quic@ietf.org>
Subject: RE: Clarification of transport and HTTP version compatibility

I think this all works fine in the current stage of specification.

Longer term, what is the failure case for interoperability where different implementations have  different rules for how to combine QUIC version and HTTP/QUIC version. Protocol error due to reception of unanticipated packets and or HTTP/QUIC frames?

Lucas
________________________________________
From: QUIC [quic-bounces@ietf.org] on behalf of Mike Bishop [mbishop@evequefou.be]
Sent: 09 May 2018 18:18
To: Sam Hurst-RD; IETF QUIC WG
Subject: RE: Clarification of transport and HTTP version compatibility

There's no firm restriction, no.  While I find it likely that draft deployments will choose to keep matching versions, the only restriction that the HTTP draft currently imposes is that it be a version of QUIC which uses TLS as the handshake protocol.

-----Original Message-----
From: QUIC <quic-bounces@ietf.org> On Behalf Of Samuel Hurst
Sent: Wednesday, May 9, 2018 9:05 AM
To: IETF QUIC WG <quic@ietf.org>
Subject: Clarification of transport and HTTP version compatibility

Hi all,

Does the quic-transport version and the HTTP mapping version have to match? For example, could you negotiate QUIC draft-11, but the HTTP side is still using an older version (such as draft-09 to avoid the requirement of QPACK)?

As far as I understand it, the QUIC transport version is negotiated as part of the TransportParams in the appropriate TLS extension, and the HTTP mapping version is negotiated by ALPN. So in the example above, would it be acceptable to negotiate 0xff00000a as the transport protocol version, and then have an ALPN string of "hq-09"?

I'm then assuming that a valid Alt-Svc header for my example could be as
follows:

Alt-Svc: hq-09=":4443";quic="ff00000a"

The quic-tls draft mentions in Section 9.1 "The application-layer protocol MAY restrict the QUIC version that it can operate over", but none of the quic-http drafts that I've read list any such restriction.
Therefore, I'm then further assuming that it's safe to run whatever version of the HTTP mapping I like, unless there's a compatibility matrix between the various specs that I'm missing?

Best Regards,
Sam



-----------------------------
http://www.bbc.co.uk
This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated.
If you have received it in
error, please delete it from your system.
Do not use, copy or disclose the
information in any way nor act in reliance on it and notify the sender immediately.
Please note that the BBC monitors e-mails sent or received.
Further communication will signify your consent to this.
-----------------------------