18. Transportparameter-Codierung
18. Transportparameter-Codierung
Das extension_data-Feld der in [QUIC-TLS] definierten quic_transport_parameters-Erweiterung enthält die QUIC-Transportparameter. Sie werden als Sequenz von Transportparametern codiert, wie in Abbildung 20 dargestellt:
Transport Parameters {
Transport Parameter (..),
...
}
Abbildung 20: Sequenz von Transportparametern
Jeder Transportparameter wird als (Identifikator, Länge, Wert)-Tupel codiert, wie in Abbildung 21 dargestellt:
Transport Parameter {
Transport Parameter ID (i),
Transport Parameter Length (i),
Transport Parameter Value (..),
}
Abbildung 21: Transportparameter-Codierung
Das Feld Transport Parameter Length enthält die Länge des Felds Transport Parameter Value in Bytes.
QUIC codiert Transportparameter in eine Bytesequenz, die dann in den kryptografischen Handshake eingeschlossen wird.
18.1 Reservierte Transportparameter
Transportparameter mit einer Kennung der Form 31 * N + 27 für ganzzahlige Werte von N sind reserviert, um die Anforderung zu üben, dass unbekannte Transportparameter ignoriert werden. Diese Transportparameter haben keine Semantik und können beliebige Werte tragen.
18.2 Transportparameter-Definitionen
Dieser Abschnitt beschreibt die in diesem Dokument definierten Transportparameter im Detail.
original_destination_connection_id (0x00): Dieser Parameter ist der Wert des Destination Connection ID-Felds aus dem ersten vom Client gesendeten Initial-Paket.
max_idle_timeout (0x01): Das maximale Idle-Timeout ist ein Wert in Millisekunden, der als Ganzzahl codiert wird. Wenn dieser Wert fehlt oder Null ist, ist das Idle-Timeout deaktiviert.
stateless_reset_token (0x02): Ein Stateless-Reset-Token wird zur Überprüfung eines zustandslosen Resets verwendet; siehe Abschnitt 10.3.
max_udp_payload_size (0x03): Der Parameter für die maximale UDP-Payload-Größe ist ein Ganzzahlwert, der die Größe der UDP-Payloads begrenzt, die der Endpunkt zu empfangen bereit ist.
initial_max_data (0x04): Der Parameter für die initiale maximale Datenmenge ist ein Ganzzahlwert, der den Anfangswert für die maximale Datenmenge enthält, die auf der Verbindung gesendet werden kann.
initial_max_stream_data_bidi_local (0x05): Dieser Parameter ist ein Ganzzahlwert, der das initiale Flusskontrolllimit für lokal initiierte bidirektionale Streams angibt.
initial_max_stream_data_bidi_remote (0x06): Dieser Parameter ist ein Ganzzahlwert, der das initiale Flusskontrolllimit für peer-initiierte bidirektionale Streams angibt.
initial_max_stream_data_uni (0x07): Dieser Parameter ist ein Ganzzahlwert, der das initiale Flusskontrolllimit für unidirektionale Streams angibt.
initial_max_streams_bidi (0x08): Der Parameter für die initiale maximale Anzahl bidirektionaler Streams ist ein Ganzzahlwert, der die initiale maximale Anzahl bidirektionaler Streams enthält, die der Endpunkt, der diesen Transportparameter empfängt, initiieren darf.
initial_max_streams_uni (0x09): Der Parameter für die initiale maximale Anzahl unidirektionaler Streams ist ein Ganzzahlwert, der die initiale maximale Anzahl unidirektionaler Streams enthält, die der Endpunkt, der diesen Transportparameter empfängt, initiieren darf.
ack_delay_exponent (0x0a): Der Acknowledgment-Delay-Exponent ist ein Ganzzahlwert, der einen Exponenten angibt, der zur Decodierung des ACK Delay-Felds im ACK-Frame verwendet wird (Abschnitt 19.3). Wenn dieser Wert fehlt, wird ein Standardwert von 3 angenommen.
max_ack_delay (0x0b): Die maximale Acknowledgment-Verzögerung ist ein Ganzzahlwert, der die maximale Zeit in Millisekunden angibt, um die der Endpunkt das Senden von Bestätigungen verzögert. Wenn dieser Wert fehlt, wird ein Standard von 25 Millisekunden angenommen.
disable_active_migration (0x0c): Der Transportparameter disable_active_migration wird eingeschlossen, wenn der Endpunkt keine aktive Verbindungsmigration (Abschnitt 9) auf der während des Handshakes verwendeten Adresse unterstützt.
preferred_address (0x0d): Die bevorzugte Adresse des Servers wird verwendet, um eine Änderung der Serveradresse am Ende des Handshakes zu bewirken, wie in Abschnitt 9.6 beschrieben.
active_connection_id_limit (0x0e): Das Limit für aktive Verbindungs-IDs ist ein Ganzzahlwert, der die maximale Anzahl von Verbindungs-IDs vom Peer angibt, die ein Endpunkt zu speichern bereit ist.
initial_source_connection_id (0x0f): Dies ist der Wert, den der Endpunkt im Source Connection ID-Feld des ersten Initial-Pakets aufgenommen hat, das er für die Verbindung sendet.
retry_source_connection_id (0x10): Dies ist der Wert, den der Server im Source Connection ID-Feld eines Retry-Pakets aufgenommen hat.