Hypertext Transfer Protocol Version 2 (HTTP/2) is an upgraded version of HTTP/1.1. HTTP/2 uses network resources more efficiently and reduces latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection. It also introduces unsolicited push of representations from servers to clients. The goal of HTTP/2 is to improve page load times and the overall user experience. For more information about HTTP/2, refer to RFC 7540[1].
The Barracuda Load Balancer ADC supports HTTP/2 between client and server. When HTTP/2 is enabled for a service, the Barracuda Load Balancer ADC and the client use HTTP/2 to communicate with each other.
How does the Barracuda Load Balancer ADC work when HTTP/2 is enabled for a Service:
- The client sends an HTTP/2 request.
- The Barracuda Load Balancer ADC recognizes the HTTP/2 protocol and parses HTTP/2 frames as they arrive.
- The Barracuda Load Balancer ADC coverts the HTTP/2 request to an HTTP/1.1 request.
- The HTTP/1.1 request is passed through the Barracuda Load Balancer ADC security modules for inspection and sanitation.
- After performing security validations, the HTTP/1.1 request is sent to the back-end server. The back-end server responds to the request.
- The Barracuda Load Balancer ADC converts the response into HTTP/2 formatted frames and forwards it to the client.
Head-of-Line Blocking
The Barracuda Load Balancer ADC allows clients to establish multiple HTTP/2 streams. When these streams are received, they are separated out into individual HTTP/1.1 requests and sent to the backend server using connection pooling. Since the Barracuda Load Balancer ADC recognizes that the client is HTTP/2 capable, it does not block the client if any of the backend HTTP/1.1 requests is incomplete. Instead, it gathers the responses from the completed HTTP/1.1 requests and streams them out to the client after converting them to HTTP/2 streams.
Each of the HTTP/2 stream corresponding to a HTTP request can also be load balanced by the Barracuda Load Balancer ADC , and sent to the back-end servers in parallel, assuming persistence settings allow such distribution.
Enabling HTTP/2 for a Service
It is recommended that you enable HTTP/2 for a service if there are numerous clients using the service that also support HTTP/2 and would benefit from the improved user experience and page loading performance.
Perform the following steps to enable HTTP/2 for a service on a Barracuda Load Balancer ADC:
- Go to the BASIC > Services page.
- In the Services section, select the service on which you want to enable HTTP/2.
- Navigate to SSL Settings and set Enable HTTP2 to Yes.
- Click Save.