Re: Exercising Version Negotiation

Ryan Hamilton <rch@google.com> Mon, 26 March 2018 18:36 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 A8930127136 for <quic@ietfa.amsl.com>; Mon, 26 Mar 2018 11:36:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.01
X-Spam-Level:
X-Spam-Status: No, score=-2.01 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_NONE=-0.0001, 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 6JO3iTsp1785 for <quic@ietfa.amsl.com>; Mon, 26 Mar 2018 11:36:54 -0700 (PDT)
Received: from mail-yb0-x22f.google.com (mail-yb0-x22f.google.com [IPv6:2607:f8b0:4002:c09::22f]) (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 2569D1250B8 for <quic@ietf.org>; Mon, 26 Mar 2018 11:36:54 -0700 (PDT)
Received: by mail-yb0-x22f.google.com with SMTP id v8-v6so6723914ybm.11 for <quic@ietf.org>; Mon, 26 Mar 2018 11:36:54 -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=yHr/3HbQ5GmHpxku+zCHiJhYiz/5j+ieve2Vy/z1ylM=; b=niofGJaoilaXbiMUznx9BH2uFl525xy62mg6rIxSRZwyrd7q1l85h+ny0AbXtTm38l bhiyX/RAHA2L0DGIryTSRM4tHzSNxk12nGZXIwnngdXWyohS+wXxbZkcfeEEO5+GvU+L XuGX+YMyZCWMIvsTJLAJ5ZDR36E76GfX+xZ7w+iu8HcFbU4icrqv27Z7hopOGUpE9X+b y5nT1FsyQJeaBpKD9EmrPus99f82T2J/L04HA1mUmFQ+Y4AdU2bNC/P6Wr81Doh7+NoS tOJAA9ZXGjD9G6zHIsR+P8KVXBk1T9F3DBzEGfiE58FxxrAaBz1zD56ZKrUZYFRwuujp 5vgg==
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=yHr/3HbQ5GmHpxku+zCHiJhYiz/5j+ieve2Vy/z1ylM=; b=bwRoU3ZbFGi/uOSjGXQO0zghsldTNOsbtUBDuZxrpNhJUTILOAWbPwCJ2Lf3f9JQnE oq7RLvcj1PNxV+URCxGx9fOMu21Jt+yYi3MWs8MwWT6veX9DSf7QFckKsT5mhQ8tmvGy jWcFpWsgnMKd1l4eq4NUjR+xY0Z5oClusjg8SKQTu2BMV2KdrYaPY3r7fdv6lx8ju3wU DAYMZFWhdwAu5URd+5CuuHgBlAQ079DsSFnndPKgjr6JaqgaUKqPkjc5ib6LjfpPd35z E2hAWd7tXMSQHY9NqRtaSCMe/2X/l2sndno9WiGDRixJmRTO9hkMzlR/Ss2yj+Wnk0+m 3/VQ==
X-Gm-Message-State: AElRT7FDTigUuVhpCKOmFrcVZ/Bcm9vO08IUChEuLBxIOflrN3b5Ps7p 5rOyl0f7s2kisrg80BKkeZt/6E/jOGIVRYnPL1wB7w==
X-Google-Smtp-Source: AIpwx4+VuXpnnb+DW76U68kyV2lPELtDR1WX6LbOFtC5pzCMSn1nm1xaE6dCEWTn13pvA00fKixxkOh4Qmo3ME7eaYU=
X-Received: by 2002:a25:aea2:: with SMTP id b34-v6mr8374127ybj.443.1522089413034; Mon, 26 Mar 2018 11:36:53 -0700 (PDT)
MIME-Version: 1.0
Received: by 2002:a25:98c5:0:0:0:0:0 with HTTP; Mon, 26 Mar 2018 11:36:52 -0700 (PDT)
In-Reply-To: <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> <BY2PR15MB0775C6A8859735FF359A2974CDA80@BY2PR15MB0775.namprd15.prod.outlook.com>
From: Ryan Hamilton <rch@google.com>
Date: Mon, 26 Mar 2018 11:36:52 -0700
Message-ID: <CAJ_4DfStVJ7kY8V-LLFHL8cJejP8BtWW2+Gjbgc-WRhRfMP6yg@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="000000000000c87e8a0568550e86"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/gi3s-QFlrPmOUXKPA98BMmZx9BU>
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 18:36:57 -0000

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?
>
>
>