<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std" docName="draft-kuhn-quic-bdpframe-extension-05" ipr="trust200902">
	<!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN"
     they will automatically be output with "(if approved)" -->

	<!-- ***** FRONT MATTER ***** -->

	<front>
		<!-- The abbreviated title is used in the page header - it is only necessary if the
         full title is longer than 39 characters -->

		<title abbrev="QUIC BDP Signalling">Signalling CC Parameters for Careful Resume using QUIC</title>

		<author fullname="Nicolas Kuhn" initials="N" surname="Kuhn">
			<organization>Thales Alenia Space</organization>
			<address>
				<email>nicolas.kuhn.ietf@gmail.com</email>
			</address>
		</author>

		<author fullname="Emile Stephan" initials="E" surname="Stephan">
			<organization>Orange</organization>
			<address>
				<email>emile.stephan@orange.com</email>
			</address>
		</author>

		<author fullname="Godred Fairhurst" initials="G" surname="Fairhurst">
			<organization>University of Aberdeen</organization>
			<address>				
				<postal>
          			<street>Department of Engineering</street>
          			<street>Fraser Noble Building</street>
          			<city>Aberdeen</city>
          			<code>AB24 3UE</code>
          			<country>UK</country>
        			</postal>

				<email>gorry@erg.abdn.ac.uk</email>
			</address>
		</author>

		<author fullname="Raffaello Secchi" initials="R" surname="Secchi">
			<organization>University of Aberdeen</organization>
			<address>				
				<postal>
          			<street>Department of Engineering</street>
          			<street>Fraser Noble Building</street>
          			<city>Aberdeen</city>
          			<code>AB24 3UE</code>
          			<country>UK</country>
        			</postal>

				<email>r.secchi@erg.abdn.ac.uk</email>
			</address>
		</author>
	
		<author fullname="Christian Huitema" initials="C" surname="Huitema">
			<organization>Private Octopus Inc.</organization>
			<address>
				<email>huitema@huitema.net</email>
			</address>
		</author>

		<date year="2024"/>

		<!-- If the month and year are both specified and are the current ones, xml2rfc will fill
         in the current day for you. If only the current year is specified, xml2rfc will fill
	 in the current day and month for you. If the year is not the current one, it is
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to
	 specify just the year. -->

		<!-- Meta-data Declarations -->

		<area>Transport</area>

		<workgroup>Internet Engineering Task Force</workgroup>

		<!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

		<keyword>QUIC, CC, careful resume</keyword>

		<!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

	<abstract>
		<t>
        This document describes an extension for QUIC.
        This enables the exchange of Congestion Control (CC)
        parameters related to the
        characteristics of the between the sender
        and the receiver during a connection.
        These CC parameters allow a receiver to prepare to use additional
        capacity that is made available when using Careful Resume.
        It can also allow a receiver to request that
        previously computed CC parameters, are not used when
        the receiver has additional information
        about the current path or traffic that is to be sent.</t>
	</abstract>
	</front>

<middle>

<!-- Feb 2023, this document now includes all BDP-Frame related text from Careful Resume,
but at this stage probably contains a lot of repetition, and potentially some confusion
about whether QUIC Transport Params, Session Tickets or other Frames are used to send
the CC parameters -->
		
