Re: Exercising Version Negotiation

Roberto Peon <fenix@fb.com> Tue, 27 March 2018 00:02 UTC

Return-Path: <fenix@fb.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 06D5A127871 for <quic@ietfa.amsl.com>; Mon, 26 Mar 2018 17:02:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1522108949; bh=0Z0j+TSf/NUWpzK6aH952gseejjC3TVXfiLjUMmK6IE=; h=From:To:Subject:Date:References:In-Reply-To:Cc:Cc:Cc:Cc; b=LNdLmgr2PenvRm1HFCG1DxOA+FL1gMNhEdcv1ATXf6uYOxq9u08AYSzniL3fYZIM9 y2yML2M9Zqi/5xsDPjjtMjdqhn5Z+ltv1m9KWjFb2NkLVmWN2FJSJM/d1zAHKwhilE dHiKKz0ik1qEg9ua1NHNicbq5F1WXDjUUpl0CYqM=
X-Mailbox-Line: From fenix@fb.com Mon Mar 26 17:02:28 2018
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id C8809120726; Mon, 26 Mar 2018 17:02:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1522108948; bh=0Z0j+TSf/NUWpzK6aH952gseejjC3TVXfiLjUMmK6IE=; h=From:To:Subject:Date:References:In-Reply-To:Cc:Cc:Cc:Cc; b=hAUkq99wZ/0D+ypqrPlkaPVHYckAlQy7HbpmetlAhV85o8pGIOtjH2+JP4d8oMcrF oNKuzz8Aotl6q1qa3b8P1F57w/grLZC9tthvzjYhfwNsJxVKFPQay9Jioz35ygThRL WyFjE/Ax+uf2+FH1UW8WcG2fMa2EbEuAAPBDr7hc=
X-Original-To: dmarc-reverse@ietfa.amsl.com
Delivered-To: dmarc-reverse@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A6C2B127871 for <dmarc-reverse@ietfa.amsl.com>; Mon, 26 Mar 2018 17:02:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.701
X-Spam-Level:
X-Spam-Status: No, score=-2.701 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, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=fb.com header.b=Nxr+LseY; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.b=NqQKTCFU
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 gTJRmGyltDrA for <dmarc-reverse@ietfa.amsl.com>; Mon, 26 Mar 2018 17:02:25 -0700 (PDT)
Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) (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 98CC9120726 for <rch=40google.com@dmarc.ietf.org>; Mon, 26 Mar 2018 17:02:25 -0700 (PDT)
Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w2R01inG030186; Mon, 26 Mar 2018 17:02:25 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=facebook; bh=0Z0j+TSf/NUWpzK6aH952gseejjC3TVXfiLjUMmK6IE=; b=Nxr+LseYCgBgfQv19m8Tks77/tosCOYCxCq7ubqK9gEy5Z6olrKSOOoYH1sYj9CS8Q7d BjiIR5RXDoRpY7wMe9Zr4yWmM6GKrqhvT+09h985onwxisUhV+//N1klT+kG9YO0O+I0 9/zYcxZwQgT9YZGVna+Aw5lLngzP/sPq8Mo=
Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2gy7nw8p1u-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 26 Mar 2018 17:02:25 -0700
Received: from NAM03-CO1-obe.outbound.protection.outlook.com (192.168.54.28) by o365-in.thefacebook.com (192.168.16.22) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 26 Mar 2018 17:02:23 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=0Z0j+TSf/NUWpzK6aH952gseejjC3TVXfiLjUMmK6IE=; b=NqQKTCFUyJMMdtKSBakDDrwMP+DLXTjGK+4TXiXfX7lOO8txvkGkwzXZ3jFba48KjIBb+j9jMUAUQi2NBze88CQaG6PCdVjwXpJfNnJO/pmg5TStzVu9aiMzbehdhS5X+Lp5GlV2HWC47GzgZF1wOanQUVFTRMjnGtOPVw+nKXI=
Received: from BY2PR15MB0775.namprd15.prod.outlook.com (10.164.171.11) by BY2PR15MB0792.namprd15.prod.outlook.com (10.164.171.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Tue, 27 Mar 2018 00:02:21 +0000
Received: from BY2PR15MB0775.namprd15.prod.outlook.com ([fe80::78a6:3a7a:1195:dd02]) by BY2PR15MB0775.namprd15.prod.outlook.com ([fe80::78a6:3a7a:1195:dd02%13]) with mapi id 15.20.0609.012; Tue, 27 Mar 2018 00:02:21 +0000
From: Roberto Peon <fenix@fb.com>
To: Ryan Hamilton <rch@google.com>
Subject: Re: Exercising Version Negotiation
Thread-Topic: Exercising Version Negotiation
Thread-Index: AQHTwdYDUZhb3cJH5UigdAPrv4PipqPcS1kAgAAEWICAABZ4AIAAVeCAgADHmYCAAMElAP//liUAgACNhYCAAAC5BYAEdfoA//+WXoCAAIIhAP//rCwAAA+jOID//6PSAA==
Date: Tue, 27 Mar 2018 00:02:21 +0000
Message-ID: <183DFDA2-6B8D-4D4E-976F-50AC8DCF1251@fb.com>
References: <CABcZeBMv5BqZOtgVA2wfqaaGCd94gcNPB9bTXkrvNXXRveU8wA@mail.gmail.com> <CAJ_4DfQ6zqVeUUF7XcoT110kVcP1BJFEtqVR-+FN5XD2UuRMMA@mail.gmail.com> <CABcZeBMVNy151rFntLutSPtctPsd2Ei3Qy-ChuEXVMVpz4pgdQ@mail.gmail.com> <SN1PR08MB1854DD71FDCB9FBA48DD26E9DAA90@SN1PR08MB1854.namprd08.prod.outlook.com> <CAJ_4DfQxcxNGNP9CW3poPqnFgUsrNy269dO2Lf0dvWBFKKsSHg@mail.gmail.com> <CABcZeBNfw6MjjgeqQct11g6Kf=4xy+zVZiBRMwwzhtKB2rWHZg@mail.gmail.com> <CAJ_4DfRCNRHajNfFdedg6O54mjydWt+ooRESJZQ5L0sZmcwmXg@mail.gmail.com> <9A92D490-1F4F-457D-9209-C19E154E4881@fb.com> <CAJ_4DfSNA0wMnvzxSy1bHU5VTdKujP6oZAtwn8DUNwnX97yLDQ@mail.gmail.com> <BY2PR15MB0775C6A8859735FF359A2974CDA80@BY2PR15MB0775.namprd15.prod.outlook.com> <CAJ_4DfStVJ7kY8V-LLFHL8cJejP8BtWW2+Gjbgc-WRhRfMP6yg@mail.gmail.com> <5302B914-3586-4C94-83B3-09309F630C98@fb.com> <CAJ_4DfRm6wTuJLuX2CT6Fdu-LGakaxLKeqhyp5oj5iuouDLm+A@mail.gmail.com> <3CD5DE02-61DE-4201-873E-D682AD7345F2@fb.com> <CAJ_4DfSdchMJdo=7wa7zpUyuA1CHOF-vL_3wnTbw-fiPbo1bZw@mail.gmail.com>
In-Reply-To: <CAJ_4DfSdchMJdo=7wa7zpUyuA1CHOF-vL_3wnTbw-fiPbo1bZw@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/10.9.0.180116
x-originating-ip: [2620:10d:c090:200::6:6cc2]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BY2PR15MB0792; 7:90aEHH/FiXfzLIr5zYtaWkxejopEsbRvvVl4PTUsZY/+U9fMKBb79vQlC/qDwB7qd+XiY6wresgk1NfFAlEPpJEWcLpvGTb8XTBR6W6zcIVZdLWHV4eJ4xUb6mew0M8R8VD+nC8f8+AZy+XQ21pFA9nS+MJQATaW6PJzKah+jssV77x+s1IMZjIpcXEBrLCo+/Kjm4tsj+Hv0yjq5gF0eci0VojcYfu6AtM7HhgEsnTW3KABY7RD3cdCLbDF3tEN; 20:g4o2DSfzLgj38o/EgHZIMo8oLCimOtgarT0x+meJWGb4zx5sy6FLKbMqVrZHQj3Gb2h3Wp8IjdXJl363i7E8XxfP1A4OAnz3QmZjZ3wYWI/rqHzBjUAnh1D3J0JagaF0FsJ+GdoiCTzp17WEjQAHbiGQatjgFtjsK2mLnldJxZ0=
x-ms-exchange-antispam-srfa-diagnostics: SOS;
x-ms-office365-filtering-correlation-id: 09d63ccb-26f2-417d-9fff-08d593760347
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BY2PR15MB0792;
x-ms-traffictypediagnostic: BY2PR15MB0792:
x-microsoft-antispam-prvs: <BY2PR15MB0792E468F4EA860FB6705AE7CDAC0@BY2PR15MB0792.namprd15.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(28532068793085)(158342451672863)(67672495146484)(211936372134217)(153496737603132)(21748063052155);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231221)(11241501184)(944501327)(52105095)(10201501046)(3002001)(93006095)(93001095)(6041310)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:BY2PR15MB0792; BCL:0; PCL:0; RULEID:; SRVR:BY2PR15MB0792;
x-forefront-prvs: 0624A2429E
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(366004)(376002)(396003)(39380400002)(39860400002)(189003)(199004)(51444003)(36756003)(68736007)(186003)(478600001)(82746002)(53946003)(446003)(11346002)(2906002)(790700001)(6116002)(83716003)(25786009)(486005)(81156014)(3660700001)(486005)(4326008)(8676002)(81166006)(2616005)(6916009)(102836004)(14454004)(46003)(229853002)(3280700002)(54906003)(86362001)(3480700004)(6506007)(6436002)(53546011)(8936002)(99286004)(97736004)(6486002)(33656002)(58126008)(316002)(105586002)(236005)(6512007)(6306002)(54896002)(93886005)(53936002)(106356001)(2900100001)(6246003)(7116003)(5250100002)(7736002)(5660300001)(76176011)(476003)(561944003)(42262002)(579004); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR15MB0792; H:BY2PR15MB0775.namprd15.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
received-spf: None (protection.outlook.com: fb.com does not designate permitted sender hosts)
x-microsoft-antispam-message-info: PkWAdHwJJTm27O1fzqskuPfWix83W2fMmNKv+H1RCFHWauDGc4V00KPFX5UkH0UsXNChACsevw49EmFhOVTG9A0LA2s2s5q6hX+6K0Kt4pnQBFygXP+v/ckd9X//vW/0/vl8cLwOdFdIQMLMrCJ33qBPEED/3UHmSoGgFBh28W0ZWEklHs75zz6ziPLwN8N8X1NgKpt3bXq4ySNCj7SD4HGdO/Fxzu/uqUVN7WRMF+CfAUQv+6S1YPW2c0+HcHVQ6yTuyPPejTPsXsDi4Jy5dabyxkHLb6iwlskiTl4VP1eT0YYnKu8TsLapqy2TkpKS1kz5/AmT6ApdQgy5oWGCHw==
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_183DFDA26B8D4D4E976F50AC8DCF1251fbcom_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 09d63ccb-26f2-417d-9fff-08d593760347
X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Mar 2018 00:02:21.2305 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR15MB0792
X-OriginatorOrg: fb.com
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-03-26_10:, , signatures=0
X-Proofpoint-Spam-Reason: safe
X-FB-Internal: Safe
Cc: Ryan Hamilton <rch@google.com>
Cc: Eric Rescorla <ekr@rtfm.com>
Cc: IETF QUIC WG <quic@ietf.org>
Cc: Mike Bishop <mbishop@evequefou.be>
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/670WbwfuFXBcXvquIx9LtRBxRTc>
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: Tue, 27 Mar 2018 00:02:29 -0000

There are any number of ways it could be done. I’m just proposing one!
2b happens as often as you want it to happen. I’m proposing one makes it happen once a week or so.
You could force that set of the IP population to do the version negotiation for a new connections during a particular minute each week, for instance
-=R


From: Ryan Hamilton <rch@google.com>
Date: Monday, March 26, 2018 at 3:33 PM
To: Roberto Peon <fenix@fb.com>
Cc: Ryan Hamilton <rch=40google.com@dmarc.ietf.org>, Eric Rescorla <ekr@rtfm.com>, IETF QUIC WG <quic@ietf.org>, Mike Bishop <mbishop@evequefou.be>
Subject: Re: Exercising Version Negotiation

I think that ekr's proposal was directed only at 2b.  Namely:

It would exercise the former.

-Ekr

On Thu, Mar 22, 2018 at 2:10 PM, Ryan Hamilton <rch@google.com<mailto:rch@google.com>> wrote:
When you say Version Negotiation, do you mean the process of sending an receiving a version negotiation packet, or simply the act of speaking two different versions? Your proposal seems to be the latter but I don't think I follow how it would exercise the former, though maybe that's intentional?

​So while #1 and #2a are interesting, I'm specifically trying to understand the case ekr originally proposed, namely sending and receiving a version negotiation packet (aka #2b). If servers use Alt-Svc and, as you say, that prevents on the wire version negotiation (2b) then it doesn't sound like we're achieving the objective initially proposed, are we?

On Mon, Mar 26, 2018 at 3:04 PM, Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>> wrote:
There are two sets of entities that we’re greasing.

  1.  Middleboxes
  2.  Implementation endpoints.

#1 is greased whenever multiple versions are spoken by any set of clients/servers
#2 is greased whenever the client/server use multiple versions simultaneously. There is a subset of the problems space which is negotiation. Within negotiation there are two subsets:

  1.  Negotiation where the client picks something it likes
  2.  Negotiation where the client must throw away old state and use something new.

Users incur a hit only when 2b happens. <bad joke> 2b or not 2b, that is the question. </bad joke>
How often we pick 2b is the question. If we’re slowly rotating between versions, then how often depends on which path the client uses to know it should do QUIC.
If it is being told to use a version via alt-svc, then we’re unlikely to see the QUIC version negotiation happen on the wire.
If it is not told via alt-svc, then, once a week or so (if following my example), the client will learn that its version is no longer the version the server wishes to speak. It will incur that penalty once per week per connection per ip.

-=R

From: QUIC <quic-bounces@ietf.org<mailto:quic-bounces@ietf.org>> on behalf of Ryan Hamilton <rch=40google.com@dmarc.ietf.org<mailto:40google.com@dmarc.ietf.org>>
Date: Monday, March 26, 2018 at 1:05 PM
To: Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>>
Cc: Eric Rescorla <ekr@rtfm.com<mailto:ekr@rtfm.com>>, IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>, Mike Bishop <mbishop@evequefou.be<mailto:mbishop@evequefou.be>>
Subject: Re: Exercising Version Negotiation

So if a client sees Alt-Svc v+, and the server supports v+, then there will be no version negotiation. Same for:
  Alt-Svc v- Server supports v-
  Alt-Svc v+, v- Server supports v+, v-
I think we'll only get version negotiation when the client attempts to speak a version of QUIC that the server does not support. But the client will only attempt to speak a version of QUIC that the server advertises. So to get negotiation we need one of:
  Alt-Svc v+,v- Server supports v- (client prefers v+)
​  ​
Alt-Svc v-
​, v+​
Server supports v
​+​ (client prefers v-)
​If this is the setup, I think that every connection the client makes to the server will incur a version negotiation 1-RTT hit. I don't think it will be only a single hit per day. Can you explain how this setup will only impact the client once per day (for connections to this server?)

Cheers,

Ryan

On Mon, Mar 26, 2018 at 12:18 PM, Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>> wrote:
I was thinking that you’d advertise different versions based on the client IP and day, including the alt-svc stuff, thus (as you point out) the QUIC version negotiation logic would match up with the alt-svc logic.
This depends to some extent on how we actually advertise QUIC in alt-svc (e..g. do we advertise all versions, or just say ‘quic’, and let the client sort it out?).

I’d imagine that 33% of the time, a particular IP will see ALT-SVC: v+, and QUIC will negotiate v+. 33% of the time, that IP will see ALT-SVC: v+, v- and QUIC will negotiate either, etc.
I suspect that there are better proposals which could exercise more of the state space (v-, v+ advertised instead of v+, v-, etc.), but the overall mechanism would be the same—a particular client sees the world as a slowly changing rainbow of version combinations.

-=R

From: Ryan Hamilton <rch@google.com<mailto:rch@google.com>>
Date: Monday, March 26, 2018 at 11:38 AM
To: Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>>
Cc: Eric Rescorla <ekr@rtfm.com<mailto:ekr@rtfm.com>>, IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>, Mike Bishop <mbishop@evequefou.be<mailto:mbishop@evequefou.be>>

Subject: Re: Exercising Version Negotiation

Mixing day as well as client IP into the experiment group function makes sense, but it's not clear to me how this only ends up impacted 1 connection per day, because of Alt-Svc. Is it your vision that the server will advertise v- and v+ for all users, or will the QUIC version negotiation logic match up with the Alt-Svc advertisement logic? I ask because if the server keeps advertising v- and v+, and the client prefers, say v+, I would imagine that the client would attempt to use v+ on each new connection attempt.

On Fri, Mar 23, 2018 at 3:35 PM, Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>> wrote:

This is roughly what I'm thinking:

auto versions = std::vector<std::string>();

int day = date_as_unix_epoch_in_ms() / ms_in_day;

int day_mod = (day + hash(client_ip)) % 3;

switch (day_mod) {

  case 0:

    versions.push_back("v+");

    break;

  case 1:

    versions.push_back("v-");

    break;

  case 2:

    versions.push_back("v+");

    versions.push_back("v-");

    break;
}

With such a scheme, the client would incur an extra RTT on a new connection once a day.

-=R

________________________________
From: QUIC <quic-bounces@ietf.org<mailto:quic-bounces@ietf.org>> on behalf of Ryan Hamilton <rch=40google.com@dmarc.ietf.org<mailto:40google.com@dmarc.ietf.org>>
Sent: Friday, March 23, 2018 3:26:59 PM
To: Roberto Peon
Cc: Eric Rescorla; IETF QUIC WG; Mike Bishop
Subject: Re: Exercising Version Negotiation

Maybe. :) I'm just trying to get my arms around a concrete proposal. For example, if the server always advertises both versions, but only supports 1 version based on hash(client IP), and those client typically prefer the other version, then they'll incur an extra RTT on every connection, which seems undesirable. But I'm not sure if that's the proposal.

