<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-many-tiptop-quic-profile-02" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <front>
    <title>QUIC Profile for Deep Space</title>
    <seriesInfo name="Internet-Draft" value="draft-many-tiptop-quic-profile-02"/>
    <author fullname="Marc Blanchet" initials="MB">
      <organization>Viagenie</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>marc.blanchet@viagenie.ca</email>
      </address>
    </author>
    <author fullname="Wesley M. Eddy" initials="WE">
        <organization>Aalyria Technologies</organization>
        <address>
          <postal>
            <country>USA</country>
          </postal>
          <email>wes@aalyria.com</email>
        </address>
    </author>
    <area>Internet</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>quic</keyword>
    <keyword>space</keyword>
    <keyword>ip</keyword>
    <keyword>dtn</keyword>
    <keyword>deep space</keyword>
    <keyword>delay</keyword>
    <keyword>disruption</keyword>
    <abstract>
      <t>Deep space communications involve long delays (e.g., Earth to Mars is 4-20 minutes) and intermittent communications, because of orbital dynamics. In this context, typical QUIC stacks default transport parameters for terrestrial Internet are not suitable for deep space. This document defines a QUIC profile for deep space. It provides guidance on how to estimate and set transport parameters, advice to space mission operators and application developers on how to configure QUIC for the deep space use case and guidance to QUIC stack developers to properly expose the required transport parameters in their API.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>Deep space communications involve long delays, such as Earth to Mars is 4-20 minutes, and intermittent communications, because of orbital dynamics, such as when an orbiter is passing over a rover every 6 hours for a duration of 15 minutes.</t>
      <t>Typical QUIC stacks default transport parameters for terrestrial Internet assume low latency such as 100-200 ms, and relative continuous connectivity. Therefore, parameters such as initial_rtt, maximum_idle_timeout have defaults typically not suitable for deep space.</t>
      <t>Space missions are scheduled in advance and parameters such as the maximum round-trip time or bandwidth are known and determined in advance. Given relative low bandwidth in space and the intermittent communications, bandwidth usage is very precious and therefore any unneeded communication should be minimized as much as possible. Further discussion on use cases and requirements for deep space IP is discussed in <xref target="I-D.ietf-tiptop-usecase"/>.</t>
      <t>As described in <xref target="I-D.many-tiptop-ip-architecture"/>, packets will be stored at either layer 2 or layer 3 by orbiters during the periods where connectivity to the next hop is not possible.</t>
      <section anchor="example">
          <name>Example Scenario</name>
          <t>To better illustrate the implication on various transport parameters, an example scenario is provided in this section.</t>
          <t>A rover on the Mars surface is connected to a Mars surface IP network which receives intermittent connectivity from a few orbiters with an average of 6 hours per orbit. Some of those orbiters have circular orbits, other elleptical. The latter means that the overpass are not at a fixed frequency. The orbiters are connected to Earth ground station while they are in line of sight with Earth. Earth and Mars have variable distance from 4 to 20 minutes light seconds. That one way delay however change "slowly" as the planets are orbiting around the Sun.</t>
      </section>
      <section anchor="requirements">
        <name>Requirements Language</name>
        <t>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 <xref target="RFC2119"/>
          <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="calculate_rtt">
        <name>RTT Calculation</name>
        <t>A QUIC stack estimates the round-trip time(RTT) between the two peers over the period of the connection. This is used for example to initiate the retransmission of packets when the acknowledgement of those packets is not received within the expected RTT. Using the example in <xref target="example"/>, it is necessary to prime the QUIC stack with the right initial values, to avoid, for example, to retransmit packets after 100 ms while the expected RTT is 2 hours.</t>
        <t>A space application designer should calculate the maximum RTT for its mission. Using the example in <xref target="example"/>, the maximum RTT due to the maximum two-way delay is 45 minutes and the one due to the overpass frequency is 6 hours, therefore the maximum RTT is 6 hours 45 minutes.</t>
        <t>A space application designer should calculate the minimum RTT for its mission. Using the example in <xref target="example"/>, the minimum RTT due to the minimum two-way delay is 8 minutes and the one due to the overpass frequency is 0 assuming direct line of sight for the whole path, therefore the minimum RTT is 8 minutes.</t>
    </section>
    <section anchor="calculate_bdp">
        <name>Bandwidth-Delay Product(BDP) Calculation</name>
        <t>A QUIC stack like any transport stack manages the pacing of sending packets from the source to avoid overloading the network, creating congestion and to avoid overloading the other peer.</t>
        <t>A space application designer should calculate the bandwidth-delay product(BDP) of the whole path for its mission. The minimum BDP should be calculated with the minimum RTT and the minimum bandwidth used during those times. The maximum BDP should be calculated with the maximum RTT and the maximum bandwidth.</t>
    </section>
    <section anchor="transport_parameters">
        <name>Transport Parameters</name>
        <t>This section discusses how to configure some QUIC transport parameters. The parameter names are from the IANA registry<xref target="iana_quic_transport"/>.</t>
        <section>
            <name>Initial RTT</name>
            <t>To prime the QUIC stack with the expected RTT of the mission, an application should set the Initial RTT on connection establishment to the maximum RTT as calculated in <xref target="calculate_rtt"/>.</t>
            <t>If the set RTT is too low, then retransmission will be sent before the actual acknowledgement was received. In this case, the QUIC stack will still converge and deliver reliable data, but at the expense of extra bandwidth used. If the set RTT is too high, then when a packet is lost, the retransmission will be started later than the optimal time, therefore the total time to transmit all the data, including the losses recovered, will be longer than if it was set properly, but the QUIC stack will still converge and deliver reliable data.</t>
            <t>The initial_rtt transport parameter is specified in <xref target="RFC9002"/>.</t>
            <t>An application may use the resume mechanism as described in <xref target="I-D.ietf-tsvwg-careful-resume"/> to update the RTT during the connection lifetime.</t>
        </section>
        <section>
            <name>Idle Timeout</name>
            <t>To avoid the QUIC stack to terminate a connection due to no activity from the other peer, an application should set the Idle Timeout on connection establishment to the maximum RTT as calculated in <xref target="calculate_rtt"/>.</t>
            <t>If the set RTT is too low, then the other peer may terminate the connection before all the data is received. In this case, the QUIC stack on the sender side will need to reestablish the connection, possibly using the 0RTT mechanism, and resend the data that was not acknowledged previously. In this case, the application shall still recover and provide full data reliability but at the expense of more total time and extra bandwidth used. If the set RTT is too high, then the other peer will close its side of the connection later than needed in the event of a lost connection. In this case, the resources used by keeping the connection, such as memory, will not be released as fast as it could be if the RTT was properly set.</t>
            <t>The max_idle_timeout transport parameter is specified in section 8.2 of <xref target="RFC9000"/>.</t>
        </section>
    </section>
    <section>
        <name>Congestion Control</name>
	<t>In the Internet stack, congestion control (CC) in transport protocols is crucial to sharing network resources among concurrent traffic flows.  Minimizing congestion is necessary in order to prevent unnecessary queueing latency and packet drops.  Problems with typical Internet congestion control algorithms in deep space settings can include: (1) assumptions of timely in-band feedback/information, (2) interpretation of large delays as congestion/loss, and (3) lack of knowledge about overall network state and management decisions.</t>
	<t>Internet transport protocols use estimates of loss events, round-trip latency, and Explicit Congestion Notification (ECN) <xref target="RFC3168"/><xref target="RFC8087"/><xref target="RFC8311"/> to sense connection.  All of these methods operate in a "closed loop" fashion on the scale of RTTs, in order to react responsively in normal Internet conditions.  When the RTTs are many minutes or more in some deep space scenarios, this is not effective in quickly detecting and reacting to congestion.  Instead of relying on in-band closed loop detection and response to congestion, deep space congestion control could be assisted by management/control plane information, as deep space access, networking, and mission operations are substantially coordinated, in contrast to normal Internet access.</t>
	<t><xref target="I-D.many-tiptop-ip-architecture"/> discusses that given intermittent connectivity in deep space, nodes may need to temporarily store either L2 frames or L3 packets when links are down until the link is up again. This behavior will be interpreted by various CC algorithms as congestion. However, this is not necessarily the right behavior, since the delays generated are due to waiting for a lower-layer transmisison opportunity, but not necessarily lack of capacity when it becomes available to transmit.</t>
	<t>Deep space networking differs from traditional Internet use, because it is highly coordinated.  Antennas must be pointed and track physically, and operations centers must work together between agencies/companies/etc in order to manage resources (including spectrum usage, physical systems, compute and storage, etc.) and orchestrate configurations and activities over time.  Planning and scheduling is a significant activity, and results in the abilitly to understand traffic flow needs and allocate capacity for application flows, unlike in the traditional Internet.</t>
	<t>Other space-oriented transport protocols, such as SCPS-TP, have included rate-based open loop congestion control algorithms.  These algorithms send at pre-determined rates, without necessarily requiring in-band feedback, with the rate information over time provided by variables managed through an external scheduling system or other means.</t>
	<t>Therefore, QUIC stacks for deep space should be configurable to use rate-based open-loop congestion control, that allows relevant configuration variables such as window, pacing rate, expected RTT, and others to be governed by schedule-driven management/control plane cues, rather than closed loop in-band probing/estimation.</t>
        <section>
            <name>Window Size</name>
            <t>A QUIC stack manages the pacing of the source by the window size. A typical value used for Internet is 2 times the BDP. In space, careful considerations must be taken. A too low BDP means that the source node may not be sending enough packets to completly use the network and the available bandwidth of the links, which is less optimal given the scarcity of communications in space. Therefore, an application should not use a BDP lower than the minimum BDP as calculated in <xref target="calculate_bdp"/>. A too large BDP may use too much of the bandwidth of the links.</t>
            <t>Since packets may be stored at either layer 2 or layer 3 by intermediate nodes, the maximum storage of in-flight packets in these intermediary nodes is to be considered. Therefore, space operations should properly identify the best window size based on the minimum and maximum BDP and storage size of the intermediary nodes for the mission/application. As those parameters are known in advance for a mission, these can be set appropriately on connection establishment by the application.</t>
        </section>
    </section>
    <section>
        <name>Flow Control</name>
        <t></t>
        <section>
            <name>Max Data</name>
            <t>initial_max_data is the maximum number of bytes that can be sent on a connection <xref target="RFC9000"/>. initial_max_stream_data is similar but per stream. Given the BDP of a typical deep space connection, applications should set these parameters to enough large values so that the source is capable of sending data while the bandwidth is available.</t>
            <t>The various initial_max_data transport parameters are specified in section 8.2 of <xref target="RFC9000"/>.</t>
        </section>
    </section>
    <section>
        <name>Path MTU discovery</name>
	<t>To find the optimum MTU, some QUIC stacks implement Path MTU discovery<xref target="RFC8899"/>, which sends bigger packets every time until it discovers the maximum MTU, which may involve packet loss. Given that in deep space, MTUs for all links on the paths may be known in advance and that probing is inefficient and not timely, the application developer may elect to disable the path MTU discovery mechanism and set the real path MTU on connection establishment of the application.</t>
	<t>For instance, a 1280 byte path MTU might be assumed, based on knowledge of the network design and assurance from network providers that this would be supported without fragmentation, after accounting for any encapsulation present on the scheduled paths.</t>
	<t>Given coordination between the small number of network operators involved in an end-to-end path, support for large MTUs might be coordinated and known in advance.  This could be desirable for efficiency, but is out of scope of this document.</t>
	<t>Since scheduled paths may change over time, to enable use a known optimal value at any time, the path MTU can also be exposed by an implementation as a dynamically managed parameter, set according to a schedule.</t>
    </section>
    <section>
        <name>Acknowledgement Frequency</name>
	<t>QUIC stacks have various mechanisms to trigger acknowledgements (ACKs), as described in <xref target="RFC9000"/>, <xref target="I-D.ietf-quic-ack-frequency"/>. There are advantages of sending "frequent" acknowledgements, such as the source can free out memory of received frames earlier. However, this uses more capacity for sending ACKs, and could be problematic in cases of very high link bandwidth or network path capacity asymmetry.</t>
	<t>Adjusted ACK frequency information is provided to a QUIC peer through an in-band signal in a QUIC ACK_FREQUENCY frame extension to the QUIC base specification.  Usage needs to be negotiated via transport parameters on connection establishment, and desired values need to be provided (e.g. directly by an application or supplied to the stack via a management system).  The max_ack_delay and ack_delay_exponent transport parameters are specified in section 8.2 of <xref target="RFC9000"/>, and requested max_ack_delay changes are provided in ACK_FREQUENCY frames.</t>
	<t>The optimal ACK frequency is related to the bandwidth asymmetry between the directions of data and acknowledgement flow.  This may vary over time, but also can be known in advance by a route orchestrator or other management system.  In order to optimize performance, ACK frequency may be exposed as a dynamically controlled or time-varying parameter.</t>

    </section>
    <section>
        <name>Packet Size and Sending Pace</name>
        <t>There are pros and cons of sending large packets. Sending smaller packets means using more bandwidth because of multiple headers, unless header compression is used, but decreases the probability of packet loss which in space should be minimized. Sending larger packets means more efficient use of bandwidth, but in front of significant packet loss, may in fact result in using more bandwidth than smaller packets, since they will have to be re-transmitted.</t>
        <t>In the context of Internet, QUIC stacks may elect to not wait much time in order to add more frames in a single packets to deliver faster to the receiving end point.</t>
        <t>For deep space applications, where time for transmission is many orders of magnitude longer than on Internet, a QUIC stack may be configured to wait "a bit more" to add more frames to a single packet. For example, before sending a packet, a QUIC stack may wait to process all incoming packets in case the latter may elect to add frames on the response packet.</t>
    </section>
    <section>
        <name>New connection IDs</name>
        <t>QUIC stacks typically preemptively send new connection IDs to the other peer, for future needs such as future connection migration. However, those use cases may not be happening often in deep space. That optional optimization of sending new connection IDs may not be needed for deep space use case, while the actual cost of these additional bytes is pretty low.</t>
    </section>
    <section>
        <name>FEC</name>
        <t>CCSDS deep space links uses FEC at layer 2 (TODO: add ref to CCSDS book), using a pipeline of codecs, enabling low frame error rate in the presence of a higher signal bit error rate. While FEC for QUIC has been defined <xref target="I-D.michel-quic-fec"/>, it remains to be seen if it is really needed for deep space.</t>
    </section>
    <section anchor="moon">
      <name>Moon Deployment Considerations</name>
      <t>Earth to Moon is just a few light seconds away. When the whole path is all line of sight, it is possible to use QUIC stacks as configured today, but it will take more time to converge, therefore less optimal. The BBR algorithm will be a better choice as it is based on delay to measure congestion.</t>
      <t>However, if one wants to consider orbiters that will have intermittent communications, then the scenario discussed in <xref target="example"/> also applies and calculating RTT and BDP as discussed previously apply.</t>
    </section>
    <section anchor="intermittence_aware">
        <name>Intermittence Awareness</name>
        <t>Another way to solve the generic problem is to make transport aware of the intermittence periods, so that when there is a direct path end-to-end without any intermittence, the normal QUIC behavior such as congestion control may be used with proper RTT configuration, and then a different behavior in the context of intermittence. However, the actual scheduling of communication windows is pretty complicated and have a lot of variations that an intermittence-aware transport will be very fragile.</t>
    </section>
    <section anchor="application_consideration">
        <name>Application Considerations</name>
        <t>On terrestrial Internet, the cost, by time or bandwidth, to re-establish a connection to the same peer is very low, since it is re-established very fast and without too much use of bandwidth. Therefore, often, applications are designed in a pattern of establishing a connection, sending a query, getting the response, closing the connection and redoing the whole process for the next query. In deep space, the cost, specially the delay, of re-establishing a connection is very high. Therefore, applications should be carefully designed to not close connections after a query-response, if there is a possible new queries in the future.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This memo includes no request to IANA.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>The use of 0-RTT is subject to replay attacks<xref target="RFC9001"/> and therefore should be considered to be disabled depending on the security policy of the mission.</t>
      <t>Certificates and keys need to be renewed before their expiration, taking into account the delay to send, receive and confirm. Protocols such as OCSP<xref target="RFC6960"/> providing on-line real-time validation and revocation check will likely not work given the too long delays, therefore certificates need to be validated using local trust anchors.</t>
      <t>The use of long term keys, such as ones set prior to launch, may create exposure, therefore keys should be renewed at appropriate frequency.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.3168.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6960.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8087.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8311.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8899.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9000.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9001.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9002.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.michel-quic-fec.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tsvwg-careful-resume.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-quic-ack-frequency.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tiptop-usecase.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.many-tiptop-ip-architecture.xml"/>
        <reference anchor="iana_quic_transport" target="https://www.iana.org/assignments/quic/quic.xhtml#quic-transport">
            <front>
              <title>QUIC Transport Parameters</title>
              <author>
                <organization>Internet Assigned Numbers Authority(IANA)</organization>
              </author>
              <date year="2025" month="September"/>
            </front>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>This document and its underlying work has been reviewed and discussed by many, who have provided valuable feedback and comments, including disagreements, and made an overall more solid document. These people are, in no specific order: Lars Eggert, Christian Huitema, Adolfo Ochagavia, Mirja Kuehlewind, Michael Richardson.</t>
      <t>The Quinn QUIC stack was used for testing. We would like to acknowledge the help of Benjamin Saunders and Adolfo Ochagavia in using Quinn.</t>
    </section>
  </back>
</rfc>