<!-- ***************************************************************** -->
<section anchor="sec:Introduction" title="Introduction">
    <t>This document extends the Careful Resume
    method <xref target="I-D.ietf-tsvwg-careful-resume"></xref>
    to allow sender-generated Congestion Control parameters
    (CC params) to be stored at the receiver, and used by
    the sender to resume a subsequent connection.</t>
   
    <t>Transferring these CC params to a receiver can release the
    sender from needing to retain this state for each
    receiver. The method also allows
    a receiver to implement a policy that informs a sender
    whether the receiver desires the sender to reuse any previously
    saved CC params. A sender can independently decide whether to use Careful Resume.</t>

    <t>This specifies both sender and receiver changes. 
    If a
    sender does not support the current method, it will ignore the requests
    made by the receiver.  
    If a receiver does not support the method, the sender does not
    receive any of the specified requests.</t>

    <section title ="Three approaches">
        <t>This section identifies three approaches to implement the
        storage of CC params:
        <list>
            <t>(1) The saved CC params are stored at the sender
            ("Local storage"). They are not sent to a receiver,
            this does not use the method in this specification;</t>
            <t>(2) The saved CC params are transmitted to the
            receiver in an opaque record.
            A receiver can choose to use the CC params when reconnecting,
            but is unable to read the
            value of the CC params;</t>
            <t>(3) The saved CC params are transmitted to a receiver,
            in a format that allows parameters to be read.
            A receiver can choose to use CC params when reconnecting,
            and is able to read the
            value of the CC params to decide whether to accept
            or not the use of these parameters. This is the method described in this specification.</t>
        </list></t>
    </section> <!--- intro, end of 3 approaches -->
    
   <!--  <section anchor="sec-local_storage" title="Local Storage of Values">
          <t>Local Storage stores the saved CC params at the sender:
          <list style="symbols">
              <t>The sender maintains a set of previously stored CC params.
               Old entries MAY be removed from the table (e.g., using the
                  Least Recently Used, LRU, logic).</t>
          </list></t>
          <t>If a sender does not wish to store the
          CC params for any previous connections, it can discard the information.
	  An equivalent of the
          tcp_no_metrics_save for QUIC could be used by a receiver to request this
	  choice.</t> -->

    <section title="Example Cases where a Receiver might decide not to request use of saved CC Params">	    
	<t>A receiver using approaches 2 or 3 can choose whether to request or
        avoid use of the saved CC params. This can be based on local knowledge of the network
        conditions, connectivity, or connection requirements.</t>
    
        <t>Four cases are identified where Careful Resume would not be
        appropriate and using the saved CC params could increase congestion:
        
        <list style="numbers">
            <t> The network path has changed and the new path is
            different. This might be evident from a change of local interface, a change
            in the sender IP address,
            or similar indication from the network.
            The saved CC params are not appropriate to the new path.</t>

            <t>Measured data indicates a change in the network path characteristics,
	    but the path has not changed. This case might be indicated by a change in the RTT, or
            evident by loss observed at the start of the new connection.
            (This case could also be detected in the 
            Careful Resume Reconnaissance Phase.)
            The saved CC params are no longer appropriate to use.</t>

            <t>There is a notification that the path characteristics have changed
	    and it is expected that the current capacity has reduced.
	    Examples include: notification of changes in the link propagation conditions,
	    notification of a change in the operational mode
            of a link,
            or awareness of a new limitation in the hardware platform.
	  </t>

            <t> The saved CC params are not within the stated LifeTime. It is no longer
            reasonable to expect the path to have same characteristics.</t>

        </list></t>

	<t>In all these examples, use of the saved
            CC params could increase congestion, and a receiver could
            wish to reject the
        use of the saved CC params. The sender reverts to
        the normal QUIC CC behavior <xref target="RFC9002"></xref>.</t>
    </section> <!-- Subsection on Interop -->
	
<section anchor="subsec:client_tune" title="Example Cases where a Receiver might tune based on saved CC Params">
        <t>Where a receiver is aware it is using a path with a high 
        Bandwidth-Delay Product (BDP),
       approach 
	3 allows it to adapt other protocol parameters
        to better utilize the available capacity, e.g., to estimate a
        larger size for the flow credit.</t>

        <t>Some designs of application do not use long-lasting
        transport connections.
        Instead, they use a series of shorter connections, typically
        each using the same path. This style of application can benefit
        when the receiver provides
        an estimate of the expected characteristics (e.g., to
        adapt the content of quality for a video application; or anticipate
        the time taken to complete the transmission of an object).
        An example scenario considers a client using 
        Dynamic Adaptive Streaming over HTTPS
        (DASH) that is unable to receive sufficient data
        to reach the desired video playback
        quality supported by the path, because
        the video transport needs to independently determine the path
        capacity for each video chunk. In this example,
        a lower transfer rate is safe, but could lead to an
        overly conservative requested rate when the rate is
        based on the video transport
        performance.
        Using the CC param information,
        the client requests could be adapted based on the previously
        observed path characteristics,
        enabling a client to increase the requested quality of video chunks or to
        fill receiver buffers and avoid stalling playback.</t>

        <t>Even if the capacity on the forward and return paths might be
        significantly different, clients experiencing a high
        BDP for their forward path would typically also
        experience a high BDP for their
        return path. The CC params
        related to the forward path could then potentially be used to initially adjust the
        transmission of data using the return path.</t>

    </section><!-- End of intro: Optimizing Client Requests -->

