Re: a proposed way forward was Re: Spin bit decision

"Brian Trammell (IETF)" <ietf@trammell.ch> Wed, 03 October 2018 07:58 UTC

Return-Path: <ietf@trammell.ch>
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 72A901311EA for <quic@ietfa.amsl.com>; Wed, 3 Oct 2018 00:58:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, URIBL_BLOCKED=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 okUi8e5dG-KV for <quic@ietfa.amsl.com>; Wed, 3 Oct 2018 00:58:05 -0700 (PDT)
Received: from gozo.iway.ch (gozo.iway.ch [212.25.24.36]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 73B89131090 for <quic@ietf.org>; Wed, 3 Oct 2018 00:58:05 -0700 (PDT)
Received: from gozo.iway.ch (localhost [127.0.0.1]) by localhost (Postfix) with ESMTP id A5D31341C50; Wed, 3 Oct 2018 09:58:03 +0200 (CEST)
X-Iway-Path: 0
Received: from localhost (localhost [127.0.0.1]) by localhost (ACF/14501.21294); Wed, 3 Oct 2018 09:58:02 +0200 (CEST)
Received: from switchplus-mail.ch (switchplus-mail.ch [212.25.8.236]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by gozo.iway.ch (Postfix) with ESMTPS; Wed, 3 Oct 2018 09:58:02 +0200 (CEST)
Received: from [145.14.214.39] (account ietf@trammell.ch HELO [10.11.33.5]) by switchplus-mail.ch (CommuniGate Pro SMTP 6.1.18) with ESMTPSA id 69170760; Wed, 03 Oct 2018 09:58:02 +0200
From: "Brian Trammell (IETF)" <ietf@trammell.ch>
Message-Id: <E32A1E8D-0FD7-47F3-B026-10D46E201D54@trammell.ch>
Content-Type: multipart/signed; boundary="Apple-Mail=_33B68A7D-2258-4E63-A5C8-14CF8FCB5EAC"; protocol="application/pgp-signature"; micalg="pgp-sha512"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Subject: Re: a proposed way forward was Re: Spin bit decision
Date: Wed, 03 Oct 2018 09:58:01 +0200
In-Reply-To: <CANatvzzCvmbu=bN1C-UCzNaT6EUPVCMPwY53wyFNkKa4HQT00g@mail.gmail.com>
Cc: Ian Swett <ianswett=40google.com@dmarc.ietf.org>, Lars Eggert <lars@eggert.org>, IETF QUIC WG <quic@ietf.org>, Mike Bishop <mbishop@evequefou.be>, Lili Peaudchien <alexandre.ferrieux@orange.com>
To: Kazuho Oku <kazuhooku@gmail.com>
References: <14531_1538460420_5BB30B04_14531_237_4_c0f3a391-9897-80b0-575b-aa73edad0d52@orange.com> <9A63F295-5DC5-4992-9A9C-A98F72C8430D@eggert.org> <22440_1538469028_5BB32CA4_22440_292_2_8e00a462-2bbf-acf0-1195-74269a0c2fbd@orange.com> <3E3DBC15-FE42-47CF-AF7A-1F2597ED2390@eggert.org> <24019_1538484216_5BB367F8_24019_26_1_8e6b0d8e-78f0-56c7-e731-da2ff22cb194@orange.com> <08A9C80F-59E6-46EE-A4D4-1F78F5085CF7@eggert.org> <9737_1538485723_5BB36DDB_9737_147_1_82e0e028-b0e8-5e09-7bd5-e66db97c556a@orange.com> <E7479831-9594-444E-9545-A162E8D9B154@eggert.org> <32072_1538492813_5BB3898D_32072_266_1_8380ff40-29fe-269b-8ed7-4331c9e53f4d@orange.com> <MWHPR22MB0991D93D706031603B077BFCDAE80@MWHPR22MB0991.namprd22.prod.outlook.com> <CAKcm_gM+zAEwfimHsorsWprJgS7O++85EOjpQoNY0LviaQ+KNQ@mail.gmail.com> <45751C2A-9F6C-4447-8D70-11ABE8C07F8D@trammell.ch> <CANatvzzCvmbu=bN1C-UCzNaT6EUPVCMPwY53wyFNkKa4HQT00g@mail.gmail.com>
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/_zcNTqjEk4Db_Q7hTfnSEF7ZsY4>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
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: Wed, 03 Oct 2018 07:58:10 -0000

hi Kazuho,

> On 3 Oct 2018, at 01:31, Kazuho Oku <kazuhooku@gmail.com> wrote:
> 
> 2018年10月3日(水) 6:11 Brian Trammell (IETF) <ietf@trammell.ch>:
>> 
>> hi Ian, all,
>> 
>> Perhaps we can exploit the asymmetry inherent in QUIC (there are servers and clients), the spin bit (the server reflects, the client inverts), and the desire to participate or not (ISTM that most of the discussion we've had about opting out have focused on client opt-out, based either on the principle of the thing and/or a suspicion that the signal is useless) to resolve this discussion.
>> 
>> 
>> A proposal:
>> 
>> 1. Servers MUST reflect the spin value. Clients MAY treat an unambiguously detected non-reflected bit as a protocol error.
> 
> I oppose to using MUST for the server, because some *servers* might
> not be willing to expose the path RTT, for example when it is running
> hidden behind a UDP proxy.

s/MUST/SHOULD, unless.../ is an acceptable change, as long as we have a nice tight box around the unless. The tradeoff is that every caveat we put on the server-side reduces server-side deployment, which reduces the chances that a cooperating server and a cooperating client meet up.

I'm also quite sympathetic to Marten's argument that "server" and "client" are more arbitrary in P2P situations. However, the asymmetry of the spinbit is pretty far down the list of asymmetries (stream handling, handshake, TLS certs, etc) that I'd want to see optionally addressed in a QUIC version i2 (is this the terminology we're using now?)

Backing off the MUST for now for such situations is IMO a good tradeoff, though, especially since we only need fractions of a percent of deployment to start seeing useful signal for baseline/anomaly measurement of large aggregates.

> I also do not think that maintaining the spin-bit for each
> "connection" works. My understanding is that it should be per-5-tuple
> because multiple QUIC connections can be coalesced onto single UDP
> port on both sides, and because it is impossible for an observer to
> track the pair of CIDs identifying the same connection across CID
> changes.

Well, it should be per 5-tuple, but it should also change when CIDs change. Dumping state on any CID change is the easiest way I know to break linkability, and the most obvious way to do this when you have CID concurrency is to keep state per CID.

That might be too far into the implementation weeds for the spec though... the language needs to be clear (and clearer than in my initial proposal, which is one reason that's a list message and not a PR ;) )

> I have opened https://github.com/quicwg/base-drafts/issues/1828 to
> track the issue.

Thanks, will follow discussion there as well.

Cheers,

Brian


> 
>> 2a. Clients SHOULD invert the spin value, unless [EDNOTE: someone other than me should write convincing reasons for non-implementation here], or the client has been configured not to spin, or to use some other client behavior.
>> 
>> -OR-
>> 
>> 2b. Clients set the spin bit value as they see fit, provided that this behavior is consistent per connection ID. In order to provide RTT information to the path, clients MAY invert the spin value (per reference to a separate RFC that looks a lot like draft-tsvwg-quic=spin, to be published by QUIC, TSVWG, or IPPM).
>> 
>> 3. Servers and clients MUST NOT expose spin state from one Connection ID to another Connection ID.
>> 
>> 
>> 1 is intended to drive deployment through server defaults. Yes, one can argue that the protocol error here is artificial (and the proposal explicitly acknowledges that through the client MAY error out), but the client can always opt out by clamping to a random value per CID.
>> 
>> The 2a variant is essentially a 2119-compliant way of saying "we'd really like it if you implemented the spin bit", leaving the question of client defaults (opt in versus opt out) up to the client implementors.
>> 
>> The 2b variant is designed to allow for future or parallel client-side behaviors other than spinning to support different measurement goals. For example, using the adaptive square wave proposed for on-path loss measurement (by either Mikkel or Kazuho, I believe) at the client with server reflection would allow accumulation of loss on the upstream as well as the downstream path, as well as upstream (toward the server) RTT measurement. Obviously, the set of these deployed in the wild would have to be kept small in order to allow a measurement device to heuristically determine which signal was in use given a spinbit stream.
>> 
>> 3 prevents spin state from leaking across CIDs, reducing the (already tiny but nonzero) linkability surface.
>> 
>> (Obviously, the above needs wordsmithing, but these are the broad lines.)
>> 
>> Cheers,
>> 
>> Brian
>> 
>>> On 2 Oct 2018, at 19:13, Ian Swett <ianswett=40google.com@dmarc.ietf.org> wrote:
>>> 
>>> One piece of information related to the above discussion is whether detecting who is and is not spinning is easy and reliable.
>>> 
>>> One of my concerns is unintentional mis-use of the signal, and if it can't be detected reliably in a mixed environment, that means SHOULD is unwise and argues for either not including it or making it a MUST.
>>> 
>>> On Tue, Oct 2, 2018 at 12:51 PM Mike Bishop <mbishop@evequefou.be> wrote:
>>> I don’t think it’s a grim view, I think it’s a pragmatic view.  Our role is to specify the things which are fundamental to the protocol and have to happen for peers to interoperate.  Mis-using normative language for other things is an abuse of the process -- that's kind of the point of RFC 6919.
>>> 
>>> 
>>> 
>>> RFC 2119 says:
>>> 
>>> In particular, [normative language] MUST only be used where it is actually required for interoperation or to limit behavior which has potential for causing harm (e.g., limiting retransmisssions)  For example, they must not be used to try to impose a particular method on implementors where the method is not required for interoperability.
>>> 
>>> 
>>> 
>>> Given that the spin bit is not “actually required for interoperation,” but is the very definition of “try to impose a particular method on implementors,” I’d say that RFC 2119 imperatives are unwarranted.
>>> 
>>> 
>>> 
>>> -----Original Message-----
>>> From: QUIC <quic-bounces@ietf.org> On Behalf Of alexandre.ferrieux@orange.com
>>> Sent: Tuesday, October 2, 2018 8:05 AM
>>> To: Lars Eggert <lars@eggert.org>
>>> Cc: IETF QUIC WG <quic@ietf.org>
>>> Subject: Re: Spin bit decision
>>> 
>>> 
>>> 
>>> On 10/02/18 16:00, Lars Eggert wrote:
>>> 
>>>> 
>>> 
>>>> The point I can't seem to be getting across is that irrespective of
>>> 
>>>> what the WG decides to require, there is no penalty for individual
>>> 
>>>> stacks at deployment time (or after) to do whatever they wish, since
>>> 
>>>> the spin bit by design has no impact on protocol operation and interop.
>>> 
>>> 
>>> 
>>> It is getting across, but it is a very grim view of the standardization process itself. Are there many examples of MUST in RFCs that turned out to be ignored by implementations just because they were not part of the core semantics and hence not enforced by other peers ?
>>> 
>>> 
>>> 
>>> 
>>> 
>>> _________________________________________________________________________________________________________________________
>>> 
>>> 
>>> 
>>> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration, Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>>> 
>>> 
>>> 
>>> This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation.
>>> 
>>> If you have received this email in error, please notify the sender and delete this message and its attachments.
>>> 
>>> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>>> 
>>> Thank you.
>>> 
>>> 
>>> 
>> 
> 
> 
> --
> Kazuho Oku