Zusammenfassung

  • Ein QUIC-Empfänger darf ein Paket erst nach erfolgreicher Entfernung des Paketschutzes und Verarbeitung aller Frames bestätigen.
  • Bei einem STREAM-Frame reicht die Einreihung der Daten für den Anwendungsempfang; Empfang oder Verbrauch durch die Anwendung sind nicht nötig.
  • Zustellung und Abschluss brauchen einen Anwendungsbeleg, der mit Paket, Stream-Offsets und Wiederübertragungsfolge verknüpft ist.

Das Betriebs-Dashboard zeigt „zugestellt“, sobald das Paket mit einer Anfrage in einem ACK-Bereich auftaucht. Handelt es sich um das neu bestätigte ACK-auslösende Paket, das für die Messung ausgewählt wurde, kann es eine RTT-Probe liefern; die Bestätigung beendet zudem die Wiederübertragung der damit bestätigten Information. Der empfangende Prozess hängt jedoch vor seinem Leseereignis: Nichts wurde interpretiert, gespeichert oder ausgeführt. Aus einem Transportbeleg ist ohne ausreichende Grundlage ein Anwendungsergebnis geworden.

RFC 9000 Abschnitt 13.1 zieht die genaue Grenze. Der Empfänger darf ein Paket erst bestätigen, nachdem der Paketschutz erfolgreich entfernt und jeder Frame verarbeitet wurde. Für STREAM heißt Verarbeitung, die Daten für den Empfang durch das Anwendungsprotokoll einzureihen. Die Anwendung muss sie noch nicht empfangen oder verbraucht haben. Ein ACK ist damit ein starker Beleg für die QUIC-Verarbeitung des Gegenübers, endet aber vor der Anwendungsnutzung.

Auch das bestätigte Objekt ist entscheidend. Abschnitt 19.3 beschreibt ACK-Bereiche als Nummern empfangener und verarbeiteter Pakete innerhalb desselben Paketnummernraums. Paketnummern identifizieren geschützte Transportpakete, keine Geschäftsnachrichten. Ein Paket kann mehrere Frame-Arten enthalten; eine Nachricht kann sich über viele STREAM-Frames erstrecken.

Das Stream-Modell macht den Unterschied sichtbar. Abschnitt 2.2 liefert eine geordnete Bytefolge und erklärt, dass STREAM-Framegrenzen bei Übertragung, Wiederholung und Zustellung nicht erhalten bleiben. Abschnitt 3.2 trennt Data Recvd, wenn alle Streamdaten eingetroffen sind, von Data Read, wenn die Anwendung alle Daten gelesen hat. Vollständige Transportankunft, beginnender Anwendungsempfang und beendetes Lesen sind getrennte Übergänge.

Die Sichtbarkeit von ACKs bildet auch kein Eins-zu-eins-Quittungsbuch. Nach Abschnitt 13.2 müssen ACK-auslösende Pakete gemäß den Protokollregeln innerhalb der angekündigten Maximalverzögerung bestätigt werden. Nicht auslösende Pakete können auf späteren Verkehr warten. ACK-Frames können verloren gehen, ältere Bereiche später entfallen. Ein für den Sender unsichtbares ACK beweist daher nicht sofort fehlende Verarbeitung.

Bei einer Wiederübertragung bleibt zudem die Paketidentität nicht bestehen. Abschnitt 13.3 überträgt Informationen erneut, nicht das komplette verlorene Paket. Dieselben STREAM-Offsets können in einem neuen Frame unter neuer Paketnummer erscheinen. Sobald ein Paket mit dieser Information bestätigt ist, endet gewöhnlich die Wiederübertragung der bestätigten Information. Für Aussagen über Bytes müssen ACK-Bereiche mit Frames, Stream-ID, Offset, Länge, FIN und Wiederübertragungsfolge verbunden werden. Auch dann reicht der Beleg nur bis zur Transportwarteschlange.

Die Wiederherstellungsalgorithmen halten denselben Umfang ein. RFC 9002 Abschnitt 5.1 bildet eine RTT-Probe aus dem größten neu bestätigten ACK-auslösenden Paket und berücksichtigt ACK Delay. Gemessen wird der Transport-Rückweg, nicht die Bearbeitungszeit der Anwendung. Abschnitt 6.1 nutzt spätere Bestätigungen sowie Paket- und Zeitschwellen zur Verlustableitung und toleriert Umsortierung. Schweigen ist kein sofortiger Verlustbeweis; ein ACK ist kein Anwendungserfolg.

Nützliche Evidenz bildet eine Leiter. Zuerst werden Verbindung, Paketnummernraum, Paketnummer, Sende- und ACK-Zeit, ACK Delay und Frames bewahrt. Danach folgen STREAM-ID, Offsets, Längen, FIN, Verlustentscheidung und Wiederübertragungsfolge. Hinzu kommen Einreihung beim Empfänger und Lesen oder Rückmeldung des Prozesses. Zuletzt werden Nachrichten- oder Transaktions-ID, Protokollannahme, dauerhafte Schreibbestätigung, Wirkung und Antwort verknüpft.

Jede Stufe erlaubt eine andere Aussage: Das Gegenüber verarbeitete das geschützte Paket; die Bytes erreichten die QUIC-Empfangswarteschlange; der Prozess las sie; die Anwendung nahm die Nachricht an; die Operation wurde dauerhaft abgeschlossen. Eine grüne Anzeige darf diese Tatsachen nicht gleichsetzen.

Die Trennung bestimmt auch die Wiederholungsbefugnis. Wer ein ACK als Abschluss wertet, lässt möglicherweise blockierte Arbeit liegen. Wer ein nicht sichtbares ACK sofort als Fehler wertet, kann eine schon verarbeitete Operation duplizieren. Nur die Schicht mit Operationsidentität und Idempotenz kann eine sichere Wiederholung erlauben.

Der QUIC-Beleg ist gerade deshalb stark, weil seine Aussage eng ist. Den Anwendungserfolg muss die Anwendung belegen.