Re: [quicwg/base-drafts] allow PRIORITY frames referring to placeholders exceeding `SETTING_NUM_PLACEHOLDERS` (#2761)

Kazuho Oku <notifications@github.com> Fri, 28 June 2019 05:26 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 5CE91120114 for <quic-issues@ietfa.amsl.com>; Thu, 27 Jun 2019 22:26:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Level:
X-Spam-Status: No, score=-8 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, SPF_HELO_NONE=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 mKqsyu_9HVSL for <quic-issues@ietfa.amsl.com>; Thu, 27 Jun 2019 22:26:08 -0700 (PDT)
Received: from out-6.smtp.github.com (out-6.smtp.github.com [192.30.252.197]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3928712006B for <quic-issues@ietf.org>; Thu, 27 Jun 2019 22:26:08 -0700 (PDT)
Date: Thu, 27 Jun 2019 22:26:06 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1561699566; bh=IrR7J4wDvTt+Xx/SonbbCH7l3E5l0BgQ/mVYCTJEs3s=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=FppzZZLn0pgdP0RSBpI2tM+zimmxqg84yn1rwb4Ujy5W9KcaW41kEkf1izH3g1z+R SHkwa65dnFSDOpOmMI64TxMPUuc8y2KvaON7GUHdzBvjSfyy2POoMiTn7U/OdUeOQi B8188Ikgu3WvWc4vHV3CR2TeWB+4aJSg6BsGL+l0=
From: Kazuho Oku <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK5Q67UTCHACH47IFPF3ELLW5EVBNHHBVW7INY@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2761/review/255589288@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2761@github.com>
References: <quicwg/base-drafts/pull/2761@github.com>
Subject: Re: [quicwg/base-drafts] allow PRIORITY frames referring to placeholders exceeding `SETTING_NUM_PLACEHOLDERS` (#2761)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5d15a4eeb5e18_66e33fce558cd9681867f7"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: kazuho
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/UDTkRgeuNJfxIjjT7R_LZNWnqDs>
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: Fri, 28 Jun 2019 05:26:11 -0000

kazuho commented on this pull request.



> @@ -1224,9 +1228,17 @@ The following situations are examples of invalid PRIORITY frames:
 A PRIORITY frame with Empty bits not set to zero MAY be treated as a connection
 error of type HTTP_MALFORMED_FRAME.
 
-A PRIORITY frame that references a non-existent Push ID, a Placeholder ID
-greater than the server's limit, or a Stream ID the client is not yet permitted
-to open MUST be treated as a connection error of type HTTP_LIMIT_EXCEEDED.
+A PRIORITY frame that references a non-existent Push ID or a Stream ID the
+client is not yet permitted to open MUST be treated as a connection error of
+type HTTP_LIMIT_EXCEEDED.
+
+A PRIORITY frame MAY reference a Placeholder ID that is equal to or greater than
+the server's advertised value of the `SETTINGS_NUM_PLACEHOLDERS` settings.  When
+receiving a PRIORITY frame with its prioritized element set to such a
+placeholder, the server SHOULD discard the frame without making any change to

This certainly depends on acknowledging that servers can set SETTINGS_NUM_PLACEHOLDERS to zero.

If we look at HTTP/2 implementations, it is my understanding that browsers tend to give higher weight values to resources of higher precedence, regardless of their position in the prioritization tree. This works somewhat reasonably as a fallback when connecting to a server that respects the weights only, because resources of higher precedence would be given more bandwidths that those of lower precedence.

Recommending (or acknowledging) that SETTINGS_NUM_PLACEHOLDERS to be 0 or at least 32 allows a client implementation to consider only two ways of server prioritizing the responses: one being the server respecting the tree build by the client, the other being the tree squeezed and only the weight values being respected.

IMO knowing that the servers are likely to view the prioritization information in either of these two ways is highly preferable for enabling a client to use one design for the prioritization tree it builds _regardless of the value of SETTINGS_NUM_PLACEHOLDERS_, which is IMO the primary goal of this PR.

-- 
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/2761#discussion_r298456876