Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

HTTP/2 Inspection: Support for Cleartext HTTP/2 Traffic

Cleartext HTTP/2 Inspection Overview

Cleartext (plaintext) HTTP/2 inspection allows the system to analyze unencrypted HTTP/2 traffic. It recognizes an HTTP/2 connection early, manages it as a single TCP connection, and tracks each HTTP/2 stream independently. The system performs Layer 7 inspection and policy enforcement on each stream, enabling granular visibility and control of individual transactions within the same connection.

The following features are supported with cleartext HTTP/2, with the same behavior as with encrypted HTTP/2:

  • Firewall authentication works with HTTP/2 traffic.
  • Web authentication via HTTPD supports HTTP/2.
  • UserFW can redirect HTTP/2 users to auth pages or allow pass-through.
  • General UserFW (user-based policies, identity) works with HTTP/2.
  • URL and web filtering policies are enforced on HTTP/2 flows.
  • Content filtering (example: file types, keywords) works with HTTP/2.
  • Transparent and explicit proxy modes support HTTP/2.
  • JDPI correctly classifies HTTP/2 at both the connection level and the stream level.
  • Works with both unified and non‑unified security policy models.

Benefits of Clear-Text HTTP/2 Inspection

  • Extends Layer 7 controls to cleartext HTTP/2, enabling the application of the same Web filtering, content inspection, authentication, and anomaly detection policies used for encrypted HTTP/2 traffic.

  • Preserves stream-level enforcement by inspecting each HTTP/2 stream independently, even when multiple concurrent requests share one TCP connection.

  • Improves policy consistency across encrypted and cleartext HTTP/2 by using the same inspection pipeline and decision points.

How Clear-Text HTTP/2 Inspection Works

When cleartext HTTP/2 inspection is turned on, the security device looks at cleartext TCP connections to see if they might be using HTTP/2. If they are, it can treat them like HTTP traffic and inspect them.

  • At the start of a new TCP session, the system checks the first data packet.
  • It looks for the HTTP/2 client connection preface (a specific sequence that all HTTP/2 clients send first).
    • If this preface is present in the first packet, the system classifies the flow as clear-text HTTP/2 and HTTP/2 inspection is enabled for that connection.
    • If the preface is not in the first packet: The system assumes it is not clear-text HTTP/2 and the traffic is forwarded without HTTP/2 per-stream inspection.

Once HTTP/2 is identified, the system treats the TCP connection as a single HTTP/2 session.

HTTP/2 traffic consists of multiple independent streams, each identified by a unique stream ID. The system uses these stream IDs to distinguish and track individual HTTP transactions within the same connection. A new stream is typically identified when the first HEADERS frame for that stream is observed.

For each stream, the system performs Layer 7 inspection and policy evaluation on the corresponding request and response. After inspection, permitted traffic and any service-driven modifications are forwarded while maintaining the HTTP/2 protocol structure.

See HTTP/2 Protocol for details on HTTP/2 potocol.

Dependency on Application Identification

Cleartext HTTP/2 inspection also depends on application identification. If HTTP/2 application identification is disabled, the system does not engage HTTP/2 proxy processing. As a result, HTTP/2 inspection does not occur for either encrypted HTTP/2 or cleartext HTTP/2 traffic.

Configuration and Operational Verification

Enable Clear-Text HTTP/2

HTTP/2 cleartext processing is not supported by default. Following configuration is needed to enable the functionality.

In addition, you must also set HTTP/2 on in SSL proxy global configuration as shown in following command:

Disable HTTP/2 Application Identification

Disable HTTP/2 application identification. This configuration prevents HTTP/2 proxy processing and blocks cleartext HTTP/2 inspection):

Application cache behavior remains unchanged.

Verify Enablement and Status

Enter the following command to verify cleartext HTTP/2 status:

The command output displays the status, enabled features, and key protocol limits of HTTP proxy services running on the device including:

  • Encrypted HTTP2: Indicates whether HTTP/2 over TLS (HTTPS) is enabled or disabled.
  • Plain-text HTTP2: Indicates whether clear‑text HTTP/2 is enabled or disabled.

Monitor Clear-Text HTTP/2

Enter the following command to monitor cleartext HTTP/2 status:

The command output shows details for HTTP/2 application‑service sessions including:

  • Current session HTTP2 parent: Number of active encrypted HTTP/2 connection‑level sessions
  • Current session HTTP2 child: Number of active encrypted HTTP/2 stream‑level sessions.
  • Current plaint text session HTTP2 parent: Number of active clear‑text HTTP/2 connection-level sessions.
  • Current plain text session HTTP2 child: Number of active clear‑text HTTP/2 stream sessions.

Troubleshooting Cleartext HTTP/2

If cleartext HTTP/2 traffic is not processed as expected, use the following steps to verify status, monitor behavior, and disable the feature if required.

Verify Is HTTP/2 is Enabled.

Check whether cleartext HTTP/2 is enabled using the show security application-services status command.

The command displays the following output:

Look for:

  • Plain-text HTTP2: Enabled/Disabled
  • Encrypted HTTP2: Enabled/Disabled

Monitor HTTP/2 Sessions and Activity

Use the show security application-services monitoring command to verify whether HTTP/2 traffic is being processed:

Interpreting the Counters

  • One HTTP/2 connection established—Current session HTTP2 parent increments by 1.
  • Multiple concurrent HTTP requests (streams) over same connection—Current session HTTP2 child increases (one per stream).
  • New connections initiated—Parent session creation rate increases.
  • New streams within existing connection—Child session creation rate increases.

If these counters are zero, it indicates that:

  • No clear-text HTTP/2 traffic is being detected
  • Or HTTP/2 inspection is not active

Disable Clear-Text HTTP/2 (for Isolation)

If issues are suspected with HTTP/2 inspection, disable the feature to isolate the problem:

Or disable HTTP/2 application identification:

Disabling HTTP/2 helps confirm whether the issue is related to HTTP/2 processing or general traffic handling.

Check HTTP/2 Session Logging

Session logs represent the HTTP/2 connection, while stream logs represent individual HTTP transactions, enabling granular visibility into per-stream activity, policy enforcement, and traffic behavior.

Ensure that you have enabled logging for HTTP/2 parent sessions. Check HTTP/2 Protocol and Security Log for HTTP/2 Trafficfor details.

Example HTTP/2 Session Logs

  • Is HTTP/2 working?

    In the above sample, the fields application="HTTP2" and encrypted="yes" confirm that HTTP/2 traffic is identified.

  • Is inspection happening per stream?

    The fields parent-session-id and stream-id show sessions are linked using explicit identifiers.

    The fields policy-name=”sec_policy”, application=”HTTP”, nested-application=”facebook” confirm from a policy is applied successfully and application identified (AppID working).

  • What is traffic volume?

    In the above sample, the fields frames-from-client="2" and frames-from-server="247" help identify data flow direction and whether the server responded.