Skip to main content

QUIC Bandwidth Delay Product Tokens
draft-misell-quic-bdp-token-02

Document Type Active Internet-Draft (individual)
Author Q Misell
Last updated 2024-01-22
RFC stream (None)
Intended RFC status (None)
Formats
Additional resources GitHub Repository
Related Implementations
Related Implementations
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-misell-quic-bdp-token-02
QUIC                                                           Q. Misell
Internet-Draft                                                  AS207960
Intended status: Standards Track                         22 January 2024
Expires: 25 July 2024

                  QUIC Bandwidth Delay Product Tokens
                     draft-misell-quic-bdp-token-02

Abstract

   This document describes a method to store previously calculated
   Congestion Control parameters on a QUIC client to allow additional
   capacity on high Bandwidth Delay Product paths to be used with
   Careful Resume.

Discussion

   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/theenbyperor/quic-bdp-token.

Status of This Memo

   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 25 July 2024.

Copyright Notice

   Copyright (c) 2024 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.

Misell                    Expires 25 July 2024                  [Page 1]
Internet-Draft               QUIC BDP Tokens                January 2024

   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.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   2
   2.  BDP Tokens  . . . . . . . . . . . . . . . . . . . . . . . . .   2
     2.1.  Client interaction  . . . . . . . . . . . . . . . . . . .   4
     2.2.  Invalid BDP tokens  . . . . . . . . . . . . . . . . . . .   4
   3.  Extension signalling  . . . . . . . . . . . . . . . . . . . .   4
   4.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   5
     4.1.  QUIC Transport Parameters . . . . . . . . . . . . . . . .   5
     4.2.  QUIC Transport Error Codes  . . . . . . . . . . . . . . .   5
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .   5
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   5
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .   6
     6.2.  Informative References  . . . . . . . . . . . . . . . . .   6
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   6

1.  Introduction

   This document describes a method for a QUIC server to send calculated
   Congestion Control parameters to a client for storage and later use
   on a future connection with Careful Resume
   [I-D.ietf-tsvwg-careful-resume].  It also allows the client to
   inspect CC parameters, and allows the client not use them with new
   connections if its aware of a change in the BDP of the path.

1.1.  Requirements Language

   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 [BCP14] when, and only
   when, they appear in all capitals, as shown here.

2.  BDP Tokens

   The address validation token is overloaded to also store Congestion
   Control information.  This has the neat advantage that a QUIC client
   unaware of this document will still be able to make use of this
   specification without modification.  QUIC [RFC9000] defines an
   address validation token as an opaque blob that the client should not
   inspect.  This document extends this by providing some structure to
   the token, whilst still providing fields for server specific

Misell                    Expires 25 July 2024                  [Page 2]
Internet-Draft               QUIC BDP Tokens                January 2024

   information that is opaque to the client.

   The format of a token containing BDP information is defined as
   follows:

   BDP Token {
       Address Validation Length (i),
       Address Validation (..),
       Congestion Control Data Length (i),
       Congestion Control Data Value (..),
       Capacity (i),
       RTT (i),
       Requested Capacity (i)
   }

                            Figure 1: BDP Token

   The fields are as follows:

   Address Validation Length  A variable-length integer specifying the
      length of the Address Validation field, in bytes.  A value of 0
      indicates that the server is not using address validation and is
      using the token purely for CC information.

   Address Validation  Opaque information specific to the server that it
      will use for address validation.  The construction of this field
      MUST comply with the requirements of QUIC [RFC9000] section 8.1.

   Congestion Control Data Length  A variable-length integer specifying
      the length of the Congestion Control Data field, in bytes.  A
      value of 0 indicates that the server does not intend to store
      Congestion Control data on the client, and that the Saved Capacity
      and Saved RTT fields are merely informative.

   Congestion Control Data  Opaque information specific to the server
      that it will use to prime its congestion controller state.  This
      field SHOULD contain expiration/lifetime information, and any
      additional information that the server may need to validate that
      the same path is being used, such as an endpoint token as defined
      in Careful Resume [I-D.ietf-tsvwg-careful-resume].  The data MUST
      be signed, or otherwise protected against modification by the
      client.

   Capacity  The estimated capacity of the path in bytes, encoded as a
      variable-length integer.  The exact Congestion Control state value
      used to fill this field is left to server preference.

   RTT  The RTT of the path in microseconds, encoded as a variable-

