<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dtn-btpu-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="BTPU">Bundle Transfer Protocol - Unidirectional</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-btpu-02"/>
    <author fullname="Rick Taylor">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>rtaylor@aalyria.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="17"/>
    <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.  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
    # 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>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 533?>

<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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
q1VJii8Xcx5dDI5e3e7LbMyw938B0AwH8TalAAA=

-->

</rfc>
