<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dtn-btpu-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="BTPU">Bundle Transfer Protocol - Unidirectional</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-btpu-03"/>
    <author fullname="Rick Taylor">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>rtaylor@aalyria.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="19"/>
    <area>INT</area>
    <workgroup>Delay/Disruption Tolerant Networking</workgroup>
    <keyword>DTN</keyword>
    <keyword>BPv7</keyword>
    <keyword>Bundle Protocol</keyword>
    <abstract>
      <?line 72?>

<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.</t>
      <t>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.</t>
      <t>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>
    <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/btpu/draft-ietf-dtn-btpu.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-dtn-btpu/"/>.
      </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/btpu"/>.</t>
    </note>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Bundle Protocol version 7 (BPv7) is defined in terms a layered logical architecture, detailed in <xref target="RFC9171"/>, wherein the responsibility for the storing and routing of bundles lies with the Bundle Processing Agent (BPA), and the BPA relies upon Convergence Layer Protocols (CLAs) to provide bundle transport between nodes. CLAs provide a unified interface to the BPA, allowing BPAs to be link-layer agnostic, but still use a diverse range of Convergence Layer Protocols (CLPs) to transfer bundles between BPAs over underlying link-layer protocols.</t>
      <t>In the realm of near- and deep-space communication there are a number of standardized link-layer protocols, including <xref target="USLP"/>, <xref target="TM"/>, <xref target="AOS"/>, <xref target="DVB-S2X"/>, that share a set of common properties:</t>
      <ul spacing="normal">
        <li>
          <t>They are unidirectional: data transfer occurs in one direction only, there is no in-band return path for data.</t>
        </li>
        <li>
          <t>They are frame-based: the link-layer protocol will guarantee that a frame of data is either delivered to a receiver in its entirety or not at all. Frames can be of fixed or variable length.</t>
        </li>
        <li>
          <t>They provide a single logical channel: the communication between a sender and one or more receivers of frames can be logically separated from other communication over the link-layer by an implementation, perhaps by the use of channel identifiers, circuit identifiers, or tuples of source and destination address information.</t>
        </li>
      </ul>
      <t>These characteristics provide a common baseline that allows the definition of a lightweight mechanism for transferring BPv7 bundles meeting the requirements of a BPv7 Convergence Layer Protocol, and this document describes such a protocol: Bundle Transfer Protocol - Unidirectional (BTPU), suitable for implementation over any link-layer protocol that shares these characteristics.  The protocol is applicable to other link-layer technologies which share these characteristics beyond those commonly used for space communication, for example 5G Unstructured PDUs <xref target="_5G"/>, or Ethernet <xref target="IEEE.802.3"/>, without requiring underlying IP services.  Although designed for any link-layer protocol that shares the characteristics above, additional specification or profiling might be required to map the constructs of the link-layer protocol to the mechanisms defined in this specification.</t>
      <figure anchor="fig-stack">
        <name>The location of BTPU in relation to the Bundle Protocol and a Link-layer protocol</name>
        <artwork align="center"><![CDATA[
+----------------------+
|  DTN Application     |
+----------------------+
|  BPv7 / BPv6         |
+----------------------+
|  BTPU                |
+----------------------+
|  Link-layer Protocol |
+----------------------+
]]></artwork>
      </figure>
      <t>The driving use-case of the protocol has been the transfer of BPv7 Bundles, however it is equally capable of transferring any kind of binary data, but includes no explicit discriminator of the format of a particular block of binary data. If multiple different types of binary data are to be transferred by a single implementation, this specification considers the differentiation between different types of binary data to be a matter for the implementation. For example, both BPv6 Bundles (<xref target="RFC5050"/>) and BPv7 Bundles can be multiplexed without issue, as the different formats can be distinguished by simple examination of the initial octets of a received bundle by an implementation.  Additionally, the segmentation mechanism enables the use of this protocol with binary data formats that do not natively support some form of fragmentation.</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>Within the scope of this document, the following terms have specific meaning:</t>
        <dl>
          <dt>Bundle:</dt>
          <dd>
            <t>A higher-layer protocol data unit, typically a BPv7 Bundle as defined in <xref target="RFC9171"/>.</t>
          </dd>
          <dt>Link-layer PDU:</dt>
          <dd>
            <t>The protocol data unit, excluding any link-layer protocol specific headers or metadata, that makes up a complete transmission unit or frame, as defined by the link-layer protocol specification.</t>
          </dd>
          <dt>Message:</dt>
          <dd>
            <t>A single protocol data item, see <xref target="message-definitions"/>.</t>
          </dd>
          <dt>Segment:</dt>
          <dd>
            <t>In order to transfer a Bundle larger than a Link-layer PDU, Bundles can be subdivided into Segments in order to fit within a Link-layer PDU, see <xref target="transfers"/>.</t>
          </dd>
          <dt>Transfer:</dt>
          <dd>
            <t>The context in which the transmission of the Segments of a single Bundle occurs, see <xref target="transfers"/>.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>The purpose of the protocol is to transfer a series of Bundles between two nodes. Because a Bundle is of variable length, which is unlikely to be exactly the same size as a Link-layer PDU, the protocol defines a mechanism to divide Bundles into Segments as required, such that each Link-layer PDU is efficiently filled with data, and one or more Bundles can be transferred in a minimal number of Link-layer PDUs, described in more detail in <xref target="transfers"/>.</t>
      <t>This segmentation is unrelated to BPv7 bundle fragmentation as defined in <xref section="5.8" sectionFormat="of" target="RFC9171"/>.  Although BPv7 bundle fragmentation can be used to sub-divide oversized BPv7 bundles, the required duplication of metadata blocks can result in inefficiencies or fail to generate BPv7 bundle fragment small enough to fit in a single Link-layer PDU.</t>
      <t>As a sender can prioritize the transfer of each Bundle differently, the protocol allows for the multiplexing of Bundle transfers, so that the transfer of higher priority Bundles can interrupt the transfer of other Bundles, avoiding "head of line blocking", see <xref target="interleaving-transfers"/> for more detail.  The bundle transfers are expected to occur over the same logical channel, rather than using a separate channel for each bundle or group of bundles that share priority.  This does not preclude using multiple logical channels, but each channel is expected to be an independent instance of the protocol.</t>
      <section anchor="messages">
        <name>Messages</name>
        <t>The basic primitive of the protocol is the Message, a self-describing unit of protocol control information of variable length. The sender is responsible for composing one or more Messages as required, and packing them into a Link-layer PDU, such that a single PDU is optimally filled.  The receiving node parses the contained Messages from each received Link-layer PDU, and then processes them as individual control signals.  This sequence of Messages is the logical control-plane used by the protocol.  This document uses the verb "emit" to describe to the writing of a new Message to a Link-layer PDU ready for transmission, to differentiate from the the transmission of the Link-layer PDU itself, as many Messages can be emitted prior to the transmission of the containing PDU.</t>
        <t>See <xref target="message-definitions"/> for detail of each type of Message.</t>
      </section>
      <section anchor="padding">
        <name>Padding</name>
        <t>Because the size of a Bundle is not expected to exactly match the size of a Link-layer PDU, an implementation will likely need to add padding to the PDU so that the Link-layer PDU size requirements are met.  Two Messages are available for this purpose: The <xref target="definite-padding-message">Definite Padding Message</xref> and the <xref target="indefinite-padding-message">Indefinite Padding Message</xref>.  Padding Messages are valid at any point within a Link-layer PDU.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that implementations use the Definite Padding Message to add padding to a Link-layer PDU, except when less than four octets of padding are required, as the minimum length of the Definite Padding Message is four octets.</t>
        <t>When the link-layer protocol provides variable length Link-layer PDUs, implementations <bcp14>SHOULD</bcp14> take into account the mechanisms used by the link-layer protocol to support variable length Link-layer PDUs, and emit Link-layer PDUs of a suitable size for the underlying protocol. For example, if variable length Link-layer PDUs are implemented by the link-layer protocol using a sub-framing mechanism, then emitting Link-layer PDUs of a single, or whole number of sub-frames can increase reliability.</t>
        <t>The algorithm used to pad and pack Messages efficiently into Link-layer PDUs is an implementation matter.</t>
      </section>
    </section>
    <section anchor="transfers">
      <name>Segmentation and Transfers</name>
      <t>As described in the <xref target="protocol-overview">Protocol Overview</xref>, in order to transfer Bundles larger than a single Link-layer PDU into multiple PDUs, Bundles are be divided into a sequence of Segments by the sender and each Segment is emitted in its own a Message. However, if a complete Bundle can fit in the next Link-layer PDU, then the Bundle <bcp14>SHOULD</bcp14> be transferred without segmentation, see the <xref target="bundle-message">Bundle Message</xref>.</t>
      <t>Each Segment is assigned a monotonically increasing integral Segment Index that indicates the relative position of the Segment within the total sequence of Segments, with zero (0) indicating the first segment; i.e. Segments are ordered 0 to N, where N is the Segment Index in the Transfer End Message.</t>
      <t>The Segments of a Bundle <bcp14>MUST</bcp14> be emitted by the sender as a series of <xref target="transfer-segment-message">Transfer Segment Messages</xref> carrying the same Transfer identifier, starting with Segment Index zero (0).  The end of a transfer <bcp14>MUST</bcp14> be indicated by emitting a <xref target="transfer-end-message">Transfer End Message</xref>, including the index and data of the final Segment.</t>
      <t>In addition to a Segment Index, every Segment is associated with a Transfer that provides context to the sequence of Segments to enable the correct reassembly of the original Bundle. Each Transfer is assigned a number as an identifier, with each identified Transfer mapping to the segmentation of a single Bundle.</t>
      <t>Transfer numbers are expressed as 32-bit unsigned integers. A sending implementation <bcp14>SHOULD</bcp14> choose a random value between 0 and 2^32-1 for the first Transfer number, and each subsequent Transfer <bcp14>MUST</bcp14> use the next numeric value in the sequence.  To avoid placing a limit on the total number of Transfers between peers, numbers are allowed to "roll-over" to zero and repeat, i.e. the next number in the sequence is the previous number incremented by one, modulo 2^32.</t>
      <t>A receiver reassembles the transferred Bundle by concatenating the Segments that share a common Transfer number in the ascending order of their Segment Index.  The Segment Index in the Transfer End Message indicates the final Segment Index (N); a transfer is complete when Segments with indices 0 through N have been received.  Once all the Segments have been received and concatenated, a receiver is expected to pass the recombined Bundle to an upper layer for further processing.</t>
      <section anchor="interleaving-transfers">
        <name>Interleaving Transfers</name>
        <t>In order to support the transmission of Bundles with different priorities, Transfer Messages associated with different Transfers, i.e. with different Transfer numbers, <bcp14>MAY</bcp14> be interleaved.  This allows senders to interrupt the emission of a sequence of Segments associated with one Transfer with one or more Segments of another Transfer, preventing a large lower priority Transfer blocking a higher priority Transfers.</t>
      </section>
      <section anchor="cancelled">
        <name>Cancelling Transfers</name>
        <t>A Transfer can be aborted by the sender while a Transfer is in progress by emitting a <xref target="transfer-cancel-message">Transfer Cancel Message</xref> containing the identifier of the Transfer to cancel.  A receiver of a Transfer Cancel Message <bcp14>SHOULD</bcp14> discard any segments already received and <bcp14>MUST</bcp14> ignore any further Messages associated with the Transfer.</t>
      </section>
    </section>
    <section anchor="transfer-window">
      <name>Transfer Window</name>
      <t>Because Messages can be lost in transmission due to the loss of Link-layer PDUs, and a sender <bcp14>MAY</bcp14> emit duplicate Messages as a defense against loss, see <xref target="repetition"/>, a sender <bcp14>MUST</bcp14> maintain a sliding Transfer Window that defines the maximum number of Transfers that can be simultaneously in progress.  As Transfers are identified by a monotonically increasing number, the size of the Transfer Window also strictly defines the range of identifiers of Transfers in progress.</t>
      <t>The sender <bcp14>MUST</bcp14> maintain a reference to the greatest Transfer number used in any emitted Message, and <bcp14>MUST NOT</bcp14> emit any Message with a Transfer number less than or equal to the latest minus the size of the Transfer Window, taking into account the modulo 2^32 roll-over.</t>
      <t>Each receiver <bcp14>MUST</bcp14> maintain a reference to the greatest Transfer number received in any Message.  When a Transfer Message is received with a Transfer number greater than the greatest previously received, the new Transfer number is considered the greatest Transfer number, and Transfers with number less than or equal to the latest minus the size of the Transfer Window <bcp14>MUST</bcp14> be considered <xref target="cancelled"/>.  Because of Transfer number roll-over, half the number space of 2^32 and window size is used to determine if a number is older or newer than the latest Transfer number. This margin allows a receiver that has experienced a temporary loss of signal to correctly resume processing, distinguishing genuinely new Transfers from those that have wrapped around the number space and are obsolete.  Pseudocode for the algorithm is given in <xref target="fig-windowing"/>.</t>
      <t>The size of the Transfer Window <bcp14>SHOULD</bcp14> be the same at the sender and all receivers, and <bcp14>MUST</bcp14> be configured via some out-of-band mechanism.  The Transfer Window size <bcp14>MUST</bcp14> be at least 4, <bcp14>MUST</bcp14> be less than 2^12, and is <bcp14>RECOMMENDED</bcp14> to be 16. <cref anchor="_1">16 is an arbitrary number, and needs discussing by the WG.</cref></t>
      <figure anchor="fig-windowing">
        <name>A receiver's algorithm for determining Transfer number validity and sliding window</name>
        <artwork type="pseudocode"><![CDATA[
const WINDOW_SIZE  # Configured transfer window size
var GREATEST = NIL # Greatest received transfer number, initially NIL

# Function to check if a transfer is valid within the current window
FUNCTION isTransferValid(T):
    # Ensure Transfer T is within the
    #  sliding window defined by WINDOW_SIZE
    RETURN ((GREATEST - T + 2^32) MOD 2^32) < WINDOW_SIZE

# Function to check if the transfer is considered a "new" transfer
FUNCTION isNewTransfer(T):
    IF GREATEST IS NIL THEN
        # The first transfer is always considered new
        RETURN TRUE
    IF T = GREATEST THEN
        # A repeated Message for the greatest transfer
        #  is in progress, not new
        RETURN FALSE
    # Check if the transfer is within the valid window range
    #  (half of the number space + window size)
    RETURN ((T - GREATEST + 2^32) MOD 2^32) <
                     (2^32 / 2) + (WINDOW_SIZE / 2)

# Main function to process a transfer and manage the sliding window
FUNCTION processTransfer(T):
    IF isNewTransfer(T) THEN
        # New transfer, update the greatest received transfer number
        GREATEST ← T
        # Cancel transfers that are now outside the window
        CANCEL_OUTDATED_TRANSFERS()
    ELSE IF isTransferValid(T) THEN
        # Transfer is in progress, continue handling it
        CONTINUE_PROCESSING(T)
    ELSE
        # Transfer is invalid (outside the window), ignore it
        IGNORE_MESSAGE(T)
]]></artwork>
      </figure>
    </section>
    <section anchor="repetition">
      <name>Handling Link-layer PDU Loss</name>
      <t>Due to the unreliable nature of the link-layer protocol, Link-layer PDUs can be lost in transmission, resulting in the loss of the contained Messages.  Because the underlying link-layer is assumed to be unidirectional, the protocol does not include a mechanism to trigger the retransmission of lost Messages; instead the protocol allows the sender to repeat the transmission of Messages.</t>
      <t>A sender <bcp14>MAY</bcp14> emit any Message multiple times in different Link-layer PDUs.  Although every Link-layer PDU transmitted <bcp14>MAY</bcp14> contain different Messages, any repeated Message <bcp14>MUST</bcp14> be an exact copy of an already emitted Message.  A receiver <bcp14>MAY</bcp14> ignore any duplicate Message already received for an in-progress Transfer.  When segmenting bundles, not all Messages in a Transfer need be repeated the same number of times, and different Transfers can repeat Messages differently.</t>
      <t>Although it is <bcp14>RECOMMENDED</bcp14> that segments are emitted in ascending order of Segment Index; once emitted, any Message <bcp14>MAY</bcp14> be repeated any number of times, in any order.  The number of repetitions of a particular Message is an implementation matter that can be influenced by many factors, including:</t>
      <ul spacing="normal">
        <li>
          <t>Offline analysis of the deployed environment might require a certain amount of Message repetition to reach some required certainty of transfer.</t>
        </li>
        <li>
          <t>A higher 'reliability' factor associated with a particular Bundle could result in more copies of each associated Transfer Message being emitted.</t>
        </li>
        <li>
          <t>Signalling from the link-layer protocol, or some other out-of-band mechanism, might trigger increased repetition of a subset of Messages, to protect against some temporary spike in Link-layer PDU loss rate.</t>
        </li>
      </ul>
      <t>Message replication is logically separate from any facilities the underlying link-layer protocol might have to protect against information loss through redundancy and/or erasure coding, and <bcp14>MAY</bcp14> be used as required by a deployment.  If a link-layer protocol receives a duplicate Link-layer PDU, it <bcp14>SHOULD</bcp14> be delivered to this protocol only once.</t>
    </section>
    <section anchor="message-format">
      <name>Message Format</name>
      <t>All protocol Messages except the <xref target="indefinite-padding-message">Indefinite Padding Message</xref> follow the common "Type-Length-Value" formatting pattern, with each Message being identified by a four octet header that encodes the type of the Message, and the length of the content of the Message.</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      | Flags |    Length (20-bit unsigned int)       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 ... Optional Hint Items ...                   :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       ... Content ...                         :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <dl>
        <dt>Type:</dt>
        <dd>
          <t>The type of the Message, allocated from IANA "BTPU Message Types" registry, see <xref target="iana-considerations"/>, encoded as a 8-bit unsigned integer in network byte order.</t>
        </dd>
        <dt>Flags:</dt>
        <dd>
          <t>A 4-bit field for flags, see <xref target="message-flags"/>.</t>
        </dd>
        <dt>Length:</dt>
        <dd>
          <t>The length of the Message in octets, excluding the 4 octets of the header itself, encoded as a 20-bit unsigned integer in network byte order. This length includes both the optional <xref target="hint-items">Hint Items</xref> and the Content.</t>
        </dd>
        <dt>Content:</dt>
        <dd>
          <t>A sequence of octets of data. Its length is the main Message <tt>Length</tt> minus the total length of any present Hint Items. The content is encoded according to the <tt>Type</tt> of the Message.</t>
        </dd>
      </dl>
      <section anchor="message-flags">
        <name>Message Flags</name>
        <t>The Message Flags field is a 4-bit <cref anchor="_2">4 bits is considered enough, as it allows a 20-bit Message Length field, and many additional flags could be better expressed with Hint Items.</cref> field, formatted as follows:</t>
        <artwork><![CDATA[
 0 1 2 3
+-+-+-+-+
|H| RFU |
+-+-+-+-+
]]></artwork>
        <dl>
          <dt>H:</dt>
          <dd>
            <t>The 'H' (Hint) flag. If this bit is set to 1, it indicates that one or more Hint Items are present immediately following the Message header.</t>
          </dd>
          <dt>RFU (Reserved for Future Use):</dt>
          <dd>
            <t>These 3 bits are unassigned. They <bcp14>MUST</bcp14> be set to zero by the sender and <bcp14>MUST</bcp14> be ignored by the receiver.</t>
          </dd>
        </dl>
      </section>
      <section anchor="hint-items">
        <name>Hint Items</name>
        <t>To allow the transfer of optional additional information, Messages can carry extra information in the form of Hint Items. Because Messages can be lost in transmission, this metadata provides additional information about the Transfer itself, rather than being particular to the containing Message, and <bcp14>MAY</bcp14> be repeated in multiple different or repeated Messages.</t>
        <t>If the 'H' flag is set in the Message header, the header is followed by one or more Hint Items. Each item is encoded in a Type-Length-Value format, with a 2-octet header followed by a variable-length value. This format intentionally omits a flags field to prevent nested metadata.</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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hint Type   |H|    Length     |       ... Value ...           :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Hint Type:</dt>
          <dd>
            <t>A 7-bit identifier for the Hint Item, allocated from the "BTPU Hint Types" IANA registry, see <xref target="iana-considerations"/>, encoded as a 7-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>H:</dt>
          <dd>
            <t>The 'H' (Hint) flag. If this bit is set to 1, it indicates that another Hint Item immediately follows this Hint Item.  If this bit is set to 0, then the Message content immediately follows the Hint Item.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>An 8-bit unsigned integer specifying the length of the <tt>Value</tt> field in octets. This limits the value of a single Hint Item to 255 octets.</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>The payload of the Hint Item.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="message-definitions">
      <name>Message Definitions</name>
      <t>The following standard protocol Messages are defined:</t>
      <section anchor="bundle-message">
        <name>Bundle Message</name>
        <t>The Bundle Message is used to encapsulate an entire Bundle, and <bcp14>SHOULD</bcp14> be used by an implementation when a Bundle will fit in its entirety in a single Link-layer PDU to avoid the overhead of segmentation, and reducing the risk of the total loss of a Bundle if one or more unnecessary segments of a Bundle is lost.</t>
        <t>Because it conveys a complete Bundle, a Bundle Message is not a Transfer: it has no Transfer number and is not subject to the <xref target="transfer-window">Transfer Window</xref>, which bounds only the number of segmented Transfers that can be simultaneously in progress.</t>
        <t>A Bundle Message has a type of 2. The Message Content <bcp14>MUST</bcp14> be a valid Bundle.</t>
        <t>Emitting a Bundle Message with a Length field value that indicates no Bundle content (e.g., a length of 0 if no metadata is present) only adds control-plane overhead and <bcp14>SHOULD NOT</bcp14> be used as an alternative form of padding.</t>
      </section>
      <section anchor="transfer-segment-message">
        <name>Transfer Segment Message</name>
        <t>The Transfer Segment Message is used to encapsulate a segment of a multi-segment Bundle Transfer.</t>
        <t>A Transfer Segment Message has a type of 3. 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transfer Number                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Segment Index                                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    ... Segment Data ...                       :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Transfer Number:</dt>
          <dd>
            <t>The numeric identifier of the Transfer that this Segment is part of, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Index:</dt>
          <dd>
            <t>The position of the Segment within the sequence of all Segments of a Transfer, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Data:</dt>
          <dd>
            <t>The octets of a Segment of the Transfer, with the length calculated as the Message content length excluding the eight (8) octets of the Transfer Number and Segment Index.</t>
          </dd>
        </dl>
        <t>Transfer Segment Messages <bcp14>SHOULD NOT</bcp14> have zero octets of Segment Data, i.e. the total length of the Message <bcp14>SHOULD</bcp14> be greater than 12 octets.  Such Messages only add control-plane overhead and <bcp14>SHOULD NOT</bcp14> be used as an alternative form of padding.</t>
      </section>
      <section anchor="transfer-end-message">
        <name>Transfer End Message</name>
        <t>The Transfer End Message is used to indicate the completion of a multi-segment Bundle Transfer, and encapsulate the final segment.</t>
        <t>A Transfer End Message has a type of 4. 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transfer Number                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Segment Index                                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    ... Segment Data ...                       :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Transfer Number:</dt>
          <dd>
            <t>The numeric identifier of the <xref target="transfer-window">in-progress</xref> Transfer that is completing, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Index:</dt>
          <dd>
            <t>The Segment Index of the final Segment, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Data:</dt>
          <dd>
            <t>The octets of the final Segment of the Transfer, with the length calculated as the Message content length excluding the eight (8) octets of the Transfer Number and Segment Index.</t>
          </dd>
        </dl>
        <t>Transfer End Messages <bcp14>SHOULD NOT</bcp14> have zero octets of Segment Data, i.e. the total length of the Message <bcp14>SHOULD</bcp14> be greater than 12 octets.  Such Messages only add control-plane overhead and <bcp14>SHOULD NOT</bcp14> be used as an alternative form of padding.</t>
      </section>
      <section anchor="transfer-cancel-message">
        <name>Transfer Cancel Message</name>
        <t>The Transfer Cancel Message is used to indicate that the indicated Transfer is being aborted, and any prior or later received Segments associated with the Transfer <bcp14>MUST</bcp14> be discarded by a receiver.</t>
        <t>A Transfer Cancel Message has a type of 5. 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transfer Number                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Transfer Number:</dt>
          <dd>
            <t>The numeric identifier of the <xref target="transfer-window">in-progress</xref> Transfer that is cancelled, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
        </dl>
        <t>The Transfer Cancel Message has no content, and hence has a fixed length of 4 octets.</t>
        <t>A peer that receives a Transfer Cancel Message with a Transfer Number field value that does not match the numeric identifier of an <xref target="transfer-window">in-progress</xref> Transfer <bcp14>MUST</bcp14> ignore the Message.</t>
      </section>
      <section anchor="definite-padding-message">
        <name>Definite Padding Message</name>
        <t>The Definite Padding Message is used to add padding to a Link-layer PDU.</t>
        <t>A Definite Padding Message has a type of 1. Any content it contains has no semantic meaning, and a sender <bcp14>SHOULD</bcp14> set the content to a sequence of zero (0) octets.  Receivers <bcp14>MUST</bcp14> ignore any Message content.</t>
        <t>It is valid for this Message to have no content, i.e. a Length field value of zero (0), adding a total of four (4) octets of padding to the Link-layer PDU.</t>
      </section>
      <section anchor="indefinite-padding-message">
        <name>Indefinite Padding Message</name>
        <t>An Indefinite Padding Message has a type of zero (0), and in order to support padding with a minimum total length of one octet, the Message does not include an explicit Length or Content field, and hence has the following layout:</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 (0)      |                  ... Padding ...              :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Type:</dt>
          <dd>
            <t>The type of the Message: zero (0).</t>
          </dd>
        </dl>
        <t>The Indefinite Padding Message type field is followed by a sequence of zero or more zero (0) octets, ending at the first non-zero octet, or the end of the fixed-length Link-layer PDU.  The content of the Message has no meaning, and <bcp14>MUST</bcp14> be ignored by a receiver.</t>
        <t>Note: When an Indefinite Padding Message terminates with a non-zero octet, the non-zero octet is the first octet of the subsequent Message.</t>
      </section>
    </section>
    <section anchor="standard-hint-items">
      <name>Standard Hint Items</name>
      <t>The following Hint Items are defined in this document:</t>
      <section anchor="bundle-length-hint">
        <name>Bundle Length Hint</name>
        <t>The Bundle Length Hint Item is used to signal the total length of a bundle that is being transferred in segments. This allows a receiver to pre-allocate the necessary memory to reassemble the complete bundle.</t>
        <t>This Hint Item <bcp14>MAY</bcp14> be included in a Transfer Segment Message or a Transfer End Message. Receivers <bcp14>SHOULD</bcp14> ignore this Hint Item if encountered in other message types.</t>
        <t>The Hint Item has a Hint Type of 0, 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 (0)  |H|    Length     |  ... Bundle Length ...        :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Length:</dt>
          <dd>
            <t>The length of the <tt>Bundle Length</tt> field. This <bcp14>MUST</bcp14> be one of 1, 2, 4, or 8.</t>
          </dd>
          <dt>Bundle Length:</dt>
          <dd>
            <t>The total length of the bundle being transferred, encoded as an unsigned integer in network byte order, with a size corresponding to the <tt>Length</tt> field.</t>
          </dd>
        </dl>
        <t>A sender <bcp14>SHOULD</bcp14> choose the smallest possible length that can accommodate the total bundle length. For example, a bundle of 2000 octets should be encoded with a <tt>Length</tt> of 2, and a <tt>Value</tt> of 2000 encoded as a 16-bit unsigned integer.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This protocol does not define any measures to protect Messages or their content.  There might be link-layer mechanisms to protect the transmission of frames against over-hearing and interference, and upper layer mechanisms, such as BPSec defined in <xref target="RFC9172"/>, can be used to provide integrity and protection at a higher layer.  Therefore transport-layer security is considered out of scope for the protocol, and lower and/or upper layer mechanisms <bcp14>MUST</bcp14> be used to provide security.</t>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <t>The following caveats are to be considered before deploying instances of this protocol:</t>
      <ol spacing="normal" type="1"><li>
          <t>It is unreliable. Although there might be a link-layer protocol mechanism for a receiver to be notified that a frame has been lost in transmission, due to the unidirectional nature of the link-layer there is no in-band return path suitable for higher-layer acknowledgement of transfer success.  Any acknowledgement system designed to provide reliability <bcp14>MUST</bcp14> use a logically separate path from receiver back to sender.</t>
        </li>
        <li>
          <t>It does not provide congestion control or signalling. The underlying link-layer is expected to provide an uncontested channel between sender and receivers, and hence such mechanisms are considered to be out of scope. The protocol <bcp14>MUST NOT</bcp14> be deployed in environments where congestion might occur, such as the public Internet, when the underlying link-layer does not provide suitable congestion control.</t>
        </li>
        <li>
          <t>It requires an out-of-band mechanism for configuration. This can either be via pre-placed static configuration, a parallel dynamic control-plane protocol, or some other mechanism beyond the scope of this specification.</t>
        </li>
      </ol>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="btpu-message-types-registry">
        <name>BTPU Message Types Registry</name>
        <t>IANA is requested to create a new registry entitled "BTPU Message Types", 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-message-types-reg">
          <name>BTPU Message Types registration policies</name>
          <thead>
            <tr>
              <th align="center">Values</th>
              <th align="left">Registration Procedure</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0..0x6F</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="center">0x70..0x7F</td>
              <td align="left">Private Use</td>
            </tr>
            <tr>
              <td align="center">0xA0..0xFF</td>
              <td align="left">Reserved for future expansion</td>
            </tr>
          </tbody>
        </table>
        <t>The initial values for the registry are:</t>
        <table align="left" anchor="tab-message-types-vals">
          <name>BTPU Message Types initial values</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">0</td>
              <td align="left">
                <xref target="indefinite-padding-message">Indefinite Padding Message</xref></td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">1</td>
              <td align="left">
                <xref target="definite-padding-message">Definite Padding Message</xref></td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">2</td>
              <td align="left">
                <xref target="bundle-message">Bundle Message</xref></td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">3</td>
              <td align="left">
                <xref target="transfer-segment-message">Transfer Segment Message</xref></td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">4</td>
              <td align="left">
                <xref target="transfer-end-message">Transfer End Message</xref></td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">5</td>
              <td align="left">
                <xref target="transfer-cancel-message">Transfer Cancel Message</xref></td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">6</td>
              <td align="left">Reserved to avoid clash with BPv6</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">0x80..0x9F</td>
              <td align="left">Reserved to avoid clash with BPv7 Bundle (CBOR array)</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>The initial value of 6 is reserved to ensure that a Link-layer PDU containing a single Bundle Protocol version 6 bundle can be distinguished from BTP-U Messages.</t>
      </section>
      <section anchor="btpu-hint-types-registry">
        <name>BTPU Hint Types Registry</name>
        <t>IANA is requested to create a new registry entitled "BTPU Hint Types", in the existing "Bundle Protocol" registry group. The registration procedures for this registry, using terms defined in <xref target="RFC8126"/>, is:</t>
        <t>Specifications defining new Hint Types <bcp14>MUST</bcp14> specify which Message types the Hint is applicable to, and <bcp14>SHOULD</bcp14> specify receiver behavior when the Hint is encountered in other Message types.</t>
        <table align="left" anchor="tab-metadata-types-reg">
          <name>BTPU Hint Types registration policies</name>
          <thead>
            <tr>
              <th align="center">Values</th>
              <th align="left">Registration Procedure</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0..0x6F</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="center">0x70..0x7F</td>
              <td align="left">Private Use</td>
            </tr>
          </tbody>
        </table>
        <t>The initial values for the registry are:</t>
        <table align="left" anchor="tab-metadata-types-vals">
          <name>BTPU Hint Types initial values</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">0</td>
              <td align="left">
                <xref target="bundle-length-hint">Bundle Length</xref></td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="btpu-message-flags-registry">
        <name>BTPU Message Flags Registry</name>
        <t>IANA is requested to create a new registry entitled "BTPU Message Flags", in the existing "Bundle Protocol" registry group. This registry governs the 4-bit Message Flags field. The registration procedures for this registry, using terms defined in <xref target="RFC8126"/>, is Standards Action.</t>
        <t>The initial values for the registry are:</t>
        <table align="left" anchor="tab-message-flags-vals">
          <name>BTPU Message Flags initial values</name>
          <thead>
            <tr>
              <th align="center">Bit</th>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0 (0x8)</td>
              <td align="left">H (Hint)</td>
              <td align="left">Indicates presence of Hint Items</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">1-3</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>Bit 0 is the most significant bit.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9171">
          <front>
            <title>Bundle Protocol Version 7</title>
            <author fullname="S. Burleigh" initials="S." surname="Burleigh"/>
            <author fullname="K. Fall" initials="K." surname="Fall"/>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document presents a specification for the Bundle Protocol, adapted from the experimental Bundle Protocol specification developed by the Delay-Tolerant Networking Research Group of the Internet Research Task Force and documented in RFC 5050.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9171"/>
          <seriesInfo name="DOI" value="10.17487/RFC9171"/>
        </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="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="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="USLP" target="https://ccsds.org/Pubs/732x1b3e1.pdf">
          <front>
            <title>Unified Space Data Link Protocol (USLP)</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="June"/>
          </front>
          <seriesInfo name="CCSDS" value="732.1-B-3"/>
        </reference>
        <reference anchor="TM" target="https://ccsds.org/Pubs/132x0b3.pdf">
          <front>
            <title>Telemetry (TM) Space Data Link Protocol</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="October"/>
          </front>
          <seriesInfo name="CCSDS" value="132.0-B-3"/>
        </reference>
        <reference anchor="AOS" target="https://ccsds.org/Pubs/732x0b4.pdf">
          <front>
            <title>Advanced Orbiting Systems (AOS) Space Data Link Protocol</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="October"/>
          </front>
          <seriesInfo name="CCSDS" value="732.0-B-4"/>
        </reference>
        <reference anchor="DVB-S2X" target="https://www.etsi.org/deliver/etsi_en/302300_302399/30230702/01.04.01_60/en_30230702v010401p.pdf">
          <front>
            <title>Digital Video Broadcasting (DVB); Second generation framing structure, channel coding and modulation systems for Broadcasting, Interactive Services, News Gathering and other broadband satellite applications; Part 2: DVB-S2 Extensions (DVB-S2X)</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="ETSI" value="EN 302 307-2"/>
        </reference>
        <reference anchor="_5G" target="https://www.3gpp.org/ftp/Specs/archive/23_series/23.501/23501-i00.zip">
          <front>
            <title>System architecture for the 5G System (5GS)</title>
            <author>
              <organization abbrev="3GPP">3rd Generation Partnership Project</organization>
              <address>
                <postal>
                  <country>France</country>
                  <city>Sophia Antipolis Cedex</city>
                </postal>
              </address>
            </author>
            <author fullname="CHANDRAMOULI, Devaki">
              <organization>Nokia Germany</organization>
            </author>
            <date day="21" month="December" year="2022"/>
          </front>
        </reference>
        <reference anchor="IEEE.802.3">
          <front>
            <title>IEEE Standard for Ethernet</title>
            <author>
              <organization/>
            </author>
            <date month="July" year="2022"/>
          </front>
          <seriesInfo name="DOI" value="10.1109/ieeestd.2022.9844436"/>
          <seriesInfo name="ISBN" value="[&quot;9781504487252&quot;]"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="RFC5050">
          <front>
            <title>Bundle Protocol Specification</title>
            <author fullname="K. Scott" initials="K." surname="Scott"/>
            <author fullname="S. Burleigh" initials="S." surname="Burleigh"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>This document describes the end-to-end protocol, block formats, and abstract service description for the exchange of messages (bundles) in Delay Tolerant Networking (DTN).</t>
              <t>This document was produced within the IRTF's Delay Tolerant Networking Research Group (DTNRG) and represents the consensus of all of the active contributors to this group. See http://www.dtnrg.org for more information. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5050"/>
          <seriesInfo name="DOI" value="10.17487/RFC5050"/>
        </reference>
      </references>
    </references>
    <?line 539?>

