Manual Chapter : Managing HTTP Traffic with the SPDY Profile

Applies To:

Show Versions Show Versions

BIG-IP AAM

  • 11.5.10, 11.5.9, 11.5.8, 11.5.7, 11.5.6, 11.5.5, 11.5.4, 11.5.3, 11.5.2, 11.5.1
Manual Chapter

Overview: Managing HTTP traffic with the SPDY profile

You can use the BIG-IP Local Traffic Manager SPDY (pronounced "speedy") profile to minimize latency of HTTP requests by multiplexing streams and compressing headers. When you assign a SPDY profile to an HTTP virtual server, the HTTP virtual server informs clients that a SPDY virtual server is available to respond to SPDY requests.

When a client sends an HTTP request, the HTTP virtual server, with an assigned iRule, manages the request as a standard HTTP request. It receives the request on port 80, and sends the request to the appropriate server. When the BIG-IP provides the request to the origin web server, the virtual server's assigned iRule inserts an HTTP header into the request (to inform the client that a SPDY virtual server is available to handle SPDY requests), compresses and caches it, and sends the response to the client.

A client that is enabled to use the SPDY protocol sends a SPDY request to the BIG-IP system, the SPDY virtual server receives the request on port 443, converts the SPDY request into an HTTP request, and sends the request to the appropriate server. When the server provides a response, the BIG-IP system converts the HTTP response into a SPDY response, compresses and caches it, and sends the response to the client.

Note: Source address persistence is not supported by the SPDY profile.

Summary of SPDY profile functionality

By using the SPDY profile, the BIG-IP Local Traffic Manager system provides the following functionality for SPDY requests.

