Problem
The default value of proxy.config.http2.max_settings_per_frame is 7.
That limit was introduced in 2019 and it seems too low for today's clients.
We are now seeing a large volume of production connections from Meta
forward proxies whose initial SETTINGS frame contains 11 parameters. The
66-byte frame contains the usual HTTP/2 settings plus five settings from
the WebTransport-over-HTTP/2 draft (0x2b61 through 0x2b65).
Traffic Server accepts the first seven entries, rejects the eighth, and
closes the connection with ENHANCE_YOUR_CALM:
HTTP/2 connection error code=0x0b stream_id=0 recv settings too many settings in a frame
These connections proceed to ordinary HTTP requests when the limit is
raised, so this is an interoperability problem rather than malformed
traffic.
RFC 9113 section 6.5.2
allows a SETTINGS payload to contain any number of parameters and requires
unsupported identifiers to be ignored. The extension identifiers are
documented in the
WebTransport-over-HTTP/2 draft.
Proposed change
Raise the default per-frame limit from 7 to 16, retaining a conservative
bound while allowing room for protocol extensions. Raise
proxy.config.http2.max_settings_per_minute from 14 to 32 to preserve
the existing two-frame allowance and leave room for a legitimate settings
update after the initial frame.
Add an HTTP/2 AuTest that sends an 11-parameter initial SETTINGS frame and
verifies that a request succeeds with the defaults.
Problem
The default value of
proxy.config.http2.max_settings_per_frameis 7.That limit was introduced in 2019 and it seems too low for today's clients.
We are now seeing a large volume of production connections from Meta
forward proxies whose initial SETTINGS frame contains 11 parameters. The
66-byte frame contains the usual HTTP/2 settings plus five settings from
the WebTransport-over-HTTP/2 draft (
0x2b61through0x2b65).Traffic Server accepts the first seven entries, rejects the eighth, and
closes the connection with
ENHANCE_YOUR_CALM:These connections proceed to ordinary HTTP requests when the limit is
raised, so this is an interoperability problem rather than malformed
traffic.
RFC 9113 section 6.5.2
allows a SETTINGS payload to contain any number of parameters and requires
unsupported identifiers to be ignored. The extension identifiers are
documented in the
WebTransport-over-HTTP/2 draft.
Proposed change
Raise the default per-frame limit from 7 to 16, retaining a conservative
bound while allowing room for protocol extensions. Raise
proxy.config.http2.max_settings_per_minutefrom 14 to 32 to preservethe existing two-frame allowance and leave room for a legitimate settings
update after the initial frame.
Add an HTTP/2 AuTest that sends an 11-parameter initial SETTINGS frame and
verifies that a request succeeds with the defaults.