Das Unternehmen Microsoft über die Öffnung des Code der Bibliothek mit der Implementierung des Netzwerkprotokolls . Der Code ist in C geschrieben und unter der MIT-Lizenz. Die Bibliothek ist plattformübergreifend und kann nicht nur unter Windows, sondern auch unter Linux verwendet werden, wobei oder OpenSSL für TLS 1.3 eingesetzt werden kann. In Zukunft ist auch die Unterstützung weiterer Plattformen geplant.
Die Bibliothek basiert auf dem Code des Treibers msquic.sys, der im Kernel von Windows 10 (Insider Preview) bereitgestellt wird, um die Funktionalität der Protokolle HTTP und über QUIC zu gewährleisten. Der Code wird unter anderem zur Implementierung von HTTP/3 im internen Stack von Windows und in .NET Core verwendet. Die Entwicklung der MsQuic-Bibliothek wird vollständig auf GitHub mit öffentlicher Überprüfung, Pull-Anfragen und GitHub-Issues durchgeführt. Eine Infrastruktur wurde eingerichtet, die jeden Commit und jede Pull-Anfrage in einem Satz von mehr als 4000 Tests prüft. Nachdem die Entwicklungsumgebung stabilisiert wurde, ist geplant, Änderungen von Drittentwicklern zu akzeptieren.
MsQuic kann bereits zur Erstellung von Servern und Clients verwendet werden, aber nicht alle in der IETF-Spezifikation definierten Funktionen sind derzeit verfügbar. Zum Beispiel gibt es bisher keine Unterstützung für 0-RTT, die Migration von Clients, Path MTU Discovery und die Verwaltung der Serveradresse (Server Preferred Address). Unter den implementierten Funktionen werden Optimierungen zur Erreichung maximaler Durchsatzraten und minimaler Latenzen, Unterstützung für asynchrone Ein-/Ausgaben, RSS (Receive Side Scaling) und die Möglichkeit zur Zusammenführung von eingehenden und ausgehenden UDP-Streams hervorgehoben. Die Implementierung von MsQuic wurde auf Kompatibilität mit experimentellen Versionen der Browser Chrome und Edge getestet.
Wir erinnern daran, dass HTTP/3 die Verwendung des QUIC-Protokolls als Transportmittel für HTTP/2 standardisiert. Das Protokoll (Quick UDP Internet Connections) wird seit 2013 von Google als Alternative zu TCP+TLS für das Web entwickelt, um Probleme mit langen Verbindungsaufbau- und Aushandlungszeiten bei TCP zu lösen und Verzögerungen durch Paketverluste während der Datenübertragung zu beseitigen. QUIC ist eine Erweiterung des UDP-Protokolls, die mehrere Verbindungen multiplexiert und Verschlüsselungsmethoden unterstützt, die TLS/SSL entsprechen.
Haupt- QUIC:
- Hohe Sicherheit, vergleichbar mit TLS (im Wesentlichen ermöglicht QUIC die Verwendung von TLS 1.3 über UDP);
- Kontrolle der Integrität des Datenstroms, um Paketverluste zu verhindern;
- Die Möglichkeit, eine Verbindung sofort aufzubauen (0-RTT, in etwa 75 % der Fälle können Daten sofort nach dem Senden des Verbindungsaufbaus übertragen werden) und minimale Verzögerungen zwischen der Anfrage und dem Erhalt einer Antwort (RTT, Round Trip Time) zu gewährleisten;
- Die Wiederverwendung der gleichen Sequenznummer bei der erneuten Übertragung von Paketen zu vermeiden, um Mehrdeutigkeiten bei der Identifizierung empfangener Pakete zu beseitigen und Zeitüberschreitungen zu vermeiden;
- Paketverluste beeinflussen nur den damit verbundenen Datenstrom und stoppen nicht die Datenübertragung in parallel über die aktuelle Verbindung gesendeten Datenströmen;
- Fehlerkorrekturmaßnahmen, die Verzögerungen aufgrund der erneuten Übertragung verlorener Pakete minimieren. Verwendung spezieller Fehlerkorrekturcodes auf Paketeebene, um Situationen zu reduzieren, die eine erneute Übertragung der Daten des verlorenen Pakets erfordern.
- Die Grenzen der kryptografischen Blöcke sind an die Grenzen der QUIC-Pakete angepasst, was die Auswirkungen von Paketverlusten auf die Dekodierung der Inhalte nachfolgender Pakete verringert;
- Keine Probleme mit der Blockierung von TCP-Warteschlangen;
- Unterstützung einer Verbindungs-ID, die die Zeit für die Wiederherstellung einer Verbindung für mobile Clients reduziert;
- Die Möglichkeit, erweiterte Mechanismen zur Überlaststeuerung der Verbindung zu integrieren;
- Einsatz von Bandbreitenvorhersagetechniken in jede Richtung, um die optimale Intensität der Paketsendung sicherzustellen und ein Abrutschen in einen Überlastzustand, der Paketverluste zur Folge hat, zu verhindern;
- Deutlicher an Leistung und Geschwindigkeit im Vergleich zu TCP. Für Video-Dienste wie YouTube hat die Anwendung von QUIC zu einer 30%igen Verringerung der Puffervorgänge beim Ansehen von Videos geführt.
Quelle: opennet.ru
