18. Codage des paramètres de transport
18. Codage des paramètres de transport
Le champ extension_data de l'extension quic_transport_parameters définie dans [QUIC-TLS] contient les paramètres de transport QUIC. Ils sont codés comme une séquence de paramètres de transport, comme illustré dans la Figure 20:
Transport Parameters {
Transport Parameter (..),
...
}
Figure 20: Séquence de paramètres de transport
Chaque paramètre de transport est codé comme un tuple (identifiant, longueur, valeur), comme illustré dans la Figure 21:
Transport Parameter {
Transport Parameter ID (i),
Transport Parameter Length (i),
Transport Parameter Value (..),
}
Figure 21: Codage des paramètres de transport
Le champ Transport Parameter Length contient la longueur du champ Transport Parameter Value en octets.
QUIC code les paramètres de transport en une séquence d'octets, qui est ensuite incluse dans la négociation cryptographique.
18.1 Paramètres de transport réservés
Les paramètres de transport avec un identifiant de la forme 31 * N + 27 pour des valeurs entières de N sont réservés pour exercer l'exigence que les paramètres de transport inconnus soient ignorés. Ces paramètres de transport n'ont pas de sémantique et peuvent porter des valeurs arbitraires.
18.2 Définitions des paramètres de transport
Cette section détaille les paramètres de transport définis dans ce document.
original_destination_connection_id (0x00): Ce paramètre est la valeur du champ Destination Connection ID du premier paquet Initial envoyé par le client.
max_idle_timeout (0x01): Le délai d'inactivité maximal est une valeur en millisecondes codée comme un entier. Si cette valeur est absente ou nulle, le délai d'inactivité est désactivé.
stateless_reset_token (0x02): Un jeton de réinitialisation sans état est utilisé pour vérifier une réinitialisation sans état; voir Section 10.3.
max_udp_payload_size (0x03): Le paramètre de taille maximale de charge utile UDP est une valeur entière qui limite la taille des charges utiles UDP que le point de terminaison est disposé à recevoir.
initial_max_data (0x04): Le paramètre de données maximales initiales est une valeur entière qui contient la valeur initiale de la quantité maximale de données pouvant être envoyées sur la connexion.
initial_max_stream_data_bidi_local (0x05): Ce paramètre est une valeur entière spécifiant la limite de contrôle de flux initiale pour les flux bidirectionnels initiés localement.
initial_max_stream_data_bidi_remote (0x06): Ce paramètre est une valeur entière spécifiant la limite de contrôle de flux initiale pour les flux bidirectionnels initiés par le pair.
initial_max_stream_data_uni (0x07): Ce paramètre est une valeur entière spécifiant la limite de contrôle de flux initiale pour les flux unidirectionnels.
initial_max_streams_bidi (0x08): Le paramètre de flux bidirectionnels maximaux initiaux est une valeur entière qui contient le nombre maximal initial de flux bidirectionnels que le point de terminaison qui reçoit ce paramètre de transport est autorisé à initier.
initial_max_streams_uni (0x09): Le paramètre de flux unidirectionnels maximaux initiaux est une valeur entière qui contient le nombre maximal initial de flux unidirectionnels que le point de terminaison qui reçoit ce paramètre de transport est autorisé à initier.
ack_delay_exponent (0x0a): L'exposant de délai d'accusé de réception est une valeur entière indiquant un exposant utilisé pour décoder le champ ACK Delay dans la trame ACK (Section 19.3). Si cette valeur est absente, une valeur par défaut de 3 est supposée.
max_ack_delay (0x0b): Le délai d'accusé de réception maximal est une valeur entière indiquant la quantité maximale de temps en millisecondes par laquelle le point de terminaison retardera l'envoi d'accusés de réception. Si cette valeur est absente, une valeur par défaut de 25 millisecondes est supposée.
disable_active_migration (0x0c): Le paramètre de transport disable_active_migration est inclus si le point de terminaison ne prend pas en charge la migration de connexion active (Section 9) sur l'adresse utilisée pendant la négociation.
preferred_address (0x0d): L'adresse préférée du serveur est utilisée pour effectuer un changement d'adresse de serveur à la fin de la négociation, comme décrit dans la Section 9.6.
active_connection_id_limit (0x0e): La limite d'ID de connexion actifs est une valeur entière spécifiant le nombre maximal d'ID de connexion du pair qu'un point de terminaison est disposé à stocker.
initial_source_connection_id (0x0f): C'est la valeur que le point de terminaison a incluse dans le champ Source Connection ID du premier paquet Initial qu'il envoie pour la connexion.
retry_source_connection_id (0x10): C'est la valeur que le serveur a incluse dans le champ Source Connection ID d'un paquet Retry.