Re: [quicwg/base-drafts] Updated spinbit text (#2564)

mirjak <notifications@github.com> Mon, 01 April 2019 15:12 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A4B4B1201EE for <quic-issues@ietfa.amsl.com>; Mon, 1 Apr 2019 08:12:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.002
X-Spam-Level:
X-Spam-Status: No, score=-8.002 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, 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=github.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 iotVDpTi-9Xj for <quic-issues@ietfa.amsl.com>; Mon, 1 Apr 2019 08:12:34 -0700 (PDT)
Received: from out-5.smtp.github.com (out-5.smtp.github.com [192.30.252.196]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 44BF3120234 for <quic-issues@ietf.org>; Mon, 1 Apr 2019 08:12:02 -0700 (PDT)
Date: Mon, 01 Apr 2019 08:12:00 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1554131520; bh=YwwAqF/VDZqeCDJ1WgRGvb6o4F6vXkWPB0Z6MbjFgiM=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=lo0nWtKnbm7CKa7TjmSz29i1MyyTjSAgg/R2A0bLDQ5Cv2GHnEMoV5dPkhZ4rMvJF gfV8x0HAmfA6RwvbBAAPCXujwdVnjTFCQvkbGRoRZ0qV33ZgRk0KIji+Sg3W33TCHy fOtPsxWS/U6yeBv7SrGLcmU7MebSUXIltDvFcVJs=
From: mirjak <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab3e8a54d63e79fe3faa79045fc429b8756ffc75f792cf0000000118b9ec4092a169ce196a996c@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2564/review/221170219@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2564@github.com>
References: <quicwg/base-drafts/pull/2564@github.com>
Subject: Re: [quicwg/base-drafts] Updated spinbit text (#2564)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5ca22a402a436_3d5c3fb22b0d45b8180351"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: mirjak
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/0mUciZBZ_F2rk20qe5TGX-bjhZw>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 01 Apr 2019 15:12:38 -0000

mirjak requested changes on this pull request.



> +is available after version negotiation and connection establishment are
+completed. On-path measurement and use of the latency spin bit is further
+discussed in {{QUIC-MANAGEABILITY}}.
+
+The spin bit is an OPTIONAL feature of QUIC. A QUIC stack that chooses to
+support the spin bit MUST implement it as specified in this document.
+
+Each endpoint unilaterally decides if the spin bit is enabled or disabled for a
+connection. Implementations MUST allow administrators of clients and servers
+to disable the spin bit either globally or on a per-connection basis. Even when
+the spin bit is not disabled by the administrator implementations MUST disable
+the spin bit on a randomly chosen fraction of connections. The random selection
+process SHOULD be designed such that on average the spin bit is disabled for at
+least one eighth of network paths. The selection process should be externally
+unpredictable but consistent for any given combination of source and destination
+address and port. The selection process performed at the beginning of the

Should it be consistent for address/port forever? Is this restriction actually needed...? What's the reasoning for this? 

> +the spin bit on a randomly chosen fraction of connections. The random selection
+process SHOULD be designed such that on average the spin bit is disabled for at
+least one eighth of network paths. The selection process should be externally
+unpredictable but consistent for any given combination of source and destination
+address and port. The selection process performed at the beginning of the
+connection SHOULD be applied for all paths used by the connection.
+
+In case multiple connections share the same five-tuple, i.e. same source and
+destination IP address and UDP port the setting of the spin bit needs to be
+coordinated across all connections to ensure a clear signal to any on path
+measurement point, however that might not be feasible.
+
+When the spin bit is disabled, endpoints MAY set the spin bit to any value, and
+MUST accept any incoming value. It is RECOMMENDED that they set the spin bit to
+a random value either chosen independently for each packet, or chosen
+independently for each path and kept constant for that path.

I this we should recommend to set to the same value for the whole connection. That's easier to implement, easier to cope with in the network, and I don't see a benefit of randomly setting it on a per-packet basis for the endpoint.

> +independently for each path and kept constant for that path.
+
+If the spin bit is enabled for the connection, the endpoint maintains a spin
+value and sets the spin bit in the short header to the currently stored
+value when a packet with a short header is sent out. The spin value is
+initialized to 0 in the endpoint at connection start.  Each endpoint also
+remembers the highest packet number seen from its peer on the connection.
+
+When a server receives a short header packet that increments the highest
+packet number seen by the server from the client, it sets the spin value to be
+equal to the spin bit in the received packet.
+
+When a client receives a short header packet that increments the highest
+packet number seen by the client from the server, it sets the spin value to the
+inverse of the spin bit in the received packet.
+

Maybe add a sentence, explaining why this is done, e.g. "With this mechanism, the server reflects the spin value received, while the client 'spins' it after one RTT. On network observers can measure the time between two spin bit toggle events and thereby estimate the end-to-end RTT of a connection, e.g. for network monitoring purposes."

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/2564#pullrequestreview-221170219