</section><!-- End of intro -->
<!-- ***************************************************************** -->

<section anchor="sec:terms_def" title="Notation and Terms">
    <t> <list style="symbols">
        <t>BDP: Bandwidth Delay Product of the path (maximum path capacity);</t>

        <t>saved_cwnd: The capacity preserved from a
        previous connection, measured in bytes per RTT;</t>

        <t>saved_rtt: The preserved minimum RTT, corresponding to the minimum
        of a set RTT of measurements taken at the time when the
        saved_cwnd was estimated;</t>

        <t>LifeTime: The time at which CC params are no longer to be used;</t>

        <t>endpoint_token: An Endpoint Token for a receiver;</t>

        <t>secured hash: hash generated by the sender covering
        the list of CC params. The sender
        uses a private key to protect this hash.</t>
	    
    </list> </t>
	
    <section anchor="sec:req_language" title="Requirements Language">
        <t>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
        <xref target="RFC2119"></xref>
        <xref target="RFC8174"></xref>
        when, and only when, they appear in all capitals, as
        shown here.</t>
        
        <t>Variable-length integer encoding is defined 
        in section 16 of <xref target="RFC9000"></xref>. </t>
        
    </section> <!-- Notation and Terms: End of Requirements Language -->
</section> <!-- End of Notation and Terms -->

<!-- ***************************************************************** -->
<section title="Signalling CC Parameters">

    <t> {XXX Editor Note: This presents the current transport
    method to signal use and to send CC params. There are various alternatives
    and the final choice is to be confirmed.}</t>

   <t>The following subsections define four signals that carry transport control information.
    The transmission of these signals is not limited by flow control limits
    of the underlying QUIC transport.</t>

<section anchor="sec:bdp_activation" title="Extension Activation (enable_careful_resume_indication)">

	<t>A receiver indicates its willingness to accept the transmission of careful_resume_indications
        from the sender by sending a enable_careful_resume_indication (0xTBD).
	This is a transport parameter sent in the 1 RTT connection.</t>

        <t><list style="symbols">
            <t>0: Default value. By default, a receiver does
            not activate, the transmission of indications.</t>
            
            <t>1: The value of 1 requests transmission of careful_resume_indications.
		When the receiver activates the extension,
        	it agrees to receive careful_resume_indications carrying
        	CC params.</t>
            
            <t>All values larger than
        	1 are reserved for future use,
        	and the receipt of these values MUST be treated
        	as a connection error of type TRANSPORT_PARAMETER_ERROR
        	<xref target="RFC9000"></xref>. </t>
        </list></t>
        
        <t>The encoding for this Transport Parameter is
        described in Section 18 of <xref target="RFC9000"></xref>.</t>

	<t>This indication has no action when the sender does not support this specification.</t>
        
</section> <!-- End of Extension activation -->

	<section anchor="sec:params" title="The CC Params">

