Re: [quicwg/base-drafts] Clarify QPACK eviction races (#1237)

Martin Thomson <notifications@github.com> Mon, 30 April 2018 04:53 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 066F212D872 for <quic-issues@ietfa.amsl.com>; Sun, 29 Apr 2018 21:53:48 -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 SovWVluVaata for <quic-issues@ietfa.amsl.com>; Sun, 29 Apr 2018 21:53:46 -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 D889412D875 for <quic-issues@ietf.org>; Sun, 29 Apr 2018 21:53:45 -0700 (PDT)
Date: Sun, 29 Apr 2018 21:53:45 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1525064025; bh=3UKu0xNtiKZ5Hz4GXC+kWCWQC8Sp1Ipzp+ohZat3vwY=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=Dg6OU6yGYbSoZHWVbCwJQr5fNPa8rtR044wVrXe4I25xUT40GLeW7vnqIat8lyros dwmLCjlUJZAg38SbS83/HWTHQyUTudGsjM6bFIMB/wIueBhTtf2S6dGrhG3lcq1Ud+ bkeY2U193fqcmiwWaJESukWO0guzwj5ojIKu6V1M=
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab5af707487d2624021f286b7691df88fbd5994d7692cf0000000116fe635992a169ce12443a1c@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/1237/review/116196865@github.com>
In-Reply-To: <quicwg/base-drafts/pull/1237@github.com>
References: <quicwg/base-drafts/pull/1237@github.com>
Subject: Re: [quicwg/base-drafts] Clarify QPACK eviction races (#1237)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5ae6a15949a74_3c502b05a9104f58508086"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: martinthomson
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/HB56_DCIBWgIaCL-DOnLSZHYDpM>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.22
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, 30 Apr 2018 04:53:48 -0000

martinthomson commented on this pull request.



> +any eviction-prone entries, which are dynamic table entries that might be
+evicted soon.  Rather than reference an eviction-prone entry, the encoder SHOULD
+emit an Indexed-Duplicate representation (see {{indexed-duplicate}}), and
+reference the duplicate instead.
+
+To identify eviction-prone entries, the encoder can maintain a draining index,
+which is the smallest absolute index in the dynamic table that it will emit a
+reference for.  As new entries are inserted, the encoder increments the
+draining index such that the amount of free and draining space in the dyanmic
+table is larger than its target threshold.
+
+~~~~~~~~~~  drawing
+   +----------------+-----------------------+------------+
+   | Eviction-prone |     Referenceable     | Free Space |
+   |    Entries     |        Entries        |            |
+   +----------------+-----------------------+------------+

The point here is not that there might be some free space (there is almost always free space because header fields are not necessarily a neat fit for the available space), but that the encoder needs to keep its hands off those entries that are close to eviction.  Eviction-prone is misleading, because it implies that there is a probability of eviction.

I think that this map is misleading though.  There are three important classifications here:

* Entries that are near eviction, such that new insertions might be blocked by outstanding references to those entries.
* Entries that are recently added (i.e., those that are "vulnerable"), such that references to them might cause the receiver to block.
* Other entries that are acknowledged, but not near eviction.

The line between those that are "vulnerable" and acknowledged is crisp.  The point here is that the line between near-eviction and merely acknowledged is fuzzy and subject to heuristics.

I think that you also want to say that keeping the near-eviction index in the range of acknowledged entries will prevent perverse behaviour.  If the two ever cross, you can get duplication on every header block, which causes unnecessary churn.  (It's also possible to get that without the two crossing with a naive implementation, but I don't think that we need to get into that too much.)

-- 
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/1237#discussion_r184911335