Accelerate HTTP/2 Adoption with Industry-First HTTP/2 Client and Server Emulations in IxLoad
HTTP/2 is here! According the Web Technology Surveys over 9% of websites have already made the transition, and it includes some of the most popular sites including Google, Facebook, Wikipedia, Instagram, and Alibaba. HTTP/2 promise to make the web experience faster and more secure. We expect HTTP/2 will surpass HTTP 1.1 much faster than people anticipate as all major browsers have announced support. Therefore, it is critical that enterprise and provider networks and application-aware devices start validating web application performance with HTTP/2 instead of with just the traditional HTTP 1.0/1.1 benchmarking tests.
HTTP/2 is designed to reduce latency by enabling request and response multiplexing, minimizing protocol overhead via compressing header fields, and adding support for request prioritization and server push. For technical details on what makes HTTP/2 better refer to this blog. We understand the switch to HTTP/2 will not be overnight, as millions of servers must be updated to use the new binary framing and billions of clients must similarly update their browsers. However, the good news is most of the popular browsers have already announced support for HTTP/2. To overcome the server infrastructure upgrades, we expect HTTP gateways to be deployed to translate between HTTP/2 clients and HTTP 1.x servers to realize the benefits of HTTP/2 much faster. Already, many of the application delivery controller (ADC) vendors have already announced support for HTTP/2 and will help accelerate the adoption.
Figure 1: Validate this most common HTTP/2 deployment with Ixia’s IxLoad
Negotiating During this Transition
HTTP/1.x will be around for a while and most servers and clients will have to support both HTTP/1.x and HTTP/2 standards. As a result, an HTTP/2 client and server must be able to discover and negotiate the protocols used prior to exchanging application data. To address this, the HTTP/2 protocol defines the following mechanisms:
- HTTP Upgrade
In this method, the HTTP client sends a regular HTTP1.1 request, but includes two additional headers: Upgrade: h2c and HTTP2-Settings which contains a base 64 encoded HTTP/2 settings frame.
When the server supports HTTP/2, it sends back a HTTP/1.1 101 (switching protocols) response. Once connection establishment has completed, the server also sends the response to the original request using HTTP/2. However, if the server does not support HTTP/2, it just ignores the Upgrade header from the initial HTTP1.1 Client request and responds back using HTTP1.1.
- ALPN-based for HTTPS
TLS and ALPN (Application Layer Protocol Negotiation is a TLS extension) is the recommended mechanism to deploy and negotiate HTTP/2, where the client and server negotiate the desired protocol as part of the TLS handshake without adding any extra latency or roundtrips. Both the client and server need to support ALPN, otherwise this extension is ignored and HTTP1.1 will be used. As many of the browsers like Chrome and Firefox are only supporting HTTP/2 over TLS (cleartext is not an option) making TLS with ALPN negotiation is a de facto requirement.
- Direct HTTP/2 connection
Instead of using the Upgrade Header, you directly initiate an HTTP/2 connection. This method is used when there is prior knowledge that both endpoints support HTTP/2.
IxLoad HTTP/2 Support
Ixia’s IxLoad supports HTTP/2 Client and Server Emulations to validate the scale and performance of the emerging web standard and help you fortify the transitions phases along the way. Here’s a walk-through on how to use IxLoad to validate HTTP/2:
IxLoad HTTP/2 Client
- Enable HTTP/2 Client functionality by selecting version “2.0” from the version dropdown box located on the HTTP tab
- You can now control the number of streams per connection by specifying the max; the concurrent TCP connections per User will be disabled as only one TCP connection is permitted in HTTP/2
- Cookies and HTTP Redirect functionality is supported in the HTTP/2 client emulation
Figure 2: IxLoad HTTP Client Settings to enable HTTP/2
In terms of HTTP commands, there will be a new command called “HTTP/2”. The new command will be editable into a list of methods through a ‘Method Profile’. Each of these methods will be configurable in a similar manner like previous high-level commands (GET, PUT, etc.). Simply enable/disable SSL with the ‘Use SSL’ check box option and the ALPN extensions will be automatically configured and added to the request.
Figure 3: IxLoad HTTP Client Commands configuration options for HTTP/2
We are using this Method Profile so that we can ensure that all the low-level commands in that profile behave like streams that have the same destination, and the multiple streams over a single connection per user requirement of HTTP/2 is adhered to. Also, each request (low-level command) has the provision to define the properties of that request, including priority, which is new for HTTP/2. We also support Playlist in the Page/Object and Name Value Arguments request fields so that you can emulate more-complex client behavior.
Figure 4: IxLoad HTTP/2 Method Profile configuration options
To enable Direct HTTP/2 connection, users will need to enable the “Don’t use HTTP2 upgrade mechanism” checkbox in the HTTP Client and Server Settings dialog.
IxLoad HTTP/2 Server
On the server side, a new checkbox is available under the HTTP tab (i.e., Enabled HTTP/2) for HTTP/2 support. HTTP/2 functionality will be enabled if an Upgrade request (ALPN or HTTP1.1 request with “Upgrade: h2c” header) is received. Otherwise, existing HTTP 1.x functionality is preserved in its entirety, enabling users to test the HTTP Gateway scenario that is most prevalent deployment scenario (shown in Figure 2).
Figure 5: IxLoad HTTP Server setting to enable HTTP/2
HTTP/2 Client and Server emulation was released with IxLoad 8.0 EA and is supported on the PerfectStorm platform, industry’s leading solution for applications and security testing. With IxLoad you can validate:
- Performance of the HTTP gateways to translate between HTTP/2 and HTTP 1
- Scale and performance on HTTP/2-capable servers
- Impact on performance and QoE when SSL is enabled
- Performance on multiservice transport networks to deliver data, voice, and video by intermixing data traffic with delay- and jitter-sensitive multimedia traffic
Rollout your HTTP/2 services with confidence—contact us to see how we can help you minimize post-production issues and improve QoE by validating in the lab.