Internet DRAFT - draft-kuhn-quic-careful-resume
draft-kuhn-quic-careful-resume
Internet Engineering Task Force N. Kuhn
Internet-Draft Thales Alenia Space
Intended status: Informational E. Stephan
Expires: 11 January 2023 Orange
G. Fairhurst
T. Jones
University of Aberdeen
C. Huitema
Private Octopus Inc.
10 July 2022
Careful resumption of congestion control from retained state with QUIC
draft-kuhn-quic-careful-resume-02
Abstract
This document discusses careful resumption of congestion control
parameters in QUIC with a cautious method that enables faster startup
of new connections.
The method uses a set of computed congestion control parameters that
are based on the previously observed path characteristics, such as
the bottleneck bandwidth, available capacity, or the RTT. These
parameters are stored and can then used to modify the congestion
control behaviour of a subsequent connection. The draft discusses
assumptions around how a server ought to utilise these parameters to
provide opportunities for a new connection to more quickly get up to
speed (i.e. utilise available capacity). It discusses how these
changes impact the capacity at a shared network bottleneck and the
response that is needed after any indication that the new rate is
inappropriate.
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."
Kuhn, et al. Expires 11 January 2023 [Page 1]
Internet-Draft Careful resumption of congestion control July 2022
This Internet-Draft will expire on 11 January 2023.
Copyright Notice
Copyright (c) 2022 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.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Language, notations and terms . . . . . . . . . . . . . . . . 5
2.1. Requirements Language . . . . . . . . . . . . . . . . . . 5
2.2. Notations and Terms . . . . . . . . . . . . . . . . . . . 5
3. Scenarios of Interest . . . . . . . . . . . . . . . . . . . . 6
3.1. Large BDP Scenarios . . . . . . . . . . . . . . . . . . . 6
3.2. Accomodating from a Known Reduction in Capacity . . . . . 6
3.3. Optimizing Client Requests . . . . . . . . . . . . . . . 7
3.4. Sharing Transport Information across Multiple
Connections . . . . . . . . . . . . . . . . . . . . . . . 7
3.5. Connection Establishment, Client and Server . . . . . . . 7
4. The Phases of CC . . . . . . . . . . . . . . . . . . . . . . 8
5. Safe Jump . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.1. Rationale behind the Safety Guidelines . . . . . . . . . 9
5.2. Rationale #1: Variable Network Conditions . . . . . . . . 10
5.3. Rationale #2: Malicious clients . . . . . . . . . . . . . 11
5.4. Trade-off between the different solutions . . . . . . . . 12
5.4.1. Interoperability and Use Cases . . . . . . . . . . . 12
5.4.2. Summary . . . . . . . . . . . . . . . . . . . . . . . 13
6. Safety Guidelines . . . . . . . . . . . . . . . . . . . . . . 14
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17
9. Security Considerations . . . . . . . . . . . . . . . . . . . 17
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 17
10.1. Normative References . . . . . . . . . . . . . . . . . . 17
10.2. Informative References . . . . . . . . . . . . . . . . . 18
Appendix A. Implementation Considerations . . . . . . . . . . . 19
A.1. Rationale behind the different implementation options . . 19
A.2. Independent Local Storage of Values . . . . . . . . . . . 20
A.3. Using NEW_TOKEN frames . . . . . . . . . . . . . . . . . 20
Kuhn, et al. Expires 11 January 2023 [Page 2]
Internet-Draft Careful resumption of congestion control July 2022
A.4. BDP Frame . . . . . . . . . . . . . . . . . . . . . . . . 21
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21
1. Introduction
All Internet transports are required to use a CC method. In 2010,
RFC 5783 provided a survey of alternative CC methods, and noted that
there are challenges when a CC operates across an Internet path with
a high and/or variable bandwidth-delay product (BDP) [RFC5783].
A CC algorithm typically takes time to ramp-up the packet rate,
called the "slow-start phase", informally known as the time to "Get
up to speed". The slow start phase is a period in which a sender
intentionally uses less capacity than might be available with the
intention to avoid overshooting the actual capacity at a bottleneck,
which would result in increased queueing (latency/jitter) and/or
congestion packet loss. An overshoot in the capacity can have a
detrimental effect on other flows sharing a common bottleneck. In
the extreme case, persistent congestion can result in unwanted
starvation of other flows [RFC8867] (i.e. Preventing other flows
from successfully sharing a common bottleneck).
In Reno, the slow-start phase consists of a sequence of increases in
the congestion window (cwnd) starting from the Initial Window (IW).
Each step lasts approximately one path RTT, until the sender
estimates that the capacity at the bottleneck for the path has been
(or is nearing) reached.
To fully-utilise the capacity along a path with a certain RTT, the
transport needs to determine an appropriate volume of bytes in
flight, based on the product of the available capacity and the path
RTT. [RFC6349] defines the BDP as follows: "Derived from Round-Trip
Time (RTT) and network Bottleneck Bandwidth (BB), the Bandwidth-Delay
Product (BDP) determines the Send and Received Socket buffer sizes
required to achieve the maximum TCP Throughput." The BDP estimated
by a server includes all buffering experienced along a network path.
Various approaches are possible to determine the BDP, based on
measurements of the path characteristics. [RFC6349] specifies one
procedure for TCP. CC for QUIC is specified in [RFC9002] and does
not specify a required method to measure the BDP, allowing the sender
to implement an appropriate method.
Kuhn, et al. Expires 11 January 2023 [Page 3]
Internet-Draft Careful resumption of congestion control July 2022
The specification for the QUIC transport protocol [RFC9000] notes
"Generally, implementations are advised to be cautious when using
previous values on a new path." The method uses a set of computed
Congestion Control (CC) parameters that are based on the previously
observed path characteristics, such as the bottleneck bandwidth,
available capacity, or the Round Trip Time (RTT). These parameters
are stored and can then used to modify the CC behaviour of a
subsequent connection.
This document specifies a method that can improve throughput by
reducing the time to get up to speed, and hence the total duration of
a transfer. It introduces an alternative method to select initial CC
parameters, including a way to more rapidly and safely grow the cwnd.
There are scenarios where temporal sharing of previously parameters
relating to observed path characteristics, such as the bottleneck
bandwidth or RTT, can help to save round-trip times at the start of a
new connection. For example:
1. To optimize applications that use a series of short connections
over the same path, each of which needs to individually learn the
available capacity/rtt;
2. After a pause in transmission (e.g., when transmission pauses,
and then the transport protocol wishes to connect over the same
path);
3. To connect after a service disruption where the network service
was temporarily reduced (e.g. due to a link propagation
impairment, or where a user on a train journey travels through
different areas of connectivity before the user returns to a path
with the original characteristics).
In these cases, specific characteristics of the path may have been
learned, including CC information. This information might be
expected to be similar when a new connection is made between the same
local and remote endpoints.
While a server could take optimization decisions without considering
the client's preference, in some cases a client could have
information that is not available at the server. A client may
provide hints, for example: (1) an indication that the path/local
interface has changed; (2) information related to current hardware
limitations of the client or (3) an understanding about the capacity
needs of other concurrent flows that would compete for shared
capacity. As a result, a client could explicitely ask for tuning the
slow start when the application continues transmission, or to inhibit
tuning. This is discussed further later in the document.
Kuhn, et al. Expires 11 January 2023 [Page 4]
Internet-Draft Careful resumption of congestion control July 2022
There are also cases where using the parameters of a previous
connection are not appropriate, and a need to evaluate the potential
for malicious use of the method.
The remainder of this document:
1. discusses use-cases where carefully resuming QUIC connections is
expected to have benefit;
2. proposes guidelines for how to carefully utilise the previously
stored CC information;
3. describes implementation considerations for the proposed method
using QUIC;
4. discusses the trade-offs associated with the different
implementation solutions.
2. Language, notations and terms
This section provides a brief summary of key terms and the
requirements language that is used. The document uses language drawn
from a range of IETF RFCs.
2.1. Requirements Language
The keywords "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.
2.2. Notations and Terms
This document defines current, and saved values for a set of CC
parameters:
* IW: Initial Window [RFC9002];
* current_iw: Current IW;
* recom_iw: Recommended IW;
* current_bb : Current estimated bottleneck bandwidth;
* saved_bb: Estimated bottleneck bandwidth preserved from a previous
connection;
Kuhn, et al. Expires 11 January 2023 [Page 5]
Internet-Draft Careful resumption of congestion control July 2022
* current_rtt: Current RTT;
* saved_rtt: RTT measure RTT preserved from a previous connection;
* client_ip : IP address of the client;
* current_client_ip : Current IP address of the client;
* saved_client_ip : IP address of a previous connection by the
client;
* remembered BDP parameters: a combination of saved_rtt and saved_bb
Congestion controllers, such as CUBIC or RENO, could estimate the
saved_bb and current_bb values by utilizing a combination of the
cwnd/flight_size and the minimum RTT. A different method could be
used to estimate the same values when using a rate-based congestion
controller, such as BBR [I-D.cardwell-iccrg-bbr-congestion-control].
It is important to consider whether the methods could result in over-
estimating the bottleneck bandwidth, and the preserved values ought
to be used with caution.
3. Scenarios of Interest
3.1. Large BDP Scenarios
QUIC introduces the concept of transport parameters (section 4 of
[RFC9000]). This document notes that a new connection can utilise a
set of key transport parameters from a previous connection to reduce
the completion time for a transfer with a size much larger than the
IW over paths where the available capacity is also significantly
larger than the IW. This benefit is particularly evident for a path
where the RTT is much larger than for typical Internet paths.
For example, a satellite access network, a 5.3 MB transfer takes up
to 9 seconds using standard congestion control, whereas using the
specified method this could reduce to 4 seconds [IJSCN]; and the time
to complete a 1 MB transfer could be reduced by 62 % [MAPRG111].
Benefits is also expected for other sizes of transfer and for
different path characteristics that also result in a higher BDP.
3.2. Accomodating from a Known Reduction in Capacity
A transport protocol is not able to assume that the path
characteristics remain the same. Variation can arise from a
combination of various factors:
Kuhn, et al. Expires 11 January 2023 [Page 6]
Internet-Draft Careful resumption of congestion control July 2022
* Competing network traffic sharing a common bottleneck can result
in short or long term variation;
* Changes in the forward path can change the set of links/routers
over forming the path (from routing/mobility/circuit restoration/
interface change), resulting in a change in the bandwidth and the
other traffic that shares a bottleneck on the path;
* Link conditions can change, resulting in a change of the
bottleneck bandwidth (e.g., as a result of changes in propagation
conditions or sharing of a medium);
* Application/endpoint behavior can change the capacity available to
a flow.
Although a transport protocol can have information about a previously
used path, the path characteristics can change, and previous
information may not be appropriate when a new connection uses the
path.
In some cases (e.g., after a change in the interface used by the
local endpoint), a client may be aware of such a change, and might be
able to infer that a previously available path has again become
available. However, to safetly utilise the previous information, the
client would need assurance that the path was to the same endpoint,
and that the characteristics have not significantly changed from
those previously measured. When the path is expected to be the same,
there is then an opportunity to reduce the time to get up to speed by
utilising saved CC information for the path.
3.3. Optimizing Client Requests
3.4. Sharing Transport Information across Multiple Connections
There can be benefit in sharing transport information across multiple
concurrent connections. [RFC9040] considers the sharing of transport
parameters between TCP connections that originate from a host. The
proposal in this document has the advantage of storing server-
generated information at the client and not requiring the server to
retain additional state for each client.
3.5. Connection Establishment, Client and Server
In the previously detailed scenarios, the application data transfer
was unidirectional towards the client, i.e., the main flow of data
was from a server to a client (e.g., downloading a file or web page).
This is the focus of the current version of the document.
Kuhn, et al. Expires 11 January 2023 [Page 7]
Internet-Draft Careful resumption of congestion control July 2022
In a different example, the application data transfer can be
unidirectional towards the server, e.g., uploading an image/video is
a server.
There are also use cases where a client initiates a connection for a
bidirectional service where both endpoints send data to each other,
such as to support a remote executing application, or a video
conference call.
In general, the guidelines proposed in this document apply when a
congestion controller is sending data to a remote peer and that
remote endpoint resumes the connection. Both endpoints can assume
the role of a client or a server.
4. The Phases of CC
This document defines a series of different phases through which the
CC algorithm moves as a connection gets up to speed. The phases are
labelled as follows:
1. Observe: During a previous connection, the current RTT
(current_rtt), bottleneck bandwidth (current_bb) and current
client IP (current_client_ip) are stored as saved_rtt, saved_bb
and saved_client_ip;
2. Reconnaissance: When an application resumes between the same pair
of IP addresses, the server measures the path characteristics of
a new connection to confirm the path appears to be similar to
that observed previously (e.g., a similar RTT). The server also
seeks assurance that initial data is not lost, to avoid resuming
under congested conditions.
3. Unvalidated: Utilise the saved path characteristics to send at a
rate higher than allowed by slow start. The convergence towards
the previous rate is expected be faster than when using
traditional slow-start mechanisms, but should not be
instantaneous, to avoid adding congestion to an already congested
bottleneck.
1. If the unvalidated rate was used without inducing noticeable
congestion to the path, the sender is permitted to continue
at this rate in the 'Normal' phase.
2. If the validation phase determines that previous parameters
are not valid (due to a change) or congestion was
experienced, the sender must withdraw rapidly to a safe rate,
before it enters the 'Normal' phase.
Kuhn, et al. Expires 11 January 2023 [Page 8]
Internet-Draft Careful resumption of congestion control July 2022
4. Normal: Resume using the normal CC method.
5. Safe Jump
This section introduces the rationale behind safety guidelines
related to the usage of previous values on a new path: variable
network conditions and malicious client.
The "variable network conditions" related to the fact that previously
measured values may not remaib relevant and should be exploited
cautiously by a CC algorithm.
The "malicious client" relates to the fact that a malicious client
could try to send malicious information to a server. Three
approaches are then introduced and compared : either (1) all the
information related to previous connections is stored at the server
and never send to a client ("Local storage"), (2) some information is
transmited to a client that can use it when reconnecting but the
client cannot read the information received from the server ("NEW
TOKEN"), or (3) some information is transmitted to a client that can
use it when reconnecting and the client can read it to accept or not
the exploitation of previous congestion information (a.k.a. "BDP
extension").
5.1. Rationale behind the Safety Guidelines
NOTE: The sender ought not to re-utilise all the capacity it
previously used, to avoid starving other flows that started or
increased their capacity after the last measurement. How strong
should this be stated: ... MUST or SHOULD ... What safety factor is
appropriate for the resuming sender? If using slow-start it would
anyway double the rate on the next RTT, so is capacity/2 appropriate
to initially try?
A new connection MUST NOT use the previously measured saved_rtt and
saved_bb to simply initialise a new flow to resume sending at the
same rate.
Kuhn, et al. Expires 11 January 2023 [Page 9]
Internet-Draft Careful resumption of congestion control July 2022
* Rationale #1: Bottleneck bandwidth and network traffic can change
at any time. An Internet method needs to be robust to network
conditions that can differ from one connection to the next, due to
variations in the forwarding path, reconfiguration of equipment or
changes in the link conditions. An Internet method needs to be
robust to changes in network traffic, including the arrival of new
traffic flows that compete for the bottleneck capacity.
Behaviours need to be designed that avoid sending excessive data
into a congestion bottleneck because this can have a material
impact on any flows using that bottleneck, and the ability of
those flows to control their own sending rate.
* Rationale #2: Information sent by a malicious client is not
relevant. A client could request a server to use a cwnd higher
than appropriate, to gain an unfair share of capacity for itself
or to induce congestion for other flows. A server might anyway
decide whether to fully use the new allowed rate.
5.2. Rationale #1: Variable Network Conditions
The server MUST check the validity of any received saved_rtt and
saved_bb parameters, whether these are sent by a client or are stored
at the server. The following events indicates cases where the use of
these parameters is inappropriate:
* IP address change: If the client changes its local IP address
(i.e., the saved_client_ip is different from the
current_client_ip), the different source address is a assumed an
indication of a different network path. This new path does not
necessarily exhibit the same characteristics as the old one. If
the server changes its IP address after a migration, it would not
be safe to exploit previously estimated parameters.
* RTT change: A significant change in RTT might be an indication
that the network conditions have changed. Since the CC
information is directly impacted by the RTT, a significant change
in the RTT is a strong indication that the previously estimated
BDP parameters are likely to not be valid for the current path.
NOTE: This document needs to define a significant change.
* Lifetime of the information: The CC information is temporal.
Frequent connections to the same IP address are likely to track
changes, but long-term use of previous values is not appropriate.
NOTE: This document needs to define how long.
* BB over-estimation: There are cases where using a measured cwnd
would inflate the bottleneck bandwidth. At the end of the CC slow
start phase, the value of cwnd can be significantly larger than
Kuhn, et al. Expires 11 January 2023 [Page 10]
Internet-Draft Careful resumption of congestion control July 2022
the minimum value needed to utilise the path (i.e., cwnd
overshoot). In most case, the cwnd finally converges to a stable
value after a few more RTTs. It would be inappropriate to use an
overshoot in the cwnd as a basis for estimating the bottleneck
bandwidth. NOTE: One mitigation could be to further restrict to
only a fraction (e.g., 1/2) of the previously used cwnd; another
mitigation might be to calculate the bottleneck bandwidth based on
the flight_size or an averaged cwnd.
* Preventing Starvation of New Flows: It would not be appropriate to
fully use a bottleneck bandwidth estimate based on a previous
measurement of capacity, because new flows might have started
using the available capacity since that measurement was made. The
mitigation could be to restrict to only a fraction (e.g., 1/2) of
the previously used cwnd.
There are several solutions to mitigate the impact of changes in
network conditions:
* Rationale #1 - Solution #1 : When resuming, restore the current_bb
and current_rtt from the saved_bb and saved_rtt parameters
estimated from a previous connection.
* Rationale #1 - Solution #2 : When resuming, implement a safety
check to measure avoid using the saved_bb and saved_rtt parameters
to cause congestion over the path. In this case, the current_bb
and current_rtt might not be set directly to the saved_bb and
saved_rtt: the server might wait for the completion of the safety
check before this is done.
Section 6 describes various approaches for Rationale #1 - Solution
#2.
5.3. Rationale #2: Malicious clients
The server MUST check the integrity of the saved_rtt and saved_bb
parameters received from a client.
There are several solutions to avoid attacks by malicious clients:
* Rationale #2 - Solution #1 : The server stores a local estimate of
the bottleneck bandwidth and RTT parameters as the saved_bb and
saved_rtt.
* Rationale #2 - Solution #2 : The server sends the estimate of the
bottleneck bandwidth and RTT parameters to the client as the
saved_bb and saved_rtt in a block of information that is
authenticated. This information also could be encrypted by the
Kuhn, et al. Expires 11 January 2023 [Page 11]
Internet-Draft Careful resumption of congestion control July 2022
server. The client resends the same information for a new
connection. The server can use its local key information to
authenticate the information, without needing to keep a local
copy.
* Rationale #2 - Solution #3 : This approach is the same as above,
except that the server sends an estimate of the saved_rtt and
saved_bb parameters in a form that may be read by the client. The
information might not be encrypted, or the information might be
duplicated outside of the encrypted block. This allows a client
to read, but not modify, the saved_rtt and saved_bb parameters and
could enable a client to decide whether the new parameters are
thought appropriate, based on client-side information about the
network conditions, connectivity, or needs of the new connection.
Appendix A describes various implementation approaches for each of
these solutions using local storage ( Appendix A.2 for Rationale #2 -
Solution #1), NEW_TOKEN Frame ( Appendix A.3 for Rationale #2 -
Solution #2), BDP extension Frame ( Appendix A.4 for Rationale #2 -
Solution #3).
5.4. Trade-off between the different solutions
This section provides a description of several implementation options
and discusses their respective advantages and drawbacks.
While there are some discussions for the solutions regarding
Rationale #2, the server MUST consider Rationale #1 - Solution #2 and
avoid Rationale #1 - Solution #1: the server MUST implement a safety
check to measure whether the saved BDP parameters (i.e. saved_rtt and
saved_bb) are relevant or check that their usage would not cause
excessive congestion over the path.
Security consideration are discussed in Section 9 .
5.4.1. Interoperability and Use Cases
A server that stores a resumption ticket for each client to protect
against replay on a third party IP, it could also store the IP
address (i.e., saved_client_ip) and BDP parameters (i.e., saved_rtt
and saved_bb) of a previous connection.
Kuhn, et al. Expires 11 January 2023 [Page 12]
Internet-Draft Careful resumption of congestion control July 2022
When the BDP Frame extension is used, locally stored BDP parameters
at the server can provide a cross-check of the BDP parameters sent by
a client. The server can anyway enable a safe jump, but without the
BDP Frame extension. However, using the parameters enables a client
to choose whether to request this or not, enabling it to utilize
local knowledge of the network conditions, connectivity, or
connection requirements.
XXX-Editor-note: Text to be improved: Storing local values related to
the BDP would help improve the ingress for new connections, however,
not using a BDP Frame extension could reduce the interest of the
approach where (1) the client knows the BDP estimation at the server,
(2) the client decides to accept or reject ingress optimization, (3)
the client tunes application level requests.
5.4.2. Summary
Local storage of values can be secure and the BDP Frame extension
provides more information to the client and more interoperability.
The Figure 1 provides a summary of the advantages and drawbacks of
each approach.
+---------+-----------+----------------+---------------+-----------+
|Rationale| Solution | Advantage | Drawback | Comment |
+---------+-----------+----------------+---------------+-----------+
|#1 |#1 | | | |
|Variable |set |Ingress optim. |Risk of adding |MUST NOT |
|Network |current_* | | congestion |implement |
| |to saved_* | | | |
| +-----------+----------------+---------------+-----------+
| |#2 | | | |
| |Implement |Reduce risk of |Negative impact|MUST |
| |safety | adding | on ingress |implement |
| |check | congestion | optim. |Section 3 |
+---------+-----------+----------------+---------------+-----------+
|#2 |#1 | | | |
|Malicious|Local |Enforced |Client unable | |
|client |storage | security | to decide to | |
| | | | reject | |
| | | |Malicious | |
| | | | server could | |
| | | | fill client's | |
| | | | buffer | |
| | | |Limited | |
| | | | use-cases |Section 4.2|
| +-----------+----------------+---------------+-----------+
| |#2 | | | |
| |NEW_TOKEN |Save resource |Malicious | |
Kuhn, et al. Expires 11 January 2023 [Page 13]
Internet-Draft Careful resumption of congestion control July 2022
| | | at server | client could | |
| | |Opaque token | change token | |
| | | protected | even if | |
| | | | protected | |
| | | |Malicious | |
| | | | server could | |
| | | | fill client's | |
| | | | buffer | |
| | | |Server may not | |
| | | | trust client |Section 4.3|
| +-----------+----------------+---------------+-----------+
| |#3 | | | |
| |BDP |Extended |Malicious | |
| |extension | use-cases | client could | |
| | |Save resource | change BDP | |
| | | at server | even if | |
| | |Client can | protected | |
| | | read and decide|Server may not | |
| | | to reject | trust client | |
| | |BDP extension | | |
| | | protected | | |
| | | | |Section 4.4|
+---------+-----------+----------------+---------------+-----------+
XXX-Editor-Note: Need to clarify the text around changing
the authenticated token.
Figure 1: Comparing solutions
6. Safety Guidelines
The following safety guidelines refer to the labelling defined in
Section 4.
The safety guidelines are designed to mitigate the risk that a server
adds excessive congestion to an already congested path. The
following mechanisms help in fulfilling this objective:
* (observation phase) The server SHOULD NOT store and/or send
information related to a previously estimated bottleneck bandwidth
(saved_bb) (see Section 2.2 for more details on bottleneck
bandwidth definition), if the cwnd is not at least four times
larger than the IW.
Kuhn, et al. Expires 11 January 2023 [Page 14]
Internet-Draft Careful resumption of congestion control July 2022
* (reconnaissance phase) The server MUST NOT send more than the
recommended maximum IW (recom_iw) in the first RTT of transmitting
data [RFC9000]. (When used in a controlled network, additional
information about local path characteristics could be known that
might be used to configure a non-standard IW).
* (reconnaissance phase) The server MUST compare the measured
transport parameters (in particular current_rtt) of the 0-RTT
connection with those of the 1-RTT connection (in particular
saved_rtt). The method MUST NOT be used when the path fails to be
validated;
* (unvalidated phase) The server MUST NOT use the parameters unless
the first IW packets when packets are detected as lost or
acknowledgements indicate the packets were ECN CE-marked. These
are indication of potential congestion and therefore the method
MUST NOT be used;
* (unvalidated phase) The server MUST implement the retreat method
when packets are detected as lost or acknowledgements indicate the
packets were ECN CE-marked. These are indication of potential
congestion and therefore the method MUST NOT be used.
The proposed mechanisms SHOULD be limited by any rate-limitation
mechanisms of QUIC, such as flow control mechanisms or amplification
attack prevention. In particular, it may be necessary to issue
proactive MAX_DATA frames to increase the flow control limits of a
connection. In particular, the maximum number of packets that can be
sent without acknowledgements needs to be chosen to avoid the
creation and the increase of congestion for the path.
This extension MUST NOT provide an opportunity for the current
connection to be a vector of an amplification attack. The address
validation process, used to prevent amplification attacks, SHOULD be
performed [RFC9000].
XXX-Editor-note: This probbaly should be a range rather than an
inequality (current_rtt < 1.2*saved_rtt).
The following mechanisms could be implemented:
* Exploit a standard IW:
1. The server sends the first data packet using the IW - this is
a safe starting point for any path where there is no path
information or congestion control information. This avoids
adding excessive congestion to a path;
Kuhn, et al. Expires 11 January 2023 [Page 15]
Internet-Draft Careful resumption of congestion control July 2022
2. The sender monitors the reception of the IW data. If the path
characteristics resemble those of a recent previous connection
from to the same server (i.e., current_rtt < 1.2*saved_rtt)
and all data was acknowledged without reported congestion),
the method permits the sender to utilise the saved_bb as an
input to adapt current_bb to rapidly determine a new safe
rate;
3. The sender needs to avoid a burst of packets resulting from a
step-increase in the congestion window [RFC9000]. Pacing the
packets as a function of the current_rtt can provide this
additional safety during the period in which the CWND is
increased by the method.
* Identify a relevant pacing rhythm:
- The server estimates the pacing rhythm using saved_rtt and
saved_bb. The Inter-packet Transmission Time (ITT) is
determined by the ratio between the current Maximum Message
Size (MMS) and the ratio between the saved_bb and saved_rtt. A
tunable safety margin can avoid sending more than a recommended
maximum IW (recom_iw):
o current_iw = min(recom_iw,saved_bb)
o ITT = MSS/(current_iw/saved_rtt)
- When the successful receipt of the IW data is acknowledged, the
server returns to a standard slow-start mechanism.
* Tune slow-start mechanisms: After transport parameters are set to
a previously estimated bottleneck bandwidth, if the slow-start
mechanisms continue, the sender can then overshoot the bottleneck
capacity. This can occur even when using the safety check
described in this section.
- For NewReno and CUBIC, it is recommended to exit slow-start and
enter the congestion avoidance phase.
- For BBR, it is recommended to enter the "probe bandwidth"
state.
This follows the idea presented in [RFC4782],
[I-D.irtf-iccrg-sallantin-initial-spreading] and [CONEXT15].
Kuhn, et al. Expires 11 January 2023 [Page 16]
Internet-Draft Careful resumption of congestion control July 2022
7. Acknowledgments
The authors would like to thank Gabriel Montenegro, Patrick McManus,
Ian Swett, Igor Lubashev, Robin Marx, Roland Bless and Franklin Simo
for their fruitful comments on earlier versions of this document.
8. IANA Considerations
TBD: Text is required to register the BDP Frame and the enable_bdp
transport parameter. Parameters are registered using the procedure
defined in [RFC9000].
9. Security Considerations
Security considerations for QUIC are discussed in Section 6
The client can send information related to the saved_rtt and saved_bb
to the server with the BDP Frame extension using either Rationale #2
- Solution #2 or Rationale #2 - Solution #3. However, the server
SHOULD NOT trust the client. Indeed, even if 0-RTT packets
containing the BDP Frame are encrypted, a client could modify the
values within the extension and encrypt the 0-RTT packet.
Authentication mechanisms might not guarantee that the values are
safe. It is not an easy operation for a client to modify
authenticated or encrypted data without this being detected by a
server. Modification could be realized by malicious clients. One
way to avoid this is for a server to also store the saved_rtt and
saved_bb parameters.
A malicious client might modify the saved_bb parameter to convince
the server to use a larger CWND than appropriate. Using the
algorithms proposed in Section 6, the server may reduce any intended
harm and can check that part of the information provided by the
client are valid.
Storing the BDP parameters locally at the server reduces the
associated risks by allowing the client to transmit information
related to the BDP of the path in the case of a malicious client
trying to break the encryption mechanism that it had received.
10. References
10.1. Normative References
Kuhn, et al. Expires 11 January 2023 [Page 17]
Internet-Draft Careful resumption of congestion control July 2022
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC4782] Floyd, S., Allman, M., Jain, A., and P. Sarolahti, "Quick-
Start for TCP and IP", RFC 4782, DOI 10.17487/RFC4782,
January 2007, <https://www.rfc-editor.org/info/rfc4782>.
[RFC6349] Constantine, B., Forget, G., Geib, R., and R. Schrage,
"Framework for TCP Throughput Testing", RFC 6349,
DOI 10.17487/RFC6349, August 2011,
<https://www.rfc-editor.org/info/rfc6349>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
[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>.
[RFC9002] Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection
and Congestion Control", RFC 9002, DOI 10.17487/RFC9002,
May 2021, <https://www.rfc-editor.org/info/rfc9002>.
10.2. Informative References
[CONEXT15] Li, Q., Dong, M., and P B. Godfrey, "Halfback: Running
Short Flows Quickly and Safely", ACM CoNEXT , 2015.
[I-D.cardwell-iccrg-bbr-congestion-control]
Cardwell, N., Cheng, Y., Yeganeh, S. H., Swett, I., and V.
Jacobson, "BBR Congestion Control", Work in Progress,
Internet-Draft, draft-cardwell-iccrg-bbr-congestion-
control-02, 7 March 2022,
<https://www.ietf.org/archive/id/draft-cardwell-iccrg-bbr-
congestion-control-02.txt>.
[I-D.irtf-iccrg-sallantin-initial-spreading]
Sallantin, R., Baudoin, C., Arnal, F., Dubois, E., Chaput,
E., and A. Beylot, "Safe increase of the TCP's Initial
Window Using Initial Spreading", Work in Progress,
Kuhn, et al. Expires 11 January 2023 [Page 18]
Internet-Draft Careful resumption of congestion control July 2022
Internet-Draft, draft-irtf-iccrg-sallantin-initial-
spreading-00, 15 January 2014,
<https://www.ietf.org/archive/id/draft-irtf-iccrg-
sallantin-initial-spreading-00.txt>.
[IJSCN] Thomas, L., Dubois, E., Kuhn, N., and E. Lochin, "Google
QUIC performance over a public SATCOM access",
International Journal of Satellite Communications and
Networking 10.1002/sat.1301, 2019.
[MAPRG111] Kuhn, N., Stephan, E., Fairhurst, G., Jones, T., and C.
Huitema, "Feedback from using QUIC's 0-RTT-BDP extension
over SATCOM public access", IETF 111 - MAPRG meeting ,
2022.
[RFC5783] Welzl, M. and W. Eddy, "Congestion Control in the RFC
Series", RFC 5783, DOI 10.17487/RFC5783, February 2010,
<https://www.rfc-editor.org/info/rfc5783>.
[RFC8867] Sarker, Z., Singh, V., Zhu, X., and M. Ramalho, "Test
Cases for Evaluating Congestion Control for Interactive
Real-Time Media", RFC 8867, DOI 10.17487/RFC8867, January
2021, <https://www.rfc-editor.org/info/rfc8867>.
[RFC9040] Touch, J., Welzl, M., and S. Islam, "TCP Control Block
Interdependence", RFC 9040, DOI 10.17487/RFC9040, July
2021, <https://www.rfc-editor.org/info/rfc9040>.
Appendix A. Implementation Considerations
A.1. Rationale behind the different implementation options
The NewSessionTickets message of TLS can offer a solution. The
proposal is to add a 'bdp_metada' field in the NewSessionTickets,
which the client is able to read. The only extension currently
defined in TLS1.3 that can be seen by the client is
max_early_data_size (see Section 4.6.1 of [RFC8446]). However, in
the general design of QUIC, TLS sessions are managed by a TLS stack.
Three distinct approaches are presented: sending an opaque blob to
the client that the client may return to the server when establishing
a future new connection (see Appendix A.3), enabling local storage of
the BDP infromation (see Appendix A.2) and a BDP Frame extension (see
Appendix A.4).
Kuhn, et al. Expires 11 January 2023 [Page 19]
Internet-Draft Careful resumption of congestion control July 2022
A.2. Independent Local Storage of Values
This approach independently lets both a client and a server store
their BDP parameters:
* During a 1-RTT session, the endpoint stores the RTT (as the
saved_rtt) and bottleneck bandwidth (as the saved_bb) together in
the session resume ticket. The client can also store the IP
address of the server;
* The server maintains a table of previously issued tickets, indexed
by the random ticket identifier that is used to guarantee
uniqueness of the Authenticated Encryption with Associated Data
(AEAD) encryption. Old tokens are removed from the table using
the Least Recently Used (LRU) logic. For each ticket identifier,
the table holds the RTT and bottleneck bandwidth (i.e. saved_rtt
and saved_bb), and also the IP address of the client (i.e.
saved_client_ip).
During the 0-RTT session, the local endpoint waits for the first RTT
measurement from the remote endpoint IP address. This is used to
verify that the current_rtt has not significantly changed from the
saved_rtt (used as an indication that the BDP information is
appropriate for the current path).
If this RTT is confirmed, the endpoint also verifies that an IW of
data has been acknowledged without requiring retransmission or
resulting in an ECN CE-mark. This second check detects whether a
path is experiencing significant congestion (i.e., where it would not
be safe to update the cwnd based on the saved_bb). In practice, this
could be realized by a proportional increase in the cwnd, where the
increase is (saved_bb/IW)*proportion_of_IW_currently-ACKed.
This solution does not allow a client to request the server not to
use the BDP parameters. If the server does not want to store the
metrics from previous connections, an equivalent of the
tcp_no_metrics_save for QUIC may be necessary. This option could be
negotiated that allows a client to choose whether to use the saved
information.
A.3. Using NEW_TOKEN frames
A server can send a NEW_TOKEN Frame to the client. The token is an
opaque (encrypyted) blob and the client can not read its content (see
section 19.7 of [RFC9000]). The client sends the received token in
the header of an Initial packet of a later connection.
Kuhn, et al. Expires 11 January 2023 [Page 20]
Internet-Draft Careful resumption of congestion control July 2022
A.4. BDP Frame
Using BDP Frames, the server could send information relating to the
path characteristics to the client. The use of the BDP Frame is
negotiated with the client. The client can read its content. If the
client agrees with the usage of previous parameters, it can send the
BDP Frame back to the server in an Initial packet of a later
connection.
Authors' Addresses
Nicolas Kuhn
Thales Alenia Space
Email: nicolas.kuhn.ietf@gmail.com
Emile Stephan
Orange
Email: emile.stephan@orange.com
Godred Fairhurst
University of Aberdeen
Department of Engineering
Fraser Noble Building
Aberdeen
Email: gorry@erg.abdn.ac.uk
Tom Jones
University of Aberdeen
Department of Engineering
Fraser Noble Building
Aberdeen
Email: tom@erg.abdn.ac.uk
Christian Huitema
Private Octopus Inc.
Email: huitema@huitema.net
Kuhn, et al. Expires 11 January 2023 [Page 21]