How To: Check if HTTP/2 is being used in the NetScaler, and if so by which entities

How To: Check if HTTP/2 is being used in the NetScaler, and if so by which entities

book

Article ID: CTX582525

calendar_today

Updated On:

Description

The below CLI commands can provide information on the usage of HTTP/2 on a specific NetScaler:

The show ns httpParam command shows whether HTTP/2 is enabled or not for communication to backend services. This is a global parameter for the NetScaler.

show ns httpParam
 Configured HTTP parameters:
        Drop invalid HTTP requests: OFF
        Mark HTTP/0.9 requests as invalid: OFF
        Mark CONNECT requests as invalid: OFF
        Insert Netscaler server header: OFF
        Netscaler server header: NS13.1.49.15
        Log HTTP error responses: ON
        HTTP/2 server side: ON
        Connection multiplexing: ENABLED
        Max number of Reusepool connections: 0
        Ignore Connect Coding Scheme: DISABLED

For the front-end connections (client to VIP) HTTP/2 can only be enabled by using an HTTP profile that has the HTTP/2 parameter enabled and binding that HTTP profile to the VIP where HTTP/2 is required. The show ns httpProfile command will show all configured HTTP profiles and there you can check whether any profile has HTTP/2 enabled, if any of them have HTTP/2 enabled, then you can check the bindings of that profile.

show ns httpProfile
1)      Name: nshttp_default_profile
        Drop invalid HTTP requests: DISABLED
        Mark HTTP/0.9 requests as invalid: DISABLED
        Mark CONNECT requests as invalid: DISABLED
        Mark TRACE requests as invalid: DISABLED
        Mark RFC7230 non-compliant as invalid: DISABLED
        Mark HTTP headers with extra WS as invalid: DISABLED
        Allow only word characters and hyphen in Header Name: DISABLED
        Pass Protocol Upgrade: ENABLED
        Enabled compression on PUSH: DISABLED
        Connection multiplexing: ENABLED
        Max number of Reusepool connections: 0
        Request Timeout: 0 sec (DISABLED)
        Adaptive Request Timeout: DISABLED
        Request Timeout Action:
        Drop extra data from Server: DISABLED
        Drop extra CRLF: ENABLED
        Max Incomplete header delay: 7000 millisec
        WebSocket Connections: DISABLED
        Client IP header expression:
        Weblogging: ENABLED
        Max Requests per connection: 0 (DISABLED)
        Persistent ETag: DISABLED
        Reuse-pool timeout: 0 sec
        Maximum header length: 24820 bytes
        Maximum header field length: 24820 bytes
        RTSP Tunnel: DISABLED
        Min number of Reusepool connections: 0
        HTTP/2: DISABLED
        HTTP/2 Header Table Size: 4096
        HTTP/2 Initial connection flow-control window size: 65535
        HTTP/2 Initial stream flow-control window size: 65535
        HTTP/2 Maximum Concurrent Streams: 100
        HTTP/2 Maximum Frame Size: 16384
        HTTP/2 Maximum Header List Size: 24576
        HTTP/2 Direct: DISABLED
        HTTP/2 Alternative Services Frame: DISABLED
        Alternative Service: DISABLED
        Alternative Services Header Value:
        HTTP/2 Minimum Server Connections: 20
        HTTP/2 Max Ping Frames Per Min: 60
        HTTP/2 Max Settings Frames Per Min: 15
        HTTP/2 Max Reset Frames Per Min: 90
        HTTP/2 Max Empty Frames Per Min: 60
        HTTP/2 Strict Cipher: ENABLED
        HTTP/3: DISABLED
        HTTP/3 maximum header field section size: 24576
        HTTP/3 maximum header table size: 4096
        HTTP/3 maximum header blocked streams: 100
        gRPC Buffer Limit: 131072
        gRPC Buffer Timeout: 1000
        gRPC Length Delimited Message: ENABLED
        Apdex Client Response Threshold: 500
        HTTP pipeline req buffer size: 131072
        Reference count: 40444

Once you identify any HTTP Profiles that have HTTP/2 enabled, then you can check if they are bound to any entity by using the command sh run | grep -i "httpProfileName InsertYourHTTPProfileNameHere"