Re: [QUIC] Version Negotiation vs. Option Negotiation

Niklas Widell <niklas.widell@ericsson.com> Fri, 20 May 2016 13:17 UTC

Return-Path: <niklas.widell@ericsson.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 481B812D944 for <quic@ietfa.amsl.com>; Fri, 20 May 2016 06:17:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.22
X-Spam-Level:
X-Spam-Status: No, score=-4.22 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=ham 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 NAk9km0akeU2 for <quic@ietfa.amsl.com>; Fri, 20 May 2016 06:17:16 -0700 (PDT)
Received: from sessmg22.ericsson.net (sessmg22.ericsson.net [193.180.251.58]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4A8FA12D932 for <quic@ietf.org>; Fri, 20 May 2016 06:17:16 -0700 (PDT)
X-AuditID: c1b4fb3a-f79386d00000467b-61-573f0e591eb4
Received: from ESESSHC002.ericsson.se (Unknown_Domain [153.88.183.24]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id F3.B3.18043.95E0F375; Fri, 20 May 2016 15:17:13 +0200 (CEST)
Received: from ESESSMB309.ericsson.se ([169.254.9.40]) by ESESSHC002.ericsson.se ([153.88.183.24]) with mapi id 14.03.0248.002; Fri, 20 May 2016 15:17:13 +0200
From: Niklas Widell <niklas.widell@ericsson.com>
To: Patrick McManus <mcmanus@ducksong.com>
Thread-Topic: [QUIC] Version Negotiation vs. Option Negotiation
Thread-Index: AQHRsJ1wi7eZsKH3oECpSeLV6z5y6Z++uvIAgAE6QYCAAD0ZAIABoE8A
Date: Fri, 20 May 2016 13:17:12 +0000
Message-ID: <D364DAD9.156B3%niklas.widell@ericsson.com>
References: <CAGD1bZZfdmqLQUt39sTpiwo9pojrvG6b4ehUR9PhvZUuMLxcug@mail.gmail.com> <CAKcm_gNa=y5fiOFybuyUytS7YecPZpyPthVNt3yrV=MVVF3PYA@mail.gmail.com> <D36346C3.14B3F%niklas.widell@ericsson.com> <CAOdDvNrm91QNS1YB6JjwAzTc=NDEYCLnh8paRwsezABgRTyVfg@mail.gmail.com>
In-Reply-To: <CAOdDvNrm91QNS1YB6JjwAzTc=NDEYCLnh8paRwsezABgRTyVfg@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/14.6.4.160422
x-originating-ip: [153.88.183.19]
Content-Type: multipart/alternative; boundary="_000_D364DAD9156B3niklaswidellericssoncom_"
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMIsWRmVeSWpSXmKPExsUyM2K7hG4kn324QcNVNYuf93ayWkw6upDF 4uXsNYwWPQu4HVg8drauZfRYsKnUY8mSn0wBzFFcNimpOZllqUX6dglcGQfa2AumZ1cc/3qL uYFxVlQXIyeHhICJxKGDsxghbDGJC/fWs3UxcnEICRxhlOjvamOCcBYzSlx+uZYZpIpNwEDi /7cFYLaIgJbEvqZn7CA2s0CqxNcZb1hAbGEBO4lfy86yQdTYSzy+c5EdwnaTePqkC8jm4GAR UJU4tdkYxOQVMJdo/KwIsaqHSWJ/40uwMZwCgRLLLrWDrWIEOu77qTVMEKvEJW49mc8EcbSA xJI955khbFGJl4//sYLYogJ6El/uzYN6TFGi/WkDI0RvjMSLjo9g83kFBCVOznzCMoFRbBaS sbOQlM1CUgYR15FYsPsTG4StLbFs4WtmGPvMgcdAvRxAtrXEv3YbZCULGDlWMYoWpxYX56Yb GemlFmUmFxfn5+nlpZZsYgRG7cEtv612MB587niIUYCDUYmHd0G+XbgQa2JZcWXuIUYJDmYl EV55XvtwId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rz+LxXDhQTSE0tSs1NTC1KLYLJMHJxSDYy+ M3t+hJ03j1vzdOoywfjLPb3FrZncl5WWZ89kCy28cHFFSPidi7sKTBRuMvsFataaFrA7t+oc ZvnGZixgf5p9y7vzPZ4fSt45eBx+Hpyw2yGg6UhXm+7/yiztS9GGT8UnJZ3/e+zxE/XlPHPi 7T8sYJnf0n9cz23nKa6LXJWLXk1TyFlR5KXEUpyRaKjFXFScCAC69jyi1gIAAA==
Archived-At: <http://mailarchive.ietf.org/arch/msg/quic/FpQwgKIMmP7IhPr67A6pTZUpSzw>
Cc: Jana Iyengar <jri@google.com>, Ian Swett <ianswett@google.com>, "quic@ietf.org" <quic@ietf.org>
Subject: Re: [QUIC] Version Negotiation vs. Option Negotiation
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: Fri, 20 May 2016 13:17:19 -0000

Hi Patrick,
Thanks for the explanation, no reason to worry then I suppose.

Cheers
Niklas

--


On 19/05/16 16:27, "Patrick McManus" <mcmanus@ducksong.com<mailto:mcmanus@ducksong.com>> wrote:

Hi Niklas,

You're basically envisioning the process that was used for versioning http/2 during standardization.. it was known as various "http2-draft-N" with a variety of N's that were negotiated at each connection setup. Each token corresponded to a specific Internet-Draft. The last version was simply renamed "h2" and the draft versions faded from the Internet.

This worked quite well at enabling experimental deployments - especially because the fallback to HTTP/1 was realistically always possible in the case there wasn't a shared version between client and server. Some deployments supported just 1 version at a time, and relied more heavily on HTTP/1 fallback, others offered a small set of options in order to get the most experience possible. This worked very well and could work for this effort too as long as the higher level service had a TCP fallback available. The Internet-Drafts also took the, un-necessary imo, step of declaring some drafts as "for implementation" and others not. There were a few deployments of non-implementable drafts anyhow between consenting peers.

During development this is a much cleaner approach than a matrix of mix and match features negotiated on a per feature basis - especially when you're trying to make sense of the data gathered from the running code.

-Patrick



On Thu, May 19, 2016 at 4:48 AM, Niklas Widell <niklas.widell@ericsson.com<mailto:niklas.widell@ericsson.com>> wrote:
Hi,
While I understand the need to explicitly identify versions when doing experimentation with a new protocol, I do have a couple of concerns based on the fact that QUIC assumedly will be a very widely deployed protocol:


  *   Keeping client/server versions deployed in synch is no problem if the same entity controls both endpoints and can update them freely (like Google does for QUIC in Chrome today). However, in the wild I expect different versions to be deployed, some in places where they might be very hard to upgrade (like IoT and other embedded devices). I thus see a maintenance headache to keep several simultaneous versions of QUIC server code running just to be able to serve different clients.
  *   Who will bump the version? Is it IETF?
  *   Maybe the idea is to keep increasing the version of QUIC until the QUIC specs are final, and use that final version as THE version that hosts need to implement, but then maybe that should be stated in the charter, or is it implicitly assumed?

Cheers,
Niklas Widell
Ericsson AB

--


On 18/05/16 18:03, "QUIC on behalf of Ian Swett" <quic-bounces@ietf.org<mailto:quic-bounces@ietf.org> on behalf of ianswett@google.com<mailto:ianswett@google.com>> wrote:

Thanks Jana, the clarification is appreciated.

On Tue, May 17, 2016 at 8:37 PM, Jana Iyengar <jri@google.com<mailto:jri@google.com>> wrote:
Greetings,

I am modifying the charter text that currently says "loss detection and recovery, congestion control, and negotiation" to say "loss detection and recovery, congestion control, version negotiation, and option negotiation", and I wanted to clarify the roles of version negotiation and option negotiation in the current version of QUIC, since it may be a source of a bit of confusion.

Version negotiation is used for determining how to read and parse a QUIC packet. Any "on-the-wire" change to the core protocol or generally any change that impacts interoperability results in a version change. Version negotiation, as described in Section 7.1 of draft-tsvwg-quic-protocol-02<https://tools.ietf.org/html/draft-tsvwg-quic-protocol-02#section-7.1>, allows the two ends to agree on the version to use for communication. This is, as Christian puts it, a "blunt" instrument, and it should be treated as such. Versioning is not generally intended to be used for negotiating the equivalent of TCP options. The expectation is that versioning will also allow continued experimentation with QUIC.

I believe that no current IETF transport has versioning.

In addition to versioning, QUIC currently exchanges transport parameters -- the equivalent of TCP options -- during the handshake. This is described, though not in much detail, in Section 9 of draft-quic-protocol-02<https://tools.ietf.org/html/draft-tsvwg-quic-protocol-02#section-9>. Examples of things that may be negotiated via these parameters include max open streams, among other things. This mechanism may be used for negotiating features as well, such as use of multipath.

The initial drafts will contain both of these mechanisms.

- jana

_______________________________________________
QUIC mailing list
QUIC@ietf.org<mailto:QUIC@ietf.org>
https://www.ietf.org/mailman/listinfo/quic



_______________________________________________
QUIC mailing list
QUIC@ietf.org<mailto:QUIC@ietf.org>
https://www.ietf.org/mailman/listinfo/quic