<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc category="exp" ipr="noModificationTrust200811" docName="draft-wood-tsvwg-saratoga-congestion-control-11">
<?rfc toc="yes"?>
<?rfc strict="yes"?>
<?rfc tocompact="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc tocdepth="2"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes" ?>
<!--<?rfc rfcedstyle="yes"?>-->
<?rfc sortrefs="yes" ?>

  <front>
        <title abbrev="Saratoga congestion control">Congestion control for the Saratoga protocol</title>
        <author initials="L." surname="Wood" fullname="Lloyd Wood">
          <organization abbrev="Surrey alumni">University of Surrey alumni</organization>
          <address>
            <postal>
             <street></street>
             <city>Sydney</city><region>New South Wales</region>
             <country>Australia</country>
            </postal>
            <email>L.Wood@society.surrey.ac.uk</email>
          </address>
        </author>

        <author initials="W. M." surname="Eddy" fullname="Wesley M. Eddy">
          <organization abbrev="MTI Systems">MTI Systems</organization>
          <address>
            <postal>
	      <street>MS 500-ASRC</street>
              <street>NASA Glenn Research Center</street>
              <street>21000 Brookpark Road</street>
              <city>Cleveland</city><region>OH</region>
              <code>44135</code>
              <country>USA</country>
            </postal>
            <phone>+1-216-433-6682</phone>
            <email>wes@mti-systems.com</email>
          </address>
        </author>

        <author initials="W." surname="Ivancic" fullname="Will Ivancic">
          <organization abbrev="Syzygy">Syzygy Engineering LLC</organization>
          <address>
            <postal>
              <street></street>
              <city>Westlake</city><region>OH</region>
              <code>44145</code>
              <country>USA</country>
            </postal>
            <phone>+1-440-835-8448</phone>
            <email>ivancic@syzygyengineering.com</email>
          </address>
        </author>

        <date/>

    <keyword>congestion control</keyword>
    <keyword>Saratoga</keyword>
    <keyword>TCP friendly</keyword>
    <keyword>TFRC</keyword>

    <abstract>

     <t>

Saratoga is a data transfer protocol designed to carry potentially large volumes of data over
difficult network paths, often including only a single high-rate link and only
one application flow.  As the requirements for use vary across deployment
environments, the base Saratoga specification only assumes that an
implementation will be able to clock packets out at a configurable rate, and
beyond this specifies no inherent or particular congestion-control behaviour.
The design of Saratoga deliberately supports the integration of
congestion-control algorithms without modification to the base protocol.

This document describes how congestion control can be supported in the
Saratoga transfer protocol.
Saratoga is intended for use in private networks, where its use is
engineered as a single flow to fill a link. However, as Saratoga is
implemented over UDP, it can be multiplexed, and can be run across
the public Internet, in which case congestion control in accordance with
the UDP Guidelines becomes necessary.

     </t>
    </abstract>

  </front>
  <middle>

    <section title="Background and Introduction">
<t>

The Saratoga data transfer protocol is  described in <xref target="draft-wood-tsvwg-saratoga" />. Given that Saratoga was originally developed for scheduled peer-to-peer
communications over dedicated links in private networks, where each application
has the entire link for the duration of its transfer, many
Saratoga implementations deliberately lack any form of congestion control and send at
line rate to maximise throughput and link utilisation in their environments. Congestion control
is necessary for use in the public Internet, in accordance with the UDP
Guidelines <xref target="RFC5405" />.
Newer Saratoga implementations may use timestamps to perform TCP-Friendly Rate
Control (TFRC) <xref target="RFC5348"/> or other congestion control
mechanisms such as LEDBAT <xref target="RFC6817"/>, if appropriate
for the environment, and where simultaneous sharing of capacity with
other traffic and applications is required. Sender-side TFRC for Saratoga has been shown to be possible without modifications to the Saratoga
protocol specification, using existing timestamps on selective negative acknowledgement messages <xref target="draft-eddy-tsvwg-saratoga-tfrc" />.

</t>

<t>

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in RFC 2119. <xref target="RFC2119"/>

</t>
    </section>

    <section anchor="approaches" title="Approaches to congestion control">

