Google experimentiert mit UDP fürs Web

In Chrome-Canary hat der Internetkonzern ein neues Protokoll eingebaut, das HTTP mit UDP statt dem bisherigen TCP überträgt. Das soll die Latenz reduzieren und das Multiplexen vereinfachen, steckt aber noch im Experimentierstadium

In Pocket speichern vorlesen Druckansicht 150 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Christian Kirsch

Mit dem jetzt erstmals in Chrome-Canary eingebauten Quick UDP Internet Connections (QUIC) will Google den HTTP-Verkehr im Web beschleunigen. Das soll nicht in Konkurrenz zu dem bereits vor vier Jahren vorgestellten Protokoll SPDY geschehen, sondern in Zusammenarbeit damit: Man will dafür das bisherige Transportverfahren TCP (Transmission Control Protocol) durch UDP (User Datagram Protocol) ersetzen.

TCP garantiert auf Protokollebene, dass keine Datenpakete verloren gehen, und stellt sicher, dass sie beim Empfänger in der richtigen Reihenfolge eintreffen. Das hat aus Googles Sicht Nachteile im Zusammenspiel mit SPDY, bei dem mehrere Datenströme zwischen Browser und Webserver über einen TCP-Socket fließen. Denn ein einzelnes verlorengegangenes Paket blockiere sämtliche dieser Datenströme. Zudem verringere der TCP-Stack in diesem Fall die Übertragungsgeschwindigkeit für alle Ströme.

QUIC nutzt das simplere UDP, das die Übertragung einzelner Pakete nicht garantiert. Das neue Protokoll muss sich darum zwar selbst kümmern, aber von dem Verlust nicht betroffene Verbindungen müssen anders als bei TCP nicht auf die erneute Übertragung warten. QUIC soll unter anderem einen schnellen Verbindungsaufbau gewährleisten, Paketverluste durch variable Übertragungsgeschwindigkeit reduzieren und durch Fehlerkorrektur (forward error correction) die Latenz bei erneuter Übertragung eines Pakets verringern. Es erlaubt zudem wie SPDY nur verschlüsselte Verbindungen.

Die Details und Überlegungen zum Entwurf von QUIC beschreibt ein ausführliches Google-Docs-Dokument. Eine Beispielimplementierung für den Server liegt im Chromium-Quellcode vor, dort findet sich auch der Code für die Client-Seite. (ck)