<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-taylor-dtn-btpx-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="BTPX">Bundle Transfer Protocol - Cross-Link</title>
    <seriesInfo name="Internet-Draft" value="draft-taylor-dtn-btpx-00"/>
    <author fullname="Rick Taylor">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>rtaylor@aalyria.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="15"/>
    <area>Internet</area>
    <workgroup>Delay/Disruption Tolerant Networking</workgroup>
    <keyword>DTN</keyword>
    <keyword>BPv7</keyword>
    <keyword>Bundle Protocol</keyword>
    <keyword>BTPU</keyword>
    <keyword>BTPX</keyword>
    <abstract>
      <?line 42?>

<t>The Bundle Transfer Protocol - Unidirectional (BTPU) provides for the transfer of large binary objects, typically Bundle Protocol version 7 bundles, over a unidirectional, unreliable, frame-based link-layer protocol, and by design includes no return path.</t>
      <t>This document defines the Bundle Transfer Protocol - Cross-Link (BTPX), an extension to BTPU for deployments where independent BTPU channels exist in both directions between a pair of nodes.  It defines how a Transfer or a Bundle Message on one channel is referenced from another, and a first application of such references, the Transfer Status Message, which allows a receiver to indicate to a sender that continued transfer of an object is unnecessary, and why.</t>
      <t>This document defines no segment-level acknowledgement or retransmission semantics; such mechanisms are deferred to future documents.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ricktaylor.github.io/btpx/draft-taylor-dtn-btpx.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-taylor-dtn-btpx/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Delay/Disruption Tolerant Networking Working Group mailing list (<eref target="mailto:dtn@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dtn/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dtn/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ricktaylor/btpx"/>.</t>
    </note>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Bundle Transfer Protocol - Unidirectional (BTPU) <xref target="I-D.ietf-dtn-btpu"/> transfers Bundles over unidirectional, unreliable, frame-based link-layer protocols.  Because the underlying link-layer is unidirectional, the protocol includes no in-band return path: loss is handled solely by the repetition of Messages by the sender.</t>
      <t>However, many deployments of unidirectional link-layer protocols are not unidirectional at the system level: pairs of opposing unidirectional channels frequently exist between the same two nodes, for example, a high-rate space downlink paired with a low-rate uplink, and each such channel can carry an independent instance of BTPU.  The Deployment Considerations of <xref target="I-D.ietf-dtn-btpu"/> note that any acknowledgement system designed to provide reliability requires a logically separate path from receiver back to sender.  When such a logically separate path is itself a BTPU channel in the opposing direction, the two channels can be "cross-linked": Messages received on one channel can refer to Transfers occurring on another.</t>
      <t>This document defines the Bundle Transfer Protocol - Cross-Link (BTPX), the minimal machinery required for such cross-linking:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="transfer-references">Transfer References</xref>, which identify a Transfer on any Associated Channel by the Session ID and Transfer number assigned by its sender, without requiring any additional information to be carried in the Messages of the Transfer, and <xref target="bundle-references">Bundle References</xref>, which identify a Bundle Message by a Bundle Message ID carried in the optional <xref target="bundle-message-id-hint">Bundle Message ID Hint</xref>.</t>
        </li>
        <li>
          <t>The <xref target="transfer-status-message">Transfer Status Message</xref>, which allows a node receiving an object to report to the sending node that continued transfer of the object is unnecessary, and why.</t>
        </li>
      </ul>
      <t>The reference mechanism is intentionally more general than the single application defined in this document: future documents can define further feedback semantics, such as selective or negative acknowledgement, built on the same References.  This document deliberately defines no segment-level acknowledgement or retransmission: a Transfer Status Message reports the disposition of a whole object, which allows a sender to suppress unnecessary transmission, and informs its upper layer of the reason, but places no obligation on a sender to retransmit an object.</t>
      <t>All feedback enabled by this document is advisory.  A sender that never receives, or chooses to ignore, a Transfer Status Message behaves exactly as a sender conforming to <xref target="I-D.ietf-dtn-btpu"/> alone, and no mechanism in this document places any additional data retention obligation on a sender.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<section anchor="terminology">
        <name>Terminology</name>
        <t>This document uses the terms Bundle, Link-layer PDU, Message, Segment, Session, Transfer, Transfer Message, and Transfer Window as defined in <xref target="I-D.ietf-dtn-btpu"/>.  Additionally, within the scope of this document, the following terms have specific meaning:</t>
        <dl>
          <dt>Channel:</dt>
          <dd>
            <t>A single instance of the BTPU protocol between one sending node and one or more receiving nodes, operating over a single logical channel of a link-layer protocol, as described in <xref target="I-D.ietf-dtn-btpu"/>.</t>
          </dd>
          <dt>Transfer Reference:</dt>
          <dd>
            <t>The combination of the Session ID of a Session and a Transfer number, which together identify a single Transfer sent by a node, see <xref target="transfer-references"/>.</t>
          </dd>
          <dt>Bundle Reference:</dt>
          <dd>
            <t>The combination of the Session ID of a Session and a Bundle Message ID, which together identify a single Bundle Message sent by a node, see <xref target="bundle-references"/>.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>A Transfer Reference or a Bundle Reference.</t>
          </dd>
          <dt>Associated Channels:</dt>
          <dd>
            <t>The set of Channels, in both directions, between a pair of nodes, known to each node by a-priori configuration, see <xref target="channel-association"/>.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <section anchor="channel-association">
        <name>Channel Association</name>
        <t>This extension applies when a pair of nodes is connected by Channels in both directions.  It assumes that a-priori configuration identifies, for each Channel, the node at the far end, and hence which Channels form the set of Associated Channels between a pair of nodes.  No in-band discovery or negotiation mechanism is defined.</t>
        <t>Because a Reference is unambiguous within the scope of the node that sent the referenced Transfer or Bundle Message, see <xref target="transfer-references"/> and <xref target="bundle-references"/>, correlation does not depend on which particular Channel carries a Message: any number of Channels in each direction can be associated between a pair of nodes, and a Message received on any Associated Channel can be correlated with a Transfer on any other.</t>
        <t>A Channel carrying Transfer Status Messages is an ordinary BTPU Channel: it can simultaneously carry its own Transfers, with the Transfer Status Messages multiplexed between the Messages of those Transfers in the usual way.  No dedicated feedback channel is required.</t>
      </section>
      <section anchor="transfer-references">
        <name>Transfer References</name>
        <t>A Transfer Reference identifies a Transfer by the Session ID of the Session in which it was sent, as announced in the Session Start Message defined in <xref target="I-D.ietf-dtn-btpu"/>, together with its Transfer number.  A receiving node learns both from the Messages of the Channel itself, so no additional information needs to be carried in the Messages of a Transfer for it to be referenced.</t>
        <t>A Transfer number alone is not sufficient: it is meaningful only within a single Session on a single Channel.  The Session ID distinguishes the Sessions of a Channel, for example before and after a sender restart, and a node implementing this extension <bcp14>MUST NOT</bcp14> use the same Session ID for two concurrent Sessions on Channels on which it is the sender, so that the Session ID also distinguishes its Channels.  As a Transfer Reference is only ever interpreted by the node that sent the Transfer, the Session IDs chosen by other nodes are irrelevant.</t>
        <t>A Transfer Reference identifies a Transfer, not the object transferred: if the same object is transferred again, for example on a different Channel, or after an earlier Transfer was cancelled, the new Transfer has a different Transfer Reference.  A sending node that wishes to act on reports about an object, for example to avoid transferring it to the same node again, records the object transferred by each Transfer for as long as it wishes to act on reports about that Transfer.  This retention is a matter of local policy, and is not constrained by the Transfer Window: a report can be acted upon long after the Transfer has left the Transfer Window, provided that the sender has not discarded its record.  A Transfer number recurs within a Session only after a further 2^32 Transfers, so a sender that discards its records before then never finds a Transfer Reference ambiguous.</t>
      </section>
      <section anchor="bundle-references">
        <name>Bundle References</name>
        <t>A Bundle Message, as defined in <xref target="I-D.ietf-dtn-btpu"/>, carries no Transfer number.  A sender that wishes to receive reports about an object transferred in a Bundle Message includes a <xref target="bundle-message-id-hint">Bundle Message ID Hint</xref> in the Bundle Message, carrying a Bundle Message ID which, together with the Session ID of the current Session, forms a Bundle Reference.  The Bundle Message ID Hint is optional, and need only be included when the sender wishes to receive reports about the object.  A sender <bcp14>MUST NOT</bcp14> emit a Bundle Message carrying a Bundle Message ID Hint before the Session Start Message of the Session, or after its Session End Message.</t>
        <t>Bundle Message IDs form a number space separate from that of Transfer numbers, and are not subject to the Transfer Window: assigning a Bundle Message ID does not consume a Transfer number, so that the emission of Bundle Messages does not cause the Transfer Windows of receivers to advance, cancelling Transfers in progress.  A sender assigns Bundle Message IDs sequentially within a Session, starting from any value, and incrementing by one, modulo 2^32, for each Bundle Message carrying a Bundle Message ID Hint; repetitions of a Bundle Message are exact copies, and so carry the same Bundle Message ID.  As for Transfer References, a sender that discards its records before a Bundle Message ID recurs never finds a Bundle Reference ambiguous.</t>
        <t>A receiving node learns the Session ID of a Channel from its Session Start Message, and so cannot form a Bundle Reference for a Bundle Message received while it has no current Session.</t>
      </section>
      <section anchor="reporting-status">
        <name>Reporting Transfer Status</name>
        <t>When a node receives the Messages of a Transfer, or a Bundle Message carrying a Bundle Message ID Hint, it might determine that continued transmission of the object is unnecessary, for example:</t>
        <ul spacing="normal">
          <li>
            <t>The node has received the complete object, or already holds a copy, perhaps received via another route.  When the object is a BPv7 bundle, its primary block, which identifies the bundle, is normally contained in the first Segment, allowing an existing copy to be recognized early in a Transfer.</t>
          </li>
          <li>
            <t>The node has insufficient resources to receive the object.</t>
          </li>
          <li>
            <t>The node will not accept the object, whether as a matter of policy, for example because it exceeds a size limit, or because the object is invalid.</t>
          </li>
        </ul>
        <t>In such cases, the receiving node <bcp14>MAY</bcp14> emit a <xref target="transfer-status-message">Transfer Status Message</xref>, carrying the Reference of the Transfer or Bundle Message and a Status Code describing the disposition of its object, on any Associated Channel on which it is the sender.  On receipt, the original sending node can cancel the Transfer if it is still in progress, cease emitting further repetitions of its Messages, and, depending on the Status Code, refrain from transferring the object to that node again, freeing channel capacity for other Transfers.</t>
        <t>Reporting completion is particularly valuable when the sender uses generous Message repetition as a defense against loss, as described in <xref target="I-D.ietf-dtn-btpu"/>: in the style of a fountain code, a sender can plan to repeat the Messages of a Transfer or a Bundle Message until a Transfer Status Message with a Status Code of 'Completed' is received, or a local repetition budget is exhausted.  The absence of a report never obliges a sender to continue transmission: repetition remains bounded by local policy.</t>
        <t>Status reporting is advisory and opportunistic.  A Transfer Status Message can be lost in transmission, like any other Message, and can be repeated by the emitting node as a defense against loss, following the repetition rules of <xref target="I-D.ietf-dtn-btpu"/>.  Due to signal propagation delay, a sender might complete a Transfer before a report about it arrives, and a receiver might continue to receive Segments for some time after emitting a report; both are expected behavior, and the semantics of the Transfer Status Message are deliberately idempotent, such that processing a report multiple times, or after the referenced Transfer has completed, causes no harm.</t>
        <t>Because a Channel can have multiple receiving nodes, a Transfer Status Message is evidence about the state of the single reporting node only.  Whether a sender ceases transmission on a Channel with multiple receiving nodes as a result of a report from one of them is a matter of sender policy.</t>
      </section>
    </section>
    <section anchor="bundle-message-id-hint">
      <name>Bundle Message ID Hint</name>
      <t>The Bundle Message ID Hint Item is used to assign a Bundle Message ID to the containing Bundle Message, so that the object it carries can be referenced by a <xref target="bundle-references">Bundle Reference</xref>.</t>
      <t>This Hint Item is valid in Bundle Messages.</t>
      <t>The Hint Item has a Hint Type of TBD2, and its layout is as follows:</t>
      <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type (TBD2) |H|     Length    |       Bundle Message ID       :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:          (continued)          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <dl>
        <dt>Length:</dt>
        <dd>
          <t>The length of the <tt>Bundle Message ID</tt> field.  This <bcp14>MUST</bcp14> be 4.</t>
        </dd>
        <dt>Bundle Message ID:</dt>
        <dd>
          <t>The Bundle Message ID assigned to the containing Bundle Message, encoded as a 32-bit unsigned integer in network byte order.</t>
        </dd>
      </dl>
    </section>
    <section anchor="transfer-status-message">
      <name>Transfer Status Message</name>
      <t>The Transfer Status Message is used by a node to report to the sender of an object, via an Associated Channel, its disposition of the object transferred by the Transfer or Bundle Message identified by a Reference, indicating that continued transmission of the object to the reporting node is unnecessary.</t>
      <t>A Transfer Status Message has a type of TBD1.  The Message Content field is formatted as follows:</t>
      <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Session ID                                                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number                                                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ref. Type     | Status Code   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <dl>
        <dt>Session ID:</dt>
        <dd>
          <t>The Session ID of the Session in which the referenced Transfer or Bundle Message was sent, encoded as a 32-bit unsigned integer in network byte order.</t>
        </dd>
        <dt>Number:</dt>
        <dd>
          <t>The Transfer number of the referenced Transfer, or the Bundle Message ID of the referenced Bundle Message, according to the Reference Type, encoded as a 32-bit unsigned integer in network byte order.</t>
        </dd>
        <dt>Reference Type:</dt>
        <dd>
          <t>The kind of Reference carried, encoded as an 8-bit unsigned integer: 0 for a <xref target="transfer-references">Transfer Reference</xref>, or 1 for a <xref target="bundle-references">Bundle Reference</xref>.  Other values are reserved for future documents.</t>
        </dd>
        <dt>Status Code:</dt>
        <dd>
          <t>The disposition being reported, encoded as an 8-bit unsigned integer, with values allocated from the "BTPU Transfer Status Codes" IANA registry, see <xref target="iana-considerations"/>.</t>
        </dd>
      </dl>
      <t>The Message Content of a Transfer Status Message, excluding any Hint Items, is exactly 10 octets in length.  A Transfer Status Message with Message Content of any other length is invalid, as defined in <xref target="I-D.ietf-dtn-btpu"/>.</t>
      <t>The Transfer Status Message is not a Transfer Message: although it carries a Transfer number, that number refers to a Transfer on another Channel, and so the Message is subject to neither the Transfer Window nor the Session of the Channel on which it is emitted.</t>
      <t>The following Status Codes are defined by this document: <cref anchor="_1">The initial Status Codes draw on the transfer refusal reason codes of RFC 9174, but are defined independently.  Whether further Status Codes are needed needs discussing by the WG.</cref></t>
      <table align="left" anchor="tab-status-codes">
        <name>Transfer Status Codes</name>
        <thead>
          <tr>
            <th align="center">Code</th>
            <th align="left">Name</th>
            <th align="left">Transfer Again</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="center">0x00</td>
            <td align="left">Unspecified</td>
            <td align="left">May</td>
            <td align="left">No reason is given</td>
          </tr>
          <tr>
            <td align="center">0x01</td>
            <td align="left">No Resources</td>
            <td align="left">May</td>
            <td align="left">The reporting node currently lacks the resources to receive the object</td>
          </tr>
          <tr>
            <td align="center">0x80</td>
            <td align="left">Completed</td>
            <td align="left">Should not</td>
            <td align="left">The reporting node holds the complete object</td>
          </tr>
          <tr>
            <td align="center">0x81</td>
            <td align="left">Not Acceptable</td>
            <td align="left">Should not</td>
            <td align="left">The reporting node will not accept the object</td>
          </tr>
        </tbody>
      </table>
      <t>Every Status Code indicates that the reporting node requires no further transmission of the object; the reaction of a sender to this is described in <xref target="processing-status-reports"/>.  The Status Code additionally indicates why, and is passed to the upper layer of the sending node, typically a bundle protocol agent, as an indication of the disposition of the object.</t>
      <t>The most significant bit of a Status Code indicates whether the object could usefully be transferred to the reporting node again.  If the bit is clear, the condition reported might be temporary, and a sender <bcp14>MAY</bcp14> transfer the object to the reporting node again later.  If the bit is set, a sender <bcp14>SHOULD NOT</bcp14> transfer the same object to the reporting node again.  This applies to every Status Code, including any that a sender does not recognize, so that a sender can act appropriately on Status Codes defined after it was implemented.</t>
      <t>The Status Codes defined in this document have the following meanings:</t>
      <dl>
        <dt>Unspecified:</dt>
        <dd>
          <t>The reporting node requires no further transmission of the object, and gives no reason.</t>
        </dd>
        <dt>No Resources:</dt>
        <dd>
          <t>The reporting node lacks the resources to receive the object at present.  A bundle protocol agent might fragment the bundle before transferring it again.</t>
        </dd>
        <dt>Completed:</dt>
        <dd>
          <t>The reporting node holds the complete object, either because it has received all of it, or because it already held a copy, perhaps received via another route.  A sender <bcp14>MAY</bcp14> consider the object completely received by the reporting node.</t>
        </dd>
        <dt>Not Acceptable:</dt>
        <dd>
          <t>The reporting node will not accept the object, whether as a matter of policy, for example because it exceeds a size limit or is unwanted, or because the object has been found to be invalid, which a further transfer of the same object cannot remedy.</t>
        </dd>
      </dl>
      <section anchor="emitting-status-reports">
        <name>Emitting Status Reports</name>
        <t>A node <bcp14>MAY</bcp14> emit a Transfer Status Message about any Transfer of which it has received Messages, or any Bundle Message carrying a Bundle Message ID Hint that it has received, when continued transmission of the object is unnecessary.  In particular, emitting a Transfer Status Message with a Status Code of 'Completed' as soon as an object is complete informs the sender that any further repetition is unnecessary.  The Message is emitted on any Associated Channel on which the reporting node is the sender.</t>
        <t>As with any Message, a Transfer Status Message <bcp14>MAY</bcp14> be repeated as a defense against loss, following the repetition rules of <xref target="I-D.ietf-dtn-btpu"/>.</t>
        <t>The emission of Transfer Status Messages is never required: a node that never emits them is indistinguishable from a node that does not implement this extension.</t>
      </section>
      <section anchor="processing-status-reports">
        <name>Processing Status Reports</name>
        <t>A node that receives a Transfer Status Message on a Channel uses the carried Reference to identify a Transfer or Bundle Message that it is sending, or has recently sent, on any Associated Channel towards the node from which the report was received.  A node <bcp14>MUST</bcp14> ignore a Transfer Status Message carrying a Reference Type that it does not recognize, and <bcp14>MUST NOT</bcp14> consider an object completely received on the basis of a Status Code that it does not recognize.</t>
        <t>If the Reference identifies an in-progress Transfer, the node <bcp14>SHOULD</bcp14> cease emitting further Transfer Segment Messages for that Transfer, and <bcp14>SHOULD</bcp14> emit a Transfer Cancel Message, as defined in <xref target="I-D.ietf-dtn-btpu"/>, on the Channel carrying the Transfer, so that all receiving nodes of that Channel discard any partially reassembled data.  If the Reference identifies a Bundle Message, or a Transfer that has been completely emitted, whose Messages are still being repeated, the node <bcp14>SHOULD</bcp14> cease emitting further repetitions.  These reactions are the same for every Status Code: each code defined in this document indicates that continued transmission to the reporting node is unnecessary.</t>
        <t>Beyond ceasing transmission, the behavior of a node on receipt of each Status Code is as described in <xref target="transfer-status-message"/>.  The absence of a report is not evidence that an object was not received, as the report might have been lost.</t>
        <t>The node <bcp14>MAY</bcp14> record the report against the object transferred, together with its Status Code, to inform future decisions about transferring the same object to the reporting node.  The retention and interpretation of recorded reports is a matter of local policy.</t>
        <t>If the Reference does not identify a Transfer or Bundle Message for which the node holds a record, the Message <bcp14>MUST</bcp14> be ignored.  Late-arriving reports are expected under long signal propagation delays, and are not an error.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="I-D.ietf-dtn-btpu"/> apply to this document.</t>
      <t>BTPU as defined in <xref target="I-D.ietf-dtn-btpu"/> gives a receiving node no influence over the behavior of a sending node.  This document introduces such an influence: a forged or replayed Transfer Status Message could cause a sender to cancel a Transfer and suppress future Transfers of an object, resulting in a targeted denial of delivery that is not possible with the base protocol.  A forged Status Code of 'Completed' is particularly harmful, as it may additionally cause the sender to believe that the object was completely received.</t>
      <t>To forge a plausible report, an attacker needs a Reference that the sender will recognize.  Transfer numbers and Bundle Message IDs are sequential, and hence predictable, but the Session ID is chosen at random by the sender, as described in <xref target="I-D.ietf-dtn-btpu"/>, so an off-path attacker that has not observed a Channel would need to guess a 32-bit value.  This is not intended to provide cryptographic protection: where the forgery of reports by an off-path attacker is a concern, deployments rely on link-layer mechanisms to prevent the injection of Link-layer PDUs, as they do for the other Messages of <xref target="I-D.ietf-dtn-btpu"/>.</t>
      <t>An on-path attacker able to observe a Channel can learn its Session ID, Transfer numbers, and Bundle Message IDs, and subsequently forge reports on a return Channel.  Consistent with <xref target="I-D.ietf-dtn-btpu"/>, protection against on-path attackers is a matter for link-layer security mechanisms; upper-layer mechanisms such as BPSec <xref target="RFC9172"/> protect the transferred bundles themselves, but cannot protect the Messages of this protocol.</t>
      <t>A sender that records reports to suppress future Transfers <bcp14>SHOULD</bcp14> bound the lifetime of such records, limiting the period during which a replayed or forged report can suppress delivery.</t>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <t>In addition to the Deployment Considerations of <xref target="I-D.ietf-dtn-btpu"/>, which continue to apply to each Channel independently, the following caveats are to be considered before deploying this extension:</t>
      <ol spacing="normal" type="1"><li>
          <t>All feedback defined in this document is advisory and opportunistic.  Status reports can be lost in transmission; a deployment gains efficiency when they arrive, but correct operation never depends on their delivery.</t>
        </li>
        <li>
          <t>The association of Channels between a pair of nodes requires a-priori configuration.  No in-band discovery or negotiation mechanism is defined.</t>
        </li>
        <li>
          <t>It does not signal whether a receiving node is present on, or receiving, a Channel.  Deployments are expected to learn this from the link layer, from contact plans, or by other means.</t>
        </li>
        <li>
          <t>In mixed deployments, nodes not implementing this extension will encounter the Transfer Status Message and the Bundle Message ID Hint as unrecognized Message and Hint types, and handle them accordingly, as specified in <xref target="I-D.ietf-dtn-btpu"/>.</t>
        </li>
      </ol>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="btpu-message-types">
        <name>BTPU Message Types</name>
        <t>IANA is requested to assign a new value from the "BTPU Message Types" registry, defined in <xref target="I-D.ietf-dtn-btpu"/>, for the new Message type defined in this document:</t>
        <table align="left" anchor="tab-message-types">
          <name>Additional BTPU Message Type</name>
          <thead>
            <tr>
              <th align="center">Type</th>
              <th align="left">Message</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">TBD1</td>
              <td align="left">
                <xref target="transfer-status-message">Transfer Status Message</xref></td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="btpu-hint-types">
        <name>BTPU Hint Types</name>
        <t>IANA is requested to assign a new value from the "BTPU Hint Types" registry, defined in <xref target="I-D.ietf-dtn-btpu"/>, for the new Hint type defined in this document:</t>
        <table align="left" anchor="tab-hint-types">
          <name>Additional BTPU Hint Type</name>
          <thead>
            <tr>
              <th align="center">Type</th>
              <th align="left">Hint</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">TBD2</td>
              <td align="left">
                <xref target="bundle-message-id-hint">Bundle Message ID</xref></td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>The Message types in which the Bundle Message ID Hint is valid are specified in <xref target="bundle-message-id-hint"/>.</t>
      </section>
      <section anchor="btpu-transfer-status-codes-registry">
        <name>BTPU Transfer Status Codes Registry</name>
        <t>IANA is requested to create a new registry entitled "BTPU Transfer Status Codes", in the existing "Bundle Protocol" registry group.  The registration procedures for this registry, using terms defined in <xref target="RFC8126"/>, is:</t>
        <table align="left" anchor="tab-status-codes-reg">
          <name>BTPU Transfer Status Codes registration policies</name>
          <thead>
            <tr>
              <th align="center">Values</th>
              <th align="left">Transfer Again</th>
              <th align="left">Registration Procedure</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0x00..0x6F</td>
              <td align="left">May</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="center">0x70..0x7F</td>
              <td align="left">May</td>
              <td align="left">Private Use</td>
            </tr>
            <tr>
              <td align="center">0x80..0xEF</td>
              <td align="left">Should not</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="center">0xF0..0xFF</td>
              <td align="left">Should not</td>
              <td align="left">Private Use</td>
            </tr>
          </tbody>
        </table>
        <t>The most significant bit of a Status Code indicates whether a sender may transfer the object to the reporting node again, see <xref target="transfer-status-message"/>.  Specifications defining new Status Codes <bcp14>MUST</bcp14> specify whether a sender may transfer the object to the reporting node again, and <bcp14>MUST</bcp14> allocate a value from the corresponding range.</t>
        <t>The initial values for the registry are given in <xref target="tab-status-codes"/>.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-dtn-btpu">
          <front>
            <title>Bundle Transfer Protocol - Unidirectional</title>
            <author fullname="Rick Taylor" initials="R." surname="Taylor">
              <organization>Aalyria Technologies</organization>
            </author>
            <date day="15" month="October" year="2026"/>
            <abstract>
              <t>   This document defines a protocol for the unidirectional transfer of
   large binary objects, typically Bundle Protocol version 7 bundles,
   between two nodes connected by a unidirectional, unreliable, frame-
   based link-layer protocol, without requiring IP services.

   The protocol does not require a return path for acknowledgements, but
   instead supports data repetition as a mechanism to protect against
   data loss.  It fully supports the disaggregation of flows of binary
   objects of different priority, preventing head-of-line blocking
   impacting performance.

   The wire format of the protocol is designed to enable performant
   implementation in hardware or software, with the aim of enabling
   protocol implementations to run at the line-rate of the underlying
   link-layer protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-btpu-05"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9172">
          <front>
            <title>Bundle Protocol Security (BPSec)</title>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <author fullname="K. McKeever" initials="K." surname="McKeever"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document defines a security protocol providing data integrity and confidentiality services for the Bundle Protocol (BP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9172"/>
          <seriesInfo name="DOI" value="10.17487/RFC9172"/>
        </reference>
        <reference anchor="RFC9174">
          <front>
            <title>Delay-Tolerant Networking TCP Convergence-Layer Protocol Version 4</title>
            <author fullname="B. Sipos" initials="B." surname="Sipos"/>
            <author fullname="M. Demmer" initials="M." surname="Demmer"/>
            <author fullname="J. Ott" initials="J." surname="Ott"/>
            <author fullname="S. Perreault" initials="S." surname="Perreault"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document describes a TCP convergence layer (TCPCL) for Delay-Tolerant Networking (DTN). This version of the TCPCL protocol resolves implementation issues in the earlier TCPCL version 3 as defined in RFC 7242 and provides updates to the Bundle Protocol (BP) contents, encodings, and convergence-layer requirements in BP version 7 (BPv7). Specifically, TCPCLv4 uses BPv7 bundles encoded by the Concise Binary Object Representation (CBOR) as its service data unit being transported and provides a reliable transport of such bundles. This TCPCL version also includes security and extensibility mechanisms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9174"/>
          <seriesInfo name="DOI" value="10.17487/RFC9174"/>
        </reference>
      </references>
    </references>
    <?line 313?>

<section anchor="examples">
      <name>Examples</name>
      <section anchor="suppression-of-an-in-progress-transfer">
        <name>Suppression of an in-progress Transfer</name>
        <t>An example of the suppression of an in-progress Transfer between two nodes connected by one Channel in each direction is shown in <xref target="fig-suppression"/>.  Node A is transferring a large Bundle to Node B as Transfer 7 of Session s1 on Channel X, where TSeg(T, I) denotes a Transfer Segment Message for Transfer T with Segment Index I.  Node B already holds a complete copy of the Bundle, received earlier via another route.</t>
        <figure anchor="fig-suppression">
          <name>Suppression of an in-progress Transfer</name>
          <artwork><![CDATA[
Node A                                                Node B
   |                                                     |
   |  Channel X (A to B), Session ID s1                  |
   |  Channel Y (B to A)                                 |
   |                                                     |
   | TSeg(T=7, I=0) -----------------------------------> |
   | TSeg(T=7, I=1) -----------------------------------> |
   |                                                     |
   |           <---------- Status(Completed, s1, T=7)    |
   |                                                     |
   | TSeg(T=7, I=2) -----------------------------------> |
   |                                                     |
   | TCancel(T=7) -------------------------------------> |
   |                                                     |
]]></artwork>
        </figure>
        <t>On receipt of the first Transfer Segment Message, Node B recognizes from the primary block of the Bundle that it already holds a copy, and emits a Transfer Status Message with Status Code 'Completed', referencing Transfer 7 of Session s1, on Channel Y.  Due to the signal propagation delay, Node A emits a further Segment before the report arrives; this is expected behavior.  On receipt of the report, Node A ceases emitting Segments of Transfer 7, emits a Transfer Cancel Message on Channel X, and uses the reclaimed capacity of Channel X for other Transfers.  Node A records that Node B holds the Bundle transferred by Transfer 7, and does not offer it to Node B again.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The status reporting semantics defined in this document draw on the XFER_REFUSE and XFER_ACK mechanisms of the TCP Convergence-Layer Protocol Version 4 <xref target="RFC9174"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91dbXcUx5X+Pr+iVnwI2p0RCHuDM46TCAGxzmJgQcT24SSb
nu6aUYWe7klXt8TE+L/sb9lftvet3vpFEuDNh5XPMWimq7rqvt/n3ioWi8Vs
1pq21Ev1qKuKUqvzJqvsWjfqZVO3dV6XaqFOm9raxTNTvZtlq1WjL+Hp85c/
zPKs1Zu62S+VbYvZrKjzKtvCVEWTrdtFm+3LulkUbbVYtbv3i/v3Z7ZbbY21
pq7a/Q4ePHty/lTdUVlp66U6MFWhdxr+V7UHc3WgC9PWjclK/OXs5BH8UTfw
t1fnTw9mVbdd6WY5K2AJy1leV1ZXtrNL1TadnsECv5hljc5g1rOq1U2l24PZ
Vd282zR1t4NPH+sy2997bGzT7VpYjzqvSw1bb9Vz3eKDptoczGbv9B5+KZaz
2UI9Pn8O/3/08vIh/sHUckTCT85fvuE/fpjNsq69qBsatu7KksnyyuTv1DlR
ZaZgL5usMv/I8O1LdZKVe9irOtf5RVWX9cZoCw/pbWbKpWqYln/I+KmjvN7O
Zpe66mDvSn3cnpRi2h98z5+oP+Jw/JzfdQAM+4PR7foIVogfZ01+AR9ftO3O
Lu/dw6fwI3Opj9xj9/CDe6umvrL6Hoy/h+M2pr3oVjCygX3zBu6hIOB3JbDN
ttGs4ZkjHndkanr63qgwHV202xL4U9XNFih4CXSYmWod/bZYLFS2sm2T5e1s
dn6hrxPwN5UpTKNzpFpWqrvIy0O1a+pLU2irYF7VwgytG1qvYQfNRquVqbJm
r+rV32CwnSNpTZ6V5b4vIOpSNyj36qFa0TfwcA2fqUx1ycvn8HujS5OtSj1X
6wYkZ7HKrC5UCfq3AA7DoJ3MOldZVajVXsEqzaZSpsrLDldc1arRbddUape1
F0dIAGMVKGi3Be2Cx9emgsfa68kS9J5I8sMhvk/p9y3oGu6lrUnqiT6gumW9
x9mturrQjVaROvNj+UVWVbq0MIOxLXyvVnV7ofzmrVqBnGpdAVF2mSEyVzVs
50ips7Doi/oKHvDrrZGGsonvtLUZsAXWVlfavVDB1hsNz+oqBzqum3oL+4BX
64YJmKm1aWBF2W5XAvtId+DdtssvwkDk7kVEp9dt1nbWvXIOmzbwOPAelABm
hD1pgwwGIgElcFqNf8+URZqgQGWtAsPVGlDjIpEtIDJLFK68gy3k+JJmz6u9
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

-->

</rfc>
