Re: Exercising Version Negotiation

Roberto Peon <fenix@fb.com> Fri, 23 March 2018 22:36 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 597B212E047 for <quic@ietfa.amsl.com>; Fri, 23 Mar 2018 15:36:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1521844608; bh=ZI+VQOcyW+RxVobhXLM24rdMnVLXpv3Vx9vMbiwNTAY=; h=From:CC:Subject:Date:References:In-Reply-To:To; b=f6LvzasQ61a3iXDwLOoVlR00gpUj8Ltiy4C+7YkriBOLmFMgVRmNJvPf4m1MKAcmn iXuDur896yBrtvy51CsckZb8OX5hnJlzmViI1T5t694gKTbTr6RQ5G16X6VcRAIxiS DFBaXY3lI8VDO3Pr133S5KZQsBYwo4+kli1R80eM=
X-Mailbox-Line: From fenix@fb.com Fri Mar 23 15:36:48 2018
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 185EB12E03E; Fri, 23 Mar 2018 15:36:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1521844608; bh=ZI+VQOcyW+RxVobhXLM24rdMnVLXpv3Vx9vMbiwNTAY=; h=From:CC:Subject:Date:References:In-Reply-To:To; b=f6LvzasQ61a3iXDwLOoVlR00gpUj8Ltiy4C+7YkriBOLmFMgVRmNJvPf4m1MKAcmn iXuDur896yBrtvy51CsckZb8OX5hnJlzmViI1T5t694gKTbTr6RQ5G16X6VcRAIxiS DFBaXY3lI8VDO3Pr133S5KZQsBYwo4+kli1R80eM=
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 DA6DC12E03F for <dmarc-reverse@ietfa.amsl.com>; Fri, 23 Mar 2018 15:36:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 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, SPF_PASS=-0.001, URIBL_BLOCKED=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=p84uHhlD; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.b=EcvRGkby
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 nZ8TQvj0fHea for <dmarc-reverse@ietfa.amsl.com>; Fri, 23 Mar 2018 15:36:45 -0700 (PDT)
Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) (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 E1B5F12EB26 for <rch=40google.com@dmarc.ietf.org>; Fri, 23 Mar 2018 15:36:37 -0700 (PDT)
Received: from pps.filterd (m0001255.ppops.net [127.0.0.1]) by mx0b-00082601.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w2NMQkR3027649; Fri, 23 Mar 2018 15:36:37 -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=ZI+VQOcyW+RxVobhXLM24rdMnVLXpv3Vx9vMbiwNTAY=; b=p84uHhlD5Y6S83+KWJkskEpp1FNrCU3XzxRu6DVybMYqI//Q+RmHuR2R4In4JSuWH4ID JLrxaBXPSuF28bYiZwKaWKLe877ppviwaWKkJcHNs59PJwVJtZNGdR59DnPyXDYY003y 1XErHzdOAgey94qm/7H5iOp5rzhkHkgs7UI=
Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0b-00082601.pphosted.com with ESMTP id 2gw8mjgatd-5 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Fri, 23 Mar 2018 15:36:36 -0700
Received: from NAM02-BL2-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.33) with Microsoft SMTP Server (TLS) id 14.3.361.1; Fri, 23 Mar 2018 18:35:27 -0400
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=ZI+VQOcyW+RxVobhXLM24rdMnVLXpv3Vx9vMbiwNTAY=; b=EcvRGkby13AKw8exgLKpv7BU0A9Rl5cNFO8aYKQ99cYRw4qsc7wvcIeyQMIIh7tVyfNR40SGmxZTHaJAeNET6czCK/BuV/6rAEiBmN3nWIIhRMCdQ/MrmkgiFukmhjga3aiyLRkDF9RGzNJYmM1ekPeOv6TF+F3InfWPfRa9NKY=
Received: from BY2PR15MB0775.namprd15.prod.outlook.com (10.164.171.11) by BY2PR15MB0357.namprd15.prod.outlook.com (10.163.109.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Fri, 23 Mar 2018 22:35:25 +0000
Received: from BY2PR15MB0775.namprd15.prod.outlook.com ([10.164.171.11]) by BY2PR15MB0775.namprd15.prod.outlook.com ([10.164.171.11]) with mapi id 15.20.0588.017; Fri, 23 Mar 2018 22:35:25 +0000
From: Roberto Peon <fenix@fb.com>
CC: Eric Rescorla <ekr@rtfm.com>, IETF QUIC WG <quic@ietf.org>, Mike Bishop <mbishop@evequefou.be>
Subject: Re: Exercising Version Negotiation
Thread-Topic: Exercising Version Negotiation
Thread-Index: AQHTwdYDUZhb3cJH5UigdAPrv4PipqPcS1kAgAAEWICAABZ4AIAAVeCAgADHmYCAAMElAP//liUAgACNhYCAAAC5BQ==
Date: Fri, 23 Mar 2018 22:35:24 +0000
Message-ID: <BY2PR15MB0775C6A8859735FF359A2974CDA80@BY2PR15MB0775.namprd15.prod.outlook.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>
In-Reply-To: <CAJ_4DfSNA0wMnvzxSy1bHU5VTdKujP6oZAtwn8DUNwnX97yLDQ@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [2620:10d:c090:200::6:699d]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BY2PR15MB0357; 7:dmi95zX4hEhPAMk383qwL/qGKuG59oi81ufxlD5t75RBrJz30WPTG+VOiy/XCobJX8co4ceoFTnONhgf4j3j+aWIicyqHh7BqIgscrJ9gpwSVcE1BjlNKJgWl73UpLi77+hIm9nPT6LKMYdnjLS5NmLq7aGbrR3IguyjsjuUSTskUkugLiNn7fFVlnQ/sdSHLkaXQys5198ohQR1nIz6YZzNXOzoKH4tX/wMRXANehBTK7AwGL3nkwPDmYwqoP1T; 20:O2mdC9Q2XPbBlCfYokpeobw+ga/Y6IMLC9d2Fu3OM0AYjXYyxUQBlOgHbcrfu//2L+Yf2F/LKy4/jDWuW1eZcNdzKFBzmofsef8UnAGPR88edHw2LnNIZHtWGzQgBDal7nJytFiR11fo8/3MgcCekVtIbzzywAnqJc10eLqb2e8=
x-ms-exchange-antispam-srfa-diagnostics: SOS;
x-ms-office365-filtering-correlation-id: 612f8dac-1a27-4dd3-68c7-08d5910e5efd
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BY2PR15MB0357;
x-ms-traffictypediagnostic: BY2PR15MB0357:
x-microsoft-antispam-prvs: <BY2PR15MB0357785317F39ECCF9C7E849CDA80@BY2PR15MB0357.namprd15.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(158342451672863)(67672495146484)(211936372134217)(153496737603132);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(3231221)(11241501184)(944501327)(52105095)(6041310)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(6072148)(201708071742011); SRVR:BY2PR15MB0357; BCL:0; PCL:0; RULEID:; SRVR:BY2PR15MB0357;
x-forefront-prvs: 0620CADDF3
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(39860400002)(376002)(346002)(39380400002)(366004)(189003)(199004)(7696005)(14454004)(6116002)(7736002)(68736007)(3660700001)(53936002)(6246003)(2906002)(3280700002)(53546011)(4326008)(86362001)(76176011)(25786009)(446003)(11346002)(478600001)(6506007)(99286004)(74316002)(5660300001)(7116003)(33656002)(561944003)(316002)(93886005)(3480700004)(6606003)(229853002)(105586002)(81166006)(8936002)(46003)(186003)(54906003)(8676002)(81156014)(55016002)(106356001)(6436002)(9686003)(54896002)(77096007)(102836004)(97736004)(19627405001)(236005)(2900100001)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR15MB0357; 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: UZ18wDGqs+0MJwTKvA9HRHZfc6W5wueQwNaONA1qWg4Fro3dI366O/1vdZImgoVeKLdelz6ZfrxBO5zjPKs5JROS5JsOoiWpGSVg2QQ62XIhG/DFq0PEtkCpPika3zwBcDJ7zKgXAc/W5iJr/IeAR3gN/W4D+8qUxpq8EWsNKzDXuVuGiPYqTf5z12IL+SLCnyCGfpakaKoKDI8R+/YNFrJUXrxmzR0LWLIgcnHy9igUieR2md7btPzbpDJljRKDbKpyYyPBo8oryemNbMaouc687AiOOZuiIDX3n9o6c358wJ5W6cILyYnnqEqTeDzEl9dhtGFMcctNsWZLg7NJAg==
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_BY2PR15MB0775C6A8859735FF359A2974CDA80BY2PR15MB0775namp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 612f8dac-1a27-4dd3-68c7-08d5910e5efd
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Mar 2018 22:35:24.9997 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR15MB0357
X-OriginatorOrg: fb.com
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-03-23_13:, , signatures=0
X-Proofpoint-Spam-Reason: safe
X-FB-Internal: Safe
To: Ryan Hamilton <rch@google.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/h5lxoeWnFHY7WmLg4ehuHvmh-nk>
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: Fri, 23 Mar 2018 22:36:48 -0000

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> on behalf of Ryan Hamilton <rch=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?