13. Paketisierung und Zuverlässigkeit
13. Paketisierung und Zuverlässigkeit
Ein Sender sendet einen oder mehrere Frames in einem QUIC-Paket (Abschnitt 12.4). Ein Sender kann die Bandbreiten- und Rechenkosten pro Paket minimieren, indem er so viele Frames wie möglich in jedes QUIC-Paket aufnimmt. Ein Sender KANN eine kurze Zeitspanne warten, um mehrere Frames zu sammeln, bevor er ein Paket sendet, das nicht maximal gefüllt ist, um zu vermeiden, dass große Mengen kleiner Pakete gesendet werden.
13.1 Paketverarbeitung
Ein Paket DARF NICHT bestätigt werden, bis der Paketschutz erfolgreich entfernt wurde und alle im Paket enthaltenen Frames verarbeitet wurden. Für STREAM-Frames bedeutet dies, dass die Daten in Vorbereitung auf den Empfang durch das Anwendungsprotokoll in eine Warteschlange eingereiht wurden, es ist jedoch nicht erforderlich, dass die Daten zugestellt und verbraucht werden.
13.2 Generierung von Bestätigungen
Endpunkte bestätigen alle Pakete, die sie empfangen und verarbeiten. Allerdings veranlassen nur ACK-auslösende Pakete, dass ein ACK-Frame innerhalb der maximalen ACK-Verzögerung gesendet wird. Pakete, die keine ACK auslösen, werden nur bestätigt, wenn ein ACK-Frame aus anderen Gründen gesendet wird.
13.2.1 Senden von ACK-Frames
Jedes Paket SOLLTE mindestens einmal bestätigt werden, und ACK-auslösende Pakete MÜSSEN mindestens einmal innerhalb der maximalen Verzögerung bestätigt werden, die ein Endpunkt mithilfe des max_ack_delay-Transportparameters mitgeteilt hat; siehe Abschnitt 18.2.
13.2.2 Bestätigungsfrequenz
Ein Empfänger bestimmt, wie häufig Bestätigungen als Antwort auf ACK-auslösende Pakete gesendet werden. Diese Bestimmung ist implementierungsspezifisch.
13.2.3 Verwaltung von ACK-Bereichen
Wenn ein ACK-Frame gesendet wird, werden ein oder mehrere Bereiche bestätigter Pakete eingeschlossen. Das Einschließen älterer Bereiche verringert die Wahrscheinlichkeit von Fehlübertragungen, die durch den Verlust zuvor gesendeter ACK-Frames verursacht werden.
13.2.4 Begrenzung von Bereichen durch Verfolgung von ACK-Frames
Wenn ein Sender eine Bestätigung für ein Paket erhält, das einen ACK-Frame enthält, kann der Sender aufhören, Pakete zu bestätigen, die kleiner oder gleich dem größten in diesem ACK-Frame bestätigten Paket sind.
13.2.5 Messung und Meldung der Host-Verzögerung
Ein Endpunkt misst die Verzögerung vom Zeitpunkt des Empfangs eines ACK-auslösenden Pakets bis zum Zeitpunkt, zu dem das entsprechende ACK gesendet wird.
13.2.6 ACK-Frames und Paketschutz
ACK-Frames MÜSSEN nur in einem Paket übertragen werden, das denselben Paketnummernraum wie das zu bestätigende Paket hat.
13.2.7 PADDING-Frames verbrauchen Stauungsfenster
Pakete, die PADDING-Frames enthalten, werden für Zwecke der Stauungskontrolle als in Übertragung befindlich betrachtet [QUIC-RECOVERY].
13.3 Neuübertragung von Informationen
QUIC verwendet eine Kombination aus negativer Bestätigung (NACK) und positiver Bestätigung (ACK), um Neuübertragungen auszulösen. QUIC-Pakete werden nicht als Ganzes neu übertragen; wenn Pakete als verloren bestimmt werden, werden die Informationen, die möglicherweise in ihnen enthalten waren, nach Bedarf in neuen Paketen erneut gesendet.
Neue Frames und Pakete werden verwendet, um Informationen zu übertragen, die als verloren bestimmt wurden. Im Allgemeinen werden Informationen erneut gesendet, wenn ein Paket, das diese Informationen enthält, als verloren bestimmt wird, und das Senden wird beendet, wenn ein Paket, das diese Informationen enthält, bestätigt wird.
13.4 Explizite Stauungsmeldung
QUIC-Endpunkte verwenden Explicit Congestion Notification (ECN) [RFC3168], um Netzwerkstauung zu erkennen und darauf zu reagieren. ECN ermöglicht es einem Endpunkt, Pakete zu markieren, um anzufordern, dass ein Netzwerkelement eine Stauungs-Experienced (CE)-Markierung hinzufügt, anstatt das Paket zu verwerfen.
13.4.1 Meldung von ECN-Zählungen
Die Verwendung von ECN erfordert, dass beide Endpunkte ECN in IP-Paketen aktivieren und den Empfang von CE-Markierungen in QUIC ACK-Frames melden.
13.4.2 ECN-Validierung
Es ist möglich, dass fehlerhafte Netzwerkgeräte Pakete beschädigen oder fälschlicherweise verwerfen, die einen ECN-Codepunkt ungleich Null tragen. Um die Konnektivität in Gegenwart solcher Geräte sicherzustellen, validiert ein Endpunkt die ECN-Zählungen, die es von seinem Peer erhält, und deaktiviert ECN, wenn die Zählungen unzuverlässig erscheinen.