Welcome! Log In Create A New Profile

Advanced

Re: How to adjust HPACK dynamic table?

Jon Carmicheal
December 19, 2020 02:20PM
On 12/18/20 6:00 AM, nginx-request@nginx.org wrote:

> Re: How to adjust HPACK dynamic table?

Sorry I'm not yet familiar with how to write a follow-up on the mailing list, including the inline text, but thank you Maxim for your response to my inquiry. Please see below for a follow-up question.

On Thu, Dec 17, 2020 at 05:01:54AM +0000, Jon Carmicheal wrote:

> I would like to disable the caching of headers in the dynamic
> table of the HTTP/2 HPACK compression algorithm described in RFC
> 7541. I have defined my nginx server with
>
> listen 8080
>
> http2
>
> ;
>
> and I've confirmed that the HPACK algorithm is working as
> expected with Huffman encoding, static header table indexing,
> and dynamic header table indexing. But I haven't been able to
> disable the dynamic table.

You cannot disable dynamic table support in nginx. As an HPACK
decoder, nginx supports dynamic table of up to 4096 octets (the
default for SETTINGS_HEADER_TABLE_SIZE in HTTP/2).

> RFC 7541 mentions in "Section 4.2. Maximum Table Size" the
> ability of an HTTP/2 node to "clear entries from the dynamic
> table by setting a maximum size of 0, which can subsequently be
> restored." Is that a feature supported by nginx? Can I disable
> the dynamic table entirely so that no header fields are cached?
> And can I arbitrarily send a flush request so that all entries
> are evicted and then the dynamic table size is restored? If so,
> how?

Yes, it is supported. The "how" is specified in the section "6.3.
Dynamic Table Size Update" of the same RFC
(
https://tools.ietf.org/html/rfc7541#section-6.3
).

How is this accomplished in nginx? Can I configure the nginx server so that it sets the size of the dynamic table to 0 immediately when an HTTP/2 session is initiated?

> I've been trying to play with "http2_max_field_size" and
> "http2_max_header_size" in the server configuration file as
> described in
> https://nginx.org/en/docs/http/ngx_http_v2_module.html
> . But I
> don't think those are the right parameters. When I set either of
> them to zero, it makes the server return an error when a header
> is sent.

These are unrelated parameters. They set size limits on
compressed individual header fields and total length of all
uncompressed headers, respectively, so nginx will reject attempts
to use larger headers.

Thanks, this was my assumption.

--
Maxim Dounin
http://mdounin.ru/
------------------------------_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

How to adjust HPACK dynamic table?

Jon Carmicheal December 17, 2020 12:04AM

Re: How to adjust HPACK dynamic table?

Maxim Dounin December 17, 2020 01:04PM

Re: How to adjust HPACK dynamic table?

Jon Carmicheal December 19, 2020 02:20PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 56
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready