<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc category="exp" ipr="trust200811" docName="draft-wood-dtnrg-saratoga-14">
<?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="Using Saratoga with a Bundle Agent">Using Saratoga with a Bundle Agent                             
as a Convergence Layer for Delay-Tolerant Networking</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="J." surname="McKim" fullname="Jim McKim">
          <organization abbrev="RSIS">RS Information Systems</organization>
          <address>
            <postal>
              <street>NASA Glenn Research Center</street>
              <street>21000 Brookpark Road, MS 142-1</street>
              <city>Cleveland</city><region>OH</region>
              <code>44135</code>
              <country>USA</country>
            </postal>
            <phone>+1-216-433-6536</phone>
            <email>James.H.McKim@grc.nasa.gov</email>
          </address>
        </author>

        <author initials="W. M." surname="Eddy" fullname="Wesley M. Eddy">
          <organization>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>weddy@grc.nasa.gov</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>	

        <author initials="C." surname="Jackson" fullname="Chris Jackson">
          <organization abbrev="SSTL">Surrey Satellite Technology Ltd</organization>
          <address>
            <postal>
              <street>Tycho House</street>
              <street>Surrey Space Centre</street>
              <street>20 Stephenson Road</street>
              <city>Guildford</city><region>Surrey</region>
              <code>GU2 7YE</code>
              <country>United Kingdom</country>
            </postal>
            <phone>+44-1483-803-803</phone>
            <email>C.Jackson@sstl.co.uk</email>
          </address>
        </author>

        <date/>

    <keyword>DTN</keyword>
    <keyword>Saratoga</keyword>
    <keyword>Delay-Tolerant</keyword>
    <keyword>Disruption-Tolerant</keyword>

    <abstract>

     <t>

Saratoga is a simple, lightweight, UDP-based transfer protocol.
This
describes how to use Saratoga as a Delay-Tolerant Networking (DTN) "convergence
layer" with the Bundle Protocol and its Bundle Agents, building on the Saratoga specification in draft-wood-tsvwg-saratoga.
</t>
    </abstract>

  </front>
  <middle>

    <section title="Background">
<t>

The Saratoga protocol is specified in <xref target="I-D.wood-tsvwg-saratoga" />.
Saratoga can optionally be used for Delay/Disruption-Tolerant Networking (DTN) <xref
target="RFC4838"/>, as a "convergence layer" to exchange bundles
between peer nodes.
Saratoga was originally designed prior to work on the Bundle Protocol <xref
target="RFC5050"/> by the DTN Research Group (DTNRG).
It was later recognized that Saratoga
could also be used to reliably exchange bundles between DTNRG Bundle Agents by using a
logical mapping from DTNRG bundles to Saratoga files and back.
The DTN concept encompasses networks where ad-hoc,
intermittent connectivity is expected, connections may be infrequently
established or short-lived, and end-to-end paths are not present.
As Saratoga was designed for intermittent, disrupted, space communications,
Saratoga's operating environment is a DTN network. This makes
the Saratoga transfer protocol a natural fit as a convergence layer for the
DTNRG's Bundle Protocol, although the Bundle Protocol is not necessary
for operation of Saratoga.

</t>

<t>

This document contains notes on use of Saratoga for the bundle transfer procedure.

</t>

<t>
Bundle transfers over Saratoga from space and the UK-DMC satellite, with use
of proactive fragmentation, have now been demonstrated. More details are provided
in <xref target="IAC-2008"/> <xref target="SSTL-2008"/> <xref target="Ivancic10"/>.
</t>
    </section>

    <section title="Applicability Statement">

<t>
Why use Saratoga as a DTN convergence layer? The DTN architecture already has a number of
choices of convergence layer. Convergence layers have been proposed for various link
types, e.g. Ethernet or Bluetooth. As IP already runs over many link types, a
convergence layer that can run over many links using IP is likely to take advantage
of TCP or UDP.
</t>
<t>
For traversing the terrestrial Internet while supporting congestion control,
a simple TCP convergence layer has been implemented in the DTN software reference
implementation <xref target="I-D.irtf-dtnrg-tcp-clayer"/>. A simple UDP convergence
layer, able to be used over dedicated private links where
congestion control is not required, is also present. However, that simple UDP convergence
layer presumes that a bundle will always fit into a single UDP packet,
does not support segmentation of bundles across multiple UDP packets,
and does not guarantee reliable delivery with retransmissions. Its use
is discouraged <xref target="I-D.irtf-dtnrg-udp-clayer"/>.
</t>

