| rfc9312.original.xml | rfc9312.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.10 (Ruby 3.0. | <!DOCTYPE rfc [ | |||
| 2) --> | <!ENTITY nbsp " "> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | <!ENTITY zwsp "​"> | |||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | <!ENTITY nbhy "‑"> | |||
| -ietf-quic-manageability-18" category="info" tocInclude="true" sortRefs="true" s | <!ENTITY wj "⁠"> | |||
| ymRefs="true" version="3"> | ]> | |||
| <!-- xml2rfc v2v3 conversion 3.5.0 --> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" submissionType | ||||
| ="IETF" category="info" consensus="true" docName="draft-ietf-quic-manageability- | ||||
| 18" number="9312" tocInclude="true" sortRefs="true" symRefs="true" updates="" ob | ||||
| soletes="" xml:lang="en" version="3"> | ||||
| <front> | <front> | |||
| <title abbrev="QUIC Manageability">Manageability of the QUIC Transport Proto col</title> | <title abbrev="QUIC Manageability">Manageability of the QUIC Transport Proto col</title> | |||
| <seriesInfo name="Internet-Draft" value="draft-ietf-quic-manageability-18"/> | <seriesInfo name="RFC" value="9312"/> | |||
| <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind"> | <author initials="M." surname="Kühlewind" fullname="Mirja Kühlewind"> | |||
| <organization>Ericsson</organization> | <organization>Ericsson</organization> | |||
| <address> | <address> | |||
| <email>mirja.kuehlewind@ericsson.com</email> | <email>mirja.kuehlewind@ericsson.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="B." surname="Trammell" fullname="Brian Trammell"> | <author initials="B." surname="Trammell" fullname="Brian Trammell"> | |||
| <organization>Google Switzerland GmbH</organization> | <organization>Google Switzerland GmbH</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Gustav-Gull-Platz 1</street> | <street>Gustav-Gull-Platz 1</street> | |||
| <city>8004 Zurich</city> | <city>Zurich</city> | |||
| <country>Switzerland</country> | <code>8004</code> | |||
| <country>Switzerland</country> | ||||
| </postal> | </postal> | |||
| <email>ietf@trammell.ch</email> | <email>ietf@trammell.ch</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2022" month="July" day="15"/> | <date year="2022" month="September"/> | |||
| <keyword>Internet-Draft</keyword> | <area>tsv</area> | |||
| <workgroup>quic</workgroup> | ||||
| <keyword>network management</keyword> | ||||
| <keyword>wire image</keyword> | ||||
| <abstract> | <abstract> | |||
| <t>This document discusses manageability of the QUIC transport protocol, f ocusing | <t>This document discusses manageability of the QUIC transport protocol an d focuses | |||
| on the implications of QUIC's design and wire image on network operations | on the implications of QUIC's design and wire image on network operations | |||
| involving QUIC traffic. It is intended as a "user's manual" for the wire image, | involving QUIC traffic. It is intended as a "user's manual" for the wire image t | |||
| providing guidance for network operators and equipment vendors who rely on the | o | |||
| provide guidance for network operators and equipment vendors who rely on the | ||||
| use of transport-aware network functions.</t> | use of transport-aware network functions.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction"> | <section anchor="introduction"> | |||
| <name>Introduction</name> | <name>Introduction</name> | |||
| <t>QUIC <xref target="QUIC-TRANSPORT"/> is a new transport protocol | <t>QUIC <xref target="RFC9000"/> is a new transport protocol | |||
| that is encapsulated in UDP. QUIC integrates TLS | that is encapsulated in UDP. QUIC integrates TLS | |||
| <xref target="QUIC-TLS"/> to encrypt all payload data and most control | <xref target="RFC9001"/> to encrypt all payload data and most control | |||
| information. QUIC version 1 was designed primarily as a transport for HTTP, with | information. QUIC version 1 was designed primarily as a transport for HTTP with | |||
| the resulting protocol being known as HTTP/3 <xref target="QUIC-HTTP"/>.</t> | the resulting protocol being known as HTTP/3 <xref target="RFC9114"/>.</t> | |||
| <t>This document provides guidance for network operations that manage QUIC | <t>This document provides guidance for network operations that manage QUIC | |||
| traffic. This includes guidance on how to interpret and utilize information that | traffic. This includes guidance on how to interpret and utilize information that | |||
| is exposed by QUIC to the network, requirements and assumptions of the QUIC | is exposed by QUIC to the network, requirements and assumptions of the QUIC | |||
| design with respect to network treatment, and a description of how common | design with respect to network treatment, and a description of how common | |||
| network management practices will be impacted by QUIC.</t> | network management practices will be impacted by QUIC.</t> | |||
| <t>QUIC is an end-to-end transport protocol; therefore, no information in | <t>QUIC is an end-to-end transport protocol; therefore, no information in | |||
| the protocol header is intended to be mutable by the network. This | the protocol header is intended to be mutable by the network. This | |||
| property is | property is | |||
| enforced through integrity protection of the wire image <xref target="WIRE-IMAGE "/>. | enforced through integrity protection of the wire image <xref target="RFC8546"/> . | |||
| Encryption of most transport-layer control signaling means that less information | Encryption of most transport-layer control signaling means that less information | |||
| is visible to the network than is the case with TCP.</t> | is visible to the network in comparison to TCP.</t> | |||
| <t>Integrity protection can also simplify troubleshooting at the end point s as none | <t>Integrity protection can also simplify troubleshooting at the end point s as none | |||
| of the nodes on the network path can modify transport layer information. | of the nodes on the network path can modify transport layer information. | |||
| However, it means in-network operations that depend on modification of data | However, it means in-network operations that depend on modification of data | |||
| (for examples, see <xref target="RFC9065"/>) are not possible without the cooper ation of | (for examples, see <xref target="RFC9065"/>) are not possible without the cooper ation of | |||
| a QUIC endpoint. Such cooperation might be possible with the introduction of | a QUIC endpoint. Such cooperation might be possible with the introduction of | |||
| a proxy which authenticates as an endpoint. Proxy operations are not in scope | a proxy that authenticates as an endpoint. Proxy operations are not in scope | |||
| for this document.</t> | for this document.</t> | |||
| <t>Network management is not a one-size-fits-all endeavour: practices cons idered | <t>Network management is not a one-size-fits-all endeavor; for example, pr actices considered | |||
| necessary or even mandatory within enterprise networks with certain compliance | necessary or even mandatory within enterprise networks with certain compliance | |||
| requirements, for example, would be impermissible on other networks without | requirements would be impermissible on other networks without | |||
| those requirements. The presence of a particular practice in this document | those requirements. Therefore, presence of a particular practice in this documen | |||
| should therefore not be construed as a recommendation to apply it. For each | t | |||
| should not be construed as a recommendation to apply it. For each | ||||
| practice, this document describes what is and is not possible with the QUIC | practice, this document describes what is and is not possible with the QUIC | |||
| transport protocol as defined.</t> | transport protocol as defined.</t> | |||
| <t>This document focuses solely on network management practices that obser ve | <t>This document focuses solely on network management practices that obser ve | |||
| traffic on the wire. Replacement of troubleshooting based on observation | traffic on the wire. For example, replacement of troubleshooting based on observ | |||
| with active measurement techniques, for example, is therefore out of scope. | ation | |||
| with active measurement techniques is therefore out of scope. | ||||
| A more generalized treatment of network management operations on encrypted | A more generalized treatment of network management operations on encrypted | |||
| transports is given in <xref target="RFC9065"/>.</t> | transports is given in <xref target="RFC9065"/>.</t> | |||
| <t>QUIC-specific terminology used in this document is defined | <t>QUIC-specific terminology used in this document is defined | |||
| in <xref target="QUIC-TRANSPORT"/>.</t> | in <xref target="RFC9000"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-wire-image"> | <section anchor="sec-wire-image"> | |||
| <name>Features of the QUIC Wire Image</name> | <name>Features of the QUIC Wire Image</name> | |||
| <t>This section discusses those aspects of the QUIC transport protocol tha t | <t>This section discusses aspects of the QUIC transport protocol that | |||
| have an impact on the design and operation of devices that forward QUIC packets. | have an impact on the design and operation of devices that forward QUIC packets. | |||
| This section is therefore primarily considering the unencrypted part of QUIC's | Therefore, this section is primarily considering the unencrypted part of QUIC's | |||
| wire image <xref target="WIRE-IMAGE"/>, which is defined as the information avai | wire image <xref target="RFC8546"/>, which is defined as the information availab | |||
| lable in the | le in the | |||
| packet header in each QUIC packet, and the dynamics of that information. Since | packet header in each QUIC packet, and the dynamics of that information. Since | |||
| QUIC is a versioned protocol, the wire image of the header format can also | QUIC is a versioned protocol, the wire image of the header format can also | |||
| change from version to version. However, the field that identifies the QUIC | change from version to version. However, the field that identifies the QUIC | |||
| version in some packets, and the format of the Version Negotiation Packet, | version in some packets and the format of the Version Negotiation packet | |||
| are both inspectable and invariant | are both inspectable and invariant | |||
| <xref target="QUIC-INVARIANTS"/>.</t> | <xref target="RFC8999"/>.</t> | |||
| <t>This document addresses version 1 of the QUIC protocol, whose wire imag e | <t>This document addresses version 1 of the QUIC protocol, whose wire imag e | |||
| is fully defined in <xref target="QUIC-TRANSPORT"/> and <xref target="QUIC-TLS"/ | is fully defined in <xref target="RFC9000"/> and <xref target="RFC9001"/>. Featu | |||
| >. Features of the wire | res of the wire | |||
| image described herein may change in future versions of the protocol, except | image described herein may change in future versions of the protocol except | |||
| when specified as an invariant <xref target="QUIC-INVARIANTS"/>, | when specified as an invariant <xref target="RFC8999"/> | |||
| and cannot be used to identify QUIC as a protocol or | and cannot be used to identify QUIC as a protocol or | |||
| to infer the behavior of future versions of QUIC.</t> | to infer the behavior of future versions of QUIC.</t> | |||
| <section anchor="public-header"> | <section anchor="public-header"> | |||
| <name>QUIC Packet Header Structure</name> | <name>QUIC Packet Header Structure</name> | |||
| <t>QUIC packets may have either a long header or a short header. The fir st bit | <t>QUIC packets may have either a long header or a short header. The fir st bit | |||
| of the QUIC header is the Header Form bit, and indicates which type of header | of the QUIC header is the Header Form bit and indicates which type of header | |||
| is present. The purpose of this bit is invariant across QUIC versions.</t> | is present. The purpose of this bit is invariant across QUIC versions.</t> | |||
| <t>The long header exposes more information. It contains a version numbe r, as well | <t>The long header exposes more information. It contains a version numbe r, as well | |||
| as source and destination connection IDs for associating packets with a QUIC | as Source and Destination Connection IDs for associating packets with a QUIC | |||
| connection. The definition and location of these fields in the QUIC long header | connection. The definition and location of these fields in the QUIC long header | |||
| are invariant for future versions of QUIC, although future versions of QUIC may | are invariant for future versions of QUIC, although future versions of QUIC may | |||
| provide additional fields in the long header <xref target="QUIC-INVARIANTS"/>.</ t> | provide additional fields in the long header <xref target="RFC8999"/>.</t> | |||
| <t>In version 1 of QUIC, the long header is used during connection estab lishment | <t>In version 1 of QUIC, the long header is used during connection estab lishment | |||
| to transmit crypto handshake data, perform version negotiation, retry, and | to transmit CRYPTO handshake data, perform version negotiation, retry, and | |||
| send 0-RTT data.</t> | send 0-RTT data.</t> | |||
| <t>Short headers are used after connection establishment in version 1 of | <t>Short headers are used after a connection establishment in version 1 | |||
| QUIC, | of QUIC | |||
| and expose only an optional destination connection ID and the initial flags | and expose only an optional Destination Connection ID and the initial flags | |||
| byte with the spin bit for RTT measurement.</t> | byte with the spin bit for RTT measurement.</t> | |||
| <t>The following information is exposed in QUIC packet headers in all ve rsions of | <t>The following information is exposed in QUIC packet headers in all ve rsions of | |||
| QUIC (as specified in <xref target="QUIC-INVARIANTS"/>):</t> | QUIC (as specified in <xref target="RFC8999"/>):</t> | |||
| <ul spacing="normal"> | <dl spacing="normal"> | |||
| <li>version number: the version number is present in the long header, | <dt>version number:</dt> | |||
| and | <dd>The version number is present in the long header and | |||
| identifies the version used for that packet. During Version | identifies the version used for that packet. During Version | |||
| Negotiation (see <xref section="17.2.1" sectionFormat="of" target="QUIC-TRANSPOR | Negotiation (see <xref section="17.2.1" sectionFormat="of" target="RFC9000"/> an | |||
| T"/> and <xref target="version"/>), the | d <xref target="version"/>), the | |||
| version number field has a special value (0x00000000) that identifies the | Version field has a special value (0x00000000) that identifies the | |||
| packet as a Version Negotiation packet. QUIC | packet as a Version Negotiation packet. QUIC | |||
| version 1 uses version 0x00000001. Operators should expect to observe | version 1 uses version 0x00000001. Operators should expect to observe | |||
| packets with other version numbers as a result of various Internet | packets with other version numbers as a result of various Internet | |||
| experiments, future standards, and greasing (<xref target="RFC7801"/>). An IANA registry | experiments, future standards, and greasing <xref target="RFC7801"/>. An IANA re gistry | |||
| contains the values of all standardized versions of QUIC, and may contain some | contains the values of all standardized versions of QUIC, and may contain some | |||
| proprietary versions (see <xref section="22.2" sectionFormat="of" target="QUIC-T | proprietary versions (see <xref section="22.2" sectionFormat="of" target="RFC900 | |||
| RANSPORT"/>). However, other | 0"/>). | |||
| versions of QUIC can be expected to be seen in the Internet at any given time.</ | However, other versions of QUIC can be expected to be seen in the Internet at an | |||
| li> | y given time.</dd> | |||
| <li>source and destination connection ID: short and long headers carry | <dt>Source and Destination Connection ID:</dt> <dd>Short and long head | |||
| a | ers carry a | |||
| destination connection ID, a variable-length field which, if not zero-length, | Destination Connection ID, which is a variable-length field. If the Destination | |||
| can be used to | Connection ID is not zero length, | |||
| identify the connection associated with a QUIC packet, for load-balancing and | it can be used to | |||
| NAT rebinding purposes; see <xref target="sec-loadbalancing"/> and <xref target= | identify the connection associated with a QUIC packet for load balancing and | |||
| "rebinding"/>. Long | NAT rebinding purposes; see Sections <xref target="sec-loadbalancing" format="co | |||
| packet headers additionally carry a source connection ID. The source | unter"/> and <xref target="rebinding" format="counter"/>. Long | |||
| connection ID corresponds to the destination connection ID the source would | packet headers additionally carry a Source Connection ID. The Source | |||
| like to have on packets sent to it, and is only present on long | Connection ID is only present on long | |||
| headers. On long header packets, the length of the connection | headers and indicates the Destination Connection | |||
| IDs is also present; on short header packets, the length of the destination | ID that the other endpoint should use when sending packets. | |||
| connection ID is implicit and as such need to be known from the long header | On long header packets, the length of the connection | |||
| packets.</li> | IDs is also present; on short header packets, the length of the Destination | |||
| </ul> | Connection ID is implicit, as it is known from preceding long header | |||
| packets.</dd> | ||||
| </dl> | ||||
| <t>In version 1 of QUIC, the following additional information is exposed :</t> | <t>In version 1 of QUIC, the following additional information is exposed :</t> | |||
| <ul spacing="normal"> | <dl spacing="normal"> | |||
| <li>"fixed bit": The second-most-significant bit of the first octet of | <dt>"Fixed Bit":</dt> <dd>In version 1 of QUIC, the second-most-signif | |||
| most QUIC | icant bit of the first octet | |||
| packets of the current version is set to 1, enabling endpoints to demultiplex | is set to 1, unless the packet is a Version Negotiation packet or | |||
| an extension is used that modifies the usage of this bit. | ||||
| If the bit is set to 1, it enables endpoints to easily demultiplex | ||||
| with other UDP-encapsulated protocols. Even though this bit is fixed in the | with other UDP-encapsulated protocols. Even though this bit is fixed in the | |||
| version 1 specification, endpoints might use an extension that varies the bit | version 1 specification, endpoints might use an extension that varies the bit | |||
| <xref target="QUIC-GREASE"/>. Therefore, observers cannot reliably use it as an | <xref target="RFC9287"/>. Therefore, observers cannot reliably use it as an iden | |||
| identifier | tifier | |||
| for QUIC.</li> | for QUIC.</dd> | |||
| <li>latency spin bit: The third-most-significant bit of the first octe | <dt>latency spin bit:</dt> <dd>The third-most-significant bit of the f | |||
| t in the | irst octet in the | |||
| short header for version 1. The spin bit is set by endpoints such that | short header for version 1. The spin bit is set by endpoints such that | |||
| tracking edge transitions can be used to passively observe end-to-end RTT. See | tracking edge transitions can be used to passively observe end-to-end RTT. See | |||
| <xref target="spin-usage"/> for further details.</li> | <xref target="spin-usage"/> for further details.</dd> | |||
| <li>header type: The long header has a 2 bit packet type field followi | <dt>header type:</dt> <dd>The long header has a 2-bit packet type fiel | |||
| ng the | d following the | |||
| Header Form and fixed bits. Header types correspond to stages of the | Header Form and Fixed Bits. Header types correspond to stages of the | |||
| handshake; see <xref section="17.2" sectionFormat="of" target="QUIC-TRANSPORT"/> | handshake; see <xref section="17.2" sectionFormat="of" target="RFC9000"/> for de | |||
| for details.</li> | tails.</dd> | |||
| <li>length: The length of the remaining QUIC packet after the length f | <dt>length:</dt> <dd>The length of the remaining QUIC packet after the | |||
| ield, | Length field | |||
| present on long headers. This field is used to implement coalesced packets | present on long headers. This field is used to implement coalesced packets | |||
| during the handshake (see <xref target="coalesced"/>).</li> | during the handshake (see <xref target="coalesced"/>).</dd> | |||
| <li>token: Initial packets may contain a token, a variable-length opaq | <dt>token:</dt> <dd> Initial packets may contain a token, a variable-l | |||
| ue value | ength opaque value | |||
| optionally sent from client to server, used for validating the client's | optionally sent from client to server, used for validating the client's | |||
| address. Retry packets also contain a token, which can be used by the client | address. Retry packets also contain a token, which can be used by the client | |||
| in an Initial packet on a subsequent connection attempt. The length of the | in an Initial packet on a subsequent connection attempt. The length of the | |||
| token is explicit in both cases.</li> | token is explicit in both cases.</dd> | |||
| </ul> | </dl> | |||
| <t>Retry (<xref section="17.2.5" sectionFormat="of" target="QUIC-TRANSPO | <t>Retry (<xref section="17.2.5" sectionFormat="of" target="RFC9000"/>) | |||
| RT"/>) and Version Negotiation (<xref section="17.2.1" sectionFormat="of" target | and Version Negotiation (<xref section="17.2.1" sectionFormat="of" target="RFC90 | |||
| ="QUIC-TRANSPORT"/>) packets are not encrypted. Retry packets are | 00"/>) packets are not encrypted. Retry packets are | |||
| (forgibly) integrity protected. Transport parameters are used | integrity protected. Transport parameters are used to | |||
| authenticate the contents of Retry packets later in the handshake. For other | authenticate the contents of Retry packets later in the handshake. For other | |||
| kinds of packets, version 1 of QUIC cryptographically protects other | kinds of packets, version 1 of QUIC cryptographically protects other | |||
| information in the packet headers:</t> | information in the packet headers:</t> | |||
| <ul spacing="normal"> | <dl spacing="normal"> | |||
| <li>packet number: All packets except Version Negotiation and | <dt>Packet Number:</dt> <dd>All packets except Version Negotiation and | |||
| Retry packets have an associated packet number; however, this packet number | Retry packets have an associated packet number; however, this packet number | |||
| is encrypted, and therefore not of use to on-path observers. The offset of the | is encrypted, and therefore not of use to on-path observers. The offset of the | |||
| packet number can be decoded in long headers, while it | packet number can be decoded in long headers while it | |||
| is implicit (depending on destination connection ID length) in short headers. | is implicit (depending on Destination Connection ID length) in short headers. | |||
| The length of the packet number is cryptographically protected.</li> | The length of the packet number is cryptographically protected.</dd> | |||
| <li>key phase: The Key Phase bit, present in short headers, specifies | <dt>Key Phase:</dt> <dd>The Key Phase bit (present in short headers) s | |||
| the keys | pecifies the keys | |||
| used to encrypt the packet to support key rotation. The Key Phase bit is | used to encrypt the packet to support key rotation. The Key Phase bit is | |||
| cryptographically protected.</li> | cryptographically protected.</dd> | |||
| </ul> | </dl> | |||
| </section> | </section> | |||
| <section anchor="coalesced"> | <section anchor="coalesced"> | |||
| <name>Coalesced Packets</name> | <name>Coalesced Packets</name> | |||
| <t>Multiple QUIC packets may be coalesced into a single UDP datagram, | <t>Multiple QUIC packets may be coalesced into a single UDP datagram | |||
| with a datagram | with a datagram | |||
| carrying one or more long header packets followed by zero or one short header | carrying one or more long header packets followed by zero or one short header | |||
| packets. When packets are coalesced, the Length fields in the long headers are | packets. When packets are coalesced, the Length fields in the long headers are | |||
| used to separate QUIC packets; see <xref section="12.2" sectionFormat="of" targe | used to separate QUIC packets; see <xref section="12.2" sectionFormat="of" targe | |||
| t="QUIC-TRANSPORT"/>. | t="RFC9000"/>. | |||
| The Length field is variable length, and its position in the header is | The Length field is a variable-length field, and its position in the header | |||
| also variable depending on the length of the source and destination connection | also varies depending on the lengths of the Source and Destination Connection | |||
| ID; see <xref section="17.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t> | IDs; see <xref section="17.2" sectionFormat="of" target="RFC9000"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="use-of-port-numbers"> | <section anchor="use-of-port-numbers"> | |||
| <name>Use of Port Numbers</name> | <name>Use of Port Numbers</name> | |||
| <t>Applications that have a mapping for TCP as well as QUIC are expected to | <t>Applications that have a mapping for TCP and QUIC are expected to | |||
| use the same port number for both services. However, as for all other IETF | use the same port number for both services. However, as for all other IETF | |||
| transports <xref target="RFC7605"/>, there is no guarantee that a specific appli cation | transports <xref target="RFC7605"/>, there is no guarantee that a specific appli cation | |||
| will use a given registered port, or that a given port carries traffic belonging | will use a given registered port or that a given port carries traffic belonging | |||
| to the respective registered service, especially when application layer | to the respective registered service, especially when application layer | |||
| information is encrypted. For example, <xref target="QUIC-HTTP"/> specifies the use of the | information is encrypted. For example, <xref target="RFC9114"/> specifies the us e of the | |||
| HTTP Alternative Services mechanism <xref target="RFC7838"/> for discovery of HT TP/3 | HTTP Alternative Services mechanism <xref target="RFC7838"/> for discovery of HT TP/3 | |||
| services on other ports.</t> | services on other ports.</t> | |||
| <t>Further, as QUIC has a connection ID, it is also possible to maintain multiple | <t>Further, as QUIC has a connection ID, it is also possible to maintain multiple | |||
| QUIC connections over one 5-tuple (protocol, source and destination IP address, | QUIC connections over one 5-tuple (protocol, source, and destination IP address | |||
| and source and destination port). However, if the connection ID is zero-length, | and | |||
| source and destination port). However, if the connection ID is zero length, | ||||
| all packets of the 5-tuple likely belong to the same QUIC connection.</t> | all packets of the 5-tuple likely belong to the same QUIC connection.</t> | |||
| </section> | </section> | |||
| <section anchor="handshake"> | <section anchor="handshake"> | |||
| <name>The QUIC Handshake</name> | <name>The QUIC Handshake</name> | |||
| <t>New QUIC connections are established using a handshake, which is dist | <t>New QUIC connections are established using a handshake that is distin | |||
| inguishable | guishable | |||
| on the wire (see <xref target="sec-identifying"/> for details), and contains som | on the wire (see <xref target="sec-identifying"/> for details) and contains some | |||
| e information | information | |||
| that can be passively observed.</t> | that can be passively observed.</t> | |||
| <t>To illustrate the information visible in the QUIC wire image during t he | <t>To illustrate the information visible in the QUIC wire image during t he | |||
| handshake, we first show the general communication pattern visible in the UDP | handshake, we first show the general communication pattern visible in the UDP | |||
| datagrams containing the QUIC handshake, then examine each of the datagrams in | datagrams containing the QUIC handshake. Then, we examine each of the datagrams in | |||
| detail.</t> | detail.</t> | |||
| <t>The QUIC handshake can normally be recognized on the wire through fou r flights | <t>The QUIC handshake can normally be recognized on the wire through fou r flights | |||
| of datagrams labelled "Client Initial", "Server Initial", "Client Completion", | of datagrams labeled "Client Initial", "Server Initial", "Client Completion", | |||
| and "Server Completion", as illustrated in <xref target="fig-handshake"/>.</t> | and "Server Completion" as illustrated in <xref target="fig-handshake"/>.</t> | |||
| <t>A handshake starts with the client sending one or more datagrams cont aining | <t>A handshake starts with the client sending one or more datagrams cont aining | |||
| Initial packets, detailed in <xref target="fig-client-initial"/>, which elicits | Initial packets (detailed in <xref target="fig-client-initial"/>), which elicits | |||
| the | the | |||
| Server Initial response detailed in <xref target="fig-server-initial"/> typicall | Server Initial response (detailed in <xref target="fig-server-initial"/>), which | |||
| y containing | typically contains three types of packets: Initial packet(s) with the beginning | |||
| three types of packets: Initial packet(s) with the beginning of the server's | of the server's | |||
| side of the TLS handshake, Handshake packet(s) with the rest of the server's | side of the TLS handshake, Handshake packet(s) with the rest of the server's | |||
| portion of the TLS handshake, and 1-RTT packet(s), if present.</t> | portion of the TLS handshake, and 1-RTT packet(s), if present.</t> | |||
| <figure anchor="fig-handshake"> | <figure anchor="fig-handshake"> | |||
| <name>General communication pattern visible in the QUIC handshake</nam e> | <name>General Communication Pattern Visible in the QUIC Handshake</nam e> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| Client Server | Client Server | |||
| | | | | | | |||
| +----Client Initial----------------------->| | +----Client Initial----------------------->| | |||
| +----(zero or more 0-RTT)----------------->| | +----(zero or more 0-RTT)----------------->| | |||
| | | | | | | |||
| |<-----------------------Server Initial----+ | |<-----------------------Server Initial----+ | |||
| |<--------(1-RTT encrypted data starts)----+ | |<--------(1-RTT encrypted data starts)----+ | |||
| | | | | | | |||
| +----Client Completion-------------------->| | +----Client Completion-------------------->| | |||
| +----(1-RTT encrypted data starts)-------->| | +----(1-RTT encrypted data starts)-------->| | |||
| | | | | | | |||
| |<--------------------Server Completion----+ | |<--------------------Server Completion----+ | |||
| | | | | |]]></artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>As shown here, the client can send 0-RTT data as soon as it has sent | <t>As shown here, the client can send 0-RTT data as soon as it has sent | |||
| its Client | its | |||
| Hello, and the server can send 1-RTT data as soon as it has sent its Server | ClientHello and the server can send 1-RTT data as soon as it has sent its Server | |||
| Hello. The Client Completion flight contains at least one Handshake packet and | Hello. | |||
| could also include an Initial packet. QUIC packets in separate contexts during | The Client Completion flight contains at least one Handshake packet and | |||
| the handshake can be coalesced (see <xref target="coalesced"/>) in order to redu | could also include an Initial packet. During the handshake, QUIC packets in sepa | |||
| ce the | rate contexts can be coalesced (see <xref target="coalesced"/>) in order to redu | |||
| ce the | ||||
| number of UDP datagrams sent during the handshake.</t> | number of UDP datagrams sent during the handshake.</t> | |||
| <t>Handshake packets can arrive out-of-order without impacting the hands hake as | <t>Handshake packets can arrive out-of-order without impacting the hands hake as | |||
| long as the reordering was not accompanied by extensive delays that trigger a | long as the reordering was not accompanied by extensive delays that trigger a | |||
| spurious Probe Timeout ({Section 6.2 of RFC9002}). | spurious Probe Timeout (<xref section="6.2" sectionFormat="of" target="RFC9002"/ >). | |||
| If QUIC packets get lost or reordered, packets belonging | If QUIC packets get lost or reordered, packets belonging | |||
| to the same flight might not be observed in close time succession, though | to the same flight might not be observed in close time succession, though | |||
| the sequence of the flights will not change, because one flight depends | the sequence of the flights will not change because one flight depends | |||
| upon the peer's previous flight.</t> | upon the peer's previous flight.</t> | |||
| <t>Datagrams that contain an Initial packet (Client Initial, Server | <t>Datagrams that contain an Initial packet (Client Initial, Server | |||
| Initial, and some Client Completion) contain at least 1200 octets of UDP | Initial, and some Client Completion) contain at least 1200 octets of UDP | |||
| payload. This protects against amplification attacks and verifies that the | payload. This protects against amplification attacks and verifies that the | |||
| network path meets the requirements for the minimum QUIC IP packet size; | network path meets the requirements for the minimum QUIC IP packet size; | |||
| see <xref section="14" sectionFormat="of" target="QUIC-TRANSPORT"/>. This is acc omplished by either adding | see <xref section="14" sectionFormat="of" target="RFC9000"/>. This is accomplish ed by either adding | |||
| PADDING frames within the Initial packet, coalescing other packets with the | PADDING frames within the Initial packet, coalescing other packets with the | |||
| Initial packet, or leaving unused payload in the UDP packet after the Initial | Initial packet, or leaving unused payload in the UDP packet after the Initial | |||
| packet. A network path needs to be able to forward at least this size of | packet. A network path needs to be able to forward packets of at least this size | |||
| packet for QUIC to be used.</t> | for QUIC to be used.</t> | |||
| <t>The content of Initial packets is encrypted using Initial Secrets, | <t>The content of Initial packets is encrypted using Initial Secrets, | |||
| which are derived from a per-version constant and the client's | which are derived from a per-version constant and the client's | |||
| destination connection ID. That content is therefore observable by | Destination Connection ID. That content is therefore observable by | |||
| any on-path device that knows the per-version constant and is | any on-path device that knows the per-version constant and is | |||
| considered visible in this illustration. The content of QUIC | considered visible in this illustration. The content of QUIC | |||
| Handshake packets is encrypted using keys established during the | Handshake packets is encrypted using keys established during the | |||
| initial handshake exchange, and is therefore not visible.</t> | initial handshake exchange and is therefore not visible.</t> | |||
| <t>Initial, Handshake, and 1-RTT packets belong to different cryptograph ic and | <t>Initial, Handshake, and 1-RTT packets belong to different cryptograph ic and | |||
| transport contexts. The Client Completion (<xref target="fig-init-complete"/>) a nd the | transport contexts. The Client Completion (<xref target="fig-init-complete"/>) a nd the | |||
| Server Completion (<xref target="fig-hs-complete"/>) flights conclude the Initia l | Server Completion (<xref target="fig-hs-complete"/>) flights conclude the Initia l | |||
| and Handshake contexts, by sending final acknowledgments and | and Handshake contexts by sending final acknowledgments and | |||
| CRYPTO frames.</t> | CRYPTO frames.</t> | |||
| <figure anchor="fig-client-initial"> | <figure anchor="fig-client-initial"> | |||
| <name>Example Client Initial datagram without 0-RTT</name> | <name>Example Client Initial Datagram Without 0-RTT</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| +----------------------------------------------------------+ | +----------------------------------------------------------+ | |||
| | UDP header (source and destination UDP ports) | | | UDP header (source and destination UDP ports) | | |||
| +----------------------------------------------------------+ | +----------------------------------------------------------+ | |||
| | QUIC long header (type = Initial, Version, DCID, SCID) (Length) | | QUIC long header (type = Initial, Version, DCID, SCID) (Length) | |||
| +----------------------------------------------------------+ | | +----------------------------------------------------------+ | | |||
| | QUIC CRYPTO frame header | | | | QUIC CRYPTO frame header | | | |||
| +----------------------------------------------------------+ | | +----------------------------------------------------------+ | | |||
| | | TLS Client Hello (incl. TLS SNI) | | | | | | TLS ClientHello (incl. TLS SNI) | | | | |||
| +----------------------------------------------------------+ | | +----------------------------------------------------------+ | | |||
| | QUIC PADDING frames | | | | QUIC PADDING frames | | | |||
| +----------------------------------------------------------+<-+ | +----------------------------------------------------------+<-+]]></artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>A Client Initial packet exposes the version, source and destination | <t>A Client Initial packet exposes the Version, Source, and Destination | |||
| connection IDs without encryption. The payload of the Initial | Connection IDs without encryption. The payload of the Initial | |||
| packet is protected using the Initial secret. The complete TLS | packet is protected using the Initial secret. The complete TLS | |||
| Client Hello, including any TLS Server Name Indication (SNI) | ClientHello, including any TLS Server Name Indication (SNI) | |||
| present, is sent in one or more CRYPTO frames across one or more | present, is sent in one or more CRYPTO frames across one or more | |||
| QUIC Initial packets.</t> | QUIC Initial packets.</t> | |||
| <figure anchor="fig-server-initial"> | <figure anchor="fig-server-initial"> | |||
| <name>Coalesced Server Initial datagram pattern</name> | <name>Coalesced Server Initial Datagram Pattern</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | UDP header (source and destination UDP ports) | | | UDP header (source and destination UDP ports) | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | QUIC long header (type = Initial, Version, DCID, SCID) (Length) | | QUIC long header (type = Initial, Version, DCID, SCID) (Length) | |||
| +------------------------------------------------------------+ | | +------------------------------------------------------------+ | | |||
| | QUIC CRYPTO frame header | | | | QUIC CRYPTO frame header | | | |||
| +------------------------------------------------------------+ | | +------------------------------------------------------------+ | | |||
| | TLS Server Hello | | | | TLS ServerHello | | | |||
| +------------------------------------------------------------+ | | +------------------------------------------------------------+ | | |||
| | QUIC ACK frame (acknowledging client hello) | | | | QUIC ACK frame (acknowledging client hello) | | | |||
| +------------------------------------------------------------+<-+ | +------------------------------------------------------------+<-+ | |||
| | QUIC long header (type = Handshake, Version, DCID, SCID) (Length) | | QUIC long header (type = Handshake, Version, DCID, SCID) (Length) | |||
| +------------------------------------------------------------+ | | +------------------------------------------------------------+ | | |||
| | encrypted payload (presumably CRYPTO frames) | | | | encrypted payload (presumably CRYPTO frames) | | | |||
| +------------------------------------------------------------+<-+ | +------------------------------------------------------------+<-+ | |||
| | QUIC short header | | | QUIC short header | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | 1-RTT encrypted payload | | | 1-RTT encrypted payload | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+]]></artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>The Server Initial datagram also exposes version number, source and d | <t>The Server Initial datagram also exposes the version number and the S | |||
| estination | ource and Destination | |||
| connection IDs in the clear; the payload of the Initial packet(s) is | Connection IDs in the clear; the payload of the Initial packet is | |||
| protected using the Initial secret.</t> | protected using the Initial secret.</t> | |||
| <figure anchor="fig-init-complete"> | <figure anchor="fig-init-complete"> | |||
| <name>Coalesced Client Completion datagram pattern</name> | <name>Coalesced Client Completion Datagram Pattern</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | UDP header (source and destination UDP ports) | | | UDP header (source and destination UDP ports) | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | QUIC long header (type = Initial, Version, DCID, SCID) (Length) | | QUIC long header (type = Initial, Version, DCID, SCID) (Length) | |||
| +------------------------------------------------------------+ | | +------------------------------------------------------------+ | | |||
| | QUIC ACK frame (acknowledging Server Initial) | | | | QUIC ACK frame (acknowledging Server Initial) | | | |||
| +------------------------------------------------------------+<-+ | +------------------------------------------------------------+<-+ | |||
| | QUIC long header (type = Handshake, Version, DCID, SCID) (Length) | | QUIC long header (type = Handshake, Version, DCID, SCID) (Length) | |||
| +------------------------------------------------------------+ | | +------------------------------------------------------------+ | | |||
| | encrypted payload (presumably CRYPTO/ACK frames) | | | | encrypted payload (presumably CRYPTO/ACK frames) | | | |||
| +------------------------------------------------------------+<-+ | +------------------------------------------------------------+<-+ | |||
| | QUIC short header | | | QUIC short header | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | 1-RTT encrypted payload | | | 1-RTT encrypted payload | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+]]></artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>The Client Completion flight does not expose any additional informati on; | <t>The Client Completion flight does not expose any additional informati on; | |||
| however, as the destination connection ID is server-selected, it usually | however, as the Destination Connection ID is server-selected, it usually | |||
| is not the same ID that is sent in the Client Initial. Client Completion | is not the same ID that is sent in the Client Initial. Client Completion | |||
| flights contain 1-RTT packets which indicate the handshake has completed | flights contain 1-RTT packets that indicate the handshake has completed | |||
| (see <xref target="sec-confirm"/>) on the client, and for three-way handshake RT | (see <xref target="sec-confirm"/>) on the client and for three-way handshake RTT | |||
| T | ||||
| estimation as in <xref target="sec-rtt"/>.</t> | estimation as in <xref target="sec-rtt"/>.</t> | |||
| <figure anchor="fig-hs-complete"> | <figure anchor="fig-hs-complete"> | |||
| <name>Coalesced Server Completion datagram pattern</name> | <name>Coalesced Server Completion Datagram Pattern</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | UDP header (source and destination UDP ports) | | | UDP header (source and destination UDP ports) | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | QUIC long header (type = Handshake, Version, DCID, SCID) (Length) | | QUIC long header (type = Handshake, Version, DCID, SCID) (Length) | |||
| +------------------------------------------------------------+ | | +------------------------------------------------------------+ | | |||
| | encrypted payload (presumably ACK frame) | | | | encrypted payload (presumably ACK frame) | | | |||
| +------------------------------------------------------------+<-+ | +------------------------------------------------------------+<-+ | |||
| | QUIC short header | | | QUIC short header | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | 1-RTT encrypted payload | | | 1-RTT encrypted payload | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+]]></artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>Similar to Client Completion, Server Completion also exposes no addit ional | <t>Similar to Client Completion, Server Completion does not expose addit ional | |||
| information; observing it serves only to determine that the handshake has | information; observing it serves only to determine that the handshake has | |||
| completed.</t> | completed.</t> | |||
| <t>When the client uses 0-RTT data, the Client Initial | <t>When the client uses 0-RTT data, the Client Initial | |||
| flight can also include one or more 0-RTT packets, as shown in | flight can also include one or more 0-RTT packets as shown in | |||
| <xref target="fig-client-initial-0rtt"/>.</t> | <xref target="fig-client-initial-0rtt"/>.</t> | |||
| <figure anchor="fig-client-initial-0rtt"> | <figure anchor="fig-client-initial-0rtt"> | |||
| <name>Coalesced 0-RTT Client Initial datagram</name> | <name>Coalesced 0-RTT Client Initial Datagram</name> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| +----------------------------------------------------------+ | +----------------------------------------------------------+ | |||
| | UDP header (source and destination UDP ports) | | | UDP header (source and destination UDP ports) | | |||
| +----------------------------------------------------------+ | +----------------------------------------------------------+ | |||
| | QUIC long header (type = Initial, Version, DCID, SCID) (Length) | | QUIC long header (type = Initial, Version, DCID, SCID) (Length) | |||
| +----------------------------------------------------------+ | | +----------------------------------------------------------+ | | |||
| | QUIC CRYPTO frame header | | | | QUIC CRYPTO frame header | | | |||
| +----------------------------------------------------------+ | | +----------------------------------------------------------+ | | |||
| | TLS Client Hello (incl. TLS SNI) | | | | TLS ClientHello (incl. TLS SNI) | | | |||
| +----------------------------------------------------------+<-+ | +----------------------------------------------------------+<-+ | |||
| | QUIC long header (type = 0-RTT, Version, DCID, SCID) (Length) | | QUIC long header (type = 0-RTT, Version, DCID, SCID) (Length) | |||
| +----------------------------------------------------------+ | | +----------------------------------------------------------+ | | |||
| | 0-RTT encrypted payload | | | | 0-RTT encrypted payload | | | |||
| +----------------------------------------------------------+<-+ | +----------------------------------------------------------+<-+]]></artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t>When a 0-RTT packet is coalesced with an Initial packet, the datagram | <t>When a 0-RTT packet is coalesced with an Initial packet, the datagram | |||
| will be padded to 1200 bytes. Additional datagrams containing only 0-RTT | will be padded to 1200 bytes. Additional datagrams containing only 0-RTT | |||
| packets with long headers can be sent after the client Initial packet(s), | packets with long headers can be sent after the client Initial packet, which con | |||
| containing more 0-RTT data. The amount of 0-RTT protected data that | tains more 0-RTT data. The amount of 0-RTT protected data that | |||
| can be sent in the first flight is limited by the initial congestion | can be sent in the first flight is limited by the initial congestion | |||
| window, typically to around 10 packets (see <xref section="7.2" sectionFormat="o f" target="QUIC-RECOVERY"/>).</t> | window, typically to around 10 packets (see <xref section="7.2" sectionFormat="o f" target="RFC9002"/>).</t> | |||
| </section> | </section> | |||
| <section anchor="wire-integrity"> | <section anchor="wire-integrity"> | |||
| <name>Integrity Protection of the Wire Image</name> | <name>Integrity Protection of the Wire Image</name> | |||
| <t>As soon as the cryptographic context is established, all information in the QUIC | <t>As soon as the cryptographic context is established, all information in the QUIC | |||
| header, including exposed information, is integrity protected. Further, | header, including exposed information, is integrity protected. Further, | |||
| information that was exposed in packets sent before the cryptographic context | information that was exposed in packets sent before the cryptographic context | |||
| was established is validated during the cryptographic handshake. Therefore, | was established is validated during the cryptographic handshake. Therefore, | |||
| devices on path cannot alter any information or bits in QUIC packets. Such | devices on path cannot alter any information or bits in QUIC packets. Such | |||
| alterations would cause the integrity check to fail, which results in the | alterations would cause the integrity check to fail, which results in the | |||
| receiver discarding the packet. Some parts of Initial packets could be altered | receiver discarding the packet. Some parts of Initial packets could be altered | |||
| by removing and re-applying the authenticated encryption without immediate | by removing and reapplying the authenticated encryption without immediate | |||
| discard at the receiver. However, the cryptographic handshake validates most | discard at the receiver. However, the cryptographic handshake validates most | |||
| fields and any modifications in those fields will result in connection | fields and any modifications in those fields will result in a connection | |||
| establishment failing later.</t> | establishment failure later.</t> | |||
| </section> | </section> | |||
| <section anchor="rebinding"> | <section anchor="rebinding"> | |||
| <name>Connection ID and Rebinding</name> | <name>Connection ID and Rebinding</name> | |||
| <t>The connection ID in the QUIC packet headers allows association of QU IC | <t>The connection ID in the QUIC packet headers allows association of QU IC | |||
| packets using information independent of the 5-tuple. This allows | packets using information independent of the 5-tuple. This allows | |||
| rebinding of a connection after one of the endpoints - usually the | rebinding of a connection after one of the endpoints (usually the | |||
| client - has experienced an address change. Further it can be used by | client) has experienced an address change. Further, it can be used by | |||
| in-network devices to ensure that related 5-tuple flows are appropriately | in-network devices to ensure that related 5-tuple flows are appropriately | |||
| balanced together (see Section <xref target="sec-loadbalancing"/>).</t> | balanced together (see <xref target="sec-loadbalancing"/>).</t> | |||
| <t>Client and server each choose a connection ID during the handshake; f or | <t>Client and server each choose a connection ID during the handshake; f or | |||
| example, a server might request that a client use a connection ID, whereas the | example, a server might request that a client use a connection ID, whereas the | |||
| client might choose a zero-length value. Connection IDs for either endpoint may | client might choose a zero-length value. Connection IDs for either endpoint may | |||
| change during the lifetime of a connection, with the new connection ID being | change during the lifetime of a connection, with the new connection ID being | |||
| supplied via encrypted frames (see <xref section="5.1" sectionFormat="of" target ="QUIC-TRANSPORT"/>). | supplied via encrypted frames (see <xref section="5.1" sectionFormat="of" target ="RFC9000"/>). | |||
| Therefore, observing a new connection ID does not necessarily indicate a new | Therefore, observing a new connection ID does not necessarily indicate a new | |||
| connection.</t> | connection.</t> | |||
| <t><xref target="QUIC-LB"/> specifies algorithms for | <t><xref target="I-D.ietf-quic-load-balancers"/> specifies algorithms fo r | |||
| encoding the server mapping in a connection ID in order to share this | encoding the server mapping in a connection ID in order to share this | |||
| information with selected on-path devices such as load balancers. Server | information with selected on-path devices such as load balancers. Server | |||
| mappings should only be exposed to selected entities. Uncontrolled exposure | mappings should only be exposed to selected entities. Uncontrolled exposure | |||
| would allow linkage of multiple IP addresses to the same host if the server | would allow linkage of multiple IP addresses to the same host if the server | |||
| also supports migration that opens an attack vector on specific servers or | also supports migration that opens an attack vector on specific servers or | |||
| pools. The best way to obscure an encoding is to appear random to any other | pools. The best way to obscure an encoding is to appear random to any other | |||
| observers, which is most rigorously achieved with encryption. As a result, | observers, which is most rigorously achieved with encryption. As a result, | |||
| any attempt to infer information from specific parts of a connection ID is | any attempt to infer information from specific parts of a connection ID is | |||
| unlikely to be useful.</t> | unlikely to be useful.</t> | |||
| </section> | </section> | |||
| <section anchor="packetnumber"> | <section anchor="packetnumber"> | |||
| <name>Packet Numbers</name> | <name>Packet Numbers</name> | |||
| <t>The Packet Number field is always present in the QUIC packet header i n version | <t>The Packet Number field is always present in the QUIC packet header i n version | |||
| 1; however, it is always encrypted. The encryption key for packet number | 1; however, it is always encrypted. The encryption key for packet number | |||
| protection on Initial packets -- which are sent before cryptographic context | protection on Initial packets (which are sent before cryptographic context | |||
| establishment -- is specific to the QUIC version, while packet number protection | establishment) is specific to the QUIC version while packet number protection | |||
| on subsequent packets uses secrets derived from the end-to-end cryptographic | on subsequent packets uses secrets derived from the end-to-end cryptographic | |||
| context. Packet numbers are therefore not part of the wire image that is visible | context. Packet numbers are therefore not part of the wire image that is visible | |||
| to on-path observers.</t> | to on-path observers.</t> | |||
| </section> | </section> | |||
| <section anchor="version"> | <section anchor="version"> | |||
| <name>Version Negotiation and Greasing</name> | <name>Version Negotiation and Greasing</name> | |||
| <t>Version Negotiation packets are used by the server to indicate that a requested | <t>Version Negotiation packets are used by the server to indicate that a requested | |||
| version from the client is not supported (see <xref section="6" sectionFormat="o f" target="QUIC-TRANSPORT"/>. | version from the client is not supported (see <xref section="6" sectionFormat="o f" target="RFC9000"/>). | |||
| Version Negotiation packets are not intrinsically protected, but future QUIC | Version Negotiation packets are not intrinsically protected, but future QUIC | |||
| versions could use later encrypted messages to verify that they were authentic. | versions could use later encrypted messages to verify that they were authentic. | |||
| Therefore, any modification of this list will be detected and may cause the | Therefore, any modification of this list will be detected and may cause the | |||
| endpoints to terminate the connection attempt.</t> | endpoints to terminate the connection attempt.</t> | |||
| <t>Also note that the list of versions in the Version Negotiation packet may | <t>Also note that the list of versions in the Version Negotiation packet may | |||
| contain reserved versions. This mechanism is used to avoid ossification in the | contain reserved versions. This mechanism is used to avoid ossification in the | |||
| implementation of the selection mechanism. Further, a client may send an Initial | implementation of the selection mechanism. Further, a client may send an Initial | |||
| packet with a reserved version number to trigger version negotiation. In | packet with a reserved version number to trigger version negotiation. In | |||
| the Version Negotiation packet, the connection IDs of the client's | the Version Negotiation packet, the connection IDs of the client's | |||
| Initial packet | Initial packet | |||
| are reflected to provide a proof of return-routability. Therefore, changing this | are reflected to provide a proof of return-routability. Therefore, changing this | |||
| information will also cause the connection to fail.</t> | information will also cause the connection to fail.</t> | |||
| <t>QUIC is expected to evolve rapidly, so new versions, both experimenta | <t>QUIC is expected to evolve rapidly. Therefore, new versions (both exp | |||
| l and IETF | erimental and IETF | |||
| standard versions, will be deployed on the Internet more often than with | standard versions) will be deployed on the Internet more often than with | |||
| other commonly deployed Internet- and transport-layer protocols. Use | other commonly deployed Internet and transport-layer protocols. Use | |||
| of the version number field for traffic recognition will therefore behave | of the Version field for traffic recognition will therefore behave | |||
| differently than with these protocols. Using a particular version number | differently than with these protocols. Using a particular version number | |||
| to recognize valid QUIC traffic is likely to persistently miss a fraction of | to recognize valid QUIC traffic is likely to persistently miss a fraction of | |||
| QUIC flows, | QUIC flows | |||
| and completely fail in the near future. Reliance on the version number field | and completely fail in the near future. Reliance on the Version field for the pu | |||
| for the purposes of admission control is similarly likely to rapidly lead to | rpose of | |||
| admission control is also likely to lead to | ||||
| unintended failure modes. Admission of QUIC traffic regardless of version | unintended failure modes. Admission of QUIC traffic regardless of version | |||
| avoids these failure modes, avoids unnecessary deployment delays, and | avoids these failure modes, avoids unnecessary deployment delays, and | |||
| supports continuous version-based evolution.</t> | supports continuous version-based evolution.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="network-visible-information-about-quic-flows"> | <section anchor="network-visible-information-about-quic-flows"> | |||
| <name>Network-Visible Information about QUIC Flows</name> | <name>Network-Visible Information about QUIC Flows</name> | |||
| <t>This section addresses the different kinds of observations and inferenc es that | <t>This section addresses the different kinds of observations and inferenc es that | |||
| can be made about QUIC flows by a passive observer in the network based on the | can be made about QUIC flows by a passive observer in the network based on the | |||
| wire image in <xref target="sec-wire-image"/>. Here we assume a bidirectional ob server (one | wire image in <xref target="sec-wire-image"/>. Here, we assume a bidirectional o bserver (one | |||
| that can see packets in both directions in the sequence in which they are | that can see packets in both directions in the sequence in which they are | |||
| carried on the wire) unless noted, but typically without access to any keying | carried on the wire) unless noted, but typically without access to any keying | |||
| information.</t> | information.</t> | |||
| <section anchor="sec-identifying"> | <section anchor="sec-identifying"> | |||
| <name>Identifying QUIC Traffic</name> | <name>Identifying QUIC Traffic</name> | |||
| <t>The QUIC wire image is not specifically designed to be distinguishabl e | <t>The QUIC wire image is not specifically designed to be distinguishabl e | |||
| from other UDP traffic by a passive observer in the network. While certain | from other UDP traffic by a passive observer in the network. While certain | |||
| QUIC applications may be heuristically identifiable on a per-application | QUIC applications may be heuristically identifiable on a per-application | |||
| basis, there is no general method for distinguishing QUIC traffic from | basis, there is no general method for distinguishing QUIC traffic from | |||
| otherwise-unclassifiable UDP traffic on a given link. Any unrecognized UDP | otherwise unclassifiable UDP traffic on a given link. Therefore, any unrecognize | |||
| traffic may therefore be QUIC traffic.</t> | d UDP | |||
| traffic may be QUIC traffic.</t> | ||||
| <t>At the time of writing, two application bindings for QUIC have been p ublished | <t>At the time of writing, two application bindings for QUIC have been p ublished | |||
| or adopted by the IETF: HTTP/3 <xref target="QUIC-HTTP"/> and DNS over Dedicated | or adopted by the IETF: HTTP/3 <xref target="RFC9114"/> and DNS over Dedicated Q | |||
| QUIC | UIC | |||
| Connections <xref target="I-D.ietf-dprive-dnsoquic"/>. These are both known at t | Connections <xref target="RFC9250"/>. These are both known to have active Intern | |||
| he time | et deployments, so an assumption that all | |||
| of writing to have active Internet deployments, so an assumption that all | ||||
| QUIC traffic is HTTP/3 is not valid. HTTP/3 uses UDP port 443 by | QUIC traffic is HTTP/3 is not valid. HTTP/3 uses UDP port 443 by | |||
| convention but various methods can be used to specify alternate port numbers. | convention but various methods can be used to specify alternate port numbers. | |||
| Other applications (e.g., Microsoft's SMB over QUIC) also use UDP port 443 by | Other applications (e.g., Microsoft's SMB over QUIC) also use UDP port 443 by | |||
| default. Therefore, simple assumptions about whether a given flow is using | default. Therefore, simple assumptions about whether a given flow is using | |||
| QUIC, or indeed which application it might be using QUIC, based solely upon | QUIC (or indeed which application might be using QUIC) based solely upon | |||
| a UDP port number may not hold; see also <xref section="5" sectionFormat="of" ta | a UDP port number may not hold; see <xref section="5" sectionFormat="of" target= | |||
| rget="RFC7605"/>.</t> | "RFC7605"/>.</t> | |||
| <t>While the second-most-significant bit (0x40) of the first octet is se t to 1 in | <t>While the second-most-significant bit (0x40) of the first octet is se t to 1 in | |||
| most QUIC packets of the current version (see <xref target="public-header"/> and <xref section="17" sectionFormat="of" target="QUIC-TRANSPORT"/>), this method o f recognizing QUIC traffic is not reliable. | most QUIC packets of the current version (see <xref target="public-header"/> and <xref section="17" sectionFormat="of" target="RFC9000"/>), this method of recog nizing QUIC traffic is not reliable. | |||
| First, it only provides one bit of information and is prone to collision with | First, it only provides one bit of information and is prone to collision with | |||
| UDP-based protocols other than those considered in <xref target="RFC7983"/>. Sec ond, this | UDP-based protocols other than those considered in <xref target="RFC7983"/>. Sec ond, this | |||
| feature of the wire image is not invariant <xref target="QUIC-INVARIANTS"/> and | feature of the wire image is not invariant <xref target="RFC8999"/> and may chan | |||
| may change in | ge in | |||
| future versions of the protocol, or even be negotiated during the handshake via | future versions of the protocol or even be negotiated during the handshake via | |||
| the use of an extension <xref target="QUIC-GREASE"/>.</t> | the use of an extension <xref target="RFC9287"/>.</t> | |||
| <t>Even though transport parameters transmitted in the client's Initial packet are | <t>Even though transport parameters transmitted in the client's Initial packet are | |||
| observable by the network, they cannot be modified by the network without | observable by the network, they cannot be modified by the network without | |||
| causing connection failure. Further, the reply from the server cannot be | causing a connection failure. Further, the reply from the server cannot be | |||
| observed, so observers on the network cannot know which parameters are actually | observed, so observers on the network cannot know which parameters are actually | |||
| in use.</t> | in use.</t> | |||
| <section anchor="identifying-negotiated-version"> | <section anchor="identifying-negotiated-version"> | |||
| <name>Identifying Negotiated Version</name> | <name>Identifying Negotiated Version</name> | |||
| <t>An in-network observer assuming that a set of packets belongs to a QUIC flow | <t>An in-network observer assuming that a set of packets belongs to a QUIC flow | |||
| might infer the version number in use by observing the handshake. If the | might infer the version number in use by observing the handshake. If the | |||
| version number in an Initial packet of the server response is subsequently | version number in an Initial packet of the server response is subsequently | |||
| seen in a packet from the client, that version has been accepted by both | seen in a packet from the client, that version has been accepted by both | |||
| endpoints to be used for the rest of the connection (see | endpoints to be used for the rest of the connection (see | |||
| <xref section="2" sectionFormat="of" target="I-D.ietf-quic-version-negotiation"/ >).</t> | <xref section="2" sectionFormat="of" target="I-D.ietf-quic-version-negotiation"/ >).</t> | |||
| <t>The negotiated version cannot be identified for flows for which a h | <t>The negotiated version cannot be identified for flows in which a ha | |||
| andshake is | ndshake is | |||
| not observed, such as in the case of connection migration; however, it might be | not observed, such as in the case of connection migration. However, it might be | |||
| possible to associate a flow with a flow for which a version has been | possible to associate a flow with a flow for which a version has been | |||
| identified; see <xref target="sec-flow-association"/>.</t> | identified; see <xref target="sec-flow-association"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-garbage"> | <section anchor="sec-garbage"> | |||
| <name>First Packet Identification for Garbage Rejection</name> | <name>First Packet Identification for Garbage Rejection</name> | |||
| <t>A related question is whether the first packet of a given flow on a port known | <t>A related question is whether the first packet of a given flow on a port known | |||
| to be associated with QUIC is a valid QUIC packet. This determination supports | to be associated with QUIC is a valid QUIC packet. This determination supports | |||
| in-network filtering of garbage UDP packets (reflection attacks, random | in-network filtering of garbage UDP packets (reflection attacks, random | |||
| backscatter, etc.). While heuristics based on the first byte of the packet | backscatter, etc.). While heuristics based on the first byte of the packet | |||
| (packet type) could be used to separate valid from invalid first packet types, | (packet type) could be used to separate valid from invalid first packet types, | |||
| the deployment of such heuristics is not recommended, as bits in the first byte | the deployment of such heuristics is not recommended as bits in the first byte | |||
| may have different meanings in future versions of the protocol.</t> | may have different meanings in future versions of the protocol.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-confirm"> | <section anchor="sec-confirm"> | |||
| <name>Connection Confirmation</name> | <name>Connection Confirmation</name> | |||
| <t>This document focuses on QUIC version 1, and this Connection Confirma tion | <t>This document focuses on QUIC version 1, and this Connection Confirma tion | |||
| section applies only to packets belonging to QUIC version 1 flows; for purposes | section applies only to packets belonging to QUIC version 1 flows; for purposes | |||
| of on-path observation, it assumes that these packets have been identified as | of on-path observation, it assumes that these packets have been identified as | |||
| such through the observation of a version number exchange as described above.</t > | such through the observation of a version number exchange as described above.</t > | |||
| <t>Connection establishment uses Initial and Handshake packets containin g a | <t>Connection establishment uses Initial and Handshake packets containin g a | |||
| TLS handshake, and Retry packets that do not contain parts of the handshake. | TLS handshake and Retry packets that do not contain parts of the handshake. | |||
| Connection establishment can therefore be detected using heuristics similar to | Connection establishment can therefore be detected using heuristics similar to | |||
| those used to detect TLS over TCP. A client initiating a connection may | those used to detect TLS over TCP. A client initiating a connection may | |||
| also send data in 0-RTT packets directly after the Initial | also send data in 0-RTT packets directly after the Initial | |||
| packet containing the TLS Client Hello. Since packets may be reordered or lost | packet containing the TLS ClientHello. Since packets may be reordered or lost | |||
| in the network, 0-RTT packets could be seen before the Initial | in the network, 0-RTT packets could be seen before the Initial | |||
| packet.</t> | packet.</t> | |||
| <t>Note that in this version of QUIC, clients send Initial packets befor e servers | <t>Note that in this version of QUIC, clients send Initial packets befor e servers | |||
| do, servers send Handshake packets before clients do, and only clients send | do, servers send Handshake packets before clients do, and only clients send | |||
| Initial packets with tokens. Therefore, an endpoint can be identified as a | Initial packets with tokens. Therefore, an endpoint can be identified as a | |||
| client or server by an on-path observer. An attempted connection after Retry can | client or server by an on-path observer. An attempted connection after Retry can | |||
| be detected by correlating the contents of the Retry packet with the Token and | be detected by correlating the contents of the Retry packet with the Token and | |||
| the Destination Connection ID fields of the new Initial packet.</t> | the Destination Connection ID fields of the new Initial packet.</t> | |||
| </section> | </section> | |||
| <section anchor="distinguishing-acknowledgment-traffic"> | <section anchor="distinguishing-acknowledgment-traffic"> | |||
| <name>Distinguishing Acknowledgment Traffic</name> | <name>Distinguishing Acknowledgment Traffic</name> | |||
| <t>Some deployed in-network functions distinguish packets that carry onl y | <t>Some deployed in-network functions distinguish packets that carry onl y | |||
| acknowledgment (ACK-only) information | acknowledgment (ACK-only) information | |||
| from packets carrying upper-layer data in order to attempt to enhance | from packets carrying upper-layer data in order to attempt to enhance | |||
| performance, for example by queueing ACKs differently or manipulating ACK | performance (for example, by queuing ACKs differently or manipulating ACK | |||
| signaling <xref target="RFC3449"/>. Distinguishing ACK packets is possible in TC | signaling <xref target="RFC3449"/>). Distinguishing ACK packets is possible in T | |||
| P, | CP, | |||
| but is not supported by | but is not supported by | |||
| QUIC, since acknowledgment signaling is carried inside QUIC's encrypted payload, | QUIC since acknowledgment signaling is carried inside QUIC's encrypted payload | |||
| and ACK manipulation is impossible. Specifically, heuristics attempting to | and ACK manipulation is impossible. Specifically, heuristics attempting to | |||
| distinguish ACK-only packets from payload-carrying packets based on packet size | distinguish ACK-only packets from payload-carrying packets based on packet size | |||
| are likely to fail, and are not recommended to use as a way to construe | are likely to fail and are not recommended to use as a way to construe | |||
| internals of QUIC's operation as those mechanisms can change, e.g., due to the | internals of QUIC's operation as those mechanisms can change, e.g., due to the | |||
| use of extensions.</t> | use of extensions.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-server"> | <section anchor="sec-server"> | |||
| <name>Server Name Indication (SNI)</name> | <name>Server Name Indication (SNI)</name> | |||
| <t>The client's TLS ClientHello may contain a Server Name Indication (SN I) | <t>The client's TLS ClientHello may contain a Server Name Indication (SN I) | |||
| <xref target="RFC6066"/> extension, by which the client reveals the name of the | extension <xref target="RFC6066"/> by which the client reveals the name of the s | |||
| server it | erver it | |||
| intends to connect to, in order to allow the server to present a certificate | intends to connect to in order to allow the server to present a certificate | |||
| based on that name. SNI information is available to unidirectional observers | based on that name. If present, SNI information is available to unidirectional o | |||
| on the client-to-server path, if present.</t> | bservers | |||
| on the client-to-server path if it.</t> | ||||
| <t>The TLS ClientHello may also contain an Application-Layer Protocol | <t>The TLS ClientHello may also contain an Application-Layer Protocol | |||
| Negotiation (ALPN) <xref target="RFC7301"/> extension, by which the client expos es the names | Negotiation (ALPN) extension <xref target="RFC7301"/>, by which the client expos es the names | |||
| of application-layer protocols it supports; an observer can deduce that one of | of application-layer protocols it supports; an observer can deduce that one of | |||
| those protocols will be used if the connection continues.</t> | those protocols will be used if the connection continues.</t> | |||
| <t>Work is currently underway in the TLS working group to encrypt the co ntents of | <t>Work is currently underway in the TLS working group to encrypt the co ntents of | |||
| the ClientHello in TLS 1.3 <xref target="TLS-ECH"/>. This would make | the ClientHello in TLS 1.3 <xref target="I-D.ietf-tls-esni"/>. This would make | |||
| SNI-based application identification impossible by on-path observation for QUIC | SNI-based application identification impossible by on-path observation for QUIC | |||
| and other protocols that use TLS.</t> | and other protocols that use TLS.</t> | |||
| <section anchor="extracting-server-name-indication-sni-information"> | <section anchor="extracting-server-name-indication-sni-information"> | |||
| <name>Extracting Server Name Indication (SNI) Information</name> | <name>Extracting Server Name Indication (SNI) Information</name> | |||
| <t>If the ClientHello is not encrypted, SNI can be derived from the cl ient's | <t>If the ClientHello is not encrypted, SNI can be derived from the cl ient's | |||
| Initial packet(s) by calculating the Initial secret to decrypt the packet | Initial packets by calculating the Initial secret to decrypt the packet | |||
| payload and parsing the QUIC CRYPTO frame(s) containing the TLS ClientHello.</t> | payload and parsing the QUIC CRYPTO frames containing the TLS ClientHello.</t> | |||
| <t>As both the derivation of the Initial secret and the structure of t he Initial | <t>As both the derivation of the Initial secret and the structure of t he Initial | |||
| packet itself are version-specific, the first step is always to parse the | packet itself are version specific, the first step is always to parse the | |||
| version number (the second through fifth bytes of the long header). Note that | version number (the second through fifth bytes of the long header). Note that | |||
| only long header packets carry the version number, so it is necessary to also | only long header packets carry the version number, so it is necessary to also | |||
| check if the first bit of the QUIC packet is set to 1, indicating a long header. | check if the first bit of the QUIC packet is set to 1, which indicates a long he | |||
| </t> | ader.</t> | |||
| <t>Note that proprietary QUIC versions, that have been deployed before | <t>Note that proprietary QUIC versions that have been deployed before | |||
| standardization, might not set the first bit in a QUIC long header packet to | standardization might not set the first bit in a QUIC long header packet to | |||
| 1. However, it is expected that these versions will | 1. However, it is expected that these versions will | |||
| gradually disappear over time and therefore do not require any special | gradually disappear over time and therefore do not require any special | |||
| consideration or treatment.</t> | consideration or treatment.</t> | |||
| <t>When the version has been identified as QUIC version 1, the packet type needs to | <t>When the version has been identified as QUIC version 1, the packet type needs to | |||
| be verified as an Initial packet by checking that the third and fourth bits of | be verified as an Initial packet by checking that the third and fourth bits of | |||
| the header are both set to 0. Then the Destination Connection ID needs to be | the header are both set to 0. Then, the Destination Connection ID needs to be | |||
| extracted from the packet. The Initial secret is calculated using the | extracted from the packet. The Initial secret is calculated using the | |||
| version-specific Initial salt, as described in <xref section="5.2" sectionFormat ="of" target="QUIC-TLS"/>. | version-specific Initial salt as described in <xref section="5.2" sectionFormat= "of" target="RFC9001"/>. | |||
| The length of the connection ID is indicated in the 6th byte of the header | The length of the connection ID is indicated in the 6th byte of the header | |||
| followed by the connection ID itself.</t> | followed by the connection ID itself.</t> | |||
| <t>Note that subsequent Initial packets might contain a Destination Co nnection ID | <t>Note that subsequent Initial packets might contain a Destination Co nnection ID | |||
| other than the one used to generate the Initial secret. Therefore, attempts to | other than the one used to generate the Initial secret. Therefore, attempts to | |||
| decrypt these packets using the procedure above might fail unless the Initial | decrypt these packets using the procedure above might fail unless the Initial | |||
| secret is retained by the observer.</t> | secret is retained by the observer.</t> | |||
| <t>To determine the end of the packet header and find the start of the payload, | <t>To determine the end of the packet header and find the start of the payload, | |||
| the packet number length, the source connection ID length, and the token length | the Packet Number Length, the Source Connection ID Length, and the Token Length | |||
| need to be extracted. The packet number length is defined by the seventh and | need to be extracted. The Packet Number Length is defined by the seventh and | |||
| eight bits of the header as described in <xref section="17.2" sectionFormat="of" | eighth bits of the header as described in <xref section="17.2" sectionFormat="of | |||
| target="QUIC-TRANSPORT"/>, | " target="RFC9000"/>, | |||
| but is protected as described in <xref section="5.4" sectionFormat="of" target=" | but is protected as described in <xref section="5.4" sectionFormat="of" target=" | |||
| QUIC-TLS"/>. The source | RFC9001"/>. The Source | |||
| connection ID length is specified in the byte after the destination | Connection ID Length is specified in the byte after the Destination | |||
| connection ID. The token length, which follows the source connection ID, is | Connection ID. The Token Length, which follows the Source Connection ID, is | |||
| a variable-length integer as specified in <xref section="16" sectionFormat="of" | a variable-length integer as specified in <xref section="16" sectionFormat="of" | |||
| target="QUIC-TRANSPORT"/>.</t> | target="RFC9000"/>.</t> | |||
| <t>After decryption, the client's Initial packet(s) can be parsed to d | <t>After decryption, the client's Initial packets can be parsed to det | |||
| etect the | ect the | |||
| CRYPTO frame(s) that contains the TLS ClientHello, which then can be parsed | CRYPTO frames that contain the TLS ClientHello, which then can be parsed | |||
| similarly to TLS over TCP connections. Note that there can be multiple CRYPTO | similarly to TLS over TCP connections. Note that there can be multiple CRYPTO | |||
| frames spread out over one or more Initial packets, and they might not be in | frames spread out over one or more Initial packets and they might not be in | |||
| order, so reassembling the CRYPTO stream by parsing offsets and lengths is | order, so reassembling the CRYPTO stream by parsing offsets and lengths is | |||
| required. Further, the client's Initial packet(s) may contain other frames, | required. Further, the client's Initial packets may contain other frames, | |||
| so the first bytes of each frame need to be checked to identify the frame | so the first bytes of each frame need to be checked to identify the frame | |||
| type and determine whether the frame can be skipped over. Note that the | type and determine whether the frame can be skipped over. Note that the | |||
| length of the frames is dependent on the frame type; see | length of the frames is dependent on the frame type; see | |||
| <xref section="18" sectionFormat="of" target="QUIC-TRANSPORT"/>. | <xref section="18" sectionFormat="of" target="RFC9000"/>. | |||
| E.g., PADDING frames, each consisting of a single zero byte, may occur before, | For example, PADDING frames (each consisting of a single zero byte) may occur be | |||
| fore, | ||||
| after, or between CRYPTO frames. However, extensions might define additional | after, or between CRYPTO frames. However, extensions might define additional | |||
| frame types. If an unknown frame type is encountered, it is impossible to | frame types. If an unknown frame type is encountered, it is impossible to | |||
| know the length of that frame which prevents skipping over it, and therefore | know the length of that frame, which prevents skipping over it; therefore, | |||
| parsing fails.</t> | parsing fails.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-flow-association"> | <section anchor="sec-flow-association"> | |||
| <name>Flow Association</name> | <name>Flow Association</name> | |||
| <t>The QUIC connection ID (see <xref target="rebinding"/>) is designed t o allow a coordinating | <t>The QUIC connection ID (see <xref target="rebinding"/>) is designed t o allow a coordinating | |||
| on-path device, such as a load-balancer, to associate two flows when one of the | on-path device, such as a load balancer, to associate two flows when one of the | |||
| endpoints changes address. This change can be due to NAT rebinding or address | endpoints changes address. This change can be due to NAT rebinding or address | |||
| migration.</t> | migration.</t> | |||
| <t>The connection ID must change upon intentional address change by an e | <t>The connection ID must change upon intentional address change by an e | |||
| ndpoint, | ndpoint | |||
| and connection ID negotiation is encrypted, so it is not possible for a | and connection ID negotiation is encrypted; therefore, it is not possible for a | |||
| passive observer to link intended changes of address using the connection ID.</t > | passive observer to link intended changes of address using the connection ID.</t > | |||
| <t>When one endpoint's address unintentionally changes, as is the case w ith NAT | <t>When one endpoint's address unintentionally changes, as is the case w ith NAT | |||
| rebinding, an on-path observer may be able to use the connection ID to | rebinding, an on-path observer may be able to use the connection ID to | |||
| associate the flow on the new address with the flow on the old address.</t> | associate the flow on the new address with the flow on the old address.</t> | |||
| <t>A network function that attempts to use the connection ID to associat e flows | <t>A network function that attempts to use the connection ID to associat e flows | |||
| must be robust to the failure of this technique. Since the connection ID may | must be robust to the failure of this technique. Since the connection ID may | |||
| change multiple times during the lifetime of a connection, packets with the | change multiple times during the lifetime of a connection, packets with the | |||
| same 5-tuple but different connection IDs might or might not belong to | same 5-tuple but different connection IDs might or might not belong to | |||
| the same connection. Likewise, packets with the same connection ID but | the same connection. Likewise, packets with the same connection ID but | |||
| different 5-tuples might not belong to the same connection, either.</t> | different 5-tuples might not belong to the same connection either.</t> | |||
| <t>Connection IDs should be treated as opaque; see <xref target="sec-loa dbalancing"/> | <t>Connection IDs should be treated as opaque; see <xref target="sec-loa dbalancing"/> | |||
| for caveats regarding connection ID selection at servers.</t> | for caveats regarding connection ID selection at servers.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-teardown"> | <section anchor="sec-teardown"> | |||
| <name>Flow Teardown</name> | <name>Flow Teardown</name> | |||
| <t>QUIC does not expose the end of a connection; the only indication to on-path | <t>QUIC does not expose the end of a connection; the only indication to on-path | |||
| devices that a flow has ended is that packets are no longer observed. Stateful | devices that a flow has ended is that packets are no longer observed. Therefore, | |||
| devices on path such as NATs and firewalls must therefore use idle timeouts to | stateful | |||
| devices on path such as NATs and firewalls must use idle timeouts to | ||||
| determine when to drop state for QUIC flows; see <xref target="sec-stateful"/>.< /t> | determine when to drop state for QUIC flows; see <xref target="sec-stateful"/>.< /t> | |||
| </section> | </section> | |||
| <section anchor="sec-symmetry"> | <section anchor="sec-symmetry"> | |||
| <name>Flow Symmetry Measurement</name> | <name>Flow Symmetry Measurement</name> | |||
| <t>QUIC explicitly exposes which side of a connection is a client and wh ich side is | <t>QUIC explicitly exposes which side of a connection is a client and wh ich side is | |||
| a server during the handshake. In addition, the symmetry of a flow (whether | a server during the handshake. In addition, the symmetry of a flow (whether it i s | |||
| primarily client-to-server, primarily server-to-client, or roughly | primarily client-to-server, primarily server-to-client, or roughly | |||
| bidirectional, as input to basic traffic classification techniques) can be | bidirectional, as input to basic traffic classification techniques) can be | |||
| inferred through the measurement of data rate in each direction. | inferred through the measurement of data rate in each direction. | |||
| Note that QUIC packets containing only control frames (such as | Note that QUIC packets containing only control frames (such as | |||
| ACK-only packets) may be padded. Padding, though optional, | ACK-only packets) may be padded. Padding, though optional, | |||
| may conceal connection roles or flow symmetry information.</t> | may conceal connection roles or flow symmetry information.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-rtt"> | <section anchor="sec-rtt"> | |||
| <name>Round-Trip Time (RTT) Measurement</name> | <name>Round-Trip Time (RTT) Measurement</name> | |||
| <t>The round-trip time (RTT) of QUIC flows can be inferred | <t>The round-trip time (RTT) of QUIC flows can be inferred | |||
| by observation once per flow, | by observation once per flow | |||
| during the handshake, as in passive TCP measurement; this requires parsing of | during the handshake in passive TCP measurement; this requires parsing of | |||
| the QUIC packet header and recognition of the handshake, as illustrated in | the QUIC packet header and recognition of the handshake, as illustrated in | |||
| <xref target="handshake"/>. It can also be inferred during the flow's lifetime, | <xref target="handshake"/>. It can also be inferred during the flow's lifetime i | |||
| if the | f the | |||
| endpoints use the spin bit facility described below and in <xref section="17.3.1 | endpoints use the spin bit facility described below and in <xref section="17.3.1 | |||
| " sectionFormat="of" target="QUIC-TRANSPORT"/>. RTT measurement is available to | " sectionFormat="of" target="RFC9000"/>. RTT measurement is available to unidire | |||
| unidirectional observers | ctional observers | |||
| when the spin bit is enabled.</t> | when the spin bit is enabled.</t> | |||
| <section anchor="measuring-initial-rtt"> | <section anchor="measuring-initial-rtt"> | |||
| <name>Measuring Initial RTT</name> | <name>Measuring Initial RTT</name> | |||
| <t>In the common case, the delay between the client's Initial packet ( containing | <t>In the common case, the delay between the client's Initial packet ( containing | |||
| the TLS ClientHello) and the server's Initial packet (containing the TLS | the TLS ClientHello) and the server's Initial packet (containing the TLS | |||
| ServerHello) represents the RTT component on the path between the observer and | ServerHello) represents the RTT component on the path between the observer and | |||
| the server. The delay between the server's first Handshake packet and the | the server. The delay between the server's first Handshake packet and the | |||
| Handshake packet sent by the client represents the RTT component on the path | Handshake packet sent by the client represents the RTT component on the path | |||
| between the observer and the client. While the client may send 0-RTT packets | between the observer and the client. While the client may send 0-RTT packets | |||
| after the Initial packet during connection re-establishment, these can be | after the Initial packet during connection re-establishment, these can be | |||
| ignored for RTT measurement purposes.</t> | ignored for RTT measurement purposes.</t> | |||
| <t>Handshake RTT can be measured by adding the client-to-observer and | <t>Handshake RTT can be measured by adding the client-to-observer and | |||
| observer-to-server RTT components together. This measurement necessarily | observer-to-server RTT components together. This measurement necessarily | |||
| includes all transport- and application-layer delay at both endpoints.</t> | includes all transport- and application-layer delay at both endpoints.</t> | |||
| </section> | </section> | |||
| <section anchor="spin-usage"> | <section anchor="spin-usage"> | |||
| <name>Using the Spin Bit for Passive RTT Measurement</name> | <name>Using the Spin Bit for Passive RTT Measurement</name> | |||
| <t>The spin bit provides a version-specific method to measure per-flow RTT from | <t>The spin bit provides a version-specific method to measure per-flow RTT from | |||
| observation points on the network path throughout the duration of a connection. | observation points on the network path throughout the duration of a connection. | |||
| See <xref section="17.4" sectionFormat="of" target="QUIC-TRANSPORT"/> for the de | See <xref section="17.4" sectionFormat="of" target="RFC9000"/> for the definitio | |||
| finition of the spin bit in | n of the spin bit in | |||
| Version 1 of QUIC. Endpoint participation in spin bit signaling is optional. | Version 1 of QUIC. Endpoint participation in spin bit signaling is optional. Whi | |||
| That is, while its location is fixed in this version of QUIC, an endpoint can | le its location is fixed in this version of QUIC, an endpoint can | |||
| unilaterally choose to not support "spinning" the bit.</t> | unilaterally choose to not support "spinning" the bit.</t> | |||
| <t>Use of the spin bit for RTT measurement by devices on path is only possible when | <t>Use of the spin bit for RTT measurement by devices on path is only possible when | |||
| both endpoints enable it. Some endpoints may disable use of the spin bit by | both endpoints enable it. Some endpoints may disable use of the spin bit by | |||
| default, others only in specific deployment scenarios, e.g., for servers and | default, others only in specific deployment scenarios, e.g., for servers and | |||
| clients where the RTT would reveal the presence of a VPN or proxy. To avoid | clients where the RTT would reveal the presence of a VPN or proxy. To avoid | |||
| making these connections identifiable based on the usage of the spin bit, all | making these connections identifiable based on the usage of the spin bit, all | |||
| endpoints randomly disable "spinning" for at least one eighth of connections, | endpoints randomly disable "spinning" for at least one eighth of connections, | |||
| even if otherwise enabled by default. An endpoint not participating in spin bit | even if otherwise enabled by default. An endpoint not participating in spin bit | |||
| signaling for a given connection can use a fixed spin value for the duration of | signaling for a given connection can use a fixed spin value for the duration of | |||
| the connection, or can set the bit randomly on each packet sent.</t> | the connection or can set the bit randomly on each packet sent.</t> | |||
| <t>When in use, the latency spin bit in each direction changes value o nce per | <t>When in use, the latency spin bit in each direction changes value o nce per | |||
| RTT any time that both endpoints are sending packets | RTT any time that both endpoints are sending packets | |||
| continuously. An on-path observer can observe the time difference between edges | continuously. An on-path observer can observe the time difference between edges | |||
| (changes from 1 to 0 or 0 to 1) in the spin bit signal in a single direction to | (changes from 1 to 0 or 0 to 1) in the spin bit signal in a single direction to | |||
| measure one sample of end-to-end RTT. This mechanism follows the principles of | measure one sample of end-to-end RTT. This mechanism follows the principles of | |||
| protocol measurability laid out in <xref target="IPIM"/>.</t> | protocol measurability laid out in <xref target="IPIM"/>.</t> | |||
| <t>Note that this measurement, as with passive RTT measurement for TCP , includes | <t>Note that this measurement, as with passive RTT measurement for TCP , includes | |||
| all transport protocol delay (e.g., delayed sending of acknowledgments) and/or | all transport protocol delay (e.g., delayed sending of acknowledgments) and/or | |||
| application layer delay (e.g., waiting for a response to be generated). It | application layer delay (e.g., waiting for a response to be generated). It | |||
| therefore provides devices on path a good instantaneous estimate of the RTT as | therefore provides devices on path a good instantaneous estimate of the RTT as | |||
| experienced by the application.</t> | experienced by the application.</t> | |||
| <t>However, application-limited and flow-control-limited senders can h ave | <t>However, application-limited and flow-control-limited senders can h ave | |||
| application and transport layer delay, respectively, that are much greater than | application- and transport-layer delay, respectively, that are much greater than | |||
| network RTT. When the sender is application-limited and e.g., only sends small | network RTT. For example, if the sender only sends small | |||
| amount of periodic application traffic, where that period is longer than the | amounts of application traffic periodically, where the periodicity is longer tha | |||
| RTT, measuring the spin bit provides information about the application period, | n the | |||
| not the network RTT.</t> | RTT, spin bit measurements provide information about the application period rath | |||
| er | ||||
| than network RTT.</t> | ||||
| <t>Since the spin bit logic at each endpoint considers only samples fr om packets | <t>Since the spin bit logic at each endpoint considers only samples fr om packets | |||
| that advance the largest packet number, signal generation itself is | that advance the largest packet number, signal generation itself is | |||
| resistant to reordering. However, reordering can cause problems at an observer | resistant to reordering. However, reordering can cause problems at an observer | |||
| by causing spurious edge detection and therefore inaccurate (i.e., lower) RTT | by causing spurious edge detection and therefore inaccurate (i.e., lower) RTT | |||
| estimates, if reordering occurs across a spin-bit flip in the stream.</t> | estimates, if reordering occurs across a spin bit flip in the stream.</t> | |||
| <t>Simple heuristics based on the observed data rate per flow or chang es in the RTT | <t>Simple heuristics based on the observed data rate per flow or chang es in the RTT | |||
| series can be used to reject bad RTT samples due to lost or reordered edges in | series can be used to reject bad RTT samples due to lost or reordered edges in | |||
| the spin signal, as well as application or flow control limitation; for example, | the spin signal, as well as application or flow control limitation; for example, | |||
| QoF <xref target="TMA-QOF"/> rejects component RTTs significantly higher than RT Ts over the | QoF <xref target="TMA-QOF"/> rejects component RTTs significantly higher than RT Ts over the | |||
| history of the flow. These heuristics may use the handshake RTT as an initial | history of the flow. These heuristics may use the handshake RTT as an initial | |||
| RTT estimate for a given flow. Usually such heuristics would also detect if | RTT estimate for a given flow. Usually such heuristics would also detect if | |||
| the spin is either constant or randomly set for a connection.</t> | the spin is either constant or randomly set for a connection.</t> | |||
| <t>An on-path observer that can see traffic in both directions (from c lient to | <t>An on-path observer that can see traffic in both directions (from c lient to | |||
| server and from server to client) can also use the spin bit to measure | server and from server to client) can also use the spin bit to measure | |||
| "upstream" and "downstream" component RTT; i.e, the component of the | "upstream" and "downstream" component RTT; i.e, the component of the | |||
| end-to-end RTT attributable to the paths between the observer and the server | end-to-end RTT attributable to the paths between the observer and the server | |||
| and the observer and the client, respectively. It does this by measuring the | and between the observer and the client, respectively. It does this by measuring the | |||
| delay between a spin edge observed in the upstream direction and that observed | delay between a spin edge observed in the upstream direction and that observed | |||
| in the downstream direction, and vice versa.</t> | in the downstream direction, and vice versa.</t> | |||
| <t>Raw RTT samples generated using these techniques can be processed i n various | <t>Raw RTT samples generated using these techniques can be processed i n various | |||
| ways to generate useful network performance metrics. A simple linear smoothing | ways to generate useful network performance metrics. A simple linear smoothing | |||
| or moving minimum filter can be applied to the stream of RTT samples to get a | or moving minimum filter can be applied to the stream of RTT samples to get a | |||
| more stable estimate of application-experienced RTT. RTT samples measured from | more stable estimate of application-experienced RTT. RTT samples measured from | |||
| the spin bit can also be used to generate RTT distribution information, | the spin bit can also be used to generate RTT distribution information, | |||
| including minimum RTT (which approximates network RTT over longer time windows) | including minimum RTT (which approximates network RTT over longer time windows) | |||
| and RTT variance (which approximates one-way packet delay variance as seen | and RTT variance (which approximates one-way packet delay variance as seen | |||
| by an application end-point).</t> | by an application end-point).</t> | |||
| skipping to change at line 779 ¶ | skipping to change at line 783 ¶ | |||
| <name>Specific Network Management Tasks</name> | <name>Specific Network Management Tasks</name> | |||
| <t>In this section, we review specific network management and measurement | <t>In this section, we review specific network management and measurement | |||
| techniques and how QUIC's design impacts them.</t> | techniques and how QUIC's design impacts them.</t> | |||
| <section anchor="passive-network-performance-measurement-and-troubleshooti ng"> | <section anchor="passive-network-performance-measurement-and-troubleshooti ng"> | |||
| <name>Passive Network Performance Measurement and Troubleshooting</name> | <name>Passive Network Performance Measurement and Troubleshooting</name> | |||
| <t>Limited RTT measurement is possible by passive observation of QUIC tr affic; | <t>Limited RTT measurement is possible by passive observation of QUIC tr affic; | |||
| see <xref target="sec-rtt"/>. No passive measurement of loss is possible with th e present | see <xref target="sec-rtt"/>. No passive measurement of loss is possible with th e present | |||
| wire image. Limited observation of upstream congestion may be | wire image. Limited observation of upstream congestion may be | |||
| possible via the observation of Congestion Experienced (CE) markings in the | possible via the observation of Congestion Experienced (CE) markings in the | |||
| IP header <xref target="RFC3168"/> on ECN-enabled QUIC traffic.</t> | IP header <xref target="RFC3168"/> on ECN-enabled QUIC traffic.</t> | |||
| <t>On-path devices can also make measurements of RTT, loss and other | <t>On-path devices can also make measurements of RTT, loss, and other | |||
| performance metrics when information is carried in an additional network-layer | performance metrics when information is carried in an additional network-layer | |||
| packet header (Section 6 of | packet header (<xref target="RFC9065" sectionFormat="of" section="6"/> describes | |||
| <xref target="RFC9065"/> describes use of operations, | the use of Operations, | |||
| administration and management (OAM) information). | Administration, and Management (OAM) information). | |||
| Using network-layer approaches also has the advantage that common observation | Using network-layer approaches also has the advantage that common observation | |||
| and analysis tools can be consistently used for multiple transport protocols, | and analysis tools can be consistently used for multiple transport protocols; | |||
| however, these techniques are often limited to measurements within one or | however, these techniques are often limited to measurements within one or | |||
| multiple cooperating domains.</t> | multiple cooperating domains.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-stateful"> | <section anchor="sec-stateful"> | |||
| <name>Stateful Treatment of QUIC Traffic</name> | <name>Stateful Treatment of QUIC Traffic</name> | |||
| <t>Stateful treatment of QUIC traffic (e.g., at a firewall or NAT middle box) is | <t>Stateful treatment of QUIC traffic (e.g., at a firewall or NAT middle box) is | |||
| possible through QUIC traffic and version identification (<xref target="sec-iden tifying"/>) | possible through QUIC traffic and version identification (<xref target="sec-iden tifying"/>) | |||
| and observation of the handshake for connection confirmation (<xref target="sec- confirm"/>). | and observation of the handshake for connection confirmation (<xref target="sec- confirm"/>). | |||
| The lack of any visible end-of-flow signal (<xref target="sec-teardown"/>) means that this | The lack of any visible end-of-flow signal (<xref target="sec-teardown"/>) means that this | |||
| state must be purged either through timers or through least-recently-used | state must be purged either through timers or least-recently-used | |||
| eviction, depending on application requirements.</t> | eviction depending on application requirements.</t> | |||
| <t>While QUIC has no clear network-visible end-of-flow signal and theref ore | <t>While QUIC has no clear network-visible end-of-flow signal and theref ore | |||
| does require timer-based state removal, the QUIC handshake indicates | does require timer-based state removal, the QUIC handshake indicates | |||
| confirmation by both ends of a valid bidirectional transmission. As soon | confirmation by both ends of a valid bidirectional transmission. As soon | |||
| as the handshake completed, timers should be set long enough to also | as the handshake completed, timers should be set long enough to also | |||
| allow for short idle time during a valid transmission.</t> | allow for short idle time during a valid transmission.</t> | |||
| <t><xref target="RFC4787"/> requires a network state timeout that is not less than 2 minutes | <t><xref target="RFC4787"/> requires a network state timeout that is not less than 2 minutes | |||
| for most UDP traffic. However, in practice, a QUIC endpoint can experience | for most UDP traffic. However, in practice, a QUIC endpoint can experience | |||
| lower timeouts, in the range of 30 to 60 seconds <xref target="QUIC-TIMEOUT"/>.< /t> | lower timeouts in the range of 30 to 60 seconds <xref target="QUIC-TIMEOUT"/>.</ t> | |||
| <t>In contrast, <xref target="RFC5382"/> recommends a state timeout of m ore than 2 | <t>In contrast, <xref target="RFC5382"/> recommends a state timeout of m ore than 2 | |||
| hours for TCP, given that TCP is a connection-oriented protocol with | hours for TCP given that TCP is a connection-oriented protocol with | |||
| well-defined closure semantics. | well-defined closure semantics. | |||
| Even though QUIC has explicitly been designed to tolerate NAT rebindings, | Even though QUIC has explicitly been designed to tolerate NAT rebindings, | |||
| decreasing the NAT timeout is not recommended, as it may negatively impact | decreasing the NAT timeout is not recommended as it may negatively impact | |||
| application performance or incentivize endpoints to send very frequent | application performance or incentivize endpoints to send very frequent | |||
| keep-alive packets.</t> | keep-alive packets.</t> | |||
| <t>The recommendation is therefore that, even when lower state timeouts | <t>Therefore, | |||
| are | a state timeout of at least two minutes is recommended for | |||
| used for other UDP traffic, a state timeout of at least two minutes | QUIC traffic, even when lower state timeouts | |||
| ought to be used for QUIC traffic.</t> | are used for other UDP traffic.</t> | |||
| <t>If state is removed too early, this could lead to black-holing of inc oming | <t>If state is removed too early, this could lead to black-holing of inc oming | |||
| packets after a short idle period. To detect this situation, a timer at the | packets after a short idle period. To detect this situation, a timer at the | |||
| client needs to expire before a re-establishment can happen (if at all), which | client needs to expire before a re-establishment can happen (if at all), which | |||
| would lead to unnecessarily long delays in an otherwise working connection.</t> | would lead to unnecessarily long delays in an otherwise working connection.</t> | |||
| <t>Furthermore, not all endpoints use routing architectures where connec tions | <t>Furthermore, not all endpoints use routing architectures where connec tions | |||
| will survive a port or address change. So even when the client revives the | will survive a port or address change. Even when the client revives the | |||
| connection, a NAT rebinding can cause a routing mismatch where a packet | connection, a NAT rebinding can cause a routing mismatch where a packet | |||
| is not even delivered to the server that might support address migration. | is not even delivered to the server that might support address migration. | |||
| For these reasons, the limits in <xref target="RFC4787"/> are important to avoid | For these reasons, the limits in <xref target="RFC4787"/> are important to avoid | |||
| black-holing of packets (and hence avoid interrupting the flow of data to the | black-holing of packets (and hence avoid interrupting the flow of data to the | |||
| client), especially where devices are able to distinguish QUIC traffic from | client), especially where devices are able to distinguish QUIC traffic from | |||
| other UDP payloads.</t> | other UDP payloads.</t> | |||
| <t>The QUIC header optionally contains a connection ID which could provi de | <t>The QUIC header optionally contains a connection ID, which could prov ide | |||
| additional entropy beyond the 5-tuple. The QUIC handshake needs | additional entropy beyond the 5-tuple. The QUIC handshake needs | |||
| to be observed in order to understand whether the connection ID is present and | to be observed in order to understand whether the connection ID is present and | |||
| what length it has. However, connection IDs may be renegotiated | what length it has. However, connection IDs may be renegotiated | |||
| after the handshake, and this renegotiation is not visible to the path. | after the handshake, and this renegotiation is not visible to the path. | |||
| Therefore, using the connection ID as a flow key field for stateful treatment | Therefore, using the connection ID as a flow key field for stateful treatment | |||
| of flows is not recommended as connection ID changes will cause undetectable | of flows is not recommended as connection ID changes will cause undetectable | |||
| and unrecoverable loss of state in the middle of a connection. In particular, | and unrecoverable loss of state in the middle of a connection. In particular, | |||
| the use of the connection ID for functions that require state to make a | the use of the connection ID for functions that require state to make a | |||
| forwarding decision is not viable as it will break connectivity, or at minimum | forwarding decision is not viable as it will break connectivity, or at minimum, | |||
| cause long timeout-based delays before this problem is detected by the | cause long timeout-based delays before this problem is detected by the | |||
| endpoints and the connection can potentially be re-established.</t> | endpoints and the connection can potentially be re-established.</t> | |||
| <t>Use of connection IDs is specifically discouraged for NAT application s. | <t>Use of connection IDs is specifically discouraged for NAT application s. | |||
| If a NAT hits an operational limit, it is recommended to rather drop the | If a NAT hits an operational limit, it is recommended to rather drop the | |||
| initial packets of a flow (see also <xref target="sec-filtering"/>), | initial packets of a flow (see also <xref target="sec-filtering"/>), | |||
| which potentially triggers TCP fallback. Use of the connection ID to | which potentially triggers TCP fallback. Use of the connection ID to | |||
| multiplex multiple connections on the same IP address/port pair is not a | multiplex multiple connections on the same IP address/port pair is not a | |||
| viable solution as it risks connectivity breakage, in case the connection | viable solution as it risks connectivity breakage in case the connection | |||
| ID changes.</t> | ID changes.</t> | |||
| </section> | </section> | |||
| <section anchor="address-rewriting-to-ensure-routing-stability"> | <section anchor="address-rewriting-to-ensure-routing-stability"> | |||
| <name>Address Rewriting to Ensure Routing Stability</name> | <name>Address Rewriting to Ensure Routing Stability</name> | |||
| <t>While QUIC's migration capability makes it possible for a connection to survive | <t>While QUIC's migration capability makes it possible for a connection to survive | |||
| client address changes, this does not work if the routers or switches in the | client address changes, this does not work if the routers or switches in the | |||
| server infrastructure route using the address-port 4-tuple. If infrastructure | server infrastructure route using the address-port 4-tuple. If infrastructure | |||
| routes on addresses only, NAT rebinding or address migration will cause packets | routes on addresses only, NAT rebinding or address migration will cause packets | |||
| to be delivered to the wrong server. <xref target="QUIC-LB"/> describes a way to addresses | to be delivered to the wrong server. <xref target="I-D.ietf-quic-load-balancers" /> describes a way to addresses | |||
| this problem by coordinating the selection and use of connection IDs between | this problem by coordinating the selection and use of connection IDs between | |||
| load-balancers and servers.</t> | load balancers and servers.</t> | |||
| <t>Applying address translation at a middlebox to maintain a stable | <t>Applying address translation at a middlebox to maintain a stable | |||
| address-port mapping for flows based on connection ID might seem | address-port mapping for flows based on connection ID might seem like a solution | |||
| like a solution to this problem. However, hiding information about the | to this problem. However, hiding information about the | |||
| change of the IP address or port conceals important and security-relevant | change of the IP address or port conceals important and security-relevant | |||
| information from QUIC endpoints and as such would facilitate amplification | information from QUIC endpoints, and as such, would facilitate amplification | |||
| attacks (see <xref section="8" sectionFormat="of" target="QUIC-TRANSPORT"/>). A | attacks (see <xref section="8" sectionFormat="of" target="RFC9000"/>). A NAT fun | |||
| NAT function that hides | ction that hides | |||
| peer address changes prevents the other end from | peer address changes prevents the other end from | |||
| detecting and mitigating attacks as the endpoint cannot verify connectivity | detecting and mitigating attacks as the endpoint cannot verify connectivity | |||
| to the new address using QUIC PATH_CHALLENGE and PATH_RESPONSE frames.</t> | to the new address using QUIC PATH_CHALLENGE and PATH_RESPONSE frames.</t> | |||
| <t>In addition, a change of IP address or port is also an input signal t o other | <t>In addition, a change of IP address or port is also an input signal t o other | |||
| internal mechanisms in QUIC. When a path change is detected, path-dependent | internal mechanisms in QUIC. When a path change is detected, path-dependent | |||
| variables like congestion control parameters will be reset protecting | variables like congestion control parameters will be reset, which protects | |||
| the new path from overload.</t> | the new path from overload.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-loadbalancing"> | <section anchor="sec-loadbalancing"> | |||
| <name>Server Cooperation with Load Balancers</name> | <name>Server Cooperation with Load Balancers</name> | |||
| <t>In the case of networking architectures that include load balancers, | <t>In the case of networking architectures that include load balancers, | |||
| the connection ID can be used as a way for the server to signal information | the connection ID can be used as a way for the server to signal information | |||
| about the desired treatment of a flow to the load balancers. Guidance on | about the desired treatment of a flow to the load balancers. Guidance on | |||
| assigning connection IDs is given in | assigning connection IDs is given in | |||
| <xref target="QUIC-APPLICABILITY"/>. <xref target="QUIC-LB"/> | <xref target="RFC9308"/>. <xref target="I-D.ietf-quic-load-balancers"/> | |||
| describes a system for coordinating selection and use of connection IDs between | describes a system for coordinating selection and use of connection IDs between | |||
| load-balancers and servers.</t> | load balancers and servers.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-filtering"> | <section anchor="sec-filtering"> | |||
| <name>Filtering Behavior</name> | <name>Filtering Behavior</name> | |||
| <t><xref target="RFC4787"/> describes possible packet filtering behavior | <t><xref target="RFC4787"/> describes | |||
| s that relate to NATs | possible packet-filtering behaviors that relate to NATs but are often | |||
| but is often also used is other scenarios where packet filtering is desired. | also used in other scenarios where packet filtering is desired. | |||
| Though the guidance there holds, a particularly unwise behavior admits a | Though the guidance there holds, a particularly unwise behavior admits | |||
| handful of UDP packets and then makes a decision to whether or not filter | a handful of UDP packets and then makes a decision to whether or not | |||
| later packets in the same connection. | filter later packets in the same connection. QUIC applications are | |||
| QUIC applications are encouraged to fall back to TCP if early packets do | encouraged to fall back to TCP if early packets do not arrive at their | |||
| not arrive at their destination <xref target="QUIC-APPLICABILITY"/>, as QUIC is | destination <xref target="RFC9308"/>, as QUIC is | |||
| based on UDP and there are known blocks of UDP traffic (see <xref target="sec-ud | based on UDP and there are known blocks of UDP traffic (see <xref | |||
| p-1312"/>). | target="sec-udp-1312"/>). Admitting a few packets allows the QUIC | |||
| Admitting a few packets allows the QUIC endpoint to determine that the path | endpoint to determine that the path accepts QUIC. Sudden drops | |||
| accepts QUIC. Sudden drops afterwards will result in slow and costly timeouts | afterwards will result in slow and costly timeouts before abandoning | |||
| before abandoning the connection.</t> | the connection.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-udp-1312"> | <section anchor="sec-udp-1312"> | |||
| <name>UDP Blocking, Throttling, and NAT Binding</name> | <name>UDP Blocking, Throttling, and NAT Binding</name> | |||
| <t>Today, UDP is the most prevalent DDoS vector, since it is easy for co mpromised | <t>Today, UDP is the most prevalent DDoS vector, since it is easy for co mpromised | |||
| non-admin applications to send a flood of large UDP packets (while with TCP the | non-admin applications to send a flood of large UDP packets (while with TCP the | |||
| attacker gets throttled by the congestion controller) or to craft reflection and | attacker gets throttled by the congestion controller) or to craft reflection and | |||
| amplification attacks. Some networks therefore block UDP traffic. | amplification attacks; therefore, some networks block UDP traffic. | |||
| With increased deployment of QUIC, there is also an increased need to allow | With increased deployment of QUIC, there is also an increased need to allow | |||
| UDP traffic on ports used for QUIC. However, if UDP is generally enabled on | UDP traffic on ports used for QUIC. However, if UDP is generally enabled on | |||
| these ports, UDP flood attacks may also use the same ports. One possible | these ports, UDP flood attacks may also use the same ports. One possible | |||
| response to this threat is to throttle UDP traffic on the network, allocating a | response to this threat is to throttle UDP traffic on the network, allocating a | |||
| fixed portion of the network capacity to UDP and blocking UDP datagrams over | fixed portion of the network capacity to UDP and blocking UDP datagrams over | |||
| that cap. As the portion of QUIC traffic compared to TCP is also expected to | that cap. As the portion of QUIC traffic compared to TCP is also expected to | |||
| increase over time, using such a limit is not recommended but if done, | increase over time, using such a limit is not recommended; if this is done, | |||
| limits might need to be adapted dynamically.</t> | limits might need to be adapted dynamically.</t> | |||
| <t>Further, if UDP traffic is desired to be throttled, it is recommended to | <t>Further, if UDP traffic is desired to be throttled, it is recommended to | |||
| block individual | block individual | |||
| QUIC flows entirely rather than dropping packets indiscriminately. | QUIC flows entirely rather than dropping packets indiscriminately. | |||
| When the handshake is blocked, QUIC-capable applications may fall back | When the handshake is blocked, QUIC-capable applications may fall back | |||
| to TCP. However, blocking a random fraction of QUIC packets across | to TCP. However, blocking a random fraction of QUIC packets across | |||
| 4-tuples will allow many QUIC handshakes to complete, preventing TCP fallback, | 4-tuples will allow many QUIC handshakes to complete, preventing TCP fallback, b | |||
| but these connections will suffer from | ut | |||
| these connections will suffer from | ||||
| severe packet loss (see also <xref target="sec-filtering"/>). Therefore, UDP thr ottling | severe packet loss (see also <xref target="sec-filtering"/>). Therefore, UDP thr ottling | |||
| should be realized by per-flow policing, as opposed to per-packet | should be realized by per-flow policing as opposed to per-packet | |||
| policing. Note that this per-flow policing should be stateless to avoid | policing. Note that this per-flow policing should be stateless to avoid | |||
| problems with stateful treatment of QUIC flows (see <xref target="sec-stateful"/ >), | problems with stateful treatment of QUIC flows (see <xref target="sec-stateful"/ >), | |||
| for example blocking a portion of the space of values of a hash function | for example, blocking a portion of the space of values of a hash function | |||
| over the addresses and ports in the UDP datagram. | over the addresses and ports in the UDP datagram. | |||
| While QUIC endpoints are often able to survive address changes, e.g., by NAT | While QUIC endpoints are often able to survive address changes, e.g., by NAT | |||
| rebindings, blocking a portion of the traffic based on 5-tuple hashing increases | rebindings, blocking a portion of the traffic based on 5-tuple hashing increases | |||
| the risk of black-holing an active connection when the address changes.</t> | the risk of black-holing an active connection when the address changes.</t> | |||
| <t>Note that some source ports are assumed to be reflection attack vecto rs by some | <t>Note that some source ports are assumed to be reflection attack vecto rs by some | |||
| servers; see <xref section="8.1" sectionFormat="of" target="QUIC-APPLICABILITY"/ >. As a result, NAT | servers; see <xref section="8.1" sectionFormat="of" target="RFC9308"/>. As a res ult, NAT | |||
| binding to these source ports can result in that traffic being blocked.</t> | binding to these source ports can result in that traffic being blocked.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-ddos-dec"> | <section anchor="sec-ddos-dec"> | |||
| <name>DDoS Detection and Mitigation</name> | <name>DDoS Detection and Mitigation</name> | |||
| <t>On-path observation of the transport headers of packets can be used f or various | <t>On-path observation of the transport headers of packets can be used f or various | |||
| security functions. For example, Denial of Service (DoS) and Distributed DoS | security functions. For example, Denial of Service (DoS) and Distributed DoS | |||
| (DDoS) attacks against the infrastructure or against an endpoint can be | (DDoS) attacks against the infrastructure or against an endpoint can be | |||
| detected and mitigated by characterising anomalous traffic. | detected and mitigated by characterizing anomalous traffic. | |||
| Other uses include support for security audits (e.g., verifying the | Other uses include support for security audits (e.g., verifying the | |||
| compliance with ciphersuites); client and application fingerprinting for | compliance with cipher suites), client and application fingerprinting for | |||
| inventory; and to provide alerts for network intrusion detection and other | inventory, and providing alerts for network intrusion detection and other | |||
| next generation firewall functions.</t> | next-generation firewall functions.</t> | |||
| <t>Current practices in detection and mitigation of DDoS | <t>Current practices in detection and mitigation of DDoS | |||
| attacks generally involve classification of incoming traffic (as | attacks generally involve classification of incoming traffic (as | |||
| packets, flows, or some other aggregate) into "good" (productive) and "bad" | packets, flows, or some other aggregate) into "good" (productive) and "bad" | |||
| (DDoS) traffic, and then differential treatment of this traffic to forward only | (DDoS) traffic, and then differential treatment of this traffic to forward only | |||
| good traffic. This operation is often done in a separate specialized mitigation | good traffic. This operation is often done in a separate specialized mitigation | |||
| environment through which all traffic is filtered; a generalized architecture | environment through which all traffic is filtered; a generalized architecture | |||
| for separation of concerns in mitigation is given in | for separation of concerns in mitigation is given in | |||
| <xref target="DOTS-ARCH"/>.</t> | <xref target="RFC8811"/>.</t> | |||
| <t>Efficient classification of this DDoS traffic in the mitigation envir onment | <t>Efficient classification of this DDoS traffic in the mitigation envir onment | |||
| is key to the success of this approach. Limited first-packet garbage detection | is key to the success of this approach. Limited first packet garbage detection | |||
| as in <xref target="sec-garbage"/> and stateful tracking of QUIC traffic as in | as in <xref target="sec-garbage"/> and stateful tracking of QUIC traffic as ment | |||
| ioned in | ||||
| <xref target="sec-stateful"/> above may be useful during classification.</t> | <xref target="sec-stateful"/> above may be useful during classification.</t> | |||
| <t>Note that the use of a connection ID to support connection migration | <t>Note that using a connection ID to support connection migration rende | |||
| renders | rs | |||
| 5-tuple based filtering insufficient to detect active flows and requires more | 5-tuple-based filtering insufficient to detect active flows and requires more | |||
| state to be maintained by DDoS defense systems if support of migration of QUIC | state to be maintained by DDoS defense systems if support of migration of QUIC | |||
| flows is desired. For the common case of NAT rebinding, where the client's | flows is desired. For the common case of NAT rebinding, where the client's | |||
| address changes without the client's intent or knowledge, DDoS defense systems | address changes without the client's intent or knowledge, DDoS defense systems | |||
| can detect a change in the client's endpoint address by linking flows based on | can detect a change in the client's endpoint address by linking flows based on | |||
| the server's connection IDs. However, QUIC's linkability resistance ensures that | the server's connection IDs. However, QUIC's linkability resistance ensures that | |||
| a deliberate connection migration is accompanied by a change in the connection | a deliberate connection migration is accompanied by a change in the connection | |||
| ID. In this case, the connection ID can not be used to distinguish valid, active | ID. In this case, the connection ID cannot be used to distinguish valid, active | |||
| traffic from new attack traffic.</t> | traffic from new attack traffic.</t> | |||
| <t>It is also possible for | <t>It is also possible for | |||
| endpoints to directly support security functions such as DoS | endpoints to directly support security functions such as DoS | |||
| classification and mitigation. | classification and mitigation. | |||
| Endpoints can cooperate with an in-network device directly by e.g., | Endpoints can cooperate with an in-network device directly by e.g., | |||
| sharing information about connection IDs.</t> | sharing information about connection IDs.</t> | |||
| <t>Another potential method could use an | <t>Another potential method could use an | |||
| on-path network device that relies on pattern inferences in the traffic and | on-path network device that relies on pattern inferences in the traffic and | |||
| heuristics or machine learning instead of processing observed header | heuristics or machine learning instead of processing observed header | |||
| information.</t> | information.</t> | |||
| <t>However, it is questionable whether connection migrations must be sup ported | <t>However, it is questionable whether connection migrations must be sup ported | |||
| during a DDoS attack. While unintended migration without a connection ID | during a DDoS attack. While unintended migration without a connection ID | |||
| change can be more easily supported, it might be acceptable to not | change can be supported much easier, it might be acceptable to not | |||
| support migrations of active QUIC connections that are not visible to | support migrations of active QUIC connections that are not visible to | |||
| the network functions performing the DDoS detection. | the network functions performing the DDoS detection. | |||
| As soon as the connection blocking is detected by the client, | As soon as the connection blocking is detected by the client, | |||
| the client may be able to rely on the 0-RTT data mechanism | the client may be able to rely on the 0-RTT data mechanism | |||
| provided by QUIC. When clients migrate to a new path, they should be prepared | provided by QUIC. When clients migrate to a new path, they should be prepared | |||
| for the migration to fail and attempt to reconnect quickly.</t> | for the migration to fail and attempt to reconnect quickly.</t> | |||
| <t>Beyond in-network DDoS protection mechanisms, TCP syncookies <xref ta rget="RFC4937"/> | <t>Beyond in-network DDoS protection mechanisms, TCP SYN cookies <xref t arget="RFC4987"/> | |||
| are a well-established method of mitigating some | are a well-established method of mitigating some | |||
| kinds of TCP DDoS attacks. QUIC Retry packets are the functional analogue to | kinds of TCP DDoS attacks. QUIC Retry packets are the functional analogue to | |||
| syncookies, forcing clients to prove possession of their IP address before | SYN cookies, forcing clients to prove possession of their IP address before | |||
| committing server state. However, there are safeguards in QUIC against | committing server state. However, there are safeguards in QUIC against | |||
| unsolicited injection of these packets by intermediaries who do not have consent | unsolicited injection of these packets by intermediaries who do not have consent | |||
| of the end server. See <xref target="QUIC-RETRY"/> for standard | of the end server. See <xref target="I-D.ietf-quic-retry-offload"/> for standard | |||
| ways for intermediaries to send Retry packets on behalf of consenting servers.</ t> | ways for intermediaries to send Retry packets on behalf of consenting servers.</ t> | |||
| </section> | </section> | |||
| <section anchor="quality-of-service-handling-and-ecmp-routing"> | <section anchor="quality-of-service-handling-and-ecmp-routing"> | |||
| <name>Quality of Service Handling and ECMP Routing</name> | <name>Quality of Service Handling and ECMP Routing</name> | |||
| <t>It is expected that any QoS handling in the network, e.g., based on u se of | <t>It is expected that any QoS handling in the network, e.g., based on u se of | |||
| DiffServ Code Points (DSCPs) <xref target="RFC2475"/> as well as Equal-Cost | Diffserv Code Points (DSCPs) <xref target="RFC2475"/> as well as Equal-Cost | |||
| Multi-Path (ECMP) routing, is applied on a per flow-basis (and not per-packet) | Multi-Path (ECMP) routing, is applied on a per-flow basis (and not per-packet) | |||
| and as such that all packets belonging to the same active QUIC connection | and as such that all packets belonging to the same active QUIC connection | |||
| get uniform treatment.</t> | get uniform treatment.</t> | |||
| <t>Using ECMP to distribute packets from a single flow across multiple | <t>Using ECMP to distribute packets from a single flow across multiple | |||
| network paths or any other non-uniform treatment of packets belong to the same | network paths or any other nonuniform treatment of packets belong to the same | |||
| connection could result in variations in order, delivery rate, and drop rate. | connection could result in variations in order, delivery rate, and drop rate. | |||
| As feedback about loss or delay of each packet is used as input to | As feedback about loss or delay of each packet is used as input to | |||
| the congestion controller, these variations could adversely affect performance. | the congestion controller, these variations could adversely affect performance. | |||
| Depending on the loss recovery mechanism implemented, QUIC may be | Depending on the loss recovery mechanism that is implemented, QUIC may be | |||
| more tolerant of packet re-ordering than typical TCP traffic (see | more tolerant of packet reordering than typical TCP traffic (see | |||
| <xref target="packetnumber"/>). However, the recovery mechanism used by a flow c annot be | <xref target="packetnumber"/>). However, the recovery mechanism used by a flow c annot be | |||
| known by the network and therefore reordering tolerance should be | known by the network and therefore reordering tolerance should be | |||
| considered as unknown.</t> | considered as unknown.</t> | |||
| <t>Note that the 5-tuple of a QUIC connection can change due to migratio n. | <t>Note that the 5-tuple of a QUIC connection can change due to migratio n. | |||
| In this case different flows are observed by the path and maybe be treated | In this case different flows are observed by the path and may be treated | |||
| differently, as congestion control is usually reset on migration (see also | differently, as congestion control is usually reset on migration (see also | |||
| <xref target="sec-flow-association"/>).</t> | <xref target="sec-flow-association"/>).</t> | |||
| </section> | </section> | |||
| <section anchor="handling-icmp-messages"> | <section anchor="handling-icmp-messages"> | |||
| <name>Handling ICMP Messages</name> | <name>Handling ICMP Messages</name> | |||
| <t>Datagram Packetization Layer PMTU Discovery (PLPMTUD) can be used by | <t>Datagram Packetization Layer PMTU Discovery (DPLPMTUD) can be used by | |||
| QUIC to | QUIC to | |||
| probe for the supported PMTU. PLPMTUD optionally uses ICMP messages (e.g., | probe for the supported PMTU. DPLPMTUD optionally uses ICMP messages (e.g., | |||
| IPv6 Packet Too Big messages). Given known attacks with the use of ICMP | IPv6 Packet Too Big (PTB) messages). Given known attacks with the use of ICMP | |||
| messages, the use of PLPMTUD in QUIC has been designed to safely use but | messages, the use of DPLPMTUD in QUIC has been designed to safely use but | |||
| not rely on receiving ICMP feedback (see | not rely on receiving ICMP feedback (see | |||
| <xref section="14.2.1." sectionFormat="of" target="QUIC-TRANSPORT"/>).</t> | <xref section="14.2.1" sectionFormat="of" target="RFC9000"/>).</t> | |||
| <t>Networks are recommended to forward these ICMP messages and retain as much of | <t>Networks are recommended to forward these ICMP messages and retain as much of | |||
| the original packet as possible without exceeding the minimum MTU for the IP | the original packet as possible without exceeding the minimum MTU for the IP | |||
| version when generating ICMP messages as recommended in <xref target="RFC1812"/> | version when generating ICMP messages as recommended in <xref target="RFC1812"/> | |||
| and <xref target="RFC4443"/>.</t> | and <xref target="RFC4443"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="guiding-path-mtu"> | <section anchor="guiding-path-mtu"> | |||
| <name>Guiding Path MTU</name> | <name>Guiding Path MTU</name> | |||
| <t>Some network segments support 1500-byte packets, | <t>Some network segments support 1500-byte packets, | |||
| but can only do so by fragmenting at a | but can only do so by fragmenting at a | |||
| lower layer before traversing a network segment with a smaller MTU, | lower layer before traversing a network segment with a smaller MTU, | |||
| and then reassembling within the network segment. | and then reassembling within the network segment. | |||
| This is permissible even when the IP layer is IPv6 or IPv4 with the DF bit set, | This is permissible even when the IP layer is IPv6 or IPv4 with the Don't Fragme nt (DF) bit set, | |||
| because fragmentation occurs below the IP layer. | because fragmentation occurs below the IP layer. | |||
| However, this process can add to compute | However, this process can add to compute | |||
| and memory costs, leading to a bottleneck that limits network capacity. In such | and memory costs, leading to a bottleneck that limits network capacity. In such | |||
| networks this generates a desire to influence a majority of senders to use | networks, this generates a desire to influence a majority of senders to use | |||
| smaller packets, to avoid exceeding limited reassembly capacity.</t> | smaller packets to avoid exceeding limited reassembly capacity.</t> | |||
| <t>For TCP, MSS clamping (<xref section="3.2" sectionFormat="of" target= | <t>For TCP, Maximum Segment Size (MSS) clamping (<xref section="3.2" sec | |||
| "RFC4459"/>) is often used to change | tionFormat="of" target="RFC4459"/>) is often used to change | |||
| the sender's TCP maximum segment size, but QUIC requires a different approach. | the sender's TCP maximum segment size, but QUIC requires a different approach. | |||
| <xref section="14" sectionFormat="of" target="QUIC-TRANSPORT"/> advises senders | <xref section="14" sectionFormat="of" target="RFC9000"/> advises senders to prob | |||
| to probe larger sizes using | e larger sizes using DPLPMTUD <xref target="RFC8899"/> or Path | |||
| Datagram Packetization Layer PMTU Discovery (<xref target="DPLPMTUD"/>) or Path | Maximum Transmission Unit Discovery (PMTUD) <xref target="RFC1191"/> <xref targe | |||
| Maximum Transmission Unit Discovery (PMTUD: <xref target="RFC1191"/> and <xref t | t="RFC8201"/>. | |||
| arget="RFC8201"/>). | ||||
| This mechanism encourages senders to approach the maximum packet size, which | This mechanism encourages senders to approach the maximum packet size, which | |||
| could then cause fragmentation within a network segment of which | could then cause fragmentation within a network segment of which | |||
| they may not be aware.</t> | they may not be aware.</t> | |||
| <t>If path performance is limited when forwarding larger packets, an on- path | <t>If path performance is limited when forwarding larger packets, an on- path | |||
| device should support a maximum packet size for a specific transport flow | device should support a maximum packet size for a specific transport flow | |||
| and then consistently drop all packets that exceed the configured size | and then consistently drop all packets that exceed the configured size | |||
| when the inner IPv4 packet has DF set, or IPv6 is used.</t> | when the inner IPv4 packet has DF set or IPv6 is used.</t> | |||
| <t>Networks with configurations that would lead to fragmentation of larg e | <t>Networks with configurations that would lead to fragmentation of larg e | |||
| packets within a network segment should drop such packets rather than | packets within a network segment should drop such packets rather than | |||
| fragmenting them. Network operators who plan to implement a more | fragmenting them. Network operators who plan to implement a more | |||
| selective policy may start by focusing on QUIC.</t> | selective policy may start by focusing on QUIC.</t> | |||
| <t>QUIC flows cannot always be easily distinguished from other UDP traff ic, but | <t>QUIC flows cannot always be easily distinguished from other UDP traff ic, but | |||
| we assume at least some portion of QUIC traffic can be identified | we assume at least some portion of QUIC traffic can be identified | |||
| (see <xref target="sec-identifying"/>). For networks supporting QUIC, it is reco mmended | (see <xref target="sec-identifying"/>). For networks supporting QUIC, it is reco mmended | |||
| that a path drops any packet larger than the fragmentation size. | that a path drops any packet larger than the fragmentation size. | |||
| When a QUIC endpoint uses DPLPMTUD, it will use a QUIC probe packet to | When a QUIC endpoint uses DPLPMTUD, it will use a QUIC probe packet to | |||
| discover the PMTU. If this probe is lost, it will not impact the flow of | discover the PMTU. If this probe is lost, it will not impact the flow of | |||
| QUIC data.</t> | QUIC data.</t> | |||
| <t>IPv4 routers generate an ICMP message when a packet is dropped becaus e the | <t>IPv4 routers generate an ICMP message when a packet is dropped becaus e the | |||
| link MTU was exceeded. <xref target="RFC8504"/> specifies how an IPv6 node gener ates an | link MTU was exceeded. <xref target="RFC8504"/> specifies how an IPv6 node gener ates an | |||
| ICMPv6 Packet Too Big message (PTB) in this case. PMTUD relies upon an | ICMPv6 PTB in this case. PMTUD relies upon an | |||
| endpoint receiving such PTB messages <xref target="RFC8201"/>, whereas DPLPMTUD does not | endpoint receiving such PTB messages <xref target="RFC8201"/>, whereas DPLPMTUD does not | |||
| reply upon these messages, but still can optionally use these to improve | reply upon these messages, but can still optionally use these to improve | |||
| performance <xref section="4.6" sectionFormat="of" target="DPLPMTUD"/>.</t> | performance <xref section="4.6" sectionFormat="of" target="RFC8899"/>.</t> | |||
| <t>A network cannot know in advance which discovery method is used by a QUIC | <t>A network cannot know in advance which discovery method is used by a QUIC | |||
| endpoint, so it should send a PTB message in addition to dropping an | endpoint, so it should send a PTB message in addition to dropping an | |||
| oversized packet. A generated PTB message should be compliant with the | oversized packet. A generated PTB message should be compliant with the | |||
| validation requirements of <xref section="14.2.1" sectionFormat="of" target="QUI C-TRANSPORT"/>, otherwise | validation requirements of <xref section="14.2.1" sectionFormat="of" target="RFC 9000"/>, otherwise | |||
| it will be ignored for PMTU discovery. This provides a signal to the | it will be ignored for PMTU discovery. This provides a signal to the | |||
| endpoint to prevent the packet size from growing too large, which can | endpoint to prevent the packet size from growing too large, which can | |||
| entirely avoid network segment fragmentation for that flow.</t> | entirely avoid network segment fragmentation for that flow.</t> | |||
| <t>Endpoints can cache PMTU information, in the IP-layer cache. This sho rt-term | <t>Endpoints can cache PMTU information in the IP-layer cache. This shor t-term | |||
| consistency between the PMTU for flows can help avoid an endpoint using a | consistency between the PMTU for flows can help avoid an endpoint using a | |||
| PMTU that is inefficient. The IP cache can also influence the PMTU value of | PMTU that is inefficient. The IP cache can also influence the PMTU value of | |||
| other IP flows that use the same path <xref target="RFC8201"/><xref target="DPLP MTUD"/>, | other IP flows that use the same path <xref target="RFC8201"/> <xref target="RFC 8899"/>, | |||
| including IP packets carrying | including IP packets carrying | |||
| protocols other than QUIC. The representation of an IP path is | protocols other than QUIC. The representation of an IP path is | |||
| implementation-specific <xref target="RFC8201"/>.</t> | implementation specific <xref target="RFC8201"/>.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="iana-considerations"> | <section anchor="iana-considerations"> | |||
| <name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
| <t>This document has no actions for IANA.</t> | <t>This document has no actions for IANA.</t> | |||
| </section> | </section> | |||
| <section anchor="security-considerations"> | <section anchor="security-considerations"> | |||
| <name>Security Considerations</name> | <name>Security Considerations</name> | |||
| <t>QUIC is an encrypted and authenticated transport. That means, once the | <t>QUIC is an encrypted and authenticated transport. That means once the | |||
| cryptographic handshake is complete, QUIC endpoints discard most packets that | cryptographic handshake is complete, QUIC endpoints discard most packets that | |||
| are not authenticated, greatly limiting the ability of an attacker to interfere | are not authenticated, greatly limiting the ability of an attacker to interfere | |||
| with existing connections.</t> | with existing connections.</t> | |||
| <t>However, some information is still observable, as supporting manageabil | <t>However, some information is still observable as supporting manageabili | |||
| ity of | ty of | |||
| QUIC traffic inherently involves tradeoffs with the confidentiality of QUIC's | QUIC traffic inherently involves trade-offs with the confidentiality of QUIC's | |||
| control information; this entire document is therefore security-relevant.</t> | control information; this entire document is therefore security-relevant.</t> | |||
| <t>More security considerations for QUIC are discussed in <xref target="QU | <t>More security considerations for QUIC are discussed in <xref target="RF | |||
| IC-TRANSPORT"/> | C9000"/> | |||
| and <xref target="QUIC-TLS"/>, generally considering active or passive attackers | and <xref target="RFC9001"/>, which generally consider active or passive attacke | |||
| in the | rs in the | |||
| network as well as attacks on specific QUIC mechanism.</t> | network as well as attacks on specific QUIC mechanism.</t> | |||
| <t>Version Negotiation packets do not contain any mechanism to prevent ver sion | <t>Version Negotiation packets do not contain any mechanism to prevent ver sion | |||
| downgrade attacks. However, future versions of QUIC that use Version Negotiation | downgrade attacks. However, future versions of QUIC that use Version Negotiation | |||
| packets are required to define a mechanism that is robust against version | packets are required to define a mechanism that is robust against version | |||
| downgrade attacks. Therefore, a network node should not attempt to impact | downgrade attacks. Therefore, a network node should not attempt to impact | |||
| version selection, as version downgrade may result in connection failure.</t> | version selection, as version downgrade may result in connection failure.</t> | |||
| </section> | </section> | |||
| <section anchor="contributors"> | ||||
| <name>Contributors</name> | ||||
| <t>The following people have contributed significant text to and/or | ||||
| feedback on this document:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>Chris Box</li> | ||||
| <li>Dan Druta</li> | ||||
| <li>David Schinazi</li> | ||||
| <li>Gorry Fairhurst</li> | ||||
| <li>Ian Swett</li> | ||||
| <li>Igor Lubashev</li> | ||||
| <li>Jana Iyengar</li> | ||||
| <li>Jared Mauch</li> | ||||
| <li>Lars Eggert</li> | ||||
| <li>Lucas Purdue</li> | ||||
| <li>Marcus Ihlar</li> | ||||
| <li>Mark Nottingham</li> | ||||
| <li>Martin Duke</li> | ||||
| <li>Martin Thomson</li> | ||||
| <li>Matt Joras</li> | ||||
| <li>Mike Bishop</li> | ||||
| <li>Nick Banks</li> | ||||
| <li>Thomas Fossati</li> | ||||
| <li>Sean Turner</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="acknowledgments"> | ||||
| <name>Acknowledgments</name> | ||||
| <t>Special thanks to last call reviewers Elwyn Davies, Barry Leiba, | ||||
| Al Morton, and Peter Saint-Andre.</t> | ||||
| <t>This work was partially supported by the European Commission under Hori | ||||
| zon 2020 | ||||
| grant agreement no. 688421 Measurement and Architecture for a Middleboxed | ||||
| Internet (MAMI), and by the Swiss State Secretariat for Education, Research, and | ||||
| Innovation under contract no. 15.0268. This support does not imply endorsement.< | ||||
| /t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <displayreference target="RFC9000" to="QUIC-TRANSPORT"/> | ||||
| <displayreference target="RFC9001" to="QUIC-TLS"/> | ||||
| <displayreference target="RFC9002" to="QUIC-RECOVERY"/> | ||||
| <displayreference target="RFC9287" to="QUIC-GREASE"/> | ||||
| <displayreference target="RFC9114" to="QUIC-HTTP"/> | ||||
| <displayreference target="RFC8546" to="WIRE-IMAGE"/> | ||||
| <displayreference target="RFC8999" to="QUIC-INVARIANTS"/> | ||||
| <displayreference target="I-D.ietf-quic-load-balancers" to="QUIC-LB"/> | ||||
| <displayreference target="I-D.ietf-tls-esni" to="TLS-ECH"/> | ||||
| <displayreference target="RFC9308" to="QUIC-APPLICABILITY"/> | ||||
| <displayreference target="RFC8811" to="DOTS-ARCH"/> | ||||
| <displayreference target="I-D.ietf-quic-retry-offload" to="QUIC-RETRY"/> | ||||
| <displayreference target="RFC8899" to="DPLPMTUD"/> | ||||
| <displayreference target="I-D.ietf-quic-version-negotiation" to="QUIC-VERSIO | ||||
| N-NEGOTIATION"/> | ||||
| <references> | <references> | |||
| <name>References</name> | <name>References</name> | |||
| <references> | <references> | |||
| <name>Normative References</name> | <name>Normative References</name> | |||
| <reference anchor="QUIC-TRANSPORT"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9000. | |||
| <front> | xml"/> | |||
| <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9001. | |||
| <author fullname="J. Iyengar" initials="J." role="editor" surname="I | xml"/> | |||
| yengar"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="M. Thomson" initials="M." role="editor" surname="T | ||||
| homson"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="May" year="2021"/> | ||||
| <abstract> | ||||
| <t>This document defines the core of the QUIC transport protocol. | ||||
| QUIC provides applications with flow-controlled streams for structured communic | ||||
| ation, low-latency connection establishment, and network path migration. QUIC in | ||||
| cludes security measures that ensure confidentiality, integrity, and availabilit | ||||
| y in a range of deployment circumstances. Accompanying documents describe the i | ||||
| ntegration of TLS for key negotiation, loss detection, and an exemplary congesti | ||||
| on control algorithm.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9000"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9000"/> | ||||
| </reference> | ||||
| <reference anchor="QUIC-TLS"> | ||||
| <front> | ||||
| <title>Using TLS to Secure QUIC</title> | ||||
| <author fullname="M. Thomson" initials="M." role="editor" surname="T | ||||
| homson"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S. Turner" initials="S." role="editor" surname="Tu | ||||
| rner"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="May" year="2021"/> | ||||
| <abstract> | ||||
| <t>This document describes how Transport Layer Security (TLS) is u | ||||
| sed to secure QUIC.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9001"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9001"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <references> | <references> | |||
| <name>Informative References</name> | <name>Informative References</name> | |||
| <reference anchor="TMA-QOF"> | <reference anchor="TMA-QOF" target="https://link.springer.com/chapter/10 .1007/978-3-642-54999-1_2"> | |||
| <front> | <front> | |||
| <title>Inline Data Integrity Signals for Passive Measurement (in Pro c. TMA 2014)</title> | <title>Inline Data Integrity Signals for Passive Measurement</title> | |||
| <author initials="B." surname="Trammell"> | <author initials="B." surname="Trammell"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="D." surname="Gugelmann"> | <author initials="D." surname="Gugelmann"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="N." surname="Brownlee"> | <author initials="N." surname="Brownlee"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date year="2014" month="April"/> | <date year="2014" month="April"/> | |||
| </front> | </front> | |||
| <seriesInfo name="DOI" value="10.1007/978-3-642-54999-1_2"/> | ||||
| <refcontent>Traffic Measurement and Analysis, TMA 2014, Lecture Notes i | ||||
| n Computer Science, vol. 8406, pp. 15-25</refcontent> | ||||
| </reference> | </reference> | |||
| <reference anchor="IPIM" target="https://arxiv.org/abs/1612.02902"> | <reference anchor="IPIM" target="https://arxiv.org/abs/1612.02902"> | |||
| <front> | <front> | |||
| <title>In-Protocol Internet Measurement (arXiv preprint 1612.02902)< /title> | <title>Principles for Measurability in Protocol Design</title> | |||
| <author initials="M." surname="Allman"> | <author initials="M." surname="Allman"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="R." surname="Beverly"> | <author initials="R." surname="Beverly"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="B." surname="Trammell"> | <author initials="B." surname="Trammell"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date year="2016" month="December" day="09"/> | <date year="2016" month="December" day="09"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="QUIC-TIMEOUT" target="https://www.ietf.org/proceeding s/88/slides/slides-88-tsvarea-10.pdf"> | <reference anchor="QUIC-TIMEOUT" target="https://www.ietf.org/proceeding s/88/slides/slides-88-tsvarea-10.pdf"> | |||
| <front> | <front> | |||
| <title>QUIC (IETF-88 TSV Area Presentation)</title> | <title>QUIC</title> | |||
| <author initials="J." surname="Roskind"> | <author initials="J." surname="Roskind"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date year="2013" month="November" day="07"/> | <date year="2013" month="November" day="07"/> | |||
| </front> | </front> | |||
| <refcontent>IETF-88 TSV Area Presentation</refcontent> | ||||
| </reference> | </reference> | |||
| <reference anchor="RFC7605"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <front> | FC.7605.xml"/> | |||
| <title>Recommendations on Using Assigned Transport Port Numbers</tit | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| le> | FC.9002.xml"/> | |||
| <author fullname="J. Touch" initials="J." surname="Touch"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <organization/> | FC.4459.xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <date month="August" year="2015"/> | FC.9114.xml"/> | |||
| <abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <t>This document provides recommendations to designers of applicat | FC.8546.xml"/> | |||
| ion and service protocols on how to use the transport protocol port number space | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| and when to request a port assignment from IANA. It provides designer guidance | FC.9065.xml"/> | |||
| to requesters or users of port numbers on how to interact with IANA using the p | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| rocesses defined in RFC 6335; thus, this document complements (but does not upda | FC.8999.xml"/> | |||
| te) that document.</t> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </abstract> | FC.7801.xml"/> | |||
| </front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <seriesInfo name="BCP" value="165"/> | FC.7838.xml"/> | |||
| <seriesInfo name="RFC" value="7605"/> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
| <seriesInfo name="DOI" value="10.17487/RFC7605"/> | .ietf-quic-load-balancers.xml"/> | |||
| </reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <reference anchor="QUIC-RECOVERY"> | FC.9250.xml"/> | |||
| <front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <title>QUIC Loss Detection and Congestion Control</title> | FC.7983.xml"/> | |||
| <author fullname="J. Iyengar" initials="J." role="editor" surname="I | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
| yengar"> | .ietf-quic-version-negotiation.xml"/> | |||
| <organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </author> | FC.3449.xml"/> | |||
| <author fullname="I. Swett" initials="I." role="editor" surname="Swe | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| tt"> | FC.6066.xml"/> | |||
| <organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </author> | FC.7301.xml"/> | |||
| <date month="May" year="2021"/> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
| <abstract> | .ietf-tls-esni.xml"/> | |||
| <t>This document describes loss detection and congestion control m | ||||
| echanisms for QUIC.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9002"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9002"/> | ||||
| </reference> | ||||
| <reference anchor="QUIC-GREASE"> | ||||
| <front> | ||||
| <title>Greasing the QUIC Bit</title> | ||||
| <author fullname="Martin Thomson"> | ||||
| <organization>Mozilla</organization> | ||||
| </author> | ||||
| <date day="8" month="June" year="2022"/> | ||||
| <abstract> | ||||
| <t> This document describes a method for negotiating the ability | ||||
| to send | ||||
| an arbitrary value for the second-to-most significant bit in QUIC | ||||
| packets. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-quic-bit-grease-04 | ||||
| "/> | ||||
| </reference> | ||||
| <reference anchor="RFC4459"> | ||||
| <front> | ||||
| <title>MTU and Fragmentation Issues with In-the-Network Tunneling</t | ||||
| itle> | ||||
| <author fullname="P. Savola" initials="P." surname="Savola"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="April" year="2006"/> | ||||
| <abstract> | ||||
| <t>Tunneling techniques such as IP-in-IP when deployed in the midd | ||||
| le of the network, typically between routers, have certain issues regarding how | ||||
| large packets can be handled: whether such packets would be fragmented and reass | ||||
| embled (and how), whether Path MTU Discovery would be used, or how this scenario | ||||
| could be operationally avoided. This memo justifies why this is a common, non-t | ||||
| rivial problem, and goes on to describe the different solutions and their charac | ||||
| teristics at some length. This memo provides information for the Internet commu | ||||
| nity.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4459"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4459"/> | ||||
| </reference> | ||||
| <reference anchor="QUIC-HTTP"> | ||||
| <front> | ||||
| <title>HTTP/3</title> | ||||
| <author fullname="Mike Bishop"> | ||||
| <organization>Akamai</organization> | ||||
| </author> | ||||
| <date day="2" month="February" year="2021"/> | ||||
| <abstract> | ||||
| <t>The QUIC transport protocol has several features that are desir | ||||
| able in a transport for HTTP, such as stream multiplexing, per-stream flow contr | ||||
| ol, and low-latency connection establishment. This document describes a mapping | ||||
| of HTTP semantics over QUIC. This document also identifies HTTP/2 features tha | ||||
| t are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP | ||||
| /3. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/> | ||||
| </reference> | ||||
| <reference anchor="WIRE-IMAGE"> | ||||
| <front> | ||||
| <title>The Wire Image of a Network Protocol</title> | ||||
| <author fullname="B. Trammell" initials="B." surname="Trammell"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="M. Kuehlewind" initials="M." surname="Kuehlewind"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="April" year="2019"/> | ||||
| <abstract> | ||||
| <t>This document defines the wire image, an abstraction of the inf | ||||
| ormation available to an on-path non-participant in a networking protocol. This | ||||
| abstraction is intended to shed light on the implications that increased encryp | ||||
| tion has for network functions that use the wire image.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8546"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8546"/> | ||||
| </reference> | ||||
| <reference anchor="RFC9065"> | ||||
| <front> | ||||
| <title>Considerations around Transport Header Confidentiality, Netwo | ||||
| rk Operations, and the Evolution of Internet Transport Protocols</title> | ||||
| <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="C. Perkins" initials="C." surname="Perkins"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="July" year="2021"/> | ||||
| <abstract> | ||||
| <t>To protect user data and privacy, Internet transport protocols | ||||
| have supported payload encryption and authentication for some time. Such encrypt | ||||
| ion and authentication are now also starting to be applied to the transport prot | ||||
| ocol headers. This helps avoid transport protocol ossification by middleboxes, m | ||||
| itigate attacks against the transport protocol, and protect metadata about the c | ||||
| ommunication. Current operational practice in some networks inspect transport he | ||||
| ader information within the network, but this is no longer possible when those t | ||||
| ransport headers are encrypted.</t> | ||||
| <t>This document discusses the possible impact when network traffi | ||||
| c uses a protocol with an encrypted transport header. It suggests issues to cons | ||||
| ider when designing new transport protocols or features.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9065"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9065"/> | ||||
| </reference> | ||||
| <reference anchor="QUIC-INVARIANTS"> | ||||
| <front> | ||||
| <title>Version-Independent Properties of QUIC</title> | ||||
| <author fullname="M. Thomson" initials="M." surname="Thomson"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="May" year="2021"/> | ||||
| <abstract> | ||||
| <t>This document defines the properties of the QUIC transport prot | ||||
| ocol that are common to all versions of the protocol.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8999"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8999"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7801"> | ||||
| <front> | ||||
| <title>GOST R 34.12-2015: Block Cipher "Kuznyechik"</title> | ||||
| <author fullname="V. Dolmatov" initials="V." role="editor" surname=" | ||||
| Dolmatov"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="March" year="2016"/> | ||||
| <abstract> | ||||
| <t>This document is intended to be a source of information about t | ||||
| he Russian Federal standard GOST R 34.12-2015 describing the block cipher with a | ||||
| block length of n=128 bits and a key length of k=256 bits, which is also referr | ||||
| ed to as "Kuznyechik". This algorithm is one of the set of Russian cryptographi | ||||
| c standard algorithms (called GOST algorithms).</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7801"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7801"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7838"> | ||||
| <front> | ||||
| <title>HTTP Alternative Services</title> | ||||
| <author fullname="M. Nottingham" initials="M." surname="Nottingham"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="P. McManus" initials="P." surname="McManus"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="J. Reschke" initials="J." surname="Reschke"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="April" year="2016"/> | ||||
| <abstract> | ||||
| <t>This document specifies "Alternative Services" for HTTP, which | ||||
| allow an origin's resources to be authoritatively available at a separate networ | ||||
| k location, possibly accessed with a different protocol configuration.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7838"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7838"/> | ||||
| </reference> | ||||
| <reference anchor="QUIC-LB"> | ||||
| <front> | ||||
| <title>QUIC-LB: Generating Routable QUIC Connection IDs</title> | ||||
| <author fullname="Martin Duke"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author fullname="Nick Banks"> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <author fullname="Christian Huitema"> | ||||
| <organization>Private Octopus Inc.</organization> | ||||
| </author> | ||||
| <date day="11" month="July" year="2022"/> | ||||
| <abstract> | ||||
| <t> QUIC address migration allows clients to change their IP add | ||||
| ress | ||||
| while maintaining connection state. To reduce the ability of an | ||||
| observer to link two IP addresses, clients and servers use new | ||||
| connection IDs when they communicate via different client addresses. | ||||
| This poses a problem for traditional "layer-4" load balancers that | ||||
| route packets via the IP address and port 4-tuple. This | ||||
| specification provides a standardized means of securely encoding | ||||
| routing information in the server's connection IDs so that a properly | ||||
| configured load balancer can route packets with migrated addresses | ||||
| correctly. As it proposes a structured connection ID format, it also | ||||
| provides a means of connection IDs self-encoding their length to aid | ||||
| some hardware offloads. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-quic-load-balancer | ||||
| s-14"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-dprive-dnsoquic"> | ||||
| <front> | ||||
| <title>DNS over Dedicated QUIC Connections</title> | ||||
| <author fullname="Christian Huitema"> | ||||
| <organization>Private Octopus Inc.</organization> | ||||
| </author> | ||||
| <author fullname="Sara Dickinson"> | ||||
| <organization>Sinodun IT</organization> | ||||
| </author> | ||||
| <author fullname="Allison Mankin"> | ||||
| <organization>Salesforce</organization> | ||||
| </author> | ||||
| <date day="20" month="April" year="2022"/> | ||||
| <abstract> | ||||
| <t>This document describes the use of QUIC to provide transport co | ||||
| nfidentiality for DNS. The encryption provided by QUIC has similar properties t | ||||
| o those provided by TLS, while QUIC transport eliminates the head-of-line blocki | ||||
| ng issues inherent with TCP and provides more efficient packet-loss recovery tha | ||||
| n UDP. DNS over QUIC (DoQ) has privacy properties similar to DNS over TLS (DoT) | ||||
| specified in RFC 7858, and latency characteristics similar to classic DNS over | ||||
| UDP. This specification describes the use of DoQ as a general-purpose transport | ||||
| for DNS and includes the use of DoQ for stub to recursive, recursive to authori | ||||
| tative, and zone transfer scenarios. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-dprive-dnsoquic-12 | ||||
| "/> | ||||
| </reference> | ||||
| <reference anchor="RFC7983"> | ||||
| <front> | ||||
| <title>Multiplexing Scheme Updates for Secure Real-time Transport Pr | ||||
| otocol (SRTP) Extension for Datagram Transport Layer Security (DTLS)</title> | ||||
| <author fullname="M. Petit-Huguenin" initials="M." surname="Petit-Hu | ||||
| guenin"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="September" year="2016"/> | ||||
| <abstract> | ||||
| <t>This document defines how Datagram Transport Layer Security (DT | ||||
| LS), Real-time Transport Protocol (RTP), RTP Control Protocol (RTCP), Session Tr | ||||
| aversal Utilities for NAT (STUN), Traversal Using Relays around NAT (TURN), and | ||||
| ZRTP packets are multiplexed on a single receiving socket. It overrides the gui | ||||
| dance from RFC 5764 ("SRTP Extension for DTLS"), which suffered f | ||||
| rom four issues described and fixed in this document.</t> | ||||
| <t>This document updates RFC 5764.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7983"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7983"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-quic-version-negotiation"> | ||||
| <front> | ||||
| <title>Compatible Version Negotiation for QUIC</title> | ||||
| <author fullname="David Schinazi"> | ||||
| <organization>Google LLC</organization> | ||||
| </author> | ||||
| <author fullname="Eric Rescorla"> | ||||
| <organization>Mozilla</organization> | ||||
| </author> | ||||
| <date day="11" month="July" year="2022"/> | ||||
| <abstract> | ||||
| <t> QUIC does not provide a complete version negotiation mechani | ||||
| sm but | ||||
| instead only provides a way for the server to indicate that the | ||||
| version the client chose is unacceptable. This document describes a | ||||
| version negotiation mechanism that allows a client and server to | ||||
| select a mutually supported version. Optionally, if the client's | ||||
| chosen version and the negotiated version share a compatible first | ||||
| flight format, the negotiation can take place without incurring an | ||||
| extra round trip. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-quic-version-negot | ||||
| iation-09"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3449"> | ||||
| <front> | ||||
| <title>TCP Performance Implications of Network Path Asymmetry</title | ||||
| > | ||||
| <author fullname="H. Balakrishnan" initials="H." surname="Balakrishn | ||||
| an"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="V. Padmanabhan" initials="V." surname="Padmanabhan | ||||
| "> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="M. Sooriyabandara" initials="M." surname="Sooriyab | ||||
| andara"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="December" year="2002"/> | ||||
| <abstract> | ||||
| <t>This document describes TCP performance problems that arise bec | ||||
| ause of asymmetric effects. These problems arise in several access networks, in | ||||
| cluding bandwidth-asymmetric networks and packet radio subnetworks, for differen | ||||
| t underlying reasons. However, the end result on TCP performance is the same in | ||||
| both cases: performance often degrades significantly because of imperfection an | ||||
| d variability in the ACK feedback from the receiver to the sender. The document | ||||
| details several mitigations to these effects, which have either been proposed or | ||||
| evaluated in the literature, or are currently deployed in networks. These solu | ||||
| tions use a combination of local link- layer techniques, subnetwork, and end-to- | ||||
| end mechanisms, consisting of: (i) techniques to manage the channel used for the | ||||
| upstream bottleneck link carrying the ACKs, typically using header compression | ||||
| or reducing the frequency of TCP ACKs, (ii) techniques to handle this reduced AC | ||||
| K frequency to retain the TCP sender's acknowledgment-triggered self- clocking a | ||||
| nd (iii) techniques to schedule the data and ACK packets in the reverse directio | ||||
| n to improve performance in the presence of two-way traffic. Each technique is | ||||
| described, together with known issues, and recommendations for use. A summary o | ||||
| f the recommendations is provided at the end of the document. This document spe | ||||
| cifies an Internet Best Current Practices for the Internet Community, and reques | ||||
| ts discussion and suggestions for improvements.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="69"/> | ||||
| <seriesInfo name="RFC" value="3449"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3449"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6066"> | ||||
| <front> | ||||
| <title>Transport Layer Security (TLS) Extensions: Extension Definiti | ||||
| ons</title> | ||||
| <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3 | ||||
| rd"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="January" year="2011"/> | ||||
| <abstract> | ||||
| <t>This document provides specifications for existing TLS extensio | ||||
| ns. It is a companion document for RFC 5246, "The Transport Layer Security (TLS | ||||
| ) Protocol Version 1.2". The extensions specified are server_name, max_fragment | ||||
| _length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_req | ||||
| uest. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6066"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6066"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7301"> | ||||
| <front> | ||||
| <title>Transport Layer Security (TLS) Application-Layer Protocol Neg | ||||
| otiation Extension</title> | ||||
| <author fullname="S. Friedl" initials="S." surname="Friedl"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="A. Popov" initials="A." surname="Popov"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="A. Langley" initials="A." surname="Langley"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="E. Stephan" initials="E." surname="Stephan"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="July" year="2014"/> | ||||
| <abstract> | ||||
| <t>This document describes a Transport Layer Security (TLS) extens | ||||
| ion for application-layer protocol negotiation within the TLS handshake. For ins | ||||
| tances in which multiple application protocols are supported on the same TCP or | ||||
| UDP port, this extension allows the application layer to negotiate which protoco | ||||
| l will be used within the TLS connection.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7301"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7301"/> | ||||
| </reference> | ||||
| <reference anchor="TLS-ECH"> | ||||
| <front> | ||||
| <title>TLS Encrypted Client Hello</title> | ||||
| <author fullname="Eric Rescorla"> | ||||
| <organization>RTFM, Inc.</organization> | ||||
| </author> | ||||
| <author fullname="Kazuho Oku"> | ||||
| <organization>Fastly</organization> | ||||
| </author> | ||||
| <author fullname="Nick Sullivan"> | ||||
| <organization>Cloudflare</organization> | ||||
| </author> | ||||
| <author fullname="Christopher A. Wood"> | ||||
| <organization>Cloudflare</organization> | ||||
| </author> | ||||
| <date day="13" month="February" year="2022"/> | ||||
| <abstract> | ||||
| <t> This document describes a mechanism in Transport Layer Secur | ||||
| ity (TLS) | ||||
| for encrypting a ClientHello message under a server public key. | ||||
| Discussion Venues | ||||
| This note is to be removed before publishing as an RFC. | ||||
| Source for this draft and an issue tracker can be found at | ||||
| https://github.com/tlswg/draft-ietf-tls-esni | ||||
| (https://github.com/tlswg/draft-ietf-tls-esni). | ||||
| </t> | <reference anchor="RFC9308" target="https://www.rfc-editor.org/info/rfc9 | |||
| </abstract> | 308"> | |||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-14"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3168"> | ||||
| <front> | ||||
| <title>The Addition of Explicit Congestion Notification (ECN) to IP< | ||||
| /title> | ||||
| <author fullname="K. Ramakrishnan" initials="K." surname="Ramakrishn | ||||
| an"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S. Floyd" initials="S." surname="Floyd"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="D. Black" initials="D." surname="Black"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="September" year="2001"/> | ||||
| <abstract> | ||||
| <t>This memo specifies the incorporation of ECN (Explicit Congesti | ||||
| on Notification) to TCP and IP, including ECN's use of two bits in the IP header | ||||
| . [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3168"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3168"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4787"> | ||||
| <front> | ||||
| <title>Network Address Translation (NAT) Behavioral Requirements for | ||||
| Unicast UDP</title> | ||||
| <author fullname="F. Audet" initials="F." role="editor" surname="Aud | ||||
| et"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="C. Jennings" initials="C." surname="Jennings"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="January" year="2007"/> | ||||
| <abstract> | ||||
| <t>This document defines basic terminology for describing differen | ||||
| t types of Network Address Translation (NAT) behavior when handling Unicast UDP | ||||
| and also defines a set of requirements that would allow many applications, such | ||||
| as multimedia communications or online gaming, to work consistently. Developing | ||||
| NATs that meet this set of requirements will greatly increase the likelihood th | ||||
| at these applications will function properly. This document specifies an Intern | ||||
| et Best Current Practices for the Internet Community, and requests discussion an | ||||
| d suggestions for improvements.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="127"/> | ||||
| <seriesInfo name="RFC" value="4787"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4787"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5382"> | ||||
| <front> | ||||
| <title>NAT Behavioral Requirements for TCP</title> | ||||
| <author fullname="S. Guha" initials="S." role="editor" surname="Guha | ||||
| "> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="K. Biswas" initials="K." surname="Biswas"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="B. Ford" initials="B." surname="Ford"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S. Sivakumar" initials="S." surname="Sivakumar"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="P. Srisuresh" initials="P." surname="Srisuresh"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="October" year="2008"/> | ||||
| <abstract> | ||||
| <t>This document defines a set of requirements for NATs that handl | ||||
| e TCP that would allow many applications, such as peer-to-peer applications and | ||||
| online games to work consistently. Developing NATs that meet this set of requir | ||||
| ements will greatly increase the likelihood that these applications will functio | ||||
| n properly. This document specifies an Internet Best Current Practices for the | ||||
| Internet Community, and requests discussion and suggestions for improvements.< | ||||
| /t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="142"/> | ||||
| <seriesInfo name="RFC" value="5382"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5382"/> | ||||
| </reference> | ||||
| <reference anchor="QUIC-APPLICABILITY"> | ||||
| <front> | <front> | |||
| <title>Applicability of the QUIC Transport Protocol</title> | <title>Applicability of the QUIC Transport Protocol</title> | |||
| <author fullname="Mirja Kuehlewind"> | <author fullname="Mirja Kühlewind"> | |||
| <organization>Ericsson</organization> | <organization>Ericsson</organization> | |||
| </author> | </author> | |||
| <author fullname="Brian Trammell"> | <author fullname="Brian Trammell"> | |||
| <organization>Google</organization> | <organization>Google Switzerland GmbH</organization> | |||
| </author> | ||||
| <date day="11" month="July" year="2022"/> | ||||
| <abstract> | ||||
| <t> This document discusses the applicability of the QUIC transp | ||||
| ort | ||||
| protocol, focusing on caveats impacting application protocol | ||||
| development and deployment over QUIC. Its intended audience is | ||||
| designers of application protocol mappings to QUIC, and implementors | ||||
| of these application protocols. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-quic-applicability | ||||
| -17"/> | ||||
| </reference> | ||||
| <reference anchor="DOTS-ARCH"> | ||||
| <front> | ||||
| <title>DDoS Open Threat Signaling (DOTS) Architecture</title> | ||||
| <author fullname="A. Mortensen" initials="A." role="editor" surname= | ||||
| "Mortensen"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="T. Reddy.K" initials="T." role="editor" surname="R | ||||
| eddy.K"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="F. Andreasen" initials="F." surname="Andreasen"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="N. Teague" initials="N." surname="Teague"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="R. Compton" initials="R." surname="Compton"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="August" year="2020"/> | ||||
| <abstract> | ||||
| <t>This document describes an architecture for establishing and ma | ||||
| intaining Distributed Denial-of-Service (DDoS) Open Threat Signaling (DOTS) with | ||||
| in and between domains. The document does not specify protocols or protocol exte | ||||
| nsions, instead focusing on defining architectural relationships, components, an | ||||
| d concepts used in a DOTS deployment.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8811"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8811"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4937"> | ||||
| <front> | ||||
| <title>IANA Considerations for PPP over Ethernet (PPPoE)</title> | ||||
| <author fullname="P. Arberg" initials="P." surname="Arberg"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="V. Mammoliti" initials="V." surname="Mammoliti"> | ||||
| <organization/> | ||||
| </author> | </author> | |||
| <date month="June" year="2007"/> | <date month="September" year="2022"/> | |||
| <abstract> | ||||
| <t>This document describes the IANA considerations for the PPP ove | ||||
| r Ethernet (PPPoE) protocol. This memo provides information for the Internet co | ||||
| mmunity.</t> | ||||
| </abstract> | ||||
| </front> | </front> | |||
| <seriesInfo name="RFC" value="4937"/> | <seriesInfo name="RFC" value="9308"/> | |||
| <seriesInfo name="DOI" value="10.17487/RFC4937"/> | <seriesInfo name="DOI" value="10.17487/RFC9308"/> | |||
| </reference> | </reference> | |||
| <reference anchor="QUIC-RETRY"> | ||||
| <front> | ||||
| <title>QUIC Retry Offload</title> | ||||
| <author fullname="Martin Duke"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author fullname="Nick Banks"> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <date day="28" month="March" year="2022"/> | ||||
| <abstract> | ||||
| <t> QUIC uses Retry packets to reduce load on stressed servers, | ||||
| by | ||||
| forcing the client to prove ownership of its address before the | ||||
| server commits state. QUIC also has an anti-tampering mechanism to | ||||
| prevent the unauthorized injection of Retry packets into a | ||||
| connection. However, a server operator may want to offload | ||||
| production of Retry packets to an anti-Denial-of-Service agent or | ||||
| hardware accelerator. "Retry Offload" is a mechanism for | ||||
| coordination between a server and an external generator of Retry | ||||
| packets that can succeed despite the anti-tampering mechanism. | ||||
| </t> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </abstract> | FC.9287.xml"/> | |||
| </front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <seriesInfo name="Internet-Draft" value="draft-duke-quic-retry-offload | FC.3168.xml"/> | |||
| -00"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </reference> | FC.4787.xml"/> | |||
| <reference anchor="RFC2475"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <front> | FC.5382.xml"/> | |||
| <title>An Architecture for Differentiated Services</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <author fullname="S. Blake" initials="S." surname="Blake"> | FC.8811.xml"/> | |||
| <organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </author> | FC.4987.xml"/> | |||
| <author fullname="D. Black" initials="D." surname="Black"> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
| <organization/> | .ietf-quic-retry-offload.xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <author fullname="M. Carlson" initials="M." surname="Carlson"> | FC.2475.xml"/> | |||
| <organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </author> | FC.1812.xml"/> | |||
| <author fullname="E. Davies" initials="E." surname="Davies"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <organization/> | FC.4443.xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <author fullname="Z. Wang" initials="Z." surname="Wang"> | FC.8899.xml"/> | |||
| <organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </author> | FC.1191.xml"/> | |||
| <author fullname="W. Weiss" initials="W." surname="Weiss"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <organization/> | FC.8201.xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <date month="December" year="1998"/> | FC.8504.xml"/> | |||
| <abstract> | ||||
| <t>This document defines an architecture for implementing scalable | ||||
| service differentiation in the Internet. This memo provides information for th | ||||
| e Internet community.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="2475"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2475"/> | ||||
| </reference> | ||||
| <reference anchor="RFC1812"> | ||||
| <front> | ||||
| <title>Requirements for IP Version 4 Routers</title> | ||||
| <author fullname="F. Baker" initials="F." role="editor" surname="Bak | ||||
| er"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="June" year="1995"/> | ||||
| <abstract> | ||||
| <t>This memo defines and discusses requirements for devices that p | ||||
| erform the network layer forwarding function of the Internet protocol suite. [ST | ||||
| ANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="1812"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC1812"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4443"> | ||||
| <front> | ||||
| <title>Internet Control Message Protocol (ICMPv6) for the Internet P | ||||
| rotocol Version 6 (IPv6) Specification</title> | ||||
| <author fullname="A. Conta" initials="A." surname="Conta"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S. Deering" initials="S." surname="Deering"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="M. Gupta" initials="M." role="editor" surname="Gup | ||||
| ta"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="March" year="2006"/> | ||||
| <abstract> | ||||
| <t>This document describes the format of a set of control messages | ||||
| used in ICMPv6 (Internet Control Message Protocol). ICMPv6 is the Internet Con | ||||
| trol Message Protocol for Internet Protocol version 6 (IPv6). [STANDARDS-TRACK] | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="89"/> | ||||
| <seriesInfo name="RFC" value="4443"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4443"/> | ||||
| </reference> | ||||
| <reference anchor="DPLPMTUD"> | ||||
| <front> | ||||
| <title>Packetization Layer Path MTU Discovery for Datagram Transport | ||||
| s</title> | ||||
| <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="T. Jones" initials="T." surname="Jones"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="M. Tüxen" initials="M." surname="Tüxen"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="I. Rüngeler" initials="I." surname="Rüngeler"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="T. Völker" initials="T." surname="Völker"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="September" year="2020"/> | ||||
| <abstract> | ||||
| <t>This document specifies Datagram Packetization Layer Path MTU D | ||||
| iscovery (DPLPMTUD). This is a robust method for Path MTU Discovery (PMTUD) for | ||||
| datagram Packetization Layers (PLs). It allows a PL, or a datagram application t | ||||
| hat uses a PL, to discover whether a network path can support the current size o | ||||
| f datagram. This can be used to detect and reduce the message size when a sende | ||||
| r encounters a packet black hole. It can also probe a network path to discover w | ||||
| hether the maximum packet size can be increased. This provides functionality fo | ||||
| r datagram transports that is equivalent to the PLPMTUD specification for TCP, s | ||||
| pecified in RFC 4821, which it updates. It also updates the UDP Usage Guidelines | ||||
| to refer to this method for use with UDP datagrams and updates SCTP.</t> | ||||
| <t>The document provides implementation notes for incorporating Da | ||||
| tagram PMTUD into IETF datagram transports or applications that use datagram tra | ||||
| nsports.</t> | ||||
| <t>This specification updates RFC 4960, RFC 4821, RFC 6951, RFC 80 | ||||
| 85, and RFC 8261.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8899"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8899"/> | ||||
| </reference> | ||||
| <reference anchor="RFC1191"> | ||||
| <front> | ||||
| <title>Path MTU discovery</title> | ||||
| <author fullname="J.C. Mogul" initials="J.C." surname="Mogul"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S.E. Deering" initials="S.E." surname="Deering"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="November" year="1990"/> | ||||
| <abstract> | ||||
| <t>This memo describes a technique for dynamically discovering the | ||||
| maximum transmission unit (MTU) of an arbitrary internet path. It specifies a | ||||
| small change to the way routers generate one type of ICMP message. For a path t | ||||
| hat passes through a router that has not been so changed, this technique might n | ||||
| ot discover the correct Path MTU, but it will always choose a Path MTU as accura | ||||
| te as, and in many cases more accurate than, the Path MTU that would be chosen b | ||||
| y current practice. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="1191"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC1191"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8201"> | ||||
| <front> | ||||
| <title>Path MTU Discovery for IP version 6</title> | ||||
| <author fullname="J. McCann" initials="J." surname="McCann"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S. Deering" initials="S." surname="Deering"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="J. Mogul" initials="J." surname="Mogul"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="R. Hinden" initials="R." role="editor" surname="Hi | ||||
| nden"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="July" year="2017"/> | ||||
| <abstract> | ||||
| <t>This document describes Path MTU Discovery (PMTUD) for IP versi | ||||
| on 6. It is largely derived from RFC 1191, which describes Path MTU Discovery fo | ||||
| r IP version 4. It obsoletes RFC 1981.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="87"/> | ||||
| <seriesInfo name="RFC" value="8201"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8201"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8504"> | ||||
| <front> | ||||
| <title>IPv6 Node Requirements</title> | ||||
| <author fullname="T. Chown" initials="T." surname="Chown"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="J. Loughney" initials="J." surname="Loughney"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="T. Winters" initials="T." surname="Winters"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="January" year="2019"/> | ||||
| <abstract> | ||||
| <t>This document defines requirements for IPv6 nodes. It is expec | ||||
| ted that IPv6 will be deployed in a wide range of devices and situations. Specif | ||||
| ying the requirements for IPv6 nodes allows IPv6 to function well and interopera | ||||
| te in a large number of situations and deployments.</t> | ||||
| <t>This document obsoletes RFC 6434, and in turn RFC 4294.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="220"/> | ||||
| <seriesInfo name="RFC" value="8504"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8504"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| </references> | </references> | |||
| </back> | <section numbered="false" anchor="acknowledgments"> | |||
| <!-- ##markdown-source: | <name>Acknowledgments</name> | |||
| H4sIAAAAAAAAA+29bXcbR5Ym+D1+RY70wWQ3AJOyLMty185QL7bZJckska7a | <t>Special thanks to last call reviewers <contact fullname="Elwyn | |||
| 3jlz5iSBBJktIBOVmSDFcml++9znvkTcSICyuu3e3bPbPjNdIoCMjJcb9/0+ | Davies"/>, <contact fullname="Barry Leiba"/>, <contact fullname="Al | |||
| dzqdhqEeVtWz4k3ZlFdVeVmv6uGuaJfFcF0Vf/r59EVx0ZVNv2m7oTjr2qGd | Morton"/>, and <contact fullname="Peter Saint-Andre"/>.</t> | |||
| t6tQXl521c0z+T57MizaeVOuacBFVy6HaV0Ny+lft/V8uvY/mx4/DYtyqJ6F | <t>This work was partially supported by the European Commission under | |||
| Of3fq7a7e1bUzbINod50z4qh2/bDo6Ojb48ehffV3W3bLZ4Vp81QdU01TF9i | Horizon 2020 grant agreement no. 688421 Measurement and Architecture for | |||
| 5BD6oWwW/7NctQ297a7qw6Z+Vvx3muCk6Gm2XbXs6V93a/zjf4QQyu1w3XbP | a Middleboxed Internet (MAMI), and by the Swiss State Secretariat for | |||
| QlFM6f8X9L6elj0r/ritrlfVbd0s+GOZ/Zu6+9dy/FXbXT0rXnX1vO/bhj+p | Education, Research, and Innovation under contract no. 15.0268. This | |||
| 1mW9elas8evZ+/jr/1bpj2bzdp2/8PkMG7peV6uVe93zri6b/At+2Q9te7Wq | support does not imply endorsement.</t> | |||
| ivPbevhb1a1owcUP68sf/buxw/9t0Cdn82v+rqflVwM9T/tY3kx/2K5W07NV | </section> | |||
| OfytOObv53QGz4qnR0ePi/9rS3OVp+btthlwFO59ITRtty6H+oYOK+CM4l9F | <section numbered="false" anchor="contributors"> | |||
| cfHmZPqnn75/xk8rIZ02q7qpipflUPKRXXUgqPP6qilXfUGPF2dl39MAxZuq | <name>Contributors</name> | |||
| 7Lddta6aoTioG5DXfIYxi0dHx48PedB0aPhvqv97z17u/ODljHbgqloR7TX7 | <t>The following people have contributed significant text to and/or | |||
| f/F2Rnvf3jarquIvmCj5/dOjx/TJ6dnpm9HypnYNIkXmKym7/7O+KTZdtelq | feedback on this document:</t> | |||
| +vv4yfGj2dEjIuXPWBGR48kK093/9TuabXVDB3P3eRsylN0VyOB6GDb9sy+/ | <contact fullname="Chris Box"/> | |||
| LLsP9c2MKOvL8rL/Ms0sX/qT6fGj6dG39CHu9/Ti9M2rn36+yHaBL/7B6auL | <contact fullname="Dan Druta"/> | |||
| 76dPnxYX538uTrqqpBOsetoDoo+2+YzV/vOseNf27+16jWd7e3s7A3XzhDdE | <contact fullname="David Schinazi"/> | |||
| HFW1qJur/sunT7/sV/Wi6vV/aA7Tob8paQrT46PZZrHMF/TV9Ph4evQNffju | <contact fullname="Gorry Fairhurst"/> | |||
| +xffPDn6+pmt7d2rFz/9+dW7f3mGb7494p3gL3549+rk/BUd9/TlLPGwy3qY | <contact fullname="Ian Swett"/> | |||
| XtFb+krGevz462/pVkyn04I2lC7hnPjSxXXdF8QGt0wOi7qfb/u+6ov1vRx2 | <contact fullname="Igor Lubashev"/> | |||
| iBx2o6Q1oYtCj9FqQ9vwD+v1ZlXPeWd7PIwHv6D3VD3drAKM4bbu8DN6R0HP | <contact fullname="Jana Iyengar"/> | |||
| EFkS23xftJuqk6fo8t60qxsaM751uazpxp0OBc2YaLVqFtWiKPuiLB5s+6r7 | <contact fullname="Jared Mauch"/> | |||
| gie9LVcP+N5iGuklk0CTvalxIsXVtl6Uzbzin+VvbrueZ1fRBm54R27oNfj0 | <contact fullname="Lars Eggert"/> | |||
| 9rotump1V8gKA72Rd8U2Y1re0onG4ZbbZs7rmMmGr+vFYlWF8BDXsGsXW/42 | <contact fullname="Lucas Purdue"/> | |||
| BF7bL7/8V6Hddydvz89+enfxBznfo48fsdaSRr3ds+1huC55M6pmXm76LXFM | <contact fullname="Marcus Ihlar"/> | |||
| 2hBiTT+/PJvJrtXM0ujzvrh4fR7ii16f6yuO6RVDixG6u81QlKtVsSnvVm25 | <contact fullname="Mark Nottingham"/> | |||
| AEGWvBnrth+I22Leq8RTSVzIO+iG9/RXcVzclnbENA/iJ+uyq2nH+IjS9LHr | <contact fullname="Martin Duke"/> | |||
| P15cnE3oeIbrgHOii7hdDTgbW1txWeHP9w1xOwyAB778Ku4U/vxDTu24hx8/ | <contact fullname="Martin Thomson"/> | |||
| zsYULcdO6//EqTOV8mYK1fO6QqQ4HrBu5qttNg4t+bq9xe5hlztioQNv13ag | <contact fullname="Matt Joras"/> | |||
| O/O3qnA7xYMHnNSHTdvT5lzeKVW3TKc6nQltBK1FWLMQIgmf7XoT75FdwqA3 | <contact fullname="Mike Bishop"/> | |||
| CTuI3dtU8wGD2bpIoJYDRpnIKDiWeVfzQBgHEydhvyYStEdk6bpnxBrqOS32 | <contact fullname="Nick Banks"/> | |||
| tl7hKHCf6aM08ZlSLqizIepZTId2Sv+zh0q/w6RJq2m7alI0bbYtdcPHHw/9 | <contact fullname="Thomas Fossati"/> | |||
| uioXVZfdb1oUvX+9HcpLUi3o9W6/5Ghws+kYiUvRvyuMPsdz1127vbrWGwAe | <contact fullname="Sean Turner"/> | |||
| hrdUc9uBnD2AsP5y+u7V9PTNyQ+vcDeefv34CcjpldwMfYqvQrrzq/KOpqtX | </section> | |||
| o+hZawDZrqvSKGpV9b1fM6jgpu5rrCY/ffy+wdrx2Zy4tpzuxYsz2u3TfcuY | </back> | |||
| 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 | ||||
| stmTLAQBAA== | ||||
| </rfc> | </rfc> | |||
| End of changes. 201 change blocks. | ||||
| 1773 lines changed or deleted | 546 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||