Passa al contenuto principale

3. Design of the QUIC Transmission Machinery (Progettazione della macchina di trasmissione QUIC)

Tutte le trasmissioni in QUIC vengono inviate con un'intestazione a livello di pacchetto (Packet-Level Header), che indica il livello di crittografia (Encryption Level) e include un numero di sequenza del pacchetto (Packet Sequence Number, di seguito denominato numero di pacchetto Packet Number). Il livello di crittografia indica lo spazio dei numeri di pacchetto (Packet Number Space), come descritto nella Sezione 12.3 di [QUIC-TRANSPORT]. I numeri di pacchetto non si ripetono mai all'interno di uno spazio di numeri di pacchetto per la durata di una connessione. I numeri di pacchetto vengono inviati in ordine crescente monotonicamente (Monotonically Increasing Order) all'interno di uno spazio, prevenendo ambiguità. È consentito che alcuni numeri di pacchetto non vengano mai utilizzati, lasciando lacune intenzionali (Intentional Gaps).

Questo design elimina la necessità di disambiguare tra trasmissioni e ritrasmissioni; ciò elimina una complessità significativa dall'interpretazione dei meccanismi di rilevamento della perdita TCP da parte di QUIC.

I pacchetti QUIC possono contenere più frame di tipi diversi. I meccanismi di recupero (Recovery Mechanisms) garantiscono che i dati e i frame che richiedono una consegna affidabile vengano riconosciuti o dichiarati persi e inviati in nuovi pacchetti secondo necessità. I tipi di frame contenuti in un pacchetto influenzano la logica di recupero e controllo della congestione (Recovery and Congestion Control Logic):

  • Tutti i pacchetti vengono riconosciuti, sebbene i pacchetti che non contengono frame che richiedono riconoscimento (Ack-Eliciting Frames) vengano riconosciuti solo insieme ai pacchetti che richiedono riconoscimento.

  • I pacchetti con intestazione lunga (Long Header Packets) che contengono frame CRYPTO sono critici per le prestazioni dell'handshake QUIC e utilizzano timer più brevi per il riconoscimento.

  • I pacchetti contenenti frame diversi dai frame ACK o CONNECTION_CLOSE contano verso i limiti di controllo della congestione (Congestion Control Limits) e sono considerati in volo (In Flight).

  • I frame PADDING fanno sì che i pacchetti contribuiscano ai byte in volo (Bytes in Flight) senza causare direttamente l'invio di un riconoscimento.