<t>
Two protocols capable of supporting segmentation of large bundles across
multiple UDP packets, with ARQ-based flexible delivery robust to packet loss, are
Saratoga <xref target="I-D.wood-tsvwg-saratoga" /> and
the Licklider Transmission Protocol (LTP) <xref target="RFC5325"/>.
</t>
<t>
Both Saratoga and LTP were
designed based on experience gained with using the CCSDS File Delivery Protocol
(CFDP), which was developed for the Consultative Committee for Space Data
Systems (CCSDS).
The main design difference between LTP and Saratoga is that LTP transfers
arbitrary un-named data blobs (binary large objects), requiring a higher layer
(normally delay-tolerant-networking bundling) to handle naming, while Saratoga
transfers named files including file metadata, and can be independent of higher
layers. Both protocols can run over the User Datagram Protocol, UDP
<xref target="RFC0768"/>, though LTP also is intended to run at other layers
in the stack (including directly over the link), while Saratoga is only intended
to run above the UDP or UDP-Lite transport protocols. If errors in delivered
content can be tolerated (perhaps because the data being transferred has its
own integrity checks), Saratoga can also be used to transfer an entire file
or stream without error checking, using UDP-Lite <xref target="RFC3828"/>, which can protect only header content from errors.
</t>
<t>
Saratoga includes a file checksum mechanism to detect transfer
errors and to provide an overall degree of reliability. Licklider has no similar
reliability mechanism, although Licklider's optional
security mechanism <xref target="RFC5327"/> can be implemented to give some error detection.
</t>

<t>
Saratoga can also be used for delivery over unidirectional broadcast links.
Another UDP-based convergence layer proposed for unidirectional links is Uni-DTN
<xref target="I-D.kutscher-dtnrg-uni-clayer"/>. Uni-DTN is based on FLUTE
forward layered coding for multicast delivery. Saratoga presumes that
the forward error coding needed to prevent errors in transmission is present at
another layer in the stack, usually near the physical layer.
</t>
    </section>

    <section anchor="overview" title="Using Saratoga with a DTN Bundle Agent">
<t>

While Saratoga was first developed for efficient file transfer, the similarity
between bundle payloads and files, in that both are arbitrary blobs of some
number of octets, allows Saratoga to be used as a convergence layer for
exchanging bundles between DTN bundle agents.  This section explains the basic
concepts involved in mapping bundle exchange onto the file transfer mechanism.

</t>
<t>

Routing of bundles is outside the scope of Saratoga and of this document.
Once a complete bundle file has been transferred between peers using Saratoga,
that bundle can be forwarded onwards along a next available hop in any way.
Saratoga provides a mechanism for forwarding, but does not provide input to
routing or forwarding decisions.

</t>
<t>

A DTN bundle agent can work alongside a Saratoga peer to move bundles. One
simple method of communicating bundles between the bundle agent and the Saratoga
peer is to have a shared directory that is accessible to both the bundle and
Saratoga processes.  To send a
bundle, the bundle agent can place the complete bundle (the concatenated set of
Bundle Protocol blocks) into a file in this shared directory.  The local
Saratoga instance is then able to _put_ this bundle to peers or allow them to
_get_ it.  A flag bit in the Saratoga METADATA and DATA packets indicates whether a
particular file is a bundle or not. This enables the receiving Saratoga peer to
know whether to handle the file itself, or to pass it to the local bundle agent.

</t>
<t>

When using Saratoga as a convergence layer to transfer bundles, the local
bundle agent will either place bundles as files for Saratoga to transfer
from its directory, or otherwise use interprocess communication to notify
Saratoga of and provide a bundle to be transferred.

</t>

<t>
Key to the use of Saratoga for bundle transfer are:
</t>

<t>
- indicating the capability to interoperate with a local bundle agent.
This involves advertising the capability to handle bundles via setting
Flag bit 10 in Saratoga BEACON packets, and indicating when a bundle is
being transferred by setting Flag bits 10 and 11 in the METADATA and DATA packets.
</t>
<t>
- identifying the Bundle Agent in use, by providing an Endpoint Identifier
(EID) in the Saratoga BEACON packet.
</t>


<t>

