Zusammenfassung

  • QUIC DATAGRAM überträgt ein Anwendungsdatagramm unzuverlässig und bewahrt dessen Grenze, ohne erneute Übertragung oder Reihenfolge gegenüber anderen DATAGRAM-Nachrichten.
  • max_datagram_frame_size signalisiert gerichtete Empfangsbereitschaft und Größe, nicht Kapazität oder Zustellung.
  • Ein Paket-ACK belegt Verarbeitung auf Transportebene, nicht Anwendungserfolg oder geschäftlichen Abschluss.

Der entscheidende Fehler besteht darin, einen erfolgreichen lokalen Aufruf als Empfangsbestätigung zu verbuchen. QUIC DATAGRAM bewahrt eine Nachricht als Einheit, verzichtet aber auf Stream-Offsets, geordnete Byte-Zustellung und erneute Übertragung nach erkanntem Verlust. Auch DATAGRAM-Nachrichten untereinander haben keine garantierte Reihenfolge. Das Format schützt die Grenze zwischen Nachrichten; es fügt keine Zuverlässigkeitsgarantie hinzu.

Ein QUIC DATAGRAM frame ist außerdem nicht dasselbe wie das UDP-Datagramm, das ein QUIC-Paket trägt. Der Frame liegt im QUIC-Paket, und das Paket kann in einem UDP-Datagramm liegen. Diese Ebenen liefern unterschiedliche Belege. Das äußere UDP-Datagramm, die Paketkonstruktion oder ein ACK zeigen nicht automatisch, dass die Nachricht von der entfernten Anwendung verarbeitet wurde.

max_datagram_frame_size wird für eine Richtung ausgehandelt. Der Standardwert ist null. Ein Wert ungleich null zeigt die Bereitschaft, passende DATAGRAM frames in dieser Richtung zu empfangen, unter den Bedingungen des Handshakes und gegebenenfalls des gespeicherten 0-RTT-Zustands. Der Sender darf den angekündigten Wert nicht überschreiten. Das Signal beweist weder verfügbaren Anwendungsspeicher noch Verarbeitungskapazität oder spätere Zustellung. Die tatsächlich nutzbare Größe kann wegen max_udp_payload_size und der Pfad-MTU kleiner sein.

Die Erweiterung fragmentiert DATAGRAM frames nicht; das Anwendungsprotokoll muss den kleineren effektiven Höchstwert verkraften.

DATAGRAM frames gehören zur gesamten QUIC-Verbindung und besitzen keine QUIC stream ID. Logische Flusskennungen, die Bedeutung der Nutzdaten, Ablaufzeiten, Deduplizierung, eine benötigte Reihenfolge und das Abschlusskriterium definiert die Anwendung. Der Transport kann nicht erkennen, ob zwei Datagrams dieselbe geschäftliche Aktion wiederholen.

Nach der lokalen Übergabe erzeugt QUIC einen neuen Frame und versucht, ihn im ersten verfügbaren Paket zu senden. Dabei gelten Staukontrolle und Paket-Pacing. Ist die Übertragung noch nicht erlaubt, muss die Implementierung den Frame behalten, bis sie erlaubt ist, oder ihn vor der Übertragung verwerfen. Eine von der Anwendung gesetzte Ablaufzeit kann ebenfalls zum Verwerfen vor der Übertragung führen. Der erfolgreiche Rückgabewert einer API darf daher nur nach ihrem tatsächlichen Vertrag bewertet werden; RFC 9221 macht daraus keine Sende-, Empfangs- oder Abschlussquittung.

Ein gültiger Frame soll beim Empfänger nur dann sofort an die Anwendung gehen, wenn diese ihn verarbeiten und im Speicher halten kann. DATAGRAM besitzt keine explizite Flusskontrolle und zählt nicht zu den üblichen Stream- oder Verbindungsgrenzen. Dass keine Flusskontrollsperre auftritt, beweist keine Empfängerkapazität. Nicht verarbeitbare Daten dürfen verworfen werden.

DATAGRAM frames lösen ACKs aus, obwohl sie nach erkanntem Verlust nicht erneut übertragen werden. Das ACK kann innerhalb der normalen Grenzen verzögert werden; Sondierungspakete können eine schnellere Antwort anfordern. Neuordnung kann eine vorläufige Verlustannahme später widerlegen. Ein ACK beweist die Verarbeitung des Frames durch die Transportebene des Empfängers, nicht die erfolgreiche Verarbeitung durch die Anwendung, die dauerhafte Speicherung oder den Abschluss der Anwendungstransaktion.

Das Beweisprotokoll sollte Nachrichtenidentität, lokale Annahme und API-Ergebnis, Ablauf- und Verwerfungsrichtlinie, ausgehandelten Support und effektive Größe, Stau- oder Pacing-Verzögerung, Verwerfen vor der Übertragung, Paketnummer und Nummernraum, ACK- oder Verlustbeobachtung einschließlich Korrekturen, Verarbeitung durch die Transportebene des Empfängers, Anwendungsverarbeitung sowie dauerhafte Speicherung oder Abschluss der Anwendungstransaktion getrennt führen.