<figure anchor="fig:cc_params" title="Format of the CC Params">
<artwork>
CC_params {
  Lifetime (i),
  Saved Capacity (i),
  Saved RTT (i),
  Saved Endpoint Token (...)
}
</artwork>
</figure>

    <t>The CC params comprise the following fields:</t>
    <t><list style="symbols">
        <t>LifeTime (lifetime):
        The extension_lifetime is a timestamp in milliseconds,
        encoded as a variable-length integer.
        This represents the validity in time of this extension.</t>

        <t>Saved CWND (saved_cwnd): The
        saved_cwnd is a value in bytes per RTT, encoded as a variable-length integer. A sender bases this on the
        estimated available capacity for a connection.</t>

        <t>Saved RTT (saved_rtt): The saved_rtt is a value in
        milliseconds, encoded as a variable-length integer.
        The saved_rtt is set to the min_rtt for a connection.</t>

        <t>Saved Endpoint Token (saved_endpoint_token) :
        The Endpoint Token is defined in <xref target="I-D.ietf-tsvwg-careful-resume"></xref>,
        and is discussed in a later section.</t>
    </list></t>
    
    <t>Careful use of the CC params is discussed
    in <xref  target="I-D.ietf-tsvwg-careful-resume"></xref>.</t>
</section> <!--- CC Params -->

<section anchor="sec:indication" title="Transporting the CC Params (careful_resume_indication)">
        
    <t>This section describes the careful_resume_indication.
    Once the extension has been activated, a sender in the Careful Resume
    Observe Phase MAY send
    a careful_resume_indication to the receiver including CC params. A sender MAY update the CC params by sending
    an additional careful_resume_indication within a connection.
    The rate of update SHOULD be limited
    (e.g., much less frequent than once for several RTTs).</t>

    <t>The format of a careful_resume_indication is specified in
    <xref target="fig:indication_format"></xref>, and the format
    for the CC params is specified in <xref target="sec:params"></xref>.</t>

<figure anchor="fig:indication_format" title="Format of a Careful Resume Indication">
<artwork>
BDP_FRAME {
  Type (i) = 0xXXX,
  Hash (...),
  CC_params,
}
</artwork>
</figure>

	<t><list style="symbols">
        <t>Hash (secured_hash): The sender constructs the secured_hash over the
        set of CC params. A sender uses this hash to detect whether the received CC params
        were modified. A sender
        MUST verify the secured_hash for the CC params, and
        MUST NOT use the CC params when it cannot verify the secured_hash.</t>
	</list></t>
	
        <t>Note: Section 19.21 of <xref target="RFC9000"></xref> states
	"An extension to QUIC that wishes to use a 
	new type of frame MUST first ensure that a peer is able to understand the frame.
	An endpoint can use a transport parameter to signal its willingness to receive
	extension frame types. One transport parameter can indicate support for one
	or more extension frame types". Implicitly, it is a protocol violation error
	to use an extension frame type that has not
	been approved by the peer by receiving a enable_careful_resume_indication.</t>

</section> <!--- careful_resume_indication -->
	
<section anchor="sec:request" title="Request to use the saved CC Params (careful_resume_request)">
        
    <t>This section describes the careful_resume_request.</t>
	
    <t>A receiver MAY send
    a careful_resume_request to the sender to request use of saved CC params for the
    same pair of endpoints when the server
    is expected to be in the Careful Resume
    Reconnaissance Phase. 
    The sender decides  whether to use or not
    the received CC params.</t>
	
    <t>Note: A receiver ought to treat the transmission
    of a careful_resume_request as an indication that the path may have a higher BDP, and therefore
    might accordingly allocate additional flow credit to prevent potential use of the
    Careful Resume method becoming limited by flow control.
    </t>

    <t>The format of a careful_resume_request is shown in
    <xref target="fig:indication_format"></xref>, and the format
    for the CC params is shown in <xref target="fig:cc_params"></xref>.</t>

</section> <!--- CC Params -->
	
<section anchor="sec:avoid" title="Request to avoid using the saved CC Params (careful_resume_avoid)">
    <t>
    This section describes a transport parameter to a sender requesting it avoids using the saved cc params.
    No parameters are exchanged. This request is sent in the 1-RTT connection.</t>
	
    <t>Note: The sender determines whether to use or not Careful Resume.
    The signal has no action when a sender does not support this specification.</t>

</section> <!--- END of avoid using CC Params -->
</section> <!--- END of definitions -->

<!-- ***************************************************************** -->

<section anchor="sec:discuss" title="Discussion">
<section anchor="sec:use" title="Use of the saved CC Params">
    <t>
<figure anchor="fig:sequence" title="Sequence Diagram">
<artwork align="center"><![CDATA[
Sender                                 Receiver
  |                                       |
  | <-- enable_careful_resume_indication -|
  |                                       |
  |- careful_resume_indication -->        |
	  ...
  |                                       |
  |- careful_resume_indication -->        |  
	  ...
	  Connection Terminates

	  New Connection

  |           <-- careful_resume_request -|
	      or
  |             <-- careful_resume_avoid -|  
	  
]]></artwork>
</figure>

    <list style="numbers">
       	<t>Recption of a enable_careful_resume_indication, permits a sender
	to start sending CC params using a careful_resume_indication.
	This is done in the Observe Phase of the Careful Resume method.
	Each indication includes the current RTT, measured capacity,
        requested lifetime,
        and receiver Endpoint Token are computed and are respectively
        stored as the saved_rtt, saved_cwnd, LifeTime and saved_endpoint_token.
        These form a set of CC params. The sender also computes a secured hash over
        these CC params and includes this within the careful_resume_indication.</t>

	<t>
    	When transmitted, the careful_resume_indication is encrypted
    	by QUIC transport using TLS <xref target="RFC8446">
    	</xref> <xref target="RFC9001"></xref>.
    	The secured_hash
    	is used by a sender to verify that the returned
    	CC params were not modified by the receiver.</t>
	
        <t>A receiver is unable to verify the secured_hash and is not permitted
        to modify any CC params, but it is expected to store these params and their hash.
	Access to this information would normally be indexed on the receiver's view
	of the path to the server.
	It can read any non-encrypted CC params (see <xref target="subsec:client_tune"></xref>).
        </t>
        
        <t>When the receiver makes a subsequent connection, it
	can send the CC params (and the secured_hash) using
	a careful_resume_request to
        the sender at the start of a new connection.
        These CC params need to be received during
        the Reconnaissance Phase
        of the Careful Resume method.</t>

	 <t>Upon reception, a sender MUST verify the secured_hash, and only use
        the CC params when this is valid.
        The Careful Resume method specifies the rules
        for utilizing verified CC params.</t>
        
        <t>
	The receiver is permitted to utlize local information and then decide to send
	a careful_resume_request or a careful_resume_avoid. The latter requests the sender does
        not use Careful Resume. A receiver could alternatively
	decide to not send a careful_resume_request expressing no preference.</t>
    </list>
    </t>
</section>
    <section title="Identifying the Path">    
<t>This extension is designed to avoid an opportunity for the current
    connection to be a vector for an amplification attack. The QUIC address
    validation process, used to prevent amplification attacks, SHOULD be
    performed <xref target="RFC9000"></xref>.</t>

       <t>An example implementation where the sender computes an
    Endpoint Token to uniquely identify the receiver
    is provided in <xref target="sec_example-token"></xref>.</t>

	    <t> In a simple network scenario, the sending endpoint could use the IP
        source address to identify a path. This could work when one
        globally-allocated IP address is set per interface. There are many cases
        where the IP address would not an acceptable to identify a path. Section
        8 of <xref target="RFC9040"></xref> describes cases where the IP address is not a suitable
        value when performing TCP control block sharing. In general the IP
        address of the sender is made public in the network-layer header of IP
        packets. When sharing internal state, <xref target="RFC6973"></xref> identifies relevant
        privacy considerations.</t>

        <t>Examples of network uses where a source address is not a suitable endpoint
        token include:</t>
        <t><list style="symbols">
            <t>The sending endpoint might not be remotely identifiable from its
            IP address because a device on the network path translates the
            address using a form of NAT/NAPT. In this case, a private IP
            address might be used, which does not identify a specific
            endpoint.</t>
            <t>In some cases, a sender can choose to vary the source address
            over time to avoid linkability in the observable IP header, e.g.,
            when the source address embeds private information, such as
            an endpoint's MAC address/EIDID.</t>
        </list> </t>
        <t>Note: There are use-cases where for the purpose of identifying a path,
        the token does not need to be globally unique, but needs to be
        sufficiently unique to prevent attempts to misrepresent the path being
        used such as an attack on the congestion controller. Using a smaller
        size of token can add to the ambiguity set, reducing this likability.
        </t>

        <t>Note: A different Endpoint Token is used for each direction of transmission. A
        receiver could decide not to uses this method to
        avoid exposing additional link-able information (but also preventing use
        of any mechanism that relies on the token).
        </t>
    </section>

    <section anchor="sec_example-token" title="Example use of an Endpoint Token"> <!-- subsection of Identify path-->

        <t>The sender computes an Endpoint Token that seeks to uniquely identify
        the path that it uses to communicate with the receiver (1) this is
        associated with the path information it sends. The Endpoint Token ought
        to be encrypted to avoid sending link-able information observable to
        eavesdroppers on the path. The receiver stores the path information
        together with the Endpoint Token, together with the sender's
        address/name (2). When the receiver later wishes the sender
        to use this, it returns the information to the sender (3)
        together with the Endpoint Token. The sender recomputes the Endpoint
        Token and compares this with the received Endpoint Token before using
        the CC params.

        <list style="numbers">
            <t>The Sender transmits the Endpoint Token to the Receiver;</t>
            <t>The Receiver holds an Endpoint Token;</t>
            <t>The Receiver transmits the Endpoint Token to the Sender. </t>
        </list> </t>
    </section> <!-- Example use of an Identify path: Endpoint Token -->
		
    <section title="Security Topics Related to use of the Endpoint Token">
    	
        <t>A number of security-related topics have been identified
        concerning the potential exposure of the identity on the path.
        This information can
        also be visible in the IP source address or higher-layer data, but can
        be hidden from a remote endpoint using methods such as MASQUE proxy.
        When used to inform the transport system using a layered proxy, the
        transport endpoint token refers to the endpoints of the outer QUIC
        header, and hence the proxy itself, not the end-to-end communication
        relayed by the proxy.
        </t>
        <t>A sender or receiver might decide to not use this method if it has a
        strong requirement to prevent
        flows being linkable with previous flows to the same endpoint. A
        decision not to provide an Endpoint Token necessarily prevents the
        sender from requesting the receiver to return path information to allow
        the same CC parameters to be re-used, potentially strengthening
        privacy, but consequently eliminating any performance benefits.</t>
    </section> <!-- End of: Endpoint Token Sec -->
    
    <section title="Using the CC Params with Care">
        <t>Care is needed in the use of any temporal information
        to assure safe use of the Internet and to be robust to changes
        in traffic patterns, network routing and link/node failures.
        There are cases where using the CC parameters of a previous
        connection are not appropriate, and a need to evaluate the potential
        for malicious use of this method.
        The specification for the QUIC transport protocol
        <xref target="RFC9000"></xref> therefore notes
        "Generally, implementations are advised
        to be cautious when using previous values on a new path". </t>
            
    </section>  <!--- end of care -->
</section> <!-- End of Discussion -->
<!-- ************************************************************************** -->

<section anchor="sec:acknowledgments" title="Acknowledgments">
    <t>
    The authors thank Gabriel Montenegro,
    Patrick McManus, Ian Swett, Igor Lubashev, Robin Marx,
    Roland Bless, Franklin Simo, Kazuho Oku, Q Misell, and Marten Seeman for their fruitful
    comments on earlier versions of this document.</t>
    <t>
    The authors particularly thank Tom Jones
    for co-authoring previous versions of this document.
     </t>
</section> <!-- ACK -->
<!-- ************************************************************************** -->

<section anchor="sec:IANA" title="IANA Considerations">
    <t>{XXX-Editor note: Text is required to register the four signals. 
	    Parameters are registered using the procedure
    defined in <xref target="RFC9000"></xref>.}</t>

</section><!-- IANA -->
<!-- ************************************************************************** -->

<section anchor="sec:security" title="Security Considerations">
    <t> Security considerations for the CC method are discussed
    in the Security Considerations section of Careful Resume.
    </t>
	
    <section title="Protection from Malicious Receivers">
        <t>The sender is required to check the integrity of the CC params using
	the hash computed over the block of CC params. Whilst data in transit
	is protected by TLS, this has is intended to protect the data at
	rest at the receiver. No specific hash algorithm is specified,
	because the value is only computed at the sender, and a sender 
	can choose any suitable algorithm to meet its own security objectives.</t>

      </section> <!-- End of Safety: Malicious Clients -->
	
</section> <!-- End of sec considerations -->
<!-- ************************************************************************** -->

</middle>

	<!--  ***** BACK MATTER ***** -->
	<back>
		<!-- References split into informative and normative -->
		<!-- There are 2 ways to insert reference entries from the citation libraries:
	1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
	2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
	(for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")
	Both are cited textually in the same manner: by using xref elements.
	If you use the PI option, xml2rfc will, by default, try to find included files in the same
	directory as the including file. You can also define the XML_LIBRARY environment variable
	with a value containing a set of directories to search.  These can be either in the local
	filing system or remote ones accessed by http (http://domain/dir/... ).-->

		<references title="Normative References">		
			<?rfc include="reference.RFC.2119.xml"?>
			<?rfc include="reference.RFC.8174.xml"?>
			<?rfc include="reference.RFC.9000.xml"?>
			<?rfc include="reference.I-D.ietf-tsvwg-careful-resume.xml"?>
		</references>
			
		<references title="Informative References">
            <?rfc include="reference.RFC.9040.xml"?>
           <?rfc include="reference.RFC.6973.xml"?>
           <?rfc include="reference.RFC.8446.xml"?>
           <?rfc include="reference.RFC.9001.xml"?>
           <?rfc include="reference.RFC.9002.xml"?>

	<!--<?rfc include="reference.I-D.cardwell-iccrg-bbr-congestion-control.xml"?> -->
			<!--
			<reference anchor="TMA18">
				<front>
					<title>Demystifying TCP Initial Window Configurations of Content Distribution Networks</title>
					<author initials="J" surname="Ruth">
					</author>
					<author initials="O" surname="Hohlfeld">
					</author>
					<date year="2018"/>
				</front>
				<seriesInfo name="2018 Network Traffic Measurement and Analysis Conference (TMA)" value=""/>
			</reference>
			--> 
		</references>
        
        <section anchor="Changes" title="Change Log">
            <t> This section to be removed prior to publication.
            <list>
                <t>-00 Introduced session tickets and BDP_FRAMEs</t>
                <t>-01 Reviewed receiver actions when a receiver holds CC parameters</t>
                <t>-02 Interim version to align with terminology in Careful Resume</t>
                <t>-03 Rewritten to align with Careful Resume and use the BDP_FRAME method.
	 	Removed annexe 1, and discussion of session tickets, preferring BDP_FRAMEs.</t>
		 <t>-04 (1) To align with Careful Resume to use saved_cwnd, after review of CR from Neil Cardwell. 
			(2) To fix the alternative of using resumption tokens as proposed by Marten Seeman and Kazuho Oku.
		 	(3) To detail the client point of view and associated use-cases.
		 (4) Rewritten to clarify story and separately identify: format; transport; use; discussion. This rev.
		        would also allow a change of transport method if the WG advises this.
		(5) Specify two frames and two actions sending cc params.</t>
		<t>-05 Editorial corrections.</t>
            </list>
            </t>
       </section>

	</back>
</rfc>
