You can configure the BIG-IP Acceleration HTTP/2 profile
to provide gateway functionality for HTTP 2.0 traffic, minimizing the latency of requests by
multiplexing streams and compressing headers.

Important: Because the HTTP 2.0 specification is currently in a draft phase (draft
13), F5 Networks considers the HTTP/2 Profile functionality in this
release to be experimental, primarily intended for evaluation, and not intended for use in a
production environment.

A client initiates an HTTP/2 request to the BIG-IP system, the HTTP/2 virtual server receives
the request on port 443, and sends the request to the appropriate
server. When the server provides a response, the BIG-IP system compresses and caches it, and
sends the response to the client.

Note: Source
address persistence is not supported by the HTTP/2 profile.

Summary of HTTP/2 profile functionality

By using the HTTP/2 profile, the BIG-IP system provides the following functionality for HTTP/2
requests.

Creating concurrent streams for each connection.

You can specify the maximum number of concurrent HTTP requests that are accepted on a HTTP/2
connection. If this maximum number is exceeded, the system closes the connection.

Limiting the duration of idle connections.

You can specify the maximum duration for an idle HTTP/2 connection. If this maximum duration is
exceeded, the system closes the connection.

Enabling a virtual server to process HTTP/2 requests.

You can configure the HTTP/2 profile on the virtual server to receive HTTP, SPDY, and HTTP/2
traffic, or to receive only HTTP/2 traffic, based in the activation mode you select.
(Note the HTTP/2 profile to receive only HTTP/2 traffic is primarily intended for
troubleshooting.)

Inserting a header into the request.

You can insert a header with a specific name into the request. The default name for the header
is X-HTTP/2.

Important: The HTTP/2 protocol is incompatible with NTLM protocols. Do not use the
HTTP/2 protocol with NTLM protocols.

About HTTP/2 profiles

Important: Subsequent versions of the HTTP/2 protocol might be incompatible with this release.

The BIG-IP system's Acceleration functionality includes an
HTTP/2 profile type that you can use to manage HTTP/2 traffic, improving the efficiency of
network resources while reducing the perceived latency of requests and responses. The
Acceleration HTTP/2 profile enables you to achieve these advantages by multiplexing streams and
compressing headers with Transport Layer Security (TLS) or Secure Sockets Layer (SSL)
security.

The HTTP/2 protocol uses a binary framing layer that defines a frame type and purpose in
managing requests and responses. The binary framing layer determines how HTTP messages are
encapsulated and transferred between the client and server, a significant benefit of HTTP 2.0
when compared to earlier versions.

All HTTP/2 communication occurs by means of a connection with bidirectional streams. Each
stream includes messages, consisting of one or more frames, that can be interleaved and
reassembled using the embedded stream identifier within each frame's header. The HTTP/2 profile
enables you to specify a maximum frame size and write size, which controls the total size of
combined data frames, to improve network utilization.

Multiplexing streams

You can use the HTTP/2 profile to multiplex streams (interleaving and reassembling the
streams), by specifying a maximum number of concurrent streams permitted for a single
connection. Also, because multiplexing streams on a single TCP connection compete for shared
bandwidth, you can use the profile's Priority Handling settings to configure stream
prioritization and define the relative order of delivery. For example, a Strict setting
processes higher priority streams to completion before processing lower priority streams;
whereas, a Fair setting allows higher priority streams to use more bandwidth than lower priority
streams, without completely blocking the lower priority streams.

Additionally, you can specify the way that the HTTP/2 profile controls the flow of streams.
The Receive Window setting allows HTTP/2 to stall individual upload streams, as needed. For
example, if the BIG-IP system is unable to process a slow stream on a connection, but is able to
process other streams on the connection, it can use the Receive Window setting to specify a
frame size for the slow stream, thus delaying that upload stream until the size is met and the
receiver is able to process it, while concurrently proceeding to process frames for another
stream.

Compressing headers

When you configure the HTTP/2 profile's Header Table Size setting, you can compress HTTP
headers to conserve bandwidth. Compressing HTTP headers reduces the object size, which reduces
required bandwidth. For example, you can specify a larger table value for better compression,
but at the expense of using more memory.

HTTP/2 (experimental) profile settings

This table provides descriptions of the HTTP/2 profile settings.

Setting

Default

Description

Name

Specifies the name of the HTTP/2 profile.

Parent Profile

http2

Specifies the profile that you want to use as the parent profile. Your new profile
inherits all settings and values from the parent profile specified.

Concurrent Streams Per Connection

10

Specifies the number of concurrent requests allowed to be outstanding on a single
HTTP/2 connection.

Connection Idle Timeout

300

Specifies the number of seconds an HTTP/2 connection is left open idly before it
is closed.

Insert Header

Disabled

Specifies whether an HTTP header that indicates the use of HTTP/2 is inserted into
the request sent to the origin web server.

Insert Header Name

X-HTTP/2

Specifies the name of the HTTP header controlled by the Insert Header
Name setting.

Activation Modes

Select Modes

Specifies how a connection is established as a HTTP/2 connection.

Selected Modes

ALPNNPN

Used only with an Activation Modes selection of
Select Modes, specifies the extension,
ALPN for HTTP/2 or NPN for SPDY, used in
the HTTP/2 profile. The order of the extensions in the Selected
ModesEnabled list ranges from most preferred (first) to least preferred
(last). Clients typically use the first supported extension. At least one HTTP/2 mode must
be included in the Enabled list. The values
ALPN and NPN specify that the TLS
Application Layer Protocol Negotiation (ALPN) and Next Protocol Negotiation (NPN) will be
used to determine whether HTTP/2 or SPDY should be activated. Clients that use TLS, but
only support HTTP will work as if HTTP/2 is not present. The value
Always specifies that all connections function as HTTP/2
connections. Selecting Always in the Activation
Mode list is primarily intended for troubleshooting.

Specifies the receive window, which is HTTP/2 protocol functionality
that controls flow, in KB. The receive window allows the HTTP/2 protocol to stall
individual upload streams when needed.

Frame Size

2048

Specifies the size of the data frames, in bytes, that the HTTP/2 protocol sends to
the client. Larger frame sizes improve network utilization, but can affect concurrency.

Write Size

16384

Specifies the total size of combined data frames, in bytes, that the HTTP/2
protocol sends in a single write function. This setting controls the size of the TLS
records when the HTTP/2 protocol is used over Secure Sockets Layer (SSL). A large write
size causes the HTTP/2 protocol to buffer more data and improves network utilization.

Header Table Size

4096

Specifies the size of the header table, in KB. The HTTP/2 protocol compresses HTTP
headers to save bandwidth. A larger table size allows better compression, but requires
more memory.