<?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-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="BTPU">Bundle Transfer Protocol - Unidirectional</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-btpu-00"/>
    <author fullname="Rick Taylor">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>rtaylor@aalyria.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="19"/>
    <area>INT</area>
    <workgroup>Delay/Disruption Tolerant Networking</workgroup>
    <keyword>DTN</keyword>
    <keyword>BPv7</keyword>
    <keyword>Bundle Protocol</keyword>
    <abstract>
      <?line 72?>

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>Bundle Protocol version 7 (BPv7) is defined in terms a layered logical architecture, detailed in <xref target="RFC9171"/>, wherein the responsibility for the storing and routing of bundles lies with the Bundle Processing Agent (BPA), and the BPA relies upon Convergence Layer Protocols (CLAs) to provide bundle transport between nodes. CLAs provide a unified interface to the BPA, allowing BPAs to be link-layer agnostic, but still use a diverse range of Convergence Layer Protocols (CLPs) to transfer bundles between BPAs over underlying link-layer protocols.</t>
      <t>In the realm of near- and deep-space communication there are a number of standardized link-layer protocols, including <xref target="USLP"/>, <xref target="TM"/>, <xref target="AOS"/>, <xref target="DVB-S2X"/>, that share a set of common properties:</t>
      <ul spacing="normal">
        <li>
          <t>They are unidirectional: data transfer occurs in one direction only, there is no in-band return path for data.</t>
        </li>
        <li>
          <t>They are frame-based: the link-layer protocol will guarantee that a frame of data is either delivered to a receiver in its entirety or not at all. Frames 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-definitions">
      <name>Message Definitions</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          | Length (24-bit unsigned integer)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       ... 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>Length:</dt>
        <dd>
          <t>The length of the Message in octets, excluding the 4 octets of the header itself, encoded as a 24-bit unsigned integer in network byte order.</t>
        </dd>
        <dt>Content:</dt>
        <dd>
          <t>A sequence of octets of data of variable length determined by the corresponding Length field value, encoded according to the type of the Message.</t>
        </dd>
      </dl>
      <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 of zero (0), i.e no Bundle content, 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 4 5 6 7
+-+-+-+-+-+-+-+-+
| Type          |
+-+-+-+-+-+-+-+-+
]]></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="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>
      <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">0x80..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>
        </tbody>
      </table>
    </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-h70.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 417?>

<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:
H4sIAAAAAAAAA+1923bbSLbYO7+ion4YKU1SF8ttt+Z2ZEl2a8WWFUuezqTX
jBcIlEgcgwAPCpDMcfs1z/mEfEs+JV+SfasbAMpytycrJ2nNmjYJAlW79t61
77UxmUxGoyZvCn2ktp61ZVZodV0npbnRtbqsq6ZKq0JN1Nsyz/Jap01elUmx
NUpms1rf4jPXl2+3RmnS6HlVr4+UabLRKKvSMlnCkFmd3DSTXDc3k6wpJ7Nm
1U729kamnS1zY2CsZr2C287Prp+rb1RSmAqGzMtMrzT8p2y2xmpLZ3lT1TnM
Cl/Oj5/BP1UNn95cP98ale1ypuujUQYAHI3SqjS6NK05Uk3d6hEA+GiU1DqB
KS6uR3dV/X5eV+0KJjnVRbLePc1N3a5wUeq6KjQsvFEXusEb83K+NRq912v4
kh2NRhN1en0B/312efsE/2FcWRSNRknbLKqabrxpi4LX/yZP36vrZF1U9UgB
2POkzP+R4HxH6jgp1rAsda3TRVkV1TzXBm7SyyQvjlTd0FP/kvBd07Rajka3
umxhmUp92SqUYjRv/chX1At8HK/zXFtAm39BIk0BQryc1OkCLi+aZmWOdnfx
LryU3+qpvW0XL+zO6urO6F14fhefm+fNop3BkzWsmxewizTH3wqgkGmCUf09
U35umld09+4A10wXzRLYblRW9RLwdwtYGOXljf+m1Nurl5f4L6w2qecaprIz
rdpZkafTNDWZIdgv25nZffLo4MP+7JHen66yG36O9wHw+k2uM3W1SlKtTpMm
US/z8r3fDts41Q49QnynDvYODid739EVo2sgJMLGwCi1dXJydXq1BUuHKaf7
k2eTR4iQ61dfAu0+QLs3e9SF9VoXeqmbeq22r1/tbAQ5hnV/sr/3WVhhwume
hfX49dVXAPY4u03KFDD7up7lDTLi1do0emnUNkzwVaF/ItAfIvSnf3k2uTr4
L8MruLu7m+rG5AR9pgvgpnoXL7zT5e6jvYNHe3vv8J/vv+dvT/YOdvf2p3uH
0739d9/t7erynb1+u7e/d7i3v+qu+08C3mkOjJ4U6i95piv1rK6SLE0MIWIb
YNz5vdx3pUGQZWquS9jLtK1v6mSJtxkQa2nT1nqs0kVSlrpQaZXhL0mZydPL
KmsLfswIemGfRNON5dbzsoEZUtxBMGl9m6fajEF03Bn1ImkWgN9o5AovqRkO
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
FqqSwkuuAD65nJy8vD2U1Zjp6H8D7UX3vLiMAAA=

-->

</rfc>
