Setting up HTTP/2 support on IIS server 2016 & Citrix Storefront

With the slow demise of HTTP, there is a new kid on the block HTTP/2, Which I have blogged about earlier from a Netscaler point of view https://msandbu.wordpress.com/2015/07/03/citrix-netscaler-and-support-for-next-generation-web-traffic-protocols-like-spdy-http2/

In the upcoming server release from Microsoft, IIS 2016 will be the first IIS release that supports HTTP/2, it is enabled by default from TP3 (All we need is a certificate to enable HTTP/2) So if I fire up a HTTP connection to a IIS server 2016 it will use regular HTTP, this can be seen using developer tools on Internet Explorer

image

Now if I setup support for HTTP/2 for older versions, this needs to be enabled from registry at the moment, using the following registry key.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters

Here we need to create a new DWORD value named DuoEnabled

Then set the value to 1

image

Then we need to add a certificate since HTTP/2 by default requires TLS in order to function, this can be done by for instance adding just a self-signed certificate to the web-site binding.
NOTE: This is not something that has be put as the standard, but just adopted by the different web-server vendors as well as browser vendors.

image

then restart the IIS service.

Now we can again to a connection to the IIS website and have developer tools open from IE and we can see that it is connecting using HTTP/2

image

Now I can also verify that this works flawlessly for Citrix Storefront as well

image

Just by moving to HTTP/2 looks like it has improved the performance very much. The login page went from 200 ms to about 40 – 50 ms load time. The general feel of the performance of the site looks much smoother.

NOTE: I have sent an email to Citrix to ask if this is supported or if there will be an upgrade in the future to support this properly.

NOTE: You can see more about the implementation of HTTP/2 on IIS on this GitHub page –> https://github.com/MSOpenTech/http2-katana

#http2, #iis-2016