Re: Updated QCRAM Draft

Kazuho Oku <kazuhooku@gmail.com> Wed, 24 January 2018 17:06 UTC

Return-Path: <kazuhooku@gmail.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 82980127077 for <quic@ietfa.amsl.com>; Wed, 24 Jan 2018 09:06:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 kwP7d4yHPuB4 for <quic@ietfa.amsl.com>; Wed, 24 Jan 2018 09:06:10 -0800 (PST)
Received: from mail-pf0-x235.google.com (mail-pf0-x235.google.com [IPv6:2607:f8b0:400e:c00::235]) (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 5A9A7126FDC for <quic@ietf.org>; Wed, 24 Jan 2018 09:06:10 -0800 (PST)
Received: by mail-pf0-x235.google.com with SMTP id m26so3546296pfj.11 for <quic@ietf.org>; Wed, 24 Jan 2018 09:06:10 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=iIWP66doa9uFyIG+HS/rGC6Zm6Zj9eBeFgXjL71Mufw=; b=tisNYAKAE2Hl9LSY9mbgyKk5qQvYbcHUZeTwqLLcyPBMWeJKhyoFbLqXVDiJBd929W qEG1PjZ675vkKKIZL4awfwChO4zPhbGbjVbclkypliCR7S0tN+Gbb45+ximUGxgLmyzT hCa0xFvLzobXVjpRexCsA9xmBab8EpPbtdpIToQ+hoEbV0EUNIo4s4+TpuuivcXpF0P9 ALC7LBLfMzSCHzFZrm17pm4hUCcRl2xrFjfyAwVulxjZEe4iuXYckoxGnm0TL053rCBo /UUY0fIXJwE8dtRnpi+zGgmD08mXbv+OrI+Jf4xo09xTTjXM8KwdnsPeOFH65VoH38Z2 qbYw==
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=iIWP66doa9uFyIG+HS/rGC6Zm6Zj9eBeFgXjL71Mufw=; b=FwuznuPvAn4U3HYgVTisumlUsGb4JlX1I7LZbHDyST+exBQ6IQGhUn2dtEcu58wsNF fy5HYryJb6ajr6TOGFRtjEf6p/zGgWuGh1zApUsgz/XDjS9hphs8zxSHRDZvn7JawZpl oc2M+TkTMc3D7jVaNe+h+RzJZe9YcBt2tdEv3UHtn5G6eS4mLq5P4iIp7x3bcg9oPNkC dKiCpaQU0gAvRjVfx9Larn1k5kS2GcSar6HwJ28MCgFybupSO/dx9Oj1WhQU0i/gsPKp lCq96cEkNi++PJUWTsI+RuHSh4p56IG6tSe0ZABgF7AanF0dYoh7/0FUaZNQIy/7YpDa pp9g==
X-Gm-Message-State: AKwxytcHhYA3vGFBFlo7zQKewJTY3Fi6SJT0xIWgjNi4z/Cbd9PABc/F 984UDmDZZ2cCcjTei0349h7949y7p5Ra8nP0aUqtHVR+
X-Google-Smtp-Source: AH8x226APHIoQrFAdGW+XFDOw/Bj4hCxO0YGPRuOMDeoBBV9nPrZIuCvfYtArq+f/baU7nhDFiLCaC0Ijq9gF75s10E=
X-Received: by 10.99.96.199 with SMTP id u190mr11183526pgb.290.1516813569865; Wed, 24 Jan 2018 09:06:09 -0800 (PST)
MIME-Version: 1.0
Received: by 10.236.156.11 with HTTP; Wed, 24 Jan 2018 09:06:09 -0800 (PST)
In-Reply-To: <CAD-iZUZ3cfekWxjn1NWucqyzw4UkNv6B6eLqd7TRc-89nBsFyA@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> <CAD-iZUZ3cfekWxjn1NWucqyzw4UkNv6B6eLqd7TRc-89nBsFyA@mail.gmail.com>
From: Kazuho Oku <kazuhooku@gmail.com>
Date: Thu, 25 Jan 2018 04:06:09 +1100
Message-ID: <CANatvzw8VMCUu-vuZu1gRuydF=yE3s-7J0TLE8kahWACTbX6vQ@mail.gmail.com>
Subject: Re: Updated QCRAM Draft
To: Charles 'Buck' Krasic <ckrasic@google.com>
Cc: Jana Iyengar <jri@google.com>, Mike Bishop <mbishop@evequefou.be>, IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="94eb2c1109f205be30056388aec3"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/uPWdqNCHJgg8TwnBo53zx98Y6UQ>
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 17:06:13 -0000

Hi,

Thank you for the response.

2018-01-25 3:44 GMT+11:00 Charles 'Buck' Krasic <ckrasic@google.com>:

>
>
> 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.
>

Yes. That is what I have been thinking of.


> I think that is tricky because one does not naturally know "depends" yet
> while emitting indexed entries.
>

I think that the encoder needs to do a two-pass operation regardless of if
we encode two numbers (i.e. base_index, depends) or just one. This is
because since base_index and depends cannot be determined until the encoder
iterate through all the headers.

So to me it seems that it is not tricker for an encoder to use an unified
value; in the first pass the encoder determines the absolute index, and
then in the second pass emit the unified "base index" plus the deltas.


>     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. 🤔
>

I understand that it's hard to update all the related code as we adjust the
approach. Thank you for your efforts!


>
>
>
>
>
>> >
>> > 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 <(408)%20412-1141>
>
>


-- 
Kazuho Oku