<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dtn-btpu-01" 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-01"/>
    <author fullname="Rick Taylor">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>rtaylor@aalyria.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="05"/>
    <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 may 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 may 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 may 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 may 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 may prioritize the transfer of each Bundle differently, the protocol allows for the multiplexing of Bundle transfers, so that the transfer of higher priority Bundles may 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 may 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 may 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 decreasing integral Segment Index that indicates the relative position of the Segment within the total sequence of Segments, with zero (0) indicating the final segment; i.e Segments are ordered N to 0, where N is the Segment Index in the Transfer Start Message.</t>
      <t>The start of a transfer of a sequence of Segments <bcp14>MUST</bcp14> be indicated by emitting a <xref target="transfer-start-message">Transfer Start Message</xref>, including the index of the first Segment and the identifier of the Transfer that is now complete.  The remaining 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.</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 descending order of their Segment Index.  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 may be aborted by the sender while a Transfer is in progress by the emitting of 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 may be lost in transmission due to the loss of Link-layer PDUs, and a sender may 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 may 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 may contain different Messages, any repeated Message <bcp14>MUST</bcp14> be an exact copy of an already emitted Message.  When segmenting bundles, not all Messages in a Transfer need be repeated the same number of times, and different Transfers may repeat Messages differently.</t>
      <t>Although it is <bcp14>RECOMMENDED</bcp14> that <xref target="transfer-segment-message">Transfer Segment Messages</xref> are emitted in descending 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 may 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 may 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, may trigger increased repetition of a subset 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 may have to protect against information loss through redundancy and/or erasure coding, and may 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 Metadata 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="metadata-items">Metadata 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 Metadata 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 Metadata Items.</cref> field, formatted as follows:</t>
        <artwork><![CDATA[
 0 1 2 3
+-+-+-+-+
|M| RFU |
+-+-+-+-+
]]></artwork>
        <dl>
          <dt>M:</dt>
          <dd>
            <t>The 'M' (Metadata) flag. If this bit is set to 1, it indicates that one or more Metadata 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="metadata-items">
        <name>Metadata Items</name>
        <t>To allow the transfer of optional additional information, Messages can carry extra information in the form of Metadata Items. Because Messages may be lost in transmission, this metadata provides additional information about the Transfer itself, rather than being particular to the containing Message, and may be repeated in multiple different or repeated Messages.</t>
        <t>If the 'M' flag is set in the Message header, the header is followed by one or more Metadata 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Metadata Type |    Length     |       ... Value ...           :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Metadata Type:</dt>
          <dd>
            <t>An 8-bit identifier for the Metadata Item, allocated from the "BTPU Metadata Types" IANA registry, see <xref target="iana-considerations"/>, encoded as a 8-bit unsigned integer in network byte order.</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 Metadata Item to 255 octets.</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>The payload of the Metadata 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-start-message">
        <name>Transfer Start Message</name>
        <t>The Transfer Start Message is used to indicate the beginning of a new multi-segment Bundle Transfer, and encapsulate the first segment.</t>
        <t>A Transfer Start 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 <xref target="transfer-window">in-progress</xref> Transfer that is beginning, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Index:</dt>
          <dd>
            <t>The non-zero Segment Index of the first Segment, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Data:</dt>
          <dd>
            <t>The octets of the first 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 Start 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-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 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 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-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 a 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-metadata">
      <name>Standard Metadata</name>
      <t>The following Metadata Items are defined in this document:</t>
      <section anchor="bundle-length-metadata">
        <name>Bundle Length Metadata</name>
        <t>The Bundle Length Metadata 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 Metadata Item <bcp14>MAY</bcp14> be included in a Transfer Start Message or a Transfer Segment Message.</t>
        <t>The Metadata Item has a Metadata Type of 1, 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 (1)    |    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 may 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 should be considered before deploying instances of this protocol:</t>
      <ol spacing="normal" type="1"><li>
          <t>It is unreliable. Although there may 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 may 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-start-message">Transfer Start Message</xref></td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">4</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">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-metadata-types-registry">
        <name>BTPU Metadata Types Registry</name>
        <t>IANA is requested to create a new registry entitled "BTPU Metadata 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-metadata-types-reg">
          <name>BTPU Metadata 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..0xBF</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="center">0xC0..0xFF</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 Metadata Types initial values</name>
          <thead>
            <tr>
              <th align="center">Type</th>
              <th align="left">Metadata</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0</td>
              <td align="left">Reserved</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">1</td>
              <td align="left">
                <xref target="bundle-length-metadata">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">M (Metadata)</td>
              <td align="left">Indicates presence of Metadata 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://public.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://public.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://public.ccsds.org/Pubs/132x0b3.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-gf0.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 529?>

<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 may 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 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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
9w6Ve+m74n++5AR/162fA5XVrYGEsMr1JHjUcUPPfUXgRmXbfS+YPXLHcau/
Arqhg1gXNxPAjlaVlfMgx2k7MCjj6LjGjPYtm1cNsyaFGa5ka8BeOjIMN7sR
CLl1QreuVmHQl3jGiOQ+3kNJB3UbrMU2RzoDLRlWntAxRw4CHBaU6zJfGVeg
wDs67uxJ3bittKPPuDvwKd/qOKfXrrrVmBfRSYOxQ2zupRNvyzZV4aydNRIc
ZvhZqjC4M6PbddugPe78230XwmNh7O69qS3uUngenuCvrcmav6vTciM8nzVy
p4JqdnOXiuMGnyHeN0n9++mvT6k1+X4f/dV8LE2tWtu1qKZ/vuQEf9dfnwOV
1V/hWbCsvmIZRNv24Z1XfCpIx+VRLX0VHgJK3USJLnTwR5AfRfsNa0nK8McV
32YpX/F2W/oslXb40Y3r0ibcQbj+pKnGkKxcUr6WQ1TTREcnPJd8odyB8QME
93ve87SUvpyLHKiuxHNcvIUreswJqqhNqxwQHZ1Yt/OtjlZDYeTQZ3dvGDLQ
NLJs/pSsOzxtp2+jIRsuKF/T7t8lMyIovbTzFAjvUt1yg3piOjuQW3Gtoj4I
o7YNLzXyrq19FGh/Y8+tCU7M7lDqB3SBmKn9TWyt2/XCCWI4/sBlbIk+xzkn
K7DmKnVLUOH94JxrlhRv1XGVvVX/Dc9/7qtnVQaEd5ktS4HvcJ6XWn3n0gCz
is/yX3FemdZTStxiL5jPufe2SpwySAFoSo9lKPji88zUztTkoD6Vp1kLVUk+
LZdAHp4PDl/e7MlszLD3fwGGdgHkeaMAAA==

-->

</rfc>