Misell                    Expires 25 July 2024                  [Page 3]
Internet-Draft               QUIC BDP Tokens                January 2024

      length integer.  The exact Congestion Control state value used to
      fill this field is left to server preference.

   Requested Capacity  In a token sent by the server, this field is set
      to the same value as the Capacity field.  If the client becomes
      aware of a change in the available bandwidth of the path, it can
      adjust this field to request a lower capacity be used by the
      server when priming its congestion controller state.

   The Capacity and RTT fields are merely hints to the client and the
   server MUST not use these fields when priming its congestion
   controller state.  If it wishes to use these parameters it will have
   to also include them in its CC Data structure, as data in this field
   is protected against modification by the client.

2.1.  Client interaction

   If the client becomes aware of a change in the available bandwidth of
   the path, it can use the Requested Capacity field to signal to the
   server a change it its available bandwidth.  The server MUST not
   accept a value higher than that of the Capacity field, as this could
   cause an overload of the network path.

   If the client sets the Requested Bandwidth field to 0 then it is
   signalling that the server should not attempt to prime its congestion
   controller from previous state and should instead treat this
   connection as an entirely new congestion control context.

2.2.  Invalid BDP tokens

   If the server is unable to decode the token received from the client
   as a valid BDP token then this MUST be treated as a connection error
   BDP_TOKEN_ERROR (0x4143414213370002).  A token which is merely
   expired MUST NOT trigger a connection error, instead it should be
   silently discarded.

3.  Extension signalling

   The server can send the above extended BDP token to all clients
   without further negotiation.  However a client needs some way to know
   that there is meaningful structure to a token its received from the
   server.  To this end a new transport parameter is defined.

   bdp_token (0x4143414213370002)  The bdp_token transport parameter is
      a boolean value that indicates that the server is using BDP
      tokens.  It can have the following values:
      - 0, default value: BDP Tokens are not in use.
      - 1: BDP Tokens are in use.

Misell                    Expires 25 July 2024                  [Page 4]
Internet-Draft               QUIC BDP Tokens                January 2024

4.  IANA Considerations

4.1.  QUIC Transport Parameters

   Per this document, one new entry has been added to the "QUIC
   Transport Parameters" registry defined in [RFC9000] section 22.3.
   This entry is defined below:

   +====================+=============+===============+================+
   | Value              | Status      | Specification | Parameter      |
   |                    |             |               | name           |
   +====================+=============+===============+================+
   | 0x4143414213370002 | Provisional | This document | bdp_frame      |
   +--------------------+-------------+---------------+----------------+

                            Table 1: New entries

4.2.  QUIC Transport Error Codes

   Per this document, one new entry has been added to the "QUIC
   Transport Error Codes" registry defined in [RFC9000] section 22.5.
   This entry is defined below:

   +==================+===========+===============+===========+=============+
   |Value             |Status     |Code           |Description|Specification|
   +==================+===========+===============+===========+=============+
   |0x4143414213370002|Provisional|BDP_TOKEN_ERROR|The BDP    |This document|
   |                  |           |               |token      |             |
   |                  |           |               |received   |             |
   |                  |           |               |from the   |             |
   |                  |           |               |client is  |             |
   |                  |           |               |invalid.   |             |
   +------------------+-----------+---------------+-----------+-------------+

                            Table 2: New entries

5.  Security Considerations

   The Congestion Control Data field MUST be protected against
   manipulation by malicious or mis-behaving clients.  A client that can
   modify Congestion Control calculations could cause an overload of the
   network path.

   The Capacity and RTT fields are hints to the client and not protected
   from modification by a client.  The server MUST ignore these when
   processing a received BDP token.

6.  References

Misell                    Expires 25 July 2024                  [Page 5]
Internet-Draft               QUIC BDP Tokens                January 2024

6.1.  Normative References

   [BCP14]    Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

              Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, May 2017.

              <https://www.rfc-editor.org/info/bcp14>

   [RFC9000]  Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
              Multiplexed and Secure Transport", RFC 9000,
              DOI 10.17487/RFC9000, May 2021,
              <https://www.rfc-editor.org/info/rfc9000>.

6.2.  Informative References

   [I-D.ietf-tsvwg-careful-resume]
              Kuhn, N., Emile, S., Fairhurst, G., and C. Huitema,
              "Convergence of Congestion Control from Retained State",
              Work in Progress, Internet-Draft, draft-ietf-tsvwg-
              careful-resume-04, 24 October 2023,
              <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-
              careful-resume-04>.

Author's Address

   Q Misell
   AS207960 Cyfyngedig
   13 Pen-y-lan Terrace
   Caerdydd
   CF23 9EU
   United Kingdom
   Email: q@as207970.net, q@magicalcodewit.ch
   URI:   https://magicalcodewit.ch

Misell                    Expires 25 July 2024                  [Page 6]