Creating concurrent streams for each connection.
You can specify the maximum number of concurrent HTTP requests that are accepted on a SPDY 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 SPDY connection. If this maximum duration is exceeded, the system closes the connection.
Enabling a virtual server to process SPDY requests.
You can configure the SPDY profile on the virtual server to receive both HTTP and SPDY traffic, or to receive only SPDY traffic, based in the activation mode you select. (Note that setting this to receive only SPDY 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-SPDY.
Important: The SPDY protocol is incompatible with NTLM protocols. Do not use the SPDY protocol with NTLM protocols. For additional details regarding this limitation, please refer to the SPDY specification: http://dev.chromium.org/spdy/spdy-authentication.

Task summary for managing HTTP and SPDY traffic

Perform these tasks to manage HTTP and SPDY requests with the BIG-IP Local Traffic Manager system.

Task list

Creating a pool to process HTTP traffic

You can create a pool of web servers to process HTTP requests.
  1. On the Main tab, click Local Traffic > Pools. The Pool List screen opens.
  2. Click Create. The New Pool screen opens.
  3. In the Name field, type a unique name for the pool.
  4. For the Health Monitors setting, from the Available list, select the http monitor, and click << to move the monitor to the Active list.
  5. From the Load Balancing Method list, select how the system distributes traffic to members of this pool. The default is Round Robin.
  6. For the Priority Group Activation setting, specify how to handle priority groups:
    • Select Disabled to disable priority groups. This is the default option.
    • Select Less than, and in the Available Members field type the minimum number of members that must remain available in each priority group in order for traffic to remain confined to that group.
  7. Using the New Members setting, add each resource that you want to include in the pool:
    1. Type an IP address in the Address field.
    2. Type 80 in the Service Port field, or select HTTP from the list.
    3. (Optional) Type a priority number in the Priority field.
    4. Click Add.
  8. Click Finished.
The new pool appears in the Pools list.

Creating an iRule for SPDY requests

You can create an iRule that inserts an HTTP header into responses, enabling a virtual server to respond specifically to SPDY requests.
  1. On the Main tab, click Local Traffic > iRules. The iRule List screen displays a list of existing iRules.
  2. Click the Create button. The New iRule screen opens.
  3. In the Name field, type a unique name for the iRule.
  4. In the Definition field, type an iRule to insert the SPDY header. ltm rule /Common/spdy_enable { when HTTP_RESPONSE { HTTP::header insert "Alternate-Protocol" "443:npn-spdy/3" } }
    Note: Some browsers do not support the "Alternate-Protocol" header, and require a direct HTTPS connection to a virtual server that manages SPDY traffic using port 443.
  5. Click Finished.
The iRule that you created is now available.

Creating a virtual server to manage HTTP traffic

You can create a virtual server to manage HTTP traffic and initiate SPDY traffic.
  1. On the Main tab, click Local Traffic > Virtual Servers. The Virtual Server List screen opens.
  2. Click the Create button. The New Virtual Server screen opens.
  3. In the Name field, type a unique name for the virtual server.
  4. For the Destination setting, in the Address field, type the IP address you want to use for the virtual server. The IP address you type must be available and not in the loopback network.
  5. In the Service Port field, type 80, or select HTTP from the list.
  6. From the HTTP Profile list, select http.
  7. In the Resources area of the screen, for the iRules setting, from the Available list, select the name of the SPDY iRule that you want to assign, and using the Move button, move the name into the Enabled list.
  8. In the Resources area of the screen, from the Default Pool list, select a pool name.
  9. Click Finished.
The HTTP virtual server is now available with the specified settings.

Creating a SPDY profile

You can create a SPDY profile for a virtual server, which responds to clients that send SPDY requests with a Next Protocol Negotiation (npn) extension in the header.
  1. On the Main tab, click Local Traffic > Profiles > Services > SPDY. The SPDY profile list screen opens.
  2. Click Create. The New SPDY Profile screen opens.
  3. In the Name field, type a unique name for the profile.
  4. From the Configuration list, select Advanced.
  5. Select the Custom check box.
  6. In the Activation Mode list, accept the default NPN mode.
  7. In the Concurrent Streams Per Connection field, type the number of concurrent connections to allow on a single SPDY connection.
  8. In the Connection Idle Timeout field, type the number of seconds that a SPDY connection is left open idly before it is closed.
  9. Optional: In the Insert Header list, select Enabled to insert a header name into the request sent to the origin web server.
  10. Optional: In the Insert Header Name field, type a header name to insert into the request sent to the origin web server.
  11. In the Protocol Versions list, select the protocol versions that you want to enable.
    Option Description
    All Versions Enabled Enables all supported SPDY protocol versions and HTTP1.1.
    Select Versions Enables one or more specific protocol versions that you specify. For the Selected Versions setting, select a protocol entry in the Available field, and move the entry to the Selected field using the Move button.
  12. In the Priority Handling list, select how the SPDY profile handles priorities of concurrent streams within the same connection.
    Option Description
    Strict Processes higher priority streams to completion before processing lower priority streams.
    Fair Enables higher priority streams to use more bandwidth than lower priority streams, without completely blocking the lower priority streams.
  13. In the Receive Window field, type the flow-control size for upload streams, in KB.
  14. In the Frame Size field, type the size of the data frames, in bytes, that the SPDY protocol sends to the client.
  15. In the Write Size field, type the total size of combined data frames, in bytes, that the SPDY protocol sends in a single write function.
  16. In the Compression Level field, type a compression level value from 0 (no compression) through 10 (most compression).
  17. In the Compression Window Size field, type a size, in KB, for the compression window, where a larger number increases the compression of HTTP headers, but requires more memory.
  18. Click Finished.
A SPDY profile is now available with the specified settings.

Creating a virtual server to manage SPDY traffic

You can create a virtual server to manage SPDY traffic.
Important: Do not use the SPDY protocol with NTLM protocols as they are incompatible. For additional details regarding this limitation, please refer to the SPDY specification: http://dev.chromium.org/spdy/spdy-authentication.
  1. On the Main tab, click Local Traffic > Virtual Servers. The Virtual Server List screen opens.
  2. Click the Create button. The New Virtual Server screen opens.
  3. In the Name field, type a unique name for the virtual server.
  4. For the Destination setting, in the Address field, type the IP address you want to use for the virtual server. The IP address you type must be available and not in the loopback network.
  5. In the Service Port field, type 443 or select HTTPS from the list.
  6. From the HTTP Profile list, select http.
  7. From the SPDY Profile list, select spdy, or a user-defined SPDY profile.
  8. From the Default Pool list, select a pool that is configured for a SPDY profile.
  9. For the SSL Profile (Client) setting, from the Available list, select clientssl, and using the Move button, move the name to the Selected list.
  10. Click Finished.
The SPDY virtual server is now ready to manage SPDY traffic.