Re: Updated QCRAM Draft

"Charles 'Buck' Krasic" <ckrasic@google.com> Wed, 24 January 2018 16:45 UTC

Return-Path: <ckrasic@google.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 2B961126D45 for <quic@ietfa.amsl.com>; Wed, 24 Jan 2018 08:45:09 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.71
X-Spam-Level:
X-Spam-Status: No, score=-2.71 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, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 pSYnE8DQ0JZo for <quic@ietfa.amsl.com>; Wed, 24 Jan 2018 08:45:06 -0800 (PST)
Received: from mail-io0-x22a.google.com (mail-io0-x22a.google.com [IPv6:2607:f8b0:4001:c06::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7E0D0126E3A for <quic@ietf.org>; Wed, 24 Jan 2018 08:44:49 -0800 (PST)
Received: by mail-io0-x22a.google.com with SMTP id 25so5479422ioj.9 for <quic@ietf.org>; Wed, 24 Jan 2018 08:44:49 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=sYHvYLqLKyuI0kOwnt+ZF8c/12rJk2GoSb3LOIXzF3Y=; b=fu9y58l7MGA9qDPTiadJq4EbyPqwf7pmn3FRTQRI6JSBk5q4hTC3hdM2PCfciOf/+O wrGkwd7Abj1spqwwaBKbQiTqPRne/YfWN5bklYdofPmW3w5FwQw37Sph3ZqMcMk9BV+o ioLambaloWFfnGeJDHhUsrcEvXSWA6N06PM2x9ioSskFHyos9EMi3ZnTlWioYmR1SBRy xDPyLHWTw6117iwIy2U7IIRFfYeZ6tkr7l41krtHDZWDADbbA8pVaRnw4mgkG6dUImPx lVbUTlOVX0OLcMc+ai+jqHLIfJQRcSqp8fBG/nqNn6wA0wxtJYj/iRzItgc+4zUdg5QK 06jQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=sYHvYLqLKyuI0kOwnt+ZF8c/12rJk2GoSb3LOIXzF3Y=; b=X/ekZp51tgTo6lSU9gztPl+Ql0HAHIN9xxZEpf+UWo3I89kiVdw1nsIuxuA0DIAfLG X6csXWTHzwI4X9MUFLHOS+ctaw1jkoDOdAkPqBKZDxYM0CqSnaxHKl0/MdLrHvKf0L74 KbJIYe7up87UJ3mdCZJKKxLNiOz5Kt414zIqvVBwepw8mGSwAbeUaLTU5SfrXj6UwOLB zf7+5Jc56VZrs2sIMgFm39jgZoXMIefpb/6oHnSKbfQYTU92sSUZUxerKTTxSOt/DeM1 JeqfWJR0d1jLRhd8eO4XtA4B4Wt+c3AlQzZoJCGg2C0ECCcb7MZc0M51PaKAo4EqdH/G DsOA==
X-Gm-Message-State: AKwxytdF9zCYh3ckdWtLqoH4COwlL/tfDh1AE2ZV7jO0phe5J2YkIZLS p9159V+RUdsh2fDivvQDoPV23Acbbcb8bVo4BtzU
X-Google-Smtp-Source: AH8x227f7U85mtKkZfB9GKXRGGKcZH7tmH/DAq+7j1LJF+iV8CJN8OfZXHQWe3ZhLbcu5SDGllshs8Kvn5B1ZyXGDdE=
X-Received: by 10.107.3.160 with SMTP id e32mr4424047ioi.51.1516812288184; Wed, 24 Jan 2018 08:44:48 -0800 (PST)
MIME-Version: 1.0
Received: by 10.107.156.203 with HTTP; Wed, 24 Jan 2018 08:44:27 -0800 (PST)
In-Reply-To: <CANatvzxijP_HDxtAXZBSiaks1waGAo5EETjTMx+WH=TmF1H+7Q@mail.gmail.com>
References: <MWHPR08MB2432AA6E7D43B2318F23B671DAE20@MWHPR08MB2432.namprd08.prod.outlook.com> <CANatvzw6fFOuStZS+WOpA8HnkBHu7OxU9DTsKCWGeK73_mZFpQ@mail.gmail.com> <CAGD1bZZTnsL2KEmU4RL2TemjKph2Jnx+s-qHZikz=AQKsnXfvw@mail.gmail.com> <CANatvzxijP_HDxtAXZBSiaks1waGAo5EETjTMx+WH=TmF1H+7Q@mail.gmail.com>
From: Charles 'Buck' Krasic <ckrasic@google.com>
Date: Wed, 24 Jan 2018 08:44:27 -0800
Message-ID: <CAD-iZUZ3cfekWxjn1NWucqyzw4UkNv6B6eLqd7TRc-89nBsFyA@mail.gmail.com>
Subject: Re: Updated QCRAM Draft
To: Kazuho Oku <kazuhooku@gmail.com>
Cc: Jana Iyengar <jri@google.com>, Mike Bishop <mbishop@evequefou.be>, IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="001a113ea692a1c6700563886158"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/4BQd3A4QE1Ota2VxYSe17NNVn9Q>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
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: Wed, 24 Jan 2018 16:45:09 -0000

On Wed, Jan 24, 2018 at 7:27 AM, Kazuho Oku <kazuhooku@gmail.com> wrote:

> 2018-01-24 23:10 GMT+11:00 Jana Iyengar <jri@google.com>:
> >
> > The draft outlines what I think the room converged on, and it seems
> fairly straightforward -- thanks for the quick turnaround!
> >
> > Kazuho: I could be wrong, so Buck or Mike should correct me if so, but I
> believe the "Base Index" is basically what I think of as the "generation
> ID" of the table. It reflects the number of table operations that have
> happened... this is important when you have evictions, since just a
> reference to the largest index is ambiguous if there have been evictions.
>
> Jana, thank you for the response.
>
> Please correct me if I am wrong, but the below is my understanding.
>
> Modifications to the HPACK state only happens on the Control Stream.
> So we do not need to rely on the index to determine how the state
> needs to be changed.
>

Great point.  The prefix is not needed for the modifications to HPACK
state, i.e. for the blocks delivered on the Control Stream.


>
> For HEADERS frames sent over non-control streams, the only information
> that the decoder needs is the absolute indices of the header table,
> which can be encoded as largest_index (or whatever you call) plus the
> deltas.
>
> >
> >
> > I don't understand however how the largest index is "Base Index -
> Depends". I would've thought the largest index would simply be "Depends".
> What am I missing?
>

Alan F.  also made a similar point.

Base index is for interpreting indexed representations correctly regardless
of re-ordering.  It is basically the total number of insertions that
happened before the current block has processed.

Depends is for ensuring that the decoder blocks if necessary to wait for
table updates the current block depends on.

The 'Base Index - Depends' is poorly written and needs an example, sorry
about that.   The point I was trying (badly) to make was that depends is
encoded relative to Base Index so that it's size stays bounded, it's just
an optimization to save bytes for the case of very long lived connections.
Note that Base Index does not have such bound right now.  Maybe a change to
specify wrap-around  might be a reasonable way to also bound Base Index.

Alternatively, and maybe this is what you just said (?), the two could be
combined into one number.   I think that is tricky because one does not
naturally know "depends" yet while emitting indexed entries.    It could be
in practice that either the depends flag is false, or it is true and the
Depends value is the same as Base Index.   This was definitely not true
with QCRAM-03, but it might well be with QCRAM-04.    That's what I hope to
sort out ASAP with updates to the simulator. 🤔






> >
> > On Wed, Jan 24, 2018 at 8:11 PM, Kazuho Oku <kazuhooku@gmail.com> wrote:
> >>
> >> Buck,
> >>
> >> Thank you for the draft.
> >>
> >> I like the approach and I think that it is not difficult to implement.
> >>
> >> Reading the spec, the question I have is why you need the BLOCKING flag
> and two variables (i.e. base index and depends). Can't each HEADERS frame
> always hold just one offset (i.e. largest index that the frame refers to)?
> >>
> >> Maybe I am missing something.
> >>
> >>
> >> 2018-01-24 16:53 GMT+11:00 Mike Bishop <mbishop@evequefou.be>:
> >>>
> >>> Buck has posted an updated QCRAM draft at https://tools.ietf.org/html/
> draft-krasic-quic-qcram-04 -- please read before tomorrow’s meeting so we
> can have a useful discussion.  Thanks!
> >>
> >>
> >>
> >>
> >> --
> >> Kazuho Oku
> >
> >
>
>
>
> --
> Kazuho Oku
>



-- 
Charles 'Buck' Krasic | Software Engineer | ckrasic@google.com | +1 (408)
412-1141