[quicwg/base-drafts] Placeholder limits make for awkward clients (#2734)

Robin Marx <notifications@github.com> Tue, 21 May 2019 10:45 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 C7CEB120108 for <quic-issues@ietfa.amsl.com>; Tue, 21 May 2019 03:45:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.01
X-Spam-Level:
X-Spam-Status: No, score=-8.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, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01] 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 OfhHWHNrn211 for <quic-issues@ietfa.amsl.com>; Tue, 21 May 2019 03:45:45 -0700 (PDT)
Received: from out-7.smtp.github.com (out-7.smtp.github.com [192.30.252.198]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D314612003E for <quic-issues@ietf.org>; Tue, 21 May 2019 03:45:44 -0700 (PDT)
Date: Tue, 21 May 2019 03:45:43 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1558435543; bh=HRZecY5JE2CWtPva/6P/Ykrt83RojZdv39EAhEJ1RaQ=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=KkCSgIB/46+TVKniOrDzIJP5XzE+F5QaO2zRxJfNzhK1Gxe/xEmyxNJmS+pIg+KF4 oq1fHTxJLdb5NmBrXUuNqVVzZPUefstknEcbmiwJ2o0FGCctB00gofh4zdjKe9S6xO 6nZ/2jvAL0w6zi9AYAejZ7CeIApgsOom8zxNNMF8=
From: Robin Marx <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK7KDVFNMRFRFVPPDZ526EEVPEVBNHHBVHOH2Q@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/2734@github.com>
Subject: [quicwg/base-drafts] Placeholder limits make for awkward clients (#2734)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5ce3d6d774a55_8053fdbb08cd96411720cc"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: rmarx
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/9ngaYO5w-fC8HUVsexRo57U61RY>
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: Tue, 21 May 2019 10:45:47 -0000

When chatting a bit about how/when to create placeholders on the server on the slack, there seem to be two camps:

1. Server creates all placeholders it advertises upon sending the SETTINGS frame (full up-front)
2. Server creates the placeholder when it is referenced by the client (as-needed basis)

Argument for not doing 2 seems to be:
> Lazy loading placeholders is a great path to under estimating required resource and getting DoS'd by clients

However, when not doing 2, you will probably limit yourself in the amount of placeholders you allow (e.g., not 100, but more like 10).

So the question becomes: what if those 10 are not enough for the client? Is every complex client required to support two schemes, one with a minimal amount of placeholders (e.g., let's say a server only supports 1 or none), and one where the server allows their needed amount? What about more dynamic schemes, where the placeholder count needed might not be known by the client up-front?

Some potential "solutions" to think about:
- Specifying a minimal value for SETTINGS_NUM_PLACEHOLDER (e.g., 20?)
- Client indicating the amount of placeholders they expect to need in their own SETTINGS, server deciding with some heuristics if it allows that
- New option in which the client can articulate the full placeholder setup in a single packet instead of separate PRIORITY frames (though that doesn't cover the dynamic setup case above)

This may seem like a non-issue, but depending on the prioritization setup we end up choosing (see #2700, #2723, #2690, etc.) a larger amount of placeholders might be required to be able to model all use cases, and then clients really don't want to be limited in the amount they are allowed to use. 


-- 
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/issues/2734