Internet Engineering Task Force (IETF)                   J. Iyengar, Ed.
Request for Comments: 9000                                        Fastly
Category: Standards Track                                M. Thomson, Ed.
ISSN: 2070-1721                                                  Mozilla
                                                                May 2021


           QUIC: A UDP-Based Multiplexed and Secure Transport

Abstract

   This document defines the core of the QUIC transport protocol.  QUIC
   provides applications with flow-controlled streams for structured
   communication, low-latency connection establishment, and network path
   migration.  QUIC includes security measures that ensure
   confidentiality, integrity, and availability in a range of deployment
   circumstances.  Accompanying documents describe the integration of
   TLS for key negotiation, loss detection, and an exemplary congestion
   control algorithm.

Status of This Memo

   This is an Internet Standards Track document.
   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc9000.

Copyright Notice

   Copyright (c) 2021 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

Table of Contents

   1.  Overview
     1.1.  Document Structure
     1.2.  Terms and Definitions
     1.3.  Notational Conventions
   2.  Streams
     2.1.  Stream Types and Identifiers
     2.2.  Sending and Receiving Data
     2.3.  Stream Prioritization
     2.4.  Operations on Streams
   3.  Stream States
     3.1.  Sending Stream States
     3.2.  Receiving Stream States
     3.3.  Permitted Frame Types
     3.4.  Bidirectional Stream States
     3.5.  Solicited State Transitions
   4.  Flow Control
     4.1.  Data Flow Control
     4.2.  Increasing Flow Control Limits
     4.3.  Flow Control Performance
     4.4.  Handling Stream Cancellation
     4.5.  Stream Final Size
     4.6.  Controlling Concurrency
   5.  Connections
     5.1.  Connection ID
     5.2.  Matching Packets to Connections
     5.3.  Operations on Connections
   6.  Version Negotiation
   7.  Cryptographic and Transport Handshake
     7.1.  Example Handshake Flows
     7.2.  Negotiating Connection IDs
     7.3.  Authenticating Connection IDs
     7.4.  Transport Parameters
     7.5.  Cryptographic Message Buffering
   8.  Address Validation
   9.  Connection Migration
   10. Connection Termination
   11. Error Handling
   12. Packets and Frames
   13. Packetization and Reliability
   14. Datagram Size
   15. Versions
   16. Variable-Length Integer Encoding
   17. Packet Formats
   18. Transport Parameter Encoding
   19. Frame Types and Formats
   20. Error Codes
   21. Security Considerations
   22. IANA Considerations
   23. References

[NOTE: This file contains the header, abstract, and table of contents
 of RFC 9000. The full specification text is available at:
   https://www.rfc-editor.org/rfc/rfc9000
   https://www.rfc-editor.org/rfc/rfc9000.txt  (text)
   https://www.rfc-editor.org/rfc/rfc9000.pdf  (PDF)

 Full document: 151 pages, May 2021
 Authors: Jana Iyengar (Fastly), Martin Thomson (Mozilla)
 DOI: 10.17487/RFC9000]