Note that the name of a file holding a bundle is actually unimportant, as long
as it can be determined that it does hold a bundle. The filename becomes
temporary, and local only to the transfer.  One implementation
strategy is to name each bundle file with a file name constructed from two
fields of the Primary Bundle Header:  the DTN Endpoint Identifier (EID) of the
destination node and
the bundle's creation time field.  In the rare case of filename collisions in
using this scheme, additional octets can be appended to the filename following
some arbitrary local scheme.  Bundle files might be placed in different
directories with different Saratoga-peer access controls depending on the
intended next-hop, if this information is known ahead of time.  In any case,
Saratoga only provides the transfer mechanism, and any forwarding decisions
based on routing intelligence would be made within the DTN bundle agents.
All of this detail is considered a matter of implementation for the bundle
agent, and is not specified here.

</t>
<t>

The identity field in the Saratoga BEACON packet allows a local DTN bundle agent to
advertise its administrative EID via Saratoga. Other Saratoga peers that
hear that BEACON can then notify their local DTN bundle agents of the contact.
These notifications might be used to integrate contact information into a
routing information base, as they are similar to the &quot;hello&quot; packets
used in several routing protocols.  However, this is outside the scope of this
document.

</t>

    <t>

The &quot;epoch&quot; format used in Saratoga timestamps
in file object records is the number of seconds since January 1, 2000 in UTC,
which is the same epoch used in the DTN Bundle Protocol for timestamps. This must
include all leapseconds.

    </t>
<t>

Saratoga instances can work in conjunction with DTN
bundle agents to fill the role of a convergence-layer adapter between bundle
agents connected via point-to-point links.  Saratoga implementations designed
to work this way should have a way of notifying bundle agents when they receive
BEACONs from other nodes, and when transfers have completed.  In order for
custody transfer to function properly, notifications between the Saratoga
instances and bundle agents on both sides of a fully-successful bundle file
transfer are required.

</t>

<t>
When Saratoga is used as a convergence-layer adapter, it is desirable to turn on
Saratoga's end-to-end checksum facilty to provide an indication of correct
bundle transfer. This is necessary due to the bundle protocol design not including
its own reliability checks for internal robustness. See discussion of this problem
with the bundle protocol in <xref target="I-D.irtf-dtnrg-bundle-checksum" />.
</t>
</section>

<section title="Proactive and Reactive Fragmentation">

<t>
Proactive fragmentation - splitting a bundle, before transfer, into multiple separate
Saratoga transfers that are reassembled after delivery at the receiving peer -
is relatively straightforward. Reactive fragmentation - recovery of disrupted
partial transfers - is less so.
</t>

<t>
For bundle file transfers, the local bundle agent could interact with Saratoga in
order to perform a reactive fragmentation of the bundle whose transfer was
interrupted by expiration of the inactivity timer.  For DTN custody transfer,
we expect complications to be encountered in making this reactive fragmentation
work properly, and the details required to implement this functionality are left
out of this specification until more experience has been obtained with reactive
fragmentation in general.
</t>
<t>

This document does not specify the functionality required for reactive
fragmentation of bundles as described in <xref target="RFC4838"/>, other
than what is needed to support disrupted delivery and hop-by-hop custody
transfer of complete bundles. Reactive fragmentation of bundles lies outside
the scope of custody transfer of complete bundles, and of this document.

</t>
<t>

However, the status of
a transfer that Saratoga provides to a bundle agent could be used to
trigger the reactive fragmentation of bundles if a bundle file transfer is
interrupted part-way through (assuming at least the bundle protocol headers and
some portion of the data was successfully transferred first).  This would allow
for efficient recovery when unplanned interruptions occur.  This
requires some coordination between the Saratoga node and the local bundle
agent at each end. The local API or coupling between the Saratoga peer and its
bundle agent does not affect the
interoperability between either the Saratoga peers or the DTN bundle agents,
assuming that both sides agree that fragmentation will occur at the lowest
un-acknowledged octet of the bundle file after the disruption.  Reactive
fragmentation and any forwarding of the fragments onwards for
reassembly at some downstream node is solely a bundle-agent problem.

</t>

</section>

<section title="IANA Considerations">
<t>
This document has no actions for IANA.
</t>
</section>

    <section title="Security Considerations">
      <t>

When Saratoga is also used with a bundle agent, the security and reliability
considerations that have been outlined in detail
in <xref target="I-D.irtf-dtnrg-bundle-checksum" /> should be borne in mind.
</t>

