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

<t>This document defines a protocol for the unidirectional transfer of large binary objects, typically Bundle Protocol version 7 bundles, between two nodes connected by a unidirectional, unreliable, frame-based link-layer protocol, without requiring IP services.</t>
      <t>The protocol does not require a return path for acknowledgements, but instead supports data repetition as a mechanism to protect against data loss.  It fully supports the disaggregation of flows of binary objects of different priority, preventing head-of-line blocking impacting performance.</t>
      <t>The wire format of the protocol is designed to enable performant implementation in hardware or software, with the aim of enabling protocol implementations to run at the line-rate of the underlying link-layer protocol.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ricktaylor.github.io/btpu/draft-ietf-dtn-btpu.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-dtn-btpu/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Delay/Disruption Tolerant Networking Working Group mailing list (<eref target="mailto:dtn@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dtn/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dtn/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ricktaylor/btpu"/>.</t>
    </note>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Bundle Protocol version 7 (BPv7) is defined in terms a layered logical architecture, detailed in <xref target="RFC9171"/>, wherein the responsibility for the storing and routing of bundles lies with the Bundle Processing Agent (BPA), and the BPA relies upon Convergence Layer Protocols (CLAs) to provide bundle transport between nodes. CLAs provide a unified interface to the BPA, allowing BPAs to be link-layer agnostic, but still use a diverse range of Convergence Layer Protocols (CLPs) to transfer bundles between BPAs over underlying link-layer protocols.</t>
      <t>In the realm of near- and deep-space communication there are a number of standardized link-layer protocols, including <xref target="USLP"/>, <xref target="TM"/>, <xref target="AOS"/>, <xref target="DVB-S2X"/>, that share a set of common properties:</t>
      <ul spacing="normal">
        <li>
          <t>They are unidirectional: data transfer occurs in one direction only, there is no in-band return path for data.</t>
        </li>
        <li>
          <t>They are frame-based: the link-layer protocol will guarantee that a frame of data is either delivered to a receiver in its entirety or not at all. Frames can be of fixed or variable length.</t>
        </li>
        <li>
          <t>They provide a single logical channel: the communication between a sender and one or more receivers of frames can be logically separated from other communication over the link-layer by an implementation, perhaps by the use of channel identifiers, circuit identifiers, or tuples of source and destination address information.</t>
        </li>
      </ul>
      <t>These characteristics provide a common baseline that allows the definition of a lightweight mechanism for transferring BPv7 bundles meeting the requirements of a BPv7 Convergence Layer Protocol, and this document describes such a protocol: Bundle Transfer Protocol - Unidirectional (BTPU), suitable for implementation over any link-layer protocol that shares these characteristics.  The protocol is applicable to other link-layer technologies which share these characteristics beyond those commonly used for space communication, for example 5G Unstructured PDUs <xref target="_5G"/>, or Ethernet <xref target="IEEE.802.3"/>, without requiring underlying IP services.  Although designed for any link-layer protocol that shares the characteristics above, additional specification or profiling might be required to map the constructs of the link-layer protocol to the mechanisms defined in this specification.</t>
      <figure anchor="fig-stack">
        <name>The location of BTPU in relation to the Bundle Protocol and a Link-layer protocol</name>
        <artwork align="center"><![CDATA[
+----------------------+
|  DTN Application     |
+----------------------+
|  BPv7 / BPv6         |
+----------------------+
|  BTPU                |
+----------------------+
|  Link-layer Protocol |
+----------------------+
]]></artwork>
      </figure>
      <t>The driving use-case of the protocol has been the transfer of BPv7 Bundles, however it is equally capable of transferring any kind of binary data, but includes no explicit discriminator of the format of a particular block of binary data. If multiple different types of binary data are to be transferred by a single implementation, this specification considers the differentiation between different types of binary data to be a matter for the implementation. For example, both BPv6 Bundles (<xref target="RFC5050"/>) and BPv7 Bundles can be multiplexed without issue, as the different formats can be distinguished by simple examination of the initial octets of a received bundle by an implementation.  Additionally, the segmentation mechanism enables the use of this protocol with binary data formats that do not natively support some form of fragmentation.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="terminology">
        <name>Terminology</name>
        <t>Within the scope of this document, the following terms have specific meaning:</t>
        <dl>
          <dt>Bundle:</dt>
          <dd>
            <t>A higher-layer protocol data unit, typically a BPv7 Bundle as defined in <xref target="RFC9171"/>.</t>
          </dd>
          <dt>Link-layer PDU:</dt>
          <dd>
            <t>The protocol data unit, excluding any link-layer protocol specific headers or metadata, that makes up a complete transmission unit or frame, as defined by the link-layer protocol specification.</t>
          </dd>
          <dt>Message:</dt>
          <dd>
            <t>A single protocol data item, see <xref target="message-definitions"/>.</t>
          </dd>
          <dt>Segment:</dt>
          <dd>
            <t>In order to transfer a Bundle larger than a Link-layer PDU, Bundles can be subdivided into Segments in order to fit within a Link-layer PDU, see <xref target="transfers"/>.</t>
          </dd>
          <dt>Transfer:</dt>
          <dd>
            <t>The context in which the transmission of the Segments of a single Bundle occurs, see <xref target="transfers"/>.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>The purpose of the protocol is to transfer a series of Bundles between two nodes. Because a Bundle is of variable length, which is unlikely to be exactly the same size as a Link-layer PDU, the protocol defines a mechanism to divide Bundles into Segments as required, such that each Link-layer PDU is efficiently filled with data, and one or more Bundles can be transferred in a minimal number of Link-layer PDUs, described in more detail in <xref target="transfers"/>.</t>
      <t>This segmentation is unrelated to BPv7 bundle fragmentation as defined in <xref section="5.8" sectionFormat="of" target="RFC9171"/>.  Although BPv7 bundle fragmentation can be used to sub-divide oversized BPv7 bundles, the required duplication of metadata blocks can result in inefficiencies or fail to generate BPv7 bundle fragment small enough to fit in a single Link-layer PDU.</t>
      <t>As a sender can prioritize the transfer of each Bundle differently, the protocol allows for the multiplexing of Bundle transfers, so that the transfer of higher priority Bundles can interrupt the transfer of other Bundles, avoiding "head of line blocking", see <xref target="interleaving-transfers"/> for more detail.  The bundle transfers are expected to occur over the same logical channel, rather than using a separate channel for each bundle or group of bundles that share priority.  This does not preclude using multiple logical channels, but each channel is expected to be an independent instance of the protocol.</t>
      <section anchor="messages">
        <name>Messages</name>
        <t>The basic primitive of the protocol is the Message, a self-describing unit of protocol control information of variable length. The sender is responsible for composing one or more Messages as required, and packing them into a Link-layer PDU, such that a single PDU is optimally filled.  The receiving node parses the contained Messages from each received Link-layer PDU, and then processes them as individual control signals.  This sequence of Messages is the logical control-plane used by the protocol.  This document uses the verb "emit" to describe to the writing of a new Message to a Link-layer PDU ready for transmission, to differentiate from the the transmission of the Link-layer PDU itself, as many Messages can be emitted prior to the transmission of the containing PDU.</t>
        <t>See <xref target="message-definitions"/> for detail of each type of Message.</t>
      </section>
      <section anchor="padding">
        <name>Padding</name>
        <t>Because the size of a Bundle is not expected to exactly match the size of a Link-layer PDU, an implementation will likely need to add padding to the PDU so that the Link-layer PDU size requirements are met.  Two Messages are available for this purpose: The <xref target="definite-padding-message">Definite Padding Message</xref> and the <xref target="indefinite-padding-message">Indefinite Padding Message</xref>.  Padding Messages are valid at any point within a Link-layer PDU.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that implementations use the Definite Padding Message to add padding to a Link-layer PDU, except when less than four octets of padding are required, as the minimum length of the Definite Padding Message is four octets.</t>
        <t>When the link-layer protocol provides variable length Link-layer PDUs, implementations <bcp14>SHOULD</bcp14> take into account the mechanisms used by the link-layer protocol to support variable length Link-layer PDUs, and emit Link-layer PDUs of a suitable size for the underlying protocol. For example, if variable length Link-layer PDUs are implemented by the link-layer protocol using a sub-framing mechanism, then emitting Link-layer PDUs of a single, or whole number of sub-frames can increase reliability.</t>
        <t>The algorithm used to pad and pack Messages efficiently into Link-layer PDUs is an implementation matter.</t>
      </section>
    </section>
    <section anchor="transfers">
      <name>Segmentation and Transfers</name>
      <t>As described in the <xref target="protocol-overview">Protocol Overview</xref>, in order to transfer Bundles larger than a single Link-layer PDU into multiple PDUs, Bundles are be divided into a sequence of Segments by the sender and each Segment is emitted in its own a Message. However, if a complete Bundle can fit in the next Link-layer PDU, then the Bundle <bcp14>SHOULD</bcp14> be transferred without segmentation, see the <xref target="bundle-message">Bundle Message</xref>.</t>
      <t>Each Segment is assigned a monotonically increasing integral Segment Index that indicates the relative position of the Segment within the total sequence of Segments, with zero (0) indicating the first segment; i.e. Segments are ordered 0 to N, where N is the Segment Index in the Transfer End Message.</t>
      <t>The Segments of a Bundle <bcp14>MUST</bcp14> be emitted by the sender as a series of <xref target="transfer-segment-message">Transfer Segment Messages</xref> carrying the same Transfer identifier, starting with Segment Index zero (0).  The end of a transfer <bcp14>MUST</bcp14> be indicated by emitting a <xref target="transfer-end-message">Transfer End Message</xref>, including the index and data of the final Segment.</t>
      <t>In addition to a Segment Index, every Segment is associated with a Transfer that provides context to the sequence of Segments to enable the correct reassembly of the original Bundle. Each Transfer is assigned a number as an identifier, with each identified Transfer mapping to the segmentation of a single Bundle.</t>
      <t>Transfer numbers are expressed as 32-bit unsigned integers. A sending implementation <bcp14>SHOULD</bcp14> choose a random value between 0 and 2^32-1 for the first Transfer number, and each subsequent Transfer <bcp14>MUST</bcp14> use the next numeric value in the sequence.  To avoid placing a limit on the total number of Transfers between peers, numbers are allowed to "roll-over" to zero and repeat, i.e. the next number in the sequence is the previous number incremented by one, modulo 2^32.</t>
      <t>A receiver reassembles the transferred Bundle by concatenating the Segments that share a common Transfer number in the ascending order of their Segment Index.  The Segment Index in the Transfer End Message indicates the final Segment Index (N); a transfer is complete when Segments with indices 0 through N have been received.  Once all the Segments have been received and concatenated, a receiver is expected to pass the recombined Bundle to an upper layer for further processing.</t>
      <section anchor="interleaving-transfers">
        <name>Interleaving Transfers</name>
        <t>In order to support the transmission of Bundles with different priorities, Transfer Messages associated with different Transfers, i.e. with different Transfer numbers, <bcp14>MAY</bcp14> be interleaved.  This allows senders to interrupt the emission of a sequence of Segments associated with one Transfer with one or more Segments of another Transfer, preventing a large lower priority Transfer blocking a higher priority Transfers.</t>
      </section>
      <section anchor="cancelled">
        <name>Cancelling Transfers</name>
        <t>A Transfer can be aborted by the sender while a Transfer is in progress by emitting a <xref target="transfer-cancel-message">Transfer Cancel Message</xref> containing the identifier of the Transfer to cancel.  A receiver of a Transfer Cancel Message <bcp14>SHOULD</bcp14> discard any segments already received and <bcp14>MUST</bcp14> ignore any further Messages associated with the Transfer.</t>
      </section>
    </section>
    <section anchor="transfer-window">
      <name>Transfer Window</name>
      <t>Because Messages can be lost in transmission due to the loss of Link-layer PDUs, and a sender <bcp14>MAY</bcp14> emit duplicate Messages as a defense against loss, see <xref target="repetition"/>, a sender <bcp14>MUST</bcp14> maintain a sliding Transfer Window that defines the maximum number of Transfers that can be simultaneously in progress.  As Transfers are identified by a monotonically increasing number, the size of the Transfer Window also strictly defines the range of identifiers of Transfers in progress.</t>
      <t>The sender <bcp14>MUST</bcp14> maintain a reference to the greatest Transfer number used in any emitted Message, and <bcp14>MUST NOT</bcp14> emit any Message with a Transfer number less than or equal to the latest minus the size of the Transfer Window, taking into account the modulo 2^32 roll-over.</t>
      <t>Each receiver <bcp14>MUST</bcp14> maintain a reference to the greatest Transfer number received in any Message.  When a Transfer Message is received with a Transfer number greater than the greatest previously received, the new Transfer number is considered the greatest Transfer number, and Transfers with number less than or equal to the latest minus the size of the Transfer Window <bcp14>MUST</bcp14> be considered <xref target="cancelled"/>.  Because of Transfer number roll-over, half the number space of 2^32 and window size is used to determine if a number is older or newer than the latest Transfer number. This margin allows a receiver that has experienced a temporary loss of signal to correctly resume processing, distinguishing genuinely new Transfers from those that have wrapped around the number space and are obsolete.  Pseudocode for the algorithm is given in <xref target="fig-windowing"/>.</t>
      <t>The size of the Transfer Window at a receiver <bcp14>MUST NOT</bcp14> be smaller than the size of the Transfer Window at the sender; the simplest way to ensure this is to configure the same size at the sender and all receivers, which is <bcp14>RECOMMENDED</bcp14>.  Transfer Window sizes <bcp14>MUST</bcp14> be configured via some out-of-band mechanism.  The Transfer Window size <bcp14>MUST</bcp14> be at least 4, <bcp14>MUST</bcp14> be less than 2^12, and is <bcp14>RECOMMENDED</bcp14> to be 16. <cref anchor="_1">16 is an arbitrary number, and needs discussing by the WG.</cref></t>
      <figure anchor="fig-windowing">
        <name>A receiver's algorithm for determining Transfer number validity and sliding window</name>
        <artwork type="pseudocode"><![CDATA[
const WINDOW_SIZE  # Configured transfer window size
var GREATEST = NIL # Greatest received transfer number, initially NIL

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

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

# Main function to process a transfer and manage the sliding window
FUNCTION processTransfer(T):
    IF isNewTransfer(T) THEN
        # New transfer, update the greatest received transfer number
        GREATEST ← T
        # Cancel transfers that are now outside the window
        CANCEL_OUTDATED_TRANSFERS()
    ELSE IF isTransferValid(T) THEN
        # Transfer is in progress, continue handling it
        CONTINUE_PROCESSING(T)
    ELSE
        # Transfer is invalid (outside the window), ignore it
        IGNORE_MESSAGE(T)
]]></artwork>
      </figure>
    </section>
    <section anchor="repetition">
      <name>Handling Link-layer PDU Loss</name>
      <t>Due to the unreliable nature of the link-layer protocol, Link-layer PDUs can be lost in transmission, resulting in the loss of the contained Messages.  Because the underlying link-layer is assumed to be unidirectional, the protocol does not include a mechanism to trigger the retransmission of lost Messages; instead the protocol allows the sender to repeat the transmission of Messages.</t>
      <t>A sender <bcp14>MAY</bcp14> emit any Message multiple times in different Link-layer PDUs.  Although every Link-layer PDU transmitted <bcp14>MAY</bcp14> contain different Messages, any repeated Message <bcp14>MUST</bcp14> be an exact copy of an already emitted Message.  A receiver <bcp14>MAY</bcp14> ignore any duplicate Message already received for an in-progress Transfer.  When segmenting bundles, not all Messages in a Transfer need be repeated the same number of times, and different Transfers can repeat Messages differently.</t>
      <t>Although it is <bcp14>RECOMMENDED</bcp14> that segments are emitted in ascending order of Segment Index; once emitted, any Message <bcp14>MAY</bcp14> be repeated any number of times, in any order.  The number of repetitions of a particular Message is an implementation matter that can be influenced by many factors, including:</t>
      <ul spacing="normal">
        <li>
          <t>Offline analysis of the deployed environment might require a certain amount of Message repetition to reach some required certainty of transfer.</t>
        </li>
        <li>
          <t>A higher 'reliability' factor associated with a particular Bundle could result in more copies of each associated Transfer Message being emitted.</t>
        </li>
        <li>
          <t>Signalling from the link-layer protocol, or some other out-of-band mechanism, might trigger increased repetition of a subset of Messages, to protect against some temporary spike in Link-layer PDU loss rate.</t>
        </li>
      </ul>
      <t>Message replication is logically separate from any facilities the underlying link-layer protocol might have to protect against information loss through redundancy and/or erasure coding, and <bcp14>MAY</bcp14> be used as required by a deployment.  If a link-layer protocol receives a duplicate Link-layer PDU, it <bcp14>SHOULD</bcp14> be delivered to this protocol only once.</t>
    </section>
    <section anchor="message-format">
      <name>Message Format</name>
      <t>All protocol Messages except the <xref target="indefinite-padding-message">Indefinite Padding Message</xref> follow the common "Type-Length-Value" formatting pattern, with each Message being identified by a four octet header that encodes the type of the Message, and the length of the content of the Message.</t>
      <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      | Flags |    Length (20-bit unsigned int)       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 ... Optional Hint Items ...                   :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       ... Content ...                         :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <dl>
        <dt>Type:</dt>
        <dd>
          <t>The type of the Message, allocated from IANA "BTPU Message Types" registry, see <xref target="iana-considerations"/>, encoded as a 8-bit unsigned integer in network byte order.</t>
        </dd>
        <dt>Flags:</dt>
        <dd>
          <t>A 4-bit field for flags, see <xref target="message-flags"/>.</t>
        </dd>
        <dt>Length:</dt>
        <dd>
          <t>The length of the Message in octets, excluding the 4 octets of the header itself, encoded as a 20-bit unsigned integer in network byte order. This length includes both the optional <xref target="hint-items">Hint Items</xref> and the Content.</t>
        </dd>
        <dt>Content:</dt>
        <dd>
          <t>A sequence of octets of data. Its length is the main Message <tt>Length</tt> minus the total length of any present Hint Items. The content is encoded according to the <tt>Type</tt> of the Message.</t>
        </dd>
      </dl>
      <section anchor="message-flags">
        <name>Message Flags</name>
        <t>The Message Flags field is a 4-bit <cref anchor="_2">4 bits is considered enough, as it allows a 20-bit Message Length field, and many additional flags could be better expressed with Hint Items.</cref> field, formatted as follows:</t>
        <artwork><![CDATA[
 0 1 2 3
+-+-+-+-+
|H| RFU |
+-+-+-+-+
]]></artwork>
        <dl>
          <dt>H:</dt>
          <dd>
            <t>The 'H' (Hint) flag. If this bit is set to 1, it indicates that one or more Hint Items are present immediately following the Message header.</t>
          </dd>
          <dt>RFU (Reserved for Future Use):</dt>
          <dd>
            <t>These 3 bits are unassigned. They <bcp14>MUST</bcp14> be set to zero by the sender and <bcp14>MUST</bcp14> be ignored by the receiver.</t>
          </dd>
        </dl>
      </section>
      <section anchor="hint-items">
        <name>Hint Items</name>
        <t>To allow the transfer of optional additional information, Messages can carry extra information in the form of Hint Items. Because Messages can be lost in transmission, this metadata provides additional information about the Transfer itself, rather than being particular to the containing Message, and <bcp14>MAY</bcp14> be repeated in multiple different or repeated Messages.</t>
        <t>If the 'H' flag is set in the Message header, the header is followed by one or more Hint Items. Each item is encoded in a Type-Length-Value format, with a 2-octet header followed by a variable-length value. This format intentionally omits a flags field to prevent nested metadata.</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hint Type   |H|    Length     |       ... Value ...           :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Hint Type:</dt>
          <dd>
            <t>A 7-bit identifier for the Hint Item, allocated from the "BTPU Hint Types" IANA registry, see <xref target="iana-considerations"/>, encoded as a 7-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>H:</dt>
          <dd>
            <t>The 'H' (Hint) flag. If this bit is set to 1, it indicates that another Hint Item immediately follows this Hint Item.  If this bit is set to 0, then the Message content immediately follows the Hint Item.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>An 8-bit unsigned integer specifying the length of the <tt>Value</tt> field in octets. This limits the value of a single Hint Item to 255 octets.</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>The payload of the Hint Item.</t>
          </dd>
        </dl>
      </section>
      <section anchor="unrecognized-types">
        <name>Unrecognized Messages and Hint Items</name>
        <t>Because all Messages, except the Indefinite Padding Message, follow the common Message format, a Message can be skipped by a receiver without knowledge of its Type-specific semantics.  A receiver that parses a Message with a Type value that it does not recognize, other than the value 6 or a value in the range 0x80..0x9F, <bcp14>MUST</bcp14> ignore the Message by skipping the number of octets indicated by the Length field, and continue processing any subsequent Messages in the Link-layer PDU.  This applies to every unrecognized Type value, including any allocated in the future from the range reserved for future expansion, allowing Message types defined in future documents to be introduced into deployments where not all receivers have been updated to recognize them.</t>
        <t>The Type value 6 and Type values in the range 0x80..0x9F indicate that the octets encountered are not a Message at all, but an encapsulated bundle in its native format: 6 is the initial octet of a BPv6 bundle, and 0x80..0x9F are the possible initial octets of the CBOR array of a BPv7 bundle, see <xref target="iana-considerations"/>.  Both bundle formats are self-delimiting, so a receiver that implements the corresponding format can determine the extent of the bundle, handle it as it would the content of a <xref target="bundle-message">Bundle Message</xref>, and continue processing any subsequent Messages in the Link-layer PDU.  A receiver that does not implement the corresponding bundle format cannot determine the extent of the bundle, and <bcp14>MUST NOT</bcp14> attempt to process the remainder of the Link-layer PDU.</t>
        <t>Similarly, a receiver that parses a Hint Item with a Hint Type that it does not recognize <bcp14>MUST</bcp14> ignore the Hint Item by skipping the number of octets indicated by the Hint Item Length field, and continue processing any subsequent Hint Items and the Message Content.  Hint Items are therefore only suitable for carrying optional information that can be safely ignored by a receiver.</t>
      </section>
    </section>
    <section anchor="message-definitions">
      <name>Message Definitions</name>
      <t>The following standard protocol Messages are defined:</t>
      <section anchor="bundle-message">
        <name>Bundle Message</name>
        <t>The Bundle Message is used to encapsulate an entire Bundle, and <bcp14>SHOULD</bcp14> be used by an implementation when a Bundle will fit in its entirety in a single Link-layer PDU to avoid the overhead of segmentation, and reducing the risk of the total loss of a Bundle if one or more unnecessary segments of a Bundle is lost.</t>
        <t>Because it conveys a complete Bundle, a Bundle Message is not a Transfer: it has no Transfer number and is not subject to the <xref target="transfer-window">Transfer Window</xref>, which bounds only the number of segmented Transfers that can be simultaneously in progress.</t>
        <t>A Bundle Message has a type of 2. The Message Content <bcp14>MUST</bcp14> be a valid Bundle.</t>
        <t>Emitting a Bundle Message with a Length field value that indicates no Bundle content (e.g., a length of 0 if no metadata is present) only adds control-plane overhead and <bcp14>SHOULD NOT</bcp14> be used as an alternative form of padding.</t>
      </section>
      <section anchor="transfer-segment-message">
        <name>Transfer Segment Message</name>
        <t>The Transfer Segment Message is used to encapsulate a segment of a multi-segment Bundle Transfer.</t>
        <t>A Transfer Segment Message has a type of 3. The Message Content field is formatted as follows:</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transfer Number                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Segment Index                                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    ... Segment Data ...                       :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Transfer Number:</dt>
          <dd>
            <t>The numeric identifier of the Transfer that this Segment is part of, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Index:</dt>
          <dd>
            <t>The position of the Segment within the sequence of all Segments of a Transfer, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Data:</dt>
          <dd>
            <t>The octets of a Segment of the Transfer, with the length calculated as the Message content length excluding the eight (8) octets of the Transfer Number and Segment Index.</t>
          </dd>
        </dl>
        <t>Transfer Segment Messages <bcp14>SHOULD NOT</bcp14> have zero octets of Segment Data, i.e. the total length of the Message <bcp14>SHOULD</bcp14> be greater than 12 octets.  Such Messages only add control-plane overhead and <bcp14>SHOULD NOT</bcp14> be used as an alternative form of padding.</t>
      </section>
      <section anchor="transfer-end-message">
        <name>Transfer End Message</name>
        <t>The Transfer End Message is used to indicate the completion of a multi-segment Bundle Transfer, and encapsulate the final segment.</t>
        <t>A Transfer End Message has a type of 4. The Message Content field is formatted as follows:</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transfer Number                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Segment Index                                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    ... Segment Data ...                       :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Transfer Number:</dt>
          <dd>
            <t>The numeric identifier of the <xref target="transfer-window">in-progress</xref> Transfer that is completing, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Index:</dt>
          <dd>
            <t>The Segment Index of the final Segment, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
          <dt>Segment Data:</dt>
          <dd>
            <t>The octets of the final Segment of the Transfer, with the length calculated as the Message content length excluding the eight (8) octets of the Transfer Number and Segment Index.</t>
          </dd>
        </dl>
        <t>Transfer End Messages <bcp14>SHOULD NOT</bcp14> have zero octets of Segment Data, i.e. the total length of the Message <bcp14>SHOULD</bcp14> be greater than 12 octets.  Such Messages only add control-plane overhead and <bcp14>SHOULD NOT</bcp14> be used as an alternative form of padding.</t>
      </section>
      <section anchor="transfer-cancel-message">
        <name>Transfer Cancel Message</name>
        <t>The Transfer Cancel Message is used to indicate that the indicated Transfer is being aborted, and any prior or later received Segments associated with the Transfer <bcp14>MUST</bcp14> be discarded by a receiver.</t>
        <t>A Transfer Cancel Message has a type of 5. The Message Content field is formatted as follows:</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transfer Number                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Transfer Number:</dt>
          <dd>
            <t>The numeric identifier of the <xref target="transfer-window">in-progress</xref> Transfer that is cancelled, encoded as a 32-bit unsigned integer in network byte order.</t>
          </dd>
        </dl>
        <t>The Transfer Cancel Message has no content, and hence has a fixed length of 4 octets.</t>
        <t>A peer that receives a Transfer Cancel Message with a Transfer Number field value that does not match the numeric identifier of an <xref target="transfer-window">in-progress</xref> Transfer <bcp14>MUST</bcp14> ignore the Message.</t>
      </section>
      <section anchor="definite-padding-message">
        <name>Definite Padding Message</name>
        <t>The Definite Padding Message is used to add padding to a Link-layer PDU.</t>
        <t>A Definite Padding Message has a type of 1. Any content it contains has no semantic meaning, and a sender <bcp14>SHOULD</bcp14> set the content to a sequence of zero (0) octets.  Receivers <bcp14>MUST</bcp14> ignore any Message content.</t>
        <t>It is valid for this Message to have no content, i.e. a Length field value of zero (0), adding a total of four (4) octets of padding to the Link-layer PDU.</t>
      </section>
      <section anchor="indefinite-padding-message">
        <name>Indefinite Padding Message</name>
        <t>An Indefinite Padding Message has a type of zero (0), and in order to support padding with a minimum total length of one octet, the Message does not include an explicit Length or Content field, and hence has the following layout:</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type (0)      |                  ... Padding ...              :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Type:</dt>
          <dd>
            <t>The type of the Message: zero (0).</t>
          </dd>
        </dl>
        <t>The Indefinite Padding Message type field is followed by a sequence of zero or more zero (0) octets, ending at the first non-zero octet, or the end of the fixed-length Link-layer PDU.  The content of the Message has no meaning, and <bcp14>MUST</bcp14> be ignored by a receiver.</t>
        <t>Note: When an Indefinite Padding Message terminates with a non-zero octet, the non-zero octet is the first octet of the subsequent Message.</t>
      </section>
    </section>
    <section anchor="standard-hint-items">
      <name>Standard Hint Items</name>
      <t>The following Hint Items are defined in this document:</t>
      <section anchor="bundle-length-hint">
        <name>Bundle Length Hint</name>
        <t>The Bundle Length Hint Item is used to signal the total length of a bundle that is being transferred in segments. This allows a receiver to pre-allocate the necessary memory to reassemble the complete bundle.</t>
        <t>This Hint Item <bcp14>MAY</bcp14> be included in a Transfer Segment Message or a Transfer End Message. Receivers <bcp14>SHOULD</bcp14> ignore this Hint Item if encountered in other message types.</t>
        <t>The Hint Item has a Hint Type of 0, and its layout is as follows:</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Type (0)  |H|    Length     |  ... Bundle Length ...        :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Length:</dt>
          <dd>
            <t>The length of the <tt>Bundle Length</tt> field. This <bcp14>MUST</bcp14> be one of 1, 2, 4, or 8.</t>
          </dd>
          <dt>Bundle Length:</dt>
          <dd>
            <t>The total length of the bundle being transferred, encoded as an unsigned integer in network byte order, with a size corresponding to the <tt>Length</tt> field.</t>
          </dd>
        </dl>
        <t>A sender <bcp14>SHOULD</bcp14> choose the smallest possible length that can accommodate the total bundle length. For example, a bundle of 2000 octets should be encoded with a <tt>Length</tt> of 2, and a <tt>Value</tt> of 2000 encoded as a 16-bit unsigned integer.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This protocol does not define any measures to protect Messages or their content.  There might be link-layer mechanisms to protect the transmission of frames against over-hearing and interference, and upper layer mechanisms, such as BPSec defined in <xref target="RFC9172"/>, can be used to provide integrity and protection at a higher layer.  Therefore transport-layer security is considered out of scope for the protocol, and lower and/or upper layer mechanisms <bcp14>MUST</bcp14> be used to provide security.</t>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <t>The following caveats are to be considered before deploying instances of this protocol:</t>
      <ol spacing="normal" type="1"><li>
          <t>It is unreliable. Although there might be a link-layer protocol mechanism for a receiver to be notified that a frame has been lost in transmission, due to the unidirectional nature of the link-layer there is no in-band return path suitable for higher-layer acknowledgement of transfer success.  Any acknowledgement system designed to provide reliability <bcp14>MUST</bcp14> use a logically separate path from receiver back to sender.</t>
        </li>
        <li>
          <t>It does not provide congestion control or signalling. The underlying link-layer is expected to provide an uncontested channel between sender and receivers, and hence such mechanisms are considered to be out of scope. The protocol <bcp14>MUST NOT</bcp14> be deployed in environments where congestion might occur, such as the public Internet, when the underlying link-layer does not provide suitable congestion control.</t>
        </li>
        <li>
          <t>It requires an out-of-band mechanism for configuration. This can either be via pre-placed static configuration, a parallel dynamic control-plane protocol, or some other mechanism beyond the scope of this specification.</t>
        </li>
      </ol>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="btpu-message-types-registry">
        <name>BTPU Message Types Registry</name>
        <t>IANA is requested to create a new registry entitled "BTPU Message Types", in the existing "Bundle Protocol" registry group.  The registration procedures for this registry, using terms defined in <xref target="RFC8126"/>, is:</t>
        <table align="left" anchor="tab-message-types-reg">
          <name>BTPU Message Types registration policies</name>
          <thead>
            <tr>
              <th align="center">Values</th>
              <th align="left">Registration Procedure</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0..0x6F</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="center">0x70..0x7F</td>
              <td align="left">Private Use</td>
            </tr>
            <tr>
              <td align="center">0xA0..0xFF</td>
              <td align="left">Reserved for future expansion</td>
            </tr>
          </tbody>
        </table>
        <t>Specifications defining new Message Types, including any future allocation from the range reserved for future expansion, <bcp14>MUST</bcp14> use the common Message format defined in <xref target="message-format"/>, so that receivers that do not recognize the new Type value can process the containing Link-layer PDU as described in <xref target="unrecognized-types"/>.</t>
        <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 549?>

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

-->

</rfc>
