rfc-9287

Greasing the QUIC Bit

M. Thomson
date2022-08 streamIETF areawit wgquic statusPROPOSED STANDARD pages6 canonicalhttps://www.rfc-editor.org/rfc/rfc9287 doi10.17487/RFC9287
This document describes a method for negotiating the ability to send an arbitrary value for the second-most significant bit in QUIC packets.

Extracted elements (15)

design-rationale §3.2

Extensions that define semantics for the QUIC Bit can be negotiated without using the grease_quic_bit transport parameter, but including both extensions allows the QUIC Bit to be greased even when the alternative use is not supported by the peer.

quic

design-rationale §3.1

The 7-day limit on using a prior server NEW_TOKEN to pre-clear the QUIC Bit accommodates server configuration changes. If the server's configuration changes and removes grease_quic_bit support, a client that still clears the bit could cause the server to drop packets and trigger connection failures.

quic

design-rationale §1

The QUIC Bit (second-most significant bit of the first byte, value 0x40) has a fixed value in QUIC version 1 to allow endpoints to efficiently distinguish QUIC from other protocols. If systems come to depend on this fixed value, it could become infeasible to define a future QUIC version that attributes semantics to the bit, motivating the greasing mechanism.

quic

interoperability-note §3.1

Endpoints can set the QUIC Bit to 0 on all packets sent after receiving and processing transport parameters, including Initial, Handshake, and Retry packets. This applies once negotiation is confirmed through transport parameter exchange.

quic

interoperability-note §3.2

When an extension uses the QUIC Bit alongside grease_quic_bit, recipients must distinguish a randomized value from one carrying extension-defined semantics. The extension should require endpoints to set the bit per its rules but defer acting on the information until the extension's own transport parameter is received.

quic

normative-requirement §3.1 MUST NOT

A client MAY set the QUIC Bit to 0 in Initial, Handshake, or 0-RTT packets sent prior to receiving server transport parameters, but MUST NOT do so unless the Initial packets include a NEW_TOKEN frame token received from the server less than 604800 seconds (7 days) prior on a connection where the server also included grease_quic_bit.

quic

normative-requirement §3.1 MUST NOT

A server MUST set the QUIC Bit to 0 only after processing transport parameters from a client, and MUST NOT remember that a client negotiated the extension in a previous connection and set the QUIC Bit to 0 based on that cached information.

quic

normative-requirement §3.1 MUST NOT

An endpoint MUST NOT set the QUIC Bit to 0 without knowing whether the peer supports the extension. Stateless Reset packets are unlikely to be able to use the cleared QUIC Bit since they are only used after loss of connection state.

quic

normative-requirement §3 MUST

An endpoint that advertises the grease_quic_bit transport parameter MUST accept packets with the QUIC Bit set to a value of 0.

quic

normative-requirement §3.1 SHOULD

Endpoints that receive the grease_quic_bit transport parameter from a peer SHOULD set the QUIC Bit to an unpredictable value unless another extension assigns specific meaning to the value of the bit.

quic

normative-requirement §3.2 MUST

Extensions to QUIC that define semantics for the QUIC Bit MUST negotiate their use prior to acting on any semantic, to avoid acting on a randomized (greased) value.

quic

normative-requirement §3 MUST

Receipt of a non-empty value of the grease_quic_bit transport parameter MUST be treated as a connection error of type TRANSPORT_PARAMETER_ERROR.

quic

protocol-element §3

The grease_quic_bit transport parameter (codepoint 0x2ab2) is defined for QUIC version 1 and can be sent by both client and server. It is sent with an empty value; receipt of a non-empty value MUST be treated as a TRANSPORT_PARAMETER_ERROR connection error.

quic

registry §5

The grease_quic_bit transport parameter is registered in the IANA 'QUIC Transport Parameters' registry with value 0x2ab2, status Permanent, per RFC 9287.

quic, registry

security-consideration §4

Greasing the QUIC Bit introduces no new security considerations for endpoints or cooperating entities, but makes identifying QUIC traffic more difficult without endpoint cooperation. This works counter to the security goals of network operators who rely on traffic classification to identify threats.

quic, security, privacy