Re: [quicwg/base-drafts] QPACK improvement: wrap absolute index values (#1644)

Mike Bishop <notifications@github.com> Thu, 09 August 2018 19: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 AB8DB130ECB for <quic-issues@ietfa.amsl.com>; Thu, 9 Aug 2018 12:26:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.009
X-Spam-Level:
X-Spam-Status: No, score=-8.009 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, URIBL_BLOCKED=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 SCD1-w9fj9Fa for <quic-issues@ietfa.amsl.com>; Thu, 9 Aug 2018 12:26:41 -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 D0B9E130FEA for <quic-issues@ietf.org>; Thu, 9 Aug 2018 12:26:40 -0700 (PDT)
Date: Thu, 09 Aug 2018 12:26:39 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1533842799; bh=soj22fvcnJ5CvSWftiMc3ADweeEB9IHnU77aj6MT5Ys=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=knCqqG3vlobMNZ5o0LvXoAJ9DzU7TXWxyXV2Ik3ZAT9DVpJxQfboeO7KaA/NMeZrb T5o3V+G9DMkVA4aqfDjWRPfhPIRkjRc1q1RqoO3t9gJaI36kVIcS2Scu4DiuHeB8gV K9OAnOl/a/UWBflKf9nhR6tzcjYucSUpxPpoxUt0=
From: Mike Bishop <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab018c29e398bafce777ea2e811e0aedb3b3c1ceef92cf000000011784576f92a169ce14cf3287@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/1644/411869426@github.com>
In-Reply-To: <quicwg/base-drafts/issues/1644@github.com>
References: <quicwg/base-drafts/issues/1644@github.com>
Subject: Re: [quicwg/base-drafts] QPACK improvement: wrap absolute index values (#1644)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5b6c956fc4c4f_8b73fba62ed45c0829c1"; 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/evJ7Y-ZFm_DhGyxP0CYpTiP-Jfs>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.27
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: Thu, 09 Aug 2018 19:26:44 -0000

I think doubling-or-more is attempting to guard against a situation where X was valid pre-wrap but about to expire, then enough entries are added that X is valid again post-wrap, and there's confusion about whether a new frame refers to the old or new one, correct?  If so, the existing prohibition on evicting entries which still have references should ensure that there's no confusion, and the fact that real entry sizes will produce more of a gap in real usage further insulates us from the problem.  If it's intended to prevent a different issue, please clarify.

Your math about how much it costs is correct, but somewhat misconstrues the idea -- the window is being expanded to the rest of the byte *instead of* being doubled or more, not expanded after doubling.  For smaller table sizes, that's more conservative.

So for example, modulo any off-by-one errors in counting:

| MaxEntries | Expansion | Doubled |
|---|---|---|
| 128 | [0..254) = 1 byte | (254 * 1 + 2 * 2) / 256 = 1.008 bytes |
| 256 | [0..382) = (254 * 1 + 128 * 2) / 382 = 1.335 bytes | [0..512) = (254 * 1 + 128 * 2 + 130 * 3) = 1.76 bytes |
| 2000 | [0..16639) = (254 * 1 + 128 * 2 + 16257 * 3) = 2.96 bytes | [0..4000) = (254 * 1 + 128 * 2 + 3618 * 3) = 2.81 bytes

However, you're right that it becomes more tilted to the largest possible encoding once you pass two bytes, so that's not ideal for very large table sizes.

-- 
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/1644#issuecomment-411869426