[quicwg/base-drafts] Default settings in HTTP (#2038)

Mike Bishop <notifications@github.com> Wed, 21 November 2018 22:28 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 []) by ietfa.amsl.com (Postfix) with ESMTP id 8233512F1AB for <quic-issues@ietfa.amsl.com>; Wed, 21 Nov 2018 14:28:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.46
X-Spam-Status: No, score=-9.46 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.46, 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] 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 ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id pvEkllZ4JeKp for <quic-issues@ietfa.amsl.com>; Wed, 21 Nov 2018 14:28:31 -0800 (PST)
Received: from out-4.smtp.github.com (out-4.smtp.github.com []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5DE20128D0C for <quic-issues@ietf.org>; Wed, 21 Nov 2018 14:28:31 -0800 (PST)
Date: Wed, 21 Nov 2018 14:28:30 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1542839310; bh=HXukvc1Rzp/sQm+AQSUFHvGR1uGzKfmiYbCMkLQrbkk=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=upUCdV4FRFKZWtW74SAYVHNpdpFhMq7tSm+kGoN1Au6KaNwkoe2VyvM1JgETpLtlL f3bFo6ZhwwhWnmJToJRz//Gfw9hGSrrrlHKO5xpFwCyGL6iDZ+XXk9Asj1hsZTadKo psSOmIztIjZP2ywf7hkgTytwMFjtkwRpr6spzVPQ=
From: Mike Bishop <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab507347e83411dbc8ddb1d50cc1ab670c21b6969092cf00000001180d9e0e92a169ce16d8e664@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2038@github.com>
Subject: [quicwg/base-drafts] Default settings in HTTP (#2038)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5bf5dc0e50be4_9633fb110ad45c05714b"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: MikeBishop
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/symX8wS8DHWRnTEJWiPxHABE9zk>
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: Wed, 21 Nov 2018 22:28:34 -0000

Fixes #1846.

This is an attempt to remove the head-of-line blocking on SETTINGS in HTTP.  The principle is:

- The default value of each setting should always be acceptable to the remote endpoint (i.e. minimal)
- Only send what you know the peer is willing to consume

This results in most settings defaulting to zero.  A client or server can wait for the SETTINGS frame to arrive (for example, in hopes of learning that the peer supports a non-zero QPACK table), or can proceed based on what it knows -- i.e. no QPACK table, no placeholders.

I expanded the discussion of how negotiation works in a purely declarative world, noting that there's no synchronization marker unless the extension itself creates one.  (For an incompatible frame type, the marker would obviously be that you start using it.  For a change to an existing frame type, things get complicated.  Don't do that.)

(It's worth noting that we could go a step further -- if an endpoint doesn't want to change from the initial values, it currently MUST still send an empty SETTINGS frame as the first frame of the control stream.  We could instead say that if the first frame isn't SETTINGS, the initial values become final.)

The sole setting that breaks this pattern is SETTINGS_MAX_HEADER_LIST_SIZE -- the default is unlimited, and a change from the default will clearly be less permissive, which is otherwise prohibited.  But defaulting it to zero would prohibit sending any requests until the SETTINGS frame is received.  7540 terms this setting as "advisory," so I've expanded text noting that this is purely a courtesy to the other side and not binding.
You can view, comment on, or merge this pull request online at:


-- Commit Summary --

  * Default settings
  * MAX_HEADER is advisory

-- File Changes --

    M draft-ietf-quic-http.md (47)
    M draft-ietf-quic-qpack.md (6)

-- Patch Links --


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub: