Understanding HTTP/2 Profile's Frame Size option on BIG-IP
The Overview of the BIG-IP HTTP/2 profile article on AskF5 I created a while ago describes all the HTTP/2 profile options but sometimes we need to test things out ourselves to grasp things at a deeper level.
In this article, I'm going to show how Frame Size option sets specifically only the maximum size of HTTP/2 DATA message's payload in bytes and what happens when we change this value on Wireshark.
Think of it as a quick walkthrough to give us a deeper understanding of how HTTP/2 works as we go through.
It's literally a client on 10.199.3.135 and a virtual server with HTTP + HTTP/2 profile applied with the default settings:
Testing Frame Size Option
Here I've tried to modify frame-size to an invalid value so we can see the valid range:
Let's set the frame-size to 1024 bytes:
I have curl installed in my client machine and this is the command I used:
If we just filter for http2 on Wireshark, we should see the negotiation phase (SETTINGS) as well as request (GET) and response (200 OK) headers in their specific message type (HEADERS).
However, our focus here is on DATA message type as seen below:
I've now added a new column (Length) to include the length of DATA messages so we can easily see how Frame Size settings affect DATA length.
Here's how we create such filter:
I've further renamed it to HTTP2 DATA Length but you've got the point.
If we list only DATA messages, we can see that the payload of HTTP/2 DATA message type will not go beyond 1024 bytes:
Wireshark confirms that HTTP/2 headers + DATA payload of frame 26 is 1033 bytes but DATA payload-only is 1024 bytes as seen below:
We can then confirm that only payload counts for frame-size configuration on BIG-IP.
I hope you enjoyed the above hands-on walk-through.