Internet-Draft | Priming QUIC with Peer Hints | March 2023 |
Blanchet | Expires 9 September 2023 | [Page] |
Abstract¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 9 September 2023.¶
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Long delay networks such as in space communications may possibly use the IP protocol as IP as no notion of delivery time. However, it requires that the transport and application layers work properly in the context of long delays. In space radio communications, it is typical to have delays in order of multiple minutes and maybe hours. This document describes a configuration profile for QUIC and HTTP3 implementations to properly work in these scenarios. It can also be used for any use case where some initial QUIC parameters should be changed from the defaults.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
A QUIC stack is primed with a config that defines various parameters for a destination, so that the QUIC stack converges faster. For example, when a network is known to be "far", with a large and known in advance latency, such as in space, the QUIC stack is primed with an initial RTT of that destination, for example 20 minutes, so that the QUIC RTT calculation is converging much faster and does not generate a lot of useless retransmits and does not timeout. It should be noted that these priming values are just hints and the QUIC stack may decide to not honor them, or to use more prudent values. For example, if the value is very large, the QUIC stack may decide to start with half of the proposed value.¶
The properties and their values are as follows. All values must follow the maximums specified in their corresponding definitions in QUIC RFCs.¶
The values are expressed in a JSON object, typically stored as a file.¶
The top-level properties are as follows:¶
The following is an example:¶
<CODE BEGINS> { "type": "quicPeerHints", "version": 1, "lastUpdated": "2025-01-17T23:20:50Z", "quicHints": [ { "destination": "2001:db8:1234::/48", "initial_rtt": 600000, "max_idle_timeout": 1500000, "active_connection_id_limit": 100000 }, { "destination": "192.0.2.0/24", "initial_rtt": 30000, "max_idle_timeout": 100000, "active_connection_id_limit": 10000 } ] } <CODE ENDS>¶
The mechanism to distribute such configuration to the QUIC stack is undefined in this document. For the use case that triggered this work, space networking, it is expected that these configuration will be fairly static, loaded in advance and very seldomly need to be updated. However, other use cases may require updates more often and therefore may need a protocol to distribute such configuration. A possible candidate protocol to update this configuration is [RFC8175] but that would apply to networks reachable via a single link where all the characteristics are inherited from that link.¶
Similarly to typical forwarding and routing algorithms, if a destination address matches multiple address prefixes, the most specific prefix will be used as a match. In case multiple prefixes have the same length, the last one encountered while parsing the file is the one used as a match¶
Some configuration values are defined in this document. However, it is possible that other parameters might need to be added in the future. Therefore, an IANA registry of values is defined to support future definition of parameters. The actual possible values or range of values for a specific parameter is not shown in the IANA registry. Discussion on the semantics of the parameter, its possible values, etc... must be in the referenced document. The IANA registry only contains the JSON syntax useful for a JSON parser.¶
TBD. policy: specification required and expert review.¶
columns: JSON property name, JSON object type, reference¶
If a QUIC stack is configured by this mechanism with a bad configuration, it may result in a denial-of-service attack, as for example, putting very low timeouts that would trigger timeouts for some or all networks, therefore denying any connection. To minimize those issues, the QUIC stack should accept values only within a certain range, that makes sense for the use cases of the QUIC stack. Moreover, while the destination values of :: or 0.0.0.0/0 are permitted by this document, the QUIC stack may disable these values as they would be applied to all destinations: in such case, some messages should be logged.¶
a list of TODOs and comments not yet resolved in this version¶
This work is based on extensive testing of QUIC and HTTP3 implementations and working closely with implementers. There are acknowledged here: Martin Thompson, Christian Huitema, Ian Swett, Michael Bishop. It is also the result of initial discussions with Eric Kinnear, Maxime Piraux, François Michel. All bad ideas are from the author.¶
This document has been reviewed and commented by the following people, in no particular order: Martin Thompson, Lucas Purdue, Christian Huitema.¶