On Fri, Mar 23, 2018 at 2:00 PM, Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>> wrote:

Wouldn’t it be best to do all 3 combinations? ☺

-=R



From: QUIC <quic-bounces@ietf.org<mailto:quic-bounces@ietf.org>> on behalf of Ryan Hamilton <rch=40google.com@dmarc.ietf.org<mailto:40google.com@dmarc.ietf.org>>
Date: Friday, March 23, 2018 at 1:20 PM
To: Eric Rescorla <ekr@rtfm.com<mailto:ekr@rtfm.com>>
Cc: IETF QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>, Mike Bishop <mbishop@evequefou.be<mailto:mbishop@evequefou.be>>
Subject: Re: Exercising Version Negotiation



On Fri, Mar 23, 2018 at 1:48 AM, Eric Rescorla <ekr@rtfm.com<mailto:ekr@rtfm.com>> wrote:

On Thu, Mar 22, 2018 at 8:53 PM, Ryan Hamilton <rch@google.com<mailto:rch@google.com>> wrote:

Agreed. As specified, I don't see how the server would be induced to send a version negotiation packet in this case. Ekr, perhaps you can provide some sample flows. If the server supports versions A and B, and the client supports versions A and B, then it doesn't matter which version the client prefers. In either case, the server supports the version the client is attempting to speak and will not send a version negotiation packet.



I'm not suggesting that you flip the preferences, but rather that the each side configure itself with one version for a given connection. This is obviously trivial for a client. For the server, you can just hash the client's IP address to get a stable choice.



​Ah, I misunderstood what you meant by, "We would then suggest to people that they somewhat randomize their preferences (e.g., 99% of the time prefer v1+i, 1% of the time prefer v1-i)."



How would you envision this working with Alt-Svc advertisements? Would the server advertise support for both versions but only support a single one, or would it advertise only the single version?