Verwende niemals Datagramme.
TCP vs. UDP
- Bei der Entwicklung von Internetanwendungen muss man sich zwischen TCP und UDP entscheiden.
- TCP: garantiert eine zuverlässige Datenübertragung.
- UDP: bietet eine unzuverlässige Datenübertragung.
- Es gibt nur selten Fälle, in denen eine unzuverlässige Übertragung wirklich nötig ist.
Eigenschaften
- Software Engineering basiert auf mehreren Schichten von Abstraktion.
- Jede Schicht stellt bestimmte Eigenschaften bereit, sodass Entwickler nicht alles von Grund auf neu bauen müssen.
- Entwickler müssen entscheiden, welche Schicht sie verwenden wollen.
„Unzuverlässig“
- In einem Treffen zur Entwicklung eines Echtzeit-Video-Protokolls wurde die Meinung geäußert, SUBSCRIBE müsse unzuverlässig sein.
- Tatsächlich wird aber Timeliness benötigt.
- Bei Echtzeit-Video ist es wichtig, aktuelle Daten bevorzugt zu übertragen.
Datagramme
- Ein Datagramm (IP-Paket) ist eine Einheit von Daten, die von einer Quelladresse zu einer Zieladresse übertragen wird.
- Datagramme können verloren gehen oder in falscher Reihenfolge ankommen.
- Der Grund für den Einsatz von Datagrammen ist, dass es bei Netzwerküberlastung oft besser ist, Pakete zu verwerfen.
Warteschlangen im Internet
- Wenn das Netzwerk überlastet ist, ist das Verwerfen von Paketen üblich.
- Pakete in eine Warteschlange zu stellen und später zu übertragen, kann zum Problem des Bufferbloat führen.
- Bufferbloat bedeutet, dass sich alle Pakete in der Warteschlange stauen und die Timeliness beeinträchtigen.
Du als Anwendungsentwickler
- Wer UDP direkt verwendet, kann auf viele Probleme stoßen.
- Wenn man auf UDP ein eigenes Transportprotokoll aufbauen will, muss man Neuübertragungen, Congestion Control usw. selbst implementieren.
- Die Nutzung einer QUIC-Bibliothek ist die bessere Wahl.
Timeliness
- Mit QUIC lässt sich Timeliness erreichen.
- Puffer leeren: Über Congestion Control werden Warteschlangen erkannt und die Sendegeschwindigkeit reduziert.
- Daten in Streams aufteilen: Jeder Stream wird unabhängig übertragen.
- Streams priorisieren: Wichtige Streams werden bevorzugt zugestellt.
Verteidigung der Datagramme
- QUIC und MoQ unterstützen Datagramme.
- Die Unterstützung von Datagrammen ist wichtig, um Experimente zu ermöglichen.
- Dennoch kann die Verwendung von Datagrammen eine Falle sein.
Fazit
- Anwendungen sollten nicht auf Datagrammen aufgebaut werden.
- Statt ein weiteres Video-Protokoll auf UDP zu entwickeln, ist es besser, sich an Media over QUIC zu beteiligen.
Meinung von GN⁺
- Die Bedeutung von Timeliness: In Echtzeitanwendungen ist die rechtzeitige Übertragung von Daten entscheidend. UDP kann geeigneter sein als TCP, erfordert aber zusätzliche Überlegungen wie Congestion Control.
- Vorteile von QUIC: QUIC gleicht die Nachteile von UDP aus und bietet zugleich hohe Leistung. Es eignet sich besonders für Echtzeit-Video-Streaming.
- Das Bufferbloat-Problem: Bei Netzwerküberlastung können in Warteschlangen gestaute Pakete die Timeliness beeinträchtigen. Um das zu vermeiden, ist Congestion Control notwendig.
- Grenzen von Datagrammen: Datagramme eignen sich für Echtzeitübertragung, aber wenn Zuverlässigkeit und Reihenfolge garantiert sein müssen, ist ein Protokoll wie QUIC die bessere Wahl.
- Die Bedeutung der richtigen Technologiewahl: Es ist wichtig, ein geeignetes Transportprotokoll passend zu den Anforderungen einer Anwendung auszuwählen. Eine falsche Wahl kann zu Leistungseinbußen und einer schlechteren User Experience führen.
1 Kommentare
Hacker-News-Kommentare