Some thoughts:

   - Putting it into a TLS extension seems like a layering violation. At
   that point during the handshake, we don't know yet which ALPN will be
   negotiated. In the best case scenario, this would render
   the qpack_static_table_version extension useless, but things might get
   more complicated once a different protocol (HTTP/3.1?) starts using QPACK
   (potentially with a different static table).
   - I've never been a big fan of the one-size-fits-all approach of QPACK's
   static table, so a replacement mechanism would be much more interesting to
   me.


On Wed, 27 Sept 2023 at 18:08, Mike Bishop <mbis...@evequefou.be> wrote:

> My general thoughts, in no particular order:
>
>    - I’d be more excited about using a generic mechanism to agree on
>    SETTINGS pre-handshake (e.g., ALPS) than using a protocol-specific TLS
>    extension for just this feature.  Therefore, HTTP WG for this
>    particular use-case, but if there were to be a generic mechanism, that
>    would probably live in TLS WG with HTTP WG as a consumer.
>    - The value of a TLS extension is that it lets you agree on something
>    before the application-layer protocol gets started.  That enables
>    these things which you can’t do in SETTINGS:
>       - Wholesale replacement of the static table, to put different
>       things in the low-bitcount real estate
>       - Use of “extended” entries in the first flight, to fit the most
>       requests in the first packet(s); note that this matters more with 
> TCP/TFO
>       than QUIC 0-RTT.
>       - Reducing the size of the static table for micro clients; see below
>
>    - If we’re not doing one of those things, SETTINGS is the right model
>    for this.  We decided in H3 that pre-application-data agreement wasn’t
>    required for SETTINGS; do we want to revisit that?
>
>
>    - The value of the static table in the protocol drops as the table
>    gets longer, as the entries get more expensive to reference. For a
>    frequently-used field, the marginal impact may just be shortening the
>    initial reference to put the header into the dynamic table.  How many
>    bytes does this actually save in a real session?
>    - The difficulty of including the static table in a binary increases
>    as the static table gets bigger, and this proposal could be *very*
>    helpful in that problem – if a compact implementation could declare they
>    only want to use the first 32 entries, for example.  The current
>    version of QPACK imposes a minimum binary size on any H3 implementation,
>    due to the requirement to keep the full static table accessible.
>    - Wholesale table replacement probably involves offer-select or a
>    priority ordering, departing from the usual SETTINGS model.
>    - Agreement is somewhat implicit – if the decoder has advertised
>    support for entry N, the encoder can only reference it if it knows the
>    value of entry N. If it knows the value of N, it would ordinarily be
>    willing to accept references to N as well.
>       - Exception: those micro-clients again. If a small binary contained
>       a sparse selection of “useful values” from the static table, the encoder
>       could use the entries of which it was aware, but a decoder could only
>       advertise support for the first contiguous portion of the table.
>
>
> ------------------------------
> *From:* TLS <tls-boun...@ietf.org> on behalf of Lucas Pardue <
> lucaspardue.2...@gmail.com>
> *Sent:* Tuesday, September 26, 2023 9:48 PM
> *To:* Martin Thomson <m...@lowentropy.net>
> *Cc:* Mike Bishop <mbis...@akamai.com>; HTTP Working Group <
> ietf-http...@w3.org>; TLS List <tls@ietf.org>; Hewitt, Rory <rhewitt=
> 40akamai....@dmarc.ietf.org>
> *Subject:* Re: [TLS] New Internet Draft: The qpack_static_table_version
> TLS extension
>
> Hi Rory,
>
> I echo Watson and Martin, lets discuss this in the HTTP WG.
>
> As for a very brief technical response. In general I'm supportive of the
> idea of more agility of the static table but I think my motivations would
> be different than the ones behind this proposal. For me, I'd like more
> domain-specific tables to be defined, and to have the possibility of
> asymmetric tables; but lets stick that on the side for now.
>
> The QPACK static table description states "The order of the entries is
> optimized to encode the most common header fields with the smallest number
> of bytes.". How does the proposed append-only table gel with this? I.e.
> each year, the new most common fields are added to the end? At what point
> would it make sense to wipe out the cruft and define a newer table
> altogether?
>
> I think what might be needed is a good amount of datamodelling and
> simulation that is sufficient to decide when there is activation energy to
> make changes. Perhaps the proposal is a compromise to make it low effort
> enough for implementations to update, that they don't need tremendous
> amounts of overwhelming evidence to keep up. IIRC historically the effort
> to sample the Internet and propose a table has been quite high, and there
> have been some criticisms about the outputs. Given the HTTP WG has
> struggled with this aspect, I think it is decidedly impractical to make
> IANA or a designated expert solely responsible for deciding the QPACK
> entries. This is something that has to run through a consensus approach
> IMO, especially as lower entries are more valuable and couldn't ever be
> reclaimed.
>
> I think the largest activation energy would be to convince endpoints to
> implement the negotiation mechanism because it is pushing it into the TLS
> layer and that crosses implementation boundaries. Watson asks why not
> SETTINGS. One answer is that it requires clients to have to wait for the
> server's settings, which adds a delay that many clients don't already
> apply. Trading off latency for a few bytes doesn't sound like a good
> tradeoff. Indeed, this is why we optimised the static table for the
> clien'ts first flight before it knows if the server supports dynamic QPACK
> or not. Putting a client's static QPACK preference in a Client Hello is a
> fingerprinting vector, so that is a concern. Perhaps a middleground is to
> use a SETTING but then rope in the old ALPS proprosal [1] so that the
> client learns the server's view as early as required, and the client sends
> its view in SETTINGS after protection is established.
>
> Changing track a bit, I don't understand why your proposal requires the
> client and server to agree on the extension value. Its a declaration of
> what the endpoint can support and I don't think there is any issue in e.g.
> the client being willing to receive references to entries greater than 99
> and the server refusing to. Encoding asymmetry is already part of QPACK DNA.
>
> Cheers,
> Lucas
>
> [1] - https://datatracker.ietf.org/doc/html/draft-vvv-tls-alps
>
>
>
>
>
> On Wed, Sep 27, 2023 at 1:40 AM Martin Thomson <m...@lowentropy.net> wrote:
>
> On Wed, Sep 27, 2023, at 01:32, Hewitt, Rory wrote:
> > Apologies if I should respond directly to the mailing list - my old W3C
> > profile has disappeared and I'm trying to get it back...
>
> Just on this point.  Watson added the HTTP working group, which I think is
> the right thing to do here.  The maintenance of HTTP/3 now formally belongs
> in that group.  The work of defining a TLS extension for that purpose would
> occur there (if indeed a TLS extension is the right choice, as Watson asks).
>
> As for the W3C involvement, the HTTP working group is an IETF activity
> that - for historical reasons - uses a W3C-hosted mailing list.  You don't
> need to be a W3C member to sign up for that list.  The process is just a
> little different than for other IETF lists.  See
> https://lists.w3.org/Archives/Public/ietf-http-wg/ for details.
>
> _______________________________________________
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to