How to adjust HPACK dynamic table?

Maxim Dounin mdounin at mdounin.ru
Thu Dec 17 18:02:09 UTC 2020


Hello!

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

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

-- 
Maxim Dounin
http://mdounin.ru/


More information about the nginx mailing list