3. Design of the QUIC Transmission Machinery (Conception de la machinerie de transmission QUIC)
Toutes les transmissions dans QUIC sont envoyées avec un en-tête au niveau du paquet (Packet-Level Header), qui indique le niveau de chiffrement (Encryption Level) et inclut un numéro de séquence de paquet (Packet Sequence Number, appelé ci-après numéro de paquet Packet Number). Le niveau de chiffrement indique l'espace de numéros de paquets (Packet Number Space), comme décrit dans la section 12.3 de [QUIC-TRANSPORT]. Les numéros de paquets ne se répètent jamais dans un espace de numéros de paquets pendant la durée de vie d'une connexion. Les numéros de paquets sont envoyés dans un ordre croissant de manière monotone (Monotonically Increasing Order) dans un espace, évitant toute ambiguïté. Il est permis que certains numéros de paquets ne soient jamais utilisés, laissant des écarts intentionnels (Intentional Gaps).
Cette conception supprime la nécessité de distinguer entre les transmissions et les retransmissions ; cela élimine une complexité significative de l'interprétation par QUIC des mécanismes de détection de perte TCP.
Les paquets QUIC peuvent contenir plusieurs trames (Frames) de différents types. Les mécanismes de récupération (Recovery Mechanisms) garantissent que les données et les trames nécessitant une livraison fiable sont accusées réception ou déclarées perdues et envoyées dans de nouveaux paquets si nécessaire. Les types de trames contenus dans un paquet affectent la logique de récupération et de contrôle de congestion (Recovery and Congestion Control Logic) :
-
Tous les paquets sont accusés réception, bien que les paquets ne contenant pas de trames provoquant un accusé de réception (Ack-Eliciting Frames) ne soient accusés réception qu'avec des paquets provoquant un accusé de réception.
-
Les paquets à en-tête long (Long Header Packets) contenant des trames CRYPTO sont critiques pour les performances de la négociation QUIC et utilisent des minuteurs plus courts pour l'accusé de réception.
-
Les paquets contenant des trames autres que les trames ACK ou CONNECTION_CLOSE comptent dans les limites de contrôle de congestion (Congestion Control Limits) et sont considérés comme en vol (In Flight).
-
Les trames PADDING font en sorte que les paquets contribuent aux octets en vol (Bytes in Flight) sans provoquer directement l'envoi d'un accusé de réception.