[QUIC] h2 mapping - hpack dynamic table by reference

Patrick McManus <pmcmanus@mozilla.com> Thu, 03 November 2016 21:29 UTC

Return-Path: <pmcmanus@mozilla.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B340F1296B5 for <quic@ietfa.amsl.com>; Thu, 3 Nov 2016 14:29:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.235
X-Spam-Level:
X-Spam-Status: No, score=-1.235 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_PASS=-0.001, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
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 AmtbjGe0SZ0h for <quic@ietfa.amsl.com>; Thu, 3 Nov 2016 14:29:13 -0700 (PDT)
Received: from linode64.ducksong.com (linode6only.ducksong.com [IPv6:2600:3c02::f03c:91ff:fe6e:e8da]) by ietfa.amsl.com (Postfix) with ESMTP id 2C1501294B0 for <quic@ietf.org>; Thu, 3 Nov 2016 14:29:13 -0700 (PDT)
Received: from mail-yw0-f181.google.com (mail-yw0-f181.google.com [209.85.161.181]) by linode64.ducksong.com (Postfix) with ESMTPSA id 425AE3A015 for <quic@ietf.org>; Thu, 3 Nov 2016 17:29:10 -0400 (EDT)
Received: by mail-yw0-f181.google.com with SMTP id r204so67649082ywb.0 for <quic@ietf.org>; Thu, 03 Nov 2016 14:29:10 -0700 (PDT)
X-Gm-Message-State: ABUngvcvfMABafad2v9jalSWQTXFTrheRcMolqDnazVNWoWonKBdlfnTZ3jRQ/QAHgkbgs96kI0EdJX/51zQ2g==
X-Received: by 10.107.205.13 with SMTP id d13mr3884574iog.8.1478208550043; Thu, 03 Nov 2016 14:29:10 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.64.228.236 with HTTP; Thu, 3 Nov 2016 14:29:09 -0700 (PDT)
From: Patrick McManus <pmcmanus@mozilla.com>
Date: Thu, 03 Nov 2016 17:29:09 -0400
X-Gmail-Original-Message-ID: <CAOdDvNrTv5kKFZ44jceiVtv2BS9dpfTmmu+MECSMo8viK16C0g@mail.gmail.com>
Message-ID: <CAOdDvNrTv5kKFZ44jceiVtv2BS9dpfTmmu+MECSMo8viK16C0g@mail.gmail.com>
To: quic@ietf.org
Content-Type: multipart/alternative; boundary="94eb2c187b4087894a05406c3f0e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/pC0rHgtQo4hWZGwAbDslCfDWonk>
Subject: [QUIC] h2 mapping - hpack dynamic table by reference
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Nov 2016 21:29:15 -0000

Hi Robbie, Mike, et al. Thanks for getting the ball rolling with
https://tools.ietf.org/html/draft-shade-quic-http2-mapping-00..

I have a thought on the mapping - Putting all of the header frames onto one
in-order stream is a pretty big hammer.

Is there stomach for looking at a strategy where hpack references the
dynamic table state via some kind of instruction counter? That way the
headers could be on the data (>=5) stream and just the dynamic table
manipulation stuff from hpack could be on stream 3.. implementations would
be able to choose whether to generate hpack that referenced the current
counter or an older one (within some window).. an older one is going to be
more robust to reordering happening on stream 3 so the dep between the
streams is loosened. Anecdotally the rate of change of the dynamic table
slows down (though I have no data - could collect it if we're serious)
after an initial burst and at that point not using table updates until
they've been acked could be a reasonable thing to do... and this even
allows pre-populating the dynamic table at setup time with site-local
values rather than in response to a query. Rewinding to any particular
instruction seems to be a big burden, but we could probably do some things
with checkpoints and acks to bound it all.

this is a fairly significant bit of surgery to h2's formats, but given that
one of the real quic opportunities is to perform better under loss it could
be worthwhile to sever ordering dependencies even further. Seems like a
reasonable thing to investigate to me.

Thanks
-Patrick