<section anchor="examples">
      <name>Examples</name>
      <t>The following sections has examples of an implementation emitting Bundles into Link-layer PDUs.  Although the examples demonstrate the core principles, for example Bundle Segmentation with priority, the algorithm used to pack Messages into Link-layer PDUs is just for example purposes.  An implementation can use an alternate algorithm that meets this specification but suits its overall architecture, and where this is applicable is noted in each example.</t>
      <section anchor="segmentation-of-a-sequence-of-bundles-of-equal-priority">
        <name>Segmentation of a sequence of Bundles of equal priority</name>
        <t>An example of the transmission of three Bundles of varying sizes and equal priority in three Link-layer PDUs is shown in <xref target="fig-sequential"/>.</t>
        <figure anchor="fig-sequential">
          <name>Segmentation of a sequence of Bundles of equal priority</name>
          <artwork><![CDATA[
+---------------------------+------------+-----------------+
| Bundle A                  | Bundle B   | Bundle C        |
+---------------------------+------------+-----------------+

:                           :            :                 :

+----------------------+----+------------+----+------------+---------+
| Transfer 1           | T1 |  Complete  | T2 | Transfer 2 | Padding |
| Segment 0            | S1 |  Bundle B  | S0 | Segment 1  |         |
+----------------------+----+------------+----+------------+---------+

:                      :                      :                      :

+----------------------+----------------------+----------------------+
| Link-layer PDU N     | Link-layer PDU N + 1 | Link-layer PDU N + 2 |
+----------------------+----------------------+----------------------+
]]></artwork>
        </figure>
        <t>Bundle A is emitted as two Segments, included in the first and second Link-layer PDU, as Transfer 1.  Bundle B fits completely in the second Link-layer PDU, and is therefore emitted without segmentation.  Bundle C is emitted as two Segments split between the second and third PDU, but padding is required to fill the third PDU.  An alternative algorithm could have selected to not segment Bundle C, but to pad the second PDU and include Bundle C without segmentation in the third PDU, without changing the semantics, as an implementation preference.</t>
      </section>
      <section anchor="segmentation-of-a-sequence-of-bundles-of-different-priority">
        <name>Segmentation of a sequence of Bundles of different priority</name>
        <t>An example of the transmission of three Bundles of varying sizes and different priority in three Link-layer PDUs is shown in <xref target="fig-interleaved"/>.</t>
        <figure anchor="fig-interleaved">
          <name>Interleaved segmentation of a sequence of Bundles of different priority</name>
          <artwork><![CDATA[
                       +---------------------------+
                       | Bundle C                  |  High Priority
                       +---------------------------+
+--------------+-----------------+
| Bundle A     | Bundle B        |                    Low Priority
+--------------+-----------------+

                       :                           :
:              :                 :

+--------------+-------+----------------------+----+----------+------+
| Complete     | T1    | Transfer 2           | T2 | T1       | Pad  |
| Bundle A     | S0    | Segment 0            | S1 | S1       |      |
+--------------+-------+----------------------+----+----------+------+

:                      :                      :                      :

+----------------------+----------------------+----------------------+
| Link-layer PDU N     | Link-layer PDU N + 1 | Link-layer PDU N + 2 |
+----------------------+----------------------+----------------------+
]]></artwork>
        </figure>
        <t>Bundle A is emitted without segmentation, and the Bundle B is segmented to fill the first Link-layer PDU. During the preparation of the next Link-layer PDU high priority Bundle C is queued for emission. Therefore the further emission of Bundle B is paused, and Bundle C is emitted as two Segments, with the third Link-layer PDU containing the second Segments of both Bundle B and C, plus padding.  The order of emission of the second Segments of Bundle B and C makes no semantic difference.</t>
      </section>
      <section anchor="repetition-of-bundle-segments">
        <name>Repetition of Bundle Segments</name>
        <t>An example of the transmission of two Bundles of differing required repetition in three Link-layer PDUs is shown in <xref target="fig-repetition"/>.</t>
        <figure anchor="fig-repetition">
          <name>Repetition of some Bundles within a sequence of Segments</name>
          <artwork><![CDATA[
+--------------+
| Bundle A     |                              2x repetition required
+--------------+

           +-------------------------------+
           | Bundle B                      |  No repetition required
           +-------------------------------+

:              :
           :                               :

+--------------+-------+--------------+-------+---------------+------+
| Complete     | T1    | Complete     | T1    | Transfer 1    | Pad  |
| Bundle A     | S0    | Bundle A     | S1    | Segment 2     |      |
+--------------+-------+--------------+-------+---------------+------+

:                      :                      :                      :

+----------------------+----------------------+----------------------+
| Link-layer PDU N     | Link-layer PDU N + 1 | Link-layer PDU N + 2 |
+----------------------+----------------------+----------------------+
]]></artwork>
        </figure>
        <t>Bundle A is required by some higher-layer loss protection policy to be repeated twice in two separate Link-layer PDUs.  Bundle A does not require additional loss protection, and can therefore be transmitted once.  As Bundle A can fit in its entirety in a single Link-layer PDU, it is emitted as a Complete Bundle Message, with Bundle B emitted as a Segment Messages sized to fill the remainder of each PDU.  The Complete Bundle Message of Bundle A is repeated in the second Link-layer PDU, with the remainder of the second PDU filled with the next Segment of Bundle B.  The third Link-layer PDU contains the last Segment of Bundle B and padding.  An alternate implementation could have segmented both Bundles, and repeated the Segments of Bundle A whilst interleaving the Segments of Bundle B.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank Erik Kline, Brian Sipos, and Chloe He for their invaluable feedback and discussion of the protocol, and this work would not exist without the excellent prior work by the TCP-CLv4 authors.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
