Can IIS serve my .NET app over the QUIC protocol?

We have a super chatty (ajax) html 5 app (gmail-like in its construction, tons of js).

The reading of QUIC sounds interesting. https://en.wikipedia.org/wiki/QUIC

Can IIS (or any .NET hosting engine) support QUIC?

If IIS/Win can't do it, can I do it in an haproxy instance (on CentOS) in front of IIS?


Solution 1:

As of August 2020, the version of IIS present in Windows 10 Version 2004 (2020-04) and Windows Server 2019 (version 19041) does support QUIC, and QUIC seems to be enabled by default:

enter image description here

Some caveats from my own observations:

  • It only seems to be present in the full-fat IIS, and not IIS Express (but you wouldn't be using IIS Express in production anyway).
  • HTTP/3 (QUIC) and HTTP/2 (SPDY) only seem to be enabled in a HTTPS binding and not in a plaintext HTTP binding.
    • I might be wrong - I'm not familiar with QUIC's details.
    • Note that QUIC is actually a rather low-level protocol, and that "HTTP/3" can be thought-of as "HTTP/2-over-QUIC".
  • Other than the single checkbox to disable QUIC in the Binding settings page, I can't see any other way to configure QUIC in IIS.

Regarding the common scenario of using IIS as a front-end reverse-proxy (using IIS' URL Rewrite extension and Application Request Routing):

  • I cannot find any information regarding support for QUIC in ARR.
  • Note that the URL Rewrite Extension (which is required to use ARR) has been recently updated to version 2.1 in 2017 after being stuck at version 2.0 for almost a decade. You need to install it manually from the IIS Downloads page.
  • The ARR extension is still stuck on version 3.0 which was released in 2013.
    • This makes me think that ARR 3.0 won't support HTTP/2 (SPDY) or HTTP/3 (QUIC) - but at the same time, ARR makes use of the existing HTTP.sys stack in Windows, so it's actually possible that ARR may use HTTP/3 or HTTP/2 if available. But without an official word or tip from an insider at Microsoft it's impossible to say.

Additionally, in May 2020, Microsoft announced their implementation of QUIC was open-source on GitHub: https://github.com/microsoft/msquic - if you have any further questions you may get answers to them there rather than through MS' official support channels or their never-updated IIS blog.


I did post an Issue to the MSQuic GitHub repo seeking more information and documentation for the QUIC feature, but the issue was closed as off-topic, but they did assure me that they've forwarded the question to the internal documentation team, but doing a date-range Google search shows that no new documentation for QUIC has been published by Microsoft.