Re: Exercising Version Negotiation

Ryan Hamilton <rch@google.com> Mon, 26 March 2018 20:04 UTC

Return-Path: <rch@google.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 7DA0612778D for <quic@ietfa.amsl.com>; Mon, 26 Mar 2018 13:04:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.71
X-Spam-Level:
X-Spam-Status: No, score=-2.71 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, T_RP_MATCHES_RCVD=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 4w_1AQFkvxu8 for <quic@ietfa.amsl.com>; Mon, 26 Mar 2018 13:04:35 -0700 (PDT)
Received: from mail-yw0-x230.google.com (mail-yw0-x230.google.com [IPv6:2607:f8b0:4002:c05::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 207B31276AF for <quic@ietf.org>; Mon, 26 Mar 2018 13:04:35 -0700 (PDT)
Received: by mail-yw0-x230.google.com with SMTP id v130so6239686ywa.0 for <quic@ietf.org>; Mon, 26 Mar 2018 13:04:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Vj/LVurf53ZY6rhgrjw7DAjpy1KmXu2JJ/0dhMErjP0=; b=gn2/sBR4Vz2aP07HqL6P/ccvUueljPLuR1xoKZ8vThn1TgiNuGy8IbsPqvc2tJCqyM X9UVi04N77hKp8LsEc7MNUr6iEy+zRItSKYsHaxfhtW1Q3aEwvywSrUNZbQlBczHqBi9 OzVxS28g6mixD+nXkcmrzstwKkKMMB1Gg1otWFqBMxtetU3sgOUU2GU2skXQJyaEy7go ERRFYu+/QQZn/+whkRkg5Da05rpPzyff5G6GbfCqAzS/99tQKKZL32YkqeQh6q7pgIOL Gb2Npb/cJX2H43OG0orj0cWLko+9X1IQ4UwSud96ZYs9gNGkNteymVTbPU5yOuT6UCWb /bpA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Vj/LVurf53ZY6rhgrjw7DAjpy1KmXu2JJ/0dhMErjP0=; b=ohKboM/Xy6tj5rTH7EokAlEFM3q9wGy+x/nJWxG4VGqZu0vJITAp87PrncVmbfZ2DU GUN+BAI+sVMzKni81LlPMDM+IE92aB9KFneQCj37mjZ5NEFl5XG+5ZGZbyuTYwweBtFH 5jn814vPvpDnVa4oRNqIZVMLRVe4m045xh0l94nHc+OmZunmvSMPvblLiqlu/duynbUE TTUZbqWXyilomntkXFFkpNxKBHoVlgGsK6nbYyhALuD50AoydX0tZhCBZsudAtc1Sn6R a3ASM3+vaNnr7kIrWpuyheZWyDYe7VXdGpw2GnZrySyW/g2xoGXWBK10YT24YJkmMHam 8Z6g==
X-Gm-Message-State: AElRT7ERa0Ze4KX3TWVX2wMQrsN/3G0MN8luK0OVw8jXBl9NscoLPa4M 5DLV9RdBZTb09A30eGdQt6kr2e1PIUHPKrxhAGWArA==
X-Google-Smtp-Source: AG47ELtPQ2xsBJEOHvrNpPhKUHWhHCbBWz7QaQbM2yVjSsRG3rb13wFwQU8pArU8fQmmzF0rwMzW/WrjezxpaCG0/D0=
X-Received: by 10.129.104.86 with SMTP id d83mr24516805ywc.386.1522094673742; Mon, 26 Mar 2018 13:04:33 -0700 (PDT)
MIME-Version: 1.0
Received: by 2002:a25:98c5:0:0:0:0:0 with HTTP; Mon, 26 Mar 2018 13:04:32 -0700 (PDT)
In-Reply-To: <5302B914-3586-4C94-83B3-09309F630C98@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>
From: Ryan Hamilton <rch@google.com>
Date: Mon, 26 Mar 2018 13:04:32 -0700
Message-ID: <CAJ_4DfRm6wTuJLuX2CT6Fdu-LGakaxLKeqhyp5oj5iuouDLm+A@mail.gmail.com>
Subject: Re: Exercising Version Negotiation
To: Roberto Peon <fenix@fb.com>
Cc: Eric Rescorla <ekr@rtfm.com>, IETF QUIC WG <quic@ietf.org>, Mike Bishop <mbishop@evequefou.be>
Content-Type: multipart/alternative; boundary="001a1149087a5892c00568564869"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/sbf9KDwHwBJWLvj7oVrbrSoujao>
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: Mon, 26 Mar 2018 20:04:39 -0000

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> 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>
> *Date: *Monday, March 26, 2018 at 11:38 AM
> *To: *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
>
>
>
> 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> 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> 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> wrote:
>
> Wouldn’t it be best to do all 3 combinations? ☺
>
> -=R
>
>
>
> *From: *QUIC <quic-bounces@ietf.org> on behalf of Ryan Hamilton <rch=
> 40google.com@dmarc.ietf.org>
> *Date: *Friday, March 23, 2018 at 1:20 PM
> *To: *Eric Rescorla <ekr@rtfm.com>
> *Cc: *IETF QUIC WG <quic@ietf.org>, Mike Bishop <mbishop@evequefou.be>
> *Subject: *Re: Exercising Version Negotiation
>
>
>
> On Fri, Mar 23, 2018 at 1:48 AM, Eric Rescorla <ekr@rtfm.com> wrote:
>
> On Thu, Mar 22, 2018 at 8:53 PM, Ryan Hamilton <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?
>
>
>
>
>