<t>
Saratoga can be implemented to perform congestion control at the sender, based
on feedback from acknowledgement STATUS packets,
or have the sender configured to use simple open-loop rate control to only use
a fixed amount of link capacity.
Congestion control is expected to be undesirable for many of Saratoga's use cases and expected environmental conditions, while simple rate control is
considered useful for some use cases. Use over the public Internet requires
congestion control.
</t>
<t>
Congestion control MUST be supported and used if Saratoga is being used across paths
that go over the public Internet, and SHOULD be supported in environments where links in
the path are shared by
traffic flows. Congestion control MAY NOT be supported across private, single-flow
links engineered for performance: Saratoga's primary use case.
</t>

   <section anchor="tfrc" title="TCP-friendly rate control"> 
<t>
Sender-side TCP-friendly rate control can be implemented by mirroring
timestamps in STATUS messages and using the approach outlined in
<xref target="draft-eddy-tsvwg-saratoga-tfrc" />.
</t>
<t>
Other approaches to TCP-friendly congestion control are possible,
and Saratoga and its selective negative acknowledgements may prove
useful as an implementation testbed for developing and refining
new congestion-control algorithms.
</t>

    </section>

<section anchor="ecn" title="Explicit Congestion Notification">

<t>
Supporting Explicit Congestion Notification in a UDP-based
protocol such as Saratoga requires that ECN events be exposed
to userspace applications using UDP via a programming interface.
Once such a programming interface becomes available, providing counts
of ECN events in STATUS and DATA packets will be straightforward.
Until that time, specifying ECN support in more detail is not
required.
</t>

</section>

<!--
Okay, ECN has an implementation problem, in that it's not exposed
to userspace applications by the UDP API. So this is commented out.

   <section anchor="ecn" title="Explicit Congestion Notification">
 
<t>
Explicit Congestion Notification (ECN) is useful when Saratoga is used across
more than one hop, with one or more routers in the path that can provide ECN
marking.
</t>
<t>
An ECN count can be included in STATUS messages, indicating the number of
ECN events seen in arriving DATA packets since the last STATUS message was
sent or requested. This, added to timestamp information, enables the
file-sender to adjust its sending strategy.
</t>
<t>
An ECN count can be included in the timestamps in DATA packets from
file-sender to file-receiver.
(include format details)
This indicates
ECNs seen in the acknowledgement backchannel, which is often constrained due
to low capacity, and allows the file-receiver to consider strategies such
as delaying and aggregating acknowledgement information.

</t>
   </section>
-->
 

    </section>
    <section anchor="sec-con" title="Security Considerations">
      <t>

Use of effective congestion control mechanisms always raises concerns
about fairness and spoofing or misleading senders - issues not unique
to Saratoga.

     </t>


    </section>
    <section title="IANA Considerations">

<t>
There should be no additional IANA considerations.

</t>

    </section>
    <section title="Acknowledgements">
<t>

We thank the IETF for reminding us about the importance of congestion
for standards-track protocols.

</t>

<t>

Work on this document at NASA's Glenn Research Center was funded by NASA's
Earth Science Technology Office (ESTO).

</t>

    </section>
 

  </middle>
  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119" ?>

    </references>

    <references title="Informative References">

      <?rfc include="reference.RFC.5348" ?>
      <?rfc include="reference.RFC.5405" ?>


      <?rfc include="reference.RFC.6817" ?>

<!--
      <?rfc include="reference.I-D.wood-tsvwg-saratoga" ?>
-->
      <reference anchor="draft-wood-tsvwg-saratoga">
       <front>
        <title>Saratoga: A Scalable Data Transfer Protocol</title>
        <author initials="L." surname="Wood"><organization /></author>
        <author initials="W. M." surname="Eddy"><organization /></author>
        <author initials="C." surname="Smith"><organization /></author>
        <author initials="W." surname="Ivancic"><organization /></author>
        <author initials="C." surname="Jackson"><organization /></author>
        <date month="May" year="2017"/>
       </front>
        <seriesInfo name="draft-wood-tsvwg-saratoga-21 (work in progress)" value=""/>
      </reference>

<!-- as not yet submitted, had to do this instead of a one-liner. -->
      <reference anchor="draft-eddy-tsvwg-saratoga-tfrc">
       <front>
        <title>TFRC-based congestion control for Saratoga</title>
        <author initials="W.M." surname="Eddy" fullname="Wesley M. Eddy"></author>
        <author initials="L." surname="Wood" fullname="Lloyd Wood"><organization /></author>
        <author initials="W." surname="Ivancic" fullname="William D. Ivancic"><organization /></author>
        <date month="May" year="2017"/>
       </front>
        <seriesInfo name="draft-eddy-tsvwg-saratoga-tfrc-11 (work in progress)" value=""/>
      </reference>


    </references>

  </back>
</rfc>
