Bug ID 629178: Incorrect initial size of connection flow-control window

Last Modified: Sep 13, 2023

Affected Product(s):
BIG-IP LTM(all modules)

Known Affected Versions:
12.1.0, 12.1.1, 12.1.2, 13.0.0, 13.0.0 HF1, 13.0.0 HF2, 13.0.0 HF3, 13.0.1

Fixed In:
13.1.0, 12.1.3

Opened: Nov 17, 2016

Severity: 2-Critical

Related Article: K42206046

Symptoms

When a client establishes an HTTP2 connection, both endpoints can update their flow-control windows for the connection but their initial sizes of connection flow-control windows must be 65,535. BIG-IP erroneously sets it immediately to a configured value instead. Discrepancy in the window size calculation can result in cancelling of the client's requests.

Impact

BIG-IP updates another endpoint with a WINDOW_UPDATE frame for the connection once it reaches a certain threshold. It doesn't happen when receive-window is set above 79 (Kilobytes). If a client has a large request (e.g., POST with a large amount of data), it resets the stream with HTTP2 RST_STREAM frame, canceling the request.

Conditions

A virtual server that has an HTTP2 profile with a custom value for receive-window exceeding 79 (Kilobytes).

Workaround

Configure receive-window attribute in HTTP2 profile to a value below 80 (Kilobytes).

Fix Information

The fix in this release allows BIG-IP to behave according to RFC and send WINDOW_UPDATE frames, preventing the connection flow-control window from exhaustion on a remote endpoint.

Behavior Change

Guides & references

K10134038: F5 Bug Tracker Filter Names and Tips