<t>
Security in DTNs is in general considered an open issue.  If a framework of
techniques for handling security in DTN scenarios emerges, Saratoga might be
adapted to conform to this.

      </t>
    </section>

    <section title="A Note on Naming">
<t>

Saratoga is named for the USS Saratoga (CV-3), the aircraft carrier sunk at
Bikini Atoll and now a popular diving site.

</t>
<t>

The philosophy behind the protocol
and its use described here can be summarized as Saratoga Carries Upper Bundles
Adequately, or SCUBA.

</t>
    </section>

  </middle>
  <back>


    <references title="Informative References">
      <?rfc include="reference.RFC.4838" ?>
      <?rfc include="reference.RFC.5050" ?>
      <?rfc include="reference.RFC.5325" ?>
      <?rfc include="reference.RFC.5327" ?>
      <?rfc include="reference.I-D.irtf-dtnrg-tcp-clayer"?>
      <?rfc include="reference.I-D.irtf-dtnrg-udp-clayer"?>

      <?rfc include="reference.I-D.irtf-dtnrg-bundle-checksum" ?>
<!--
      <reference anchor="I-D.irtf-dtnrg-bundle-checksum">
       <front>
        <title>Reliability-only Ciphersuites for the Bundle Protocol</title>
        <author initials="W." surname="Eddy"><organization /></author>
        <author initials="L." surname="Wood"><organization /></author>
	<author initials="W." surname="Ivancic"><organization /></author>
        <date month="May" year="2011"/>
       </front>
        <seriesInfo name="draft-irtf-dtnrg-bundle-checksum-09 (work in progress)" value=""/>
      </reference>
-->
      <reference anchor="IAC-2008">
       <front>
        <title>Use of the Delay-Tolerant Networking Bundle Protocol from Space</title>
        <author initials="L." surname="Wood"><organization /></author>
	<author initials="W." surname="Ivancic"><organization /></author>
<author initials="W." surname="Eddy"><organization /></author>
<author initials="D." surname="Stewart"><organization /></author>
<author initials="J." surname="Northam"><organization /></author>
<author initials="C." surname="Jackson"><organization /></author>
<author initials="A." surname="da Silva Curiel"><organization /></author>
        <date month="September" year="2008"/>
       </front>
        <seriesInfo name="conference paper IAC-08-B.2.3.10, 59th International Astronautical Congress, Glasgow" value=""/>
      </reference>

      <reference anchor="SSTL-2008">
       <front>
        <title>UK-DMC satellite first to transfer sensor data from space using 'bundle' protocol</title>
	<author initials="SSTL" surname=""><organization /></author>
        <date month="September" year="2008"/>
       </front>
        <seriesInfo name="press release, Surrey Satellite Technology Ltd" value=""/>
      </reference>

      <reference anchor="Ivancic10">
       <front>
        <title>Experience with delay-tolerant networking from orbit</title>
         <author initials="W." surname="Ivancic"><organization /></author>
         <author initials="W." surname="Eddy"><organization /></author>
         <author initials="D." surname="Stewart"><organization /></author>
         <author initials="L." surname="Wood"><organization /></author>
         <author initials="J." surname="Northam"><organization /></author>
         <author initials="C." surname="Jackson"><organization /></author>
        <date month="September-December" year="2010"/>
       </front>
        <seriesInfo name="International Journal of Satellite Communications and Networking," value="Special Issue on best papers of the Fourth Advanced Satellite Mobile Systems Conference (ASMS 2008), vol. 28, issues 5-6, pp. 335-351"/>
      </reference>

      <?rfc include="reference.I-D.kutscher-dtnrg-uni-clayer" ?>
      <?rfc include="reference.RFC.0768" ?>
      <?rfc include="reference.RFC.3828" ?>
<!-- 
    <?rfc include="reference.I-D.wood-tsvwg-saratoga" ?>
-->
     <reference anchor="I-D.wood-tsvwg-saratoga">
       <front>
        <title>Saratoga: A Scalable File Transfer Protocol</title>
        <author initials="L." surname="Wood"><organization /></author>
	<author initials="J." surname="McKim"><organization /></author>
	<author initials="W." surname="Eddy"><organization /></author>
	<author initials="W." surname="Ivancic"><organization /></author>
	<author initials="C." surname="Jackson"><organization /></author>
        <date month="April" year="2014"/>
       </front>
        <seriesInfo name="draft-wood-tsvwg-saratoga-15 (work in progress)" value=""/>
      </reference>

    </references>

  </back>
</rfc>
