QUIC Server und Clients

Damit QUIC überhaupt zum Einsatz kommt, muss sowohl der HTTP-Server über den "Alt-Svc"-Header die Erreichbarkeit mitteilen und der Client auch QUIC unterstützen und erlauben. Zuletzt muss auch das Netzwerk natürlich 443/UDP zulassen. Viele Firmenfirewalls machen das noch nicht.

Auch wenn ich hier QUIC und HTTP3 beschreibe, ist QUIC einfach nur ein weiteres Transportprotokoll und kann von beliebigen Diensten genutzt werden. Microsoft SMB wird auch QUIC nutzen können.

QUIC Libraries

Ehe wir über die Server und Clients sprechen, müssen sie sich noch einmal in Erinnerung rufen, was ich auf Was ist QUIC? beschrieben habe: QUIC ist nicht Bestandteil des TCP/IP-Stacks des Betriebssystems, sondern ein auf UDP aufgesetztes eigenes Transportprotokoll. Es gibt natürlich z.B. von Microsoft eine Implementierung namens "msquic" aber im Grunde obliegt es den Entwicklern der Server und Clients, ob Sie QUIC selbst implementieren oder eine bestehende Library nutzen. Es gibt, anders als bei der SOCKETS-Schnittstelle wohl auch keinen Standard zur Kommunikation mit solchen Libraries, so dass der Wechsel nicht mal eben schnell gemacht ist. Folgende Libraries habe ich gefunden.

Name Sprache Beschreibung und Links

msquic

C/C++/C#

Mit dem .NET Framework 7 hat Microsoft eine Klasse "[System.net.quic]" eingeführt, die ihrerseits auf einem C++-Modul basiert.

aioquic

Python

  • aioquic
    https://github.com/aiortc/aioquic
    aioquic is a library for the QUIC network protocol in Python. It features a minimal TLS 1.3 implementation, a QUIC stack and an HTTP/3 stack.

lsquic

C

ngtcp2

C

quic-go

Go

mvfst

C++

picoquic

C

Welche nun die beste Library ist, kann ich noch nicht sagen.

QUIC Server

Die Frage ist hier natürlich, welcher Webserver im Backend die Anfragen beantwortet. Im Juni 2021 ist der Support noch eingeschränkt. Wobei es gerade bei den UNIX-Systemen eher an OpenSSL hängt, auf dem die Webserver aufsetzen. Mögliche Server und Clients sind aber nicht auf "Browser/Webserver" beschränkt. Jeder Dienst, der bislang HTTP als Transport nutzt, kann im Prinzip auch QUIC nutzen.

Server Ab Version Links

NGNIX

?

Apache

?

Vermutlich warten auf OpenSSL

OpenSSL

2024

Viele UNIX-basierte Dienste, die TLS-Verschlüsselung mittels OpenSSL bereitstellen, können davon profitieren, wenn OpenSSL auch QUIC unterstützt. Ende 2023 habe ich erste Quelle gefunden, die dies versprechen

IIS

Ab Win2022

Windows 2022 Server unterstützt QUIC und die Funktion ist per Default auch aktiv, aber kann in den HTTPS-Bindungen deaktiviert werden.

Denken Sie daran, dass Sie für QUIC aber erst TLS 1.3 aktivieren müssen.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:ffffffff

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:ffffffff

Für die Nutzung im IIS müssen Sie noch folgende Werte addieren.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters]
"EnableHttp3"=dword:00000001
"EnableAltSvc"=dword:00000001

Prüfen Sie bitte die aktuelle Microsoft Dokumentation

Windows HTTPListener

?

Ich habe noch keine Quellen gefunden, die den einfachen HTTP-Listener, den ich gerne in PowerShell-Skripten nutze, für QUIC aktivieren.

Safari (MAC)

 

SMB

 

Leider gibt es QUIC mit SMB nur auf Windows Server 2022 in Azure. Vielleicht möchte Microsoft da erst noch etwas Erfahrungen sammlen und QUIC spielt seine Stärke ja auch eher im WAN aus.

SMB over QUIC updates the SMB 3.1.1 protocol in Windows Server 2022 Datacenter: Azure Edition and supported Windows clients to use the QUIC protocol instead of TCP. By using SMB over QUIC along with TLS 1.3, users and applications can securely and reliably access data from edge file servers running in Azure. Mobile and telecommuter users no longer need a VPN to access their file servers over SMB when on Windows. More information can be found at the SMB over QUIC documentation.
Quelle https://docs.microsoft.com/en-us/windows-server/get-started/whats-new-in-windows-server-2022#smb-over-quic

Windows OnPremises bekommt das Feature im Jahr 2024

C++, C#, Python

NET 7

Weitere

 

Im Prinzip kann jede Client/Server-Kombination, die heute schon HTTPS/TCP nutzt auch HTTP3/QUIC über UDP nutzen.

 

Denken Sie auch an Firewall und Proxy. QUIC spielt seine Stärke aus, wenn der Client und Server direkt per UDP über Port 443 miteinander kommunizieren können. Ein klassischer HTTP-Proxy ist auf UDP/443 taub. Eine Firewall lässt aber meist UDP 443 per Default nicht zu. Sie kann dies aber machen, wenn Sie zugleich im Handshake einige Dinge nach Firmenvorgabe prüfen kann.

QUIC auf Clients

Natürlich muss auch der Client den Weg über QUIC wählen. Aktuell sind es Browser, die QUIC nutzen und dies wohl über die IP-Sockets ansprechen. Ich wüsste nicht dass, dass die Funktion aktuell in einem Betriebssystem enthalten ist und ich ich erwarte dies auch nicht. QUIC ist ja kein neues Protokolll neben UDP und TCP sondern setzt höher auf UDP auf. Daher sind eher Webserver und Browser entsprechende Komponenten, in denen QUIC implementiert werden muss und mit HTTP/3 arbeiten. Die meisten Browser unterstützen dies aber schon einige Zeit:


Quelle https://caniuse.com/http3 (Sep 2023)

Es kann sein, dass Sie QUIC vielleicht noch einschalten müssen oder es vielleicht sogar ausschalten wollen.

Client QUIC Support

Chrome

Ja

Firefox

Ja ab Version 88

Edge (Chromium)

Ja

MSEdgeWebView2

Ja

PowerShell "Invoke-WebRequest

Da der Abruf immer nur genau eine URL und eine Datei überträgt, macht QUIC erst einmal keinen Sinn. Erst wenn Sie viele URLs abrufen und der Unterbau ein Connection-Pooling macht, wäre hier QUIC ein Thema.

Windows WinHTTP

?

CURL

Ja

Leider habe ich noch keine im Browser eingebaute Funktion gesehen, die die Nutzung on QUIC als Icon o.ä. darstellt. Es gibt aber wohl Addons

Weitere Links