<?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-ek-dtn-qubicle-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="DTN QUIC CL">DTN QUIC Bundle Protocol Convergence Layer (qubicle)</title>
    <seriesInfo name="Internet-Draft" value="draft-ek-dtn-qubicle-02"/>
    <author fullname="Rick Taylor">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>rtaylor@aalyria.com</email>
      </address>
    </author>
    <author fullname="Erik Kline">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>ek.ietf@gmail.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>QUIC</keyword>
    <keyword>Convergence Layer</keyword>
    <abstract>
      <?line 45?>

<t>This document specifies a minimal convergence layer protocol for transferring Bundle Protocol version 7 (BPv7) bundles over QUIC. The protocol leverages QUIC's native capabilities for reliable streaming, connection management, and security. Reliable transfers carry each bundle on its own QUIC stream, either directly or wrapped in a single CBOR byte string, with no further application-layer framing. Unreliable transfers use the Bundle Transfer Protocol - Unidirectional (BTP-U) over QUIC datagrams.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ekline.github.io/draft-dtn-qubicle/draft-ek-dtn-qubicle.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ek-dtn-qubicle/"/>.
      </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/ekline/draft-dtn-qubicle"/>.</t>
    </note>
  </front>
  <middle>
    <?line 49?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Bundle Protocol version 7 (BPv7) <xref target="RFC9171"/> requires Convergence Layer
Adapters (CLAs) to transfer bundles between nodes. This document specifies
the QUIC Bundle Protocol Convergence Layer, referred to in this document as
"Qubicle", a minimal CLA using QUIC <xref target="RFC9000"/> that embraces QUIC's native
capabilities rather than layering additional protocol machinery.</t>
      <t>The design philosophy is simple: QUIC already provides reliable streams, multiplexing, flow control, congestion control, and integrated security. This specification adds only what is strictly necessary to transfer bundles.</t>
      <t>The protocol provides two services:</t>
      <dl>
        <dt>Reliable Service:</dt>
        <dd>
          <t>Bundles are transferred on QUIC streams with guaranteed delivery, one bundle per stream.</t>
        </dd>
        <dt>Unreliable Service:</dt>
        <dd>
          <t>Bundles are transferred via QUIC datagrams <xref target="RFC9221"/> using <xref target="BTP-U"/> framing.</t>
        </dd>
      </dl>
    </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?>

<dl>
        <dt>BPA:</dt>
        <dd>
          <t>Bundle Protocol Agent, as defined in <xref target="RFC9171"/>.</t>
        </dd>
        <dt>CLA:</dt>
        <dd>
          <t>Convergence Layer Adapter, as defined in <xref target="RFC9171"/>. Also abbreviated
"CL" where the context is clear.</t>
        </dd>
        <dt>Client:</dt>
        <dd>
          <t>The Qubicle peer that initiates the QUIC connection. This is a connection-level role and does not imply any restriction on bundle transfer direction.</t>
        </dd>
        <dt>Server:</dt>
        <dd>
          <t>The Qubicle peer that accepts the QUIC connection. This is a connection-level role and does not imply any restriction on bundle transfer direction.</t>
        </dd>
        <dt>Qubicle Session:</dt>
        <dd>
          <t>The period during which a QUIC connection is established between two Qubicle peers. A session begins when the QUIC handshake completes and ends when the QUIC connection closes. Both client and server are equal peers for the purpose of bundle transfer.</t>
        </dd>
      </dl>
    </section>
    <section anchor="applicability">
      <name>Applicability Statement</name>
      <t>Qubicle adds no transport machinery of its own, so its applicability to a
given environment is that of QUIC itself: Qubicle <bcp14>SHOULD NOT</bcp14> be used where
the QUIC transport cannot be expected to perform well. With the default
transport parameters and timer values of general-purpose QUIC
implementations, this primarily means deployments where round-trip times
(RTTs) remain under a few seconds, so that QUIC's handshake and loss-recovery
behavior are well matched to the path.</t>
      <t>This boundary is not fixed. QUIC's transport parameters and timers can be
adjusted to longer-delay paths (<xref target="timer-tuning"/>), and a profile of QUIC
developed for a particular environment, whether by tuning, by use of
optional QUIC features such as 0-RTT resumption (<xref target="zero-rtt"/>), or by other
means, applies to Qubicle sessions without modification. Where such a
profile exists for an environment, Qubicle's applicability follows it. For
extremely high-delay or disrupted environments such as deep space
communications (e.g., Earth-Mars links with multi-minute RTTs) in the
absence of such a profile, specialized protocols like the Licklider
Transmission Protocol (LTP) <xref target="RFC5326"/> may be more appropriate.</t>
      <t>Similarly, the SVCB-based DNS service discovery mechanism (<xref target="dns-example"/>)
<bcp14>SHOULD NOT</bcp14> be used in environments where DNS itself might not perform well.
DNS-based discovery is <bcp14>NOT RECOMMENDED</bcp14> for use in DTN environments where DNS
infrastructure is unavailable, network disruptions cause failed lookups or
stale cached records, DNSSEC validation fails due to a mismatch between
query RTT and valid signature lifetimes, or DNS query overhead is
significant relative to available bandwidth.
For such environments, implementations <bcp14>SHOULD</bcp14> support alternative CL
provisioning mechanisms including manual configuration with pre-planned
contact schedules, contact graph routing protocols that maintain topology
independently of DNS, or out-of-band metadata distribution through mission
management plane channels.</t>
      <t>A hybrid approach is <bcp14>RECOMMENDED</bcp14> for nodes bridging Internet and
deep-space networks: use Qubicle with DNS discovery for Internet-side
connections, and use alternate mission management planes for space-side
connections.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <section anchor="connection-establishment">
        <name>Connection Establishment</name>
        <t>A Qubicle session is established by initiating a QUIC connection to a peer. The QUIC handshake authenticates both peers via TLS 1.3 <xref target="RFC9001"/> as described in <xref target="peer-node-id"/>.</t>
        <t>The ALPN identifier for Qubicle is <tt>qbcl</tt>.</t>
      </section>
      <section anchor="peer-node-id">
        <name>Peer Node Identification</name>
        <t>Qubicle does not exchange Node IDs in-band. A peer's Node ID is the Node ID
carried in the <tt>BundleEID</tt> OtherName (<xref section="4.4.2" sectionFormat="comma" target="RFC9174"/>) of the
certificate it presents during the TLS handshake. Accordingly, both client
and server <bcp14>MUST</bcp14> present a certificate containing a <tt>BundleEID</tt> OtherName,
and each peer <bcp14>MUST</bcp14> validate the certificate of the other as described in
<xref target="transport-security"/>.</t>
        <t>The sole exception is a deployment in which a peer has already been
configured with the Node ID of the remote peer by other means (e.g., a
contact plan or manual configuration keyed on the remote address). Such a
peer <bcp14>MAY</bcp14> accept a certificate lacking a <tt>BundleEID</tt> OtherName and associate
the configured Node ID with the session instead. If the peer has a configured
Node ID and the certificate also contains a <tt>BundleEID</tt> OtherName, the two
<bcp14>MUST</bcp14> match; a mismatch <bcp14>MUST</bcp14> be treated as a certificate validation failure
and the handshake terminated.</t>
        <t>The means by which a peer obtains the rendezvous information (address and
port) for a remote Node ID, whether by manual configuration, contact plan,
or DNS (see <xref target="dns-example"/>), is independent of the identification
mechanism above. Rendezvous information locates a candidate peer; only the
authenticated certificate establishes which Node ID has actually been
reached.</t>
      </section>
      <section anchor="reliable-transfer">
        <name>Reliable Bundle Transfer</name>
        <t>For reliable transfer, each bundle is sent on a dedicated QUIC unidirectional stream:</t>
        <ol spacing="normal" type="1"><li>
            <t>The sender creates a new unidirectional stream.</t>
          </li>
          <li>
            <t>The sender writes exactly one bundle to the stream, in one of the two
forms described in <xref target="stream-content"/>.</t>
          </li>
          <li>
            <t>The sender closes the stream by sending a STREAM frame with the FIN bit set.</t>
          </li>
        </ol>
        <t>The receiver reads data from the stream until FIN is received, then delivers the complete bundle to the BPA.</t>
        <section anchor="transfer-completion">
          <name>Transfer Completion</name>
          <t>QUIC guarantees reliable, in-order delivery of stream data, and Qubicle
defines no convergence-layer acknowledgment. A reliable transfer is complete
from the sender's perspective when the QUIC endpoint reports that all stream
data, including the FIN, has been acknowledged by the peer.</t>
          <t>This completion signal is generated by the peer's QUIC transport
implementation upon receipt of the data. It confirms that the data reached
the peer's QUIC endpoint; it does not confirm that the peer's convergence
layer has read the data, nor that the peer's BPA has accepted the bundle. In
particular, data acknowledged by the QUIC endpoint but not yet consumed by
the receiving application can be lost if the receiving process fails.
Receivers <bcp14>SHOULD</bcp14> therefore read stream data promptly and pass each completed
bundle to the BPA without unnecessary delay, so as to minimize the interval
during which acknowledged data is held only in transport buffers.</t>
          <t>Transfer completion is consequently not a sufficient basis for a sending BPA
to conclude that a bundle has been received by the next-hop BPA. Where such
assurance is required, it <bcp14>MUST</bcp14> be obtained by bundle-layer mechanisms, such
as the status reports defined in <xref section="6.1" sectionFormat="comma" target="RFC9171"/>, rather than
inferred from the convergence layer.</t>
          <t>In terms of the convergence layer service model, Qubicle provides the
following indications to the BPA:</t>
          <dl>
            <dt>Transmission Success:</dt>
            <dd>
              <t>All stream data for the bundle has been acknowledged by the peer's QUIC
endpoint, as described above.</t>
            </dd>
            <dt>Transmission Failure:</dt>
            <dd>
              <t>The stream was reset by either peer (<xref target="cancellation"/>), or the connection
closed before all stream data was acknowledged.</t>
            </dd>
            <dt>Reception Success:</dt>
            <dd>
              <t>A complete bundle has been received (FIN received, and for the wrapped
form, exactly the declared length) and passed to the BPA.</t>
            </dd>
            <dt>Reception Failure:</dt>
            <dd>
              <t>The stream was reset by either peer, or the connection closed before the
bundle was complete; any partial data has been discarded.</t>
            </dd>
          </dl>
          <t>Qubicle does not provide intermediate progress indications; a BPA requiring
them can observe stream-level flow control state where the QUIC
implementation exposes it.</t>
        </section>
        <section anchor="stream-content">
          <name>Stream Content</name>
          <t>A stream carries exactly one bundle, in either of two forms:</t>
          <dl>
            <dt>Direct form:</dt>
            <dd>
              <t>The bundle's own encoding is written to the stream without any wrapper.
The bundle is framed by the stream boundaries: its length is known to the
receiver only when the FIN is received.</t>
            </dd>
            <dt>Wrapped form:</dt>
            <dd>
              <t>The bundle's encoding is carried as the content of a single
definite-length CBOR byte string (<xref section="3.1" sectionFormat="comma" target="RFC8949"/>). The byte
string head declares the bundle's exact length before any bundle data is
read.</t>
            </dd>
          </dl>
          <t>A receiver <bcp14>MUST</bcp14> accept both forms and distinguishes them by the first octet
of the stream:</t>
          <table align="left" anchor="tab-first-octet">
            <name>Stream Content Dispatch</name>
            <thead>
              <tr>
                <th align="left">First Octet</th>
                <th align="left">Interpretation</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0x9f</td>
                <td align="left">Direct form, BPv7 bundle (CBOR indefinite-length array, <xref section="4.1" sectionFormat="comma" target="RFC9171"/>)</td>
              </tr>
              <tr>
                <td align="left">0x06</td>
                <td align="left">Direct form, BPv6 bundle (<xref target="RFC5050"/> version octet)</td>
              </tr>
              <tr>
                <td align="left">0x40 - 0x5b</td>
                <td align="left">Wrapped form; the bundle version is determined by the first octet of the byte string's content as above</td>
              </tr>
              <tr>
                <td align="left">any other value</td>
                <td align="left">Protocol error</td>
              </tr>
            </tbody>
          </table>
          <t>An indefinite-length byte string (first octet 0x5f) is not permitted, as it
would not convey the bundle's length. Receipt of any first octet not listed
above, of an indefinite-length byte string, or of a byte string whose
content does not begin with a recognized bundle version octet, is a protocol
error and the receiver <bcp14>MUST</bcp14> close the connection with <tt>QBCL_PROTOCOL_ERROR</tt>.</t>
          <t>In the wrapped form, the receiver reads exactly the declared number of
content octets and then expects FIN. Receipt of additional data after the
declared length, or of FIN before the declared length has been received, is
a protocol error and the receiver <bcp14>MUST</bcp14> close the connection with
<tt>QBCL_PROTOCOL_ERROR</tt>. In the direct form, the entire stream content is
delivered to the BPA as a single bundle; whether that content constitutes
exactly one well-formed bundle is determined by the BPA, not by the
convergence layer.</t>
          <t>The two forms serve different needs. The wrapped form allows a receiver to
learn the bundle's size from the first few octets and to reject an
oversized bundle (<xref target="cancellation"/>) or pre-allocate storage before the bulk
of the data arrives. The direct form allows a sender to begin transmitting a
bundle whose total length is not yet known, for example when forwarding a
bundle that is itself still being received on another stream (cut-through
forwarding). A sender <bcp14>SHOULD</bcp14> use the wrapped form whenever the bundle's
length is known in advance, which is the usual case for a bundle held in
storage, and <bcp14>MAY</bcp14> use the direct form otherwise. A receiver <bcp14>MAY</bcp14>, as a matter
of local policy, decline direct-form bundles by cancelling the transfer with
<tt>QBCL_LENGTH_REQUIRED</tt>.</t>
          <t>This framing is agnostic to the bundle version carried. Qubicle
implementations <bcp14>MUST</bcp14> support BPv7 bundles. Support for other bundle versions,
including BPv6, is <bcp14>OPTIONAL</bcp14>; a receiver that recognizes but does not support
the version of an incoming bundle <bcp14>SHOULD</bcp14> cancel the transfer with
<tt>QBCL_UNSUPPORTED_BUNDLE_VERSION</tt> rather than treating it as a protocol
error.</t>
        </section>
        <section anchor="bundle-flow-in-both-directions">
          <name>Bundle Flow in Both Directions</name>
          <t>Both peers can send bundles simultaneously. Each peer creates unidirectional streams to send its bundles. QUIC stream IDs inherently separate client-initiated streams (IDs 2, 6, 10...) from server-initiated streams (IDs 3, 7, 11...), ensuring no collision between the two directions of bundle flow.</t>
          <t>Qubicle uses only unidirectional streams. Peers <bcp14>SHOULD</bcp14> set the
<tt>initial_max_streams_bidi</tt> transport parameter to 0. A peer that
nonetheless receives a bidirectional stream <bcp14>MUST</bcp14> treat this as a protocol
error and close the connection with <tt>QBCL_PROTOCOL_ERROR</tt>.</t>
        </section>
        <section anchor="stream-selection-and-priority">
          <name>Stream Selection and Priority</name>
          <t>Senders <bcp14>MAY</bcp14> use QUIC stream priorities to expedite higher-priority bundles. The mapping of bundle priority to QUIC stream priority is an implementation matter.</t>
        </section>
        <section anchor="flow-control">
          <name>Flow Control and Stream Limits</name>
          <t>Qubicle relies entirely on QUIC flow control to manage receiver resources; no
convergence-layer mechanism is defined. A receiver controls the number of
bundles concurrently in transfer through the <tt>initial_max_streams_uni</tt>
transport parameter and subsequent <tt>MAX_STREAMS</tt> frames, the amount of any
single bundle that may be in flight through <tt>initial_max_stream_data_uni</tt>
and <tt>MAX_STREAM_DATA</tt>, and total buffered data through <tt>initial_max_data</tt>
and <tt>MAX_DATA</tt>. A receiver that is temporarily unable to accept more data
simply withholds credit, causing the sender to pause without error.
Receivers <bcp14>SHOULD</bcp14> size these limits to reflect the storage they are actually
prepared to commit to in-progress bundles; see <xref target="flow-control-sizing"/>.</t>
          <t>QUIC stream identifiers are 62-bit values, so the total number of streams
over a connection's lifetime is not a practical constraint. If an
implementation nonetheless reaches an internal limit on stream creation, it
<bcp14>SHOULD</bcp14> gracefully close the connection and establish a new one.</t>
        </section>
      </section>
      <section anchor="unreliable-transfer">
        <name>Unreliable Bundle Transfer</name>
        <t>For unreliable transfer, bundles are sent using QUIC datagrams <xref target="RFC9221"/> with <xref target="BTP-U"/> framing.</t>
        <t>Support for the unreliable service is <bcp14>OPTIONAL</bcp14>. An implementation offering
it <bcp14>MUST</bcp14> advertise the <tt>max_datagram_frame_size</tt> transport parameter. The
unreliable service is available on a session only if both peers have
advertised this parameter; otherwise neither peer sends DATAGRAM frames and
only the reliable service is available. Implementations <bcp14>SHOULD</bcp14> make the
availability of the unreliable service known to the BPA so that it can
select an appropriate service for each bundle.</t>
        <t>Each QUIC DATAGRAM frame carries one or more <xref target="BTP-U"/> messages, and plays
the role of the Link-layer PDU in the <xref target="BTP-U"/> model: it is delivered in
its entirety or not at all. A sender <bcp14>MUST NOT</bcp14> construct a datagram larger
than the peer's advertised <tt>max_datagram_frame_size</tt>, and <bcp14>SHOULD</bcp14> size
datagrams to fit within the current path MTU so that they are not dropped by
the QUIC layer. <xref target="BTP-U"/> segmentation, reassembly, transfer identification,
and optional repetition apply unchanged.</t>
        <t>The <xref target="BTP-U"/> Transfer Window size (<xref section="5" sectionFormat="comma" target="BTP-U"/>) <bcp14>MUST</bcp14> be configured
consistently at both peers; how this is done is out of scope for this
document.</t>
        <t>QUIC DATAGRAM frames are subject to QUIC congestion control
(<xref section="5" sectionFormat="comma" target="RFC9221"/>), satisfying the <xref target="BTP-U"/> requirement that it not
be deployed without congestion control where congestion may occur.</t>
        <t>The mapping of bundle priority to <xref target="BTP-U"/> transfer interleaving is an implementation matter.</t>
      </section>
      <section anchor="connection-termination">
        <name>Connection Termination</name>
        <t>A session ends when the QUIC connection closes, whether by an explicit
<tt>CONNECTION_CLOSE</tt> from either peer or by expiry of the idle timeout
(<xref target="keepalive"/>). Idle timeout is a normal way for a session to end, not an
error; a peer with further bundles to send simply establishes a new session.</t>
        <t>A peer wishing to end a session gracefully <bcp14>SHOULD</bcp14> stop opening new streams
and initiating new <xref target="BTP-U"/> transfers, allow in-progress reliable transfers
in both directions to complete, and then close the connection with
<tt>QBCL_NO_ERROR</tt>. Since QUIC provides no means to tell the remote peer that
no further streams will be opened, a peer <bcp14>SHOULD</bcp14> bound this wait with a
local timer.</t>
        <t>A peer <bcp14>MAY</bcp14> instead close the connection immediately at any time. If it does
so deliberately while transfers are in progress it <bcp14>SHOULD</bcp14> use
<tt>QBCL_SHUTTING_DOWN</tt>; other codes in <xref target="error-codes"/> apply for error
conditions.</t>
        <t>When a connection closes for any reason, all incomplete reliable transfers
on it have failed. The receiver <bcp14>MUST</bcp14> discard any partially received bundle
data, as in <xref target="cancellation"/>, and the sender's BPA is notified of each
failure so that the affected bundles can be re-forwarded. Any incomplete
<xref target="BTP-U"/> transfers on the session are likewise lost.</t>
        <t>Two peers may establish connections to each other concurrently, resulting in
more than one session between the same pair of Node IDs. This is permitted
and is not an error. A peer <bcp14>MAY</bcp14> choose to gracefully close a redundant
session, but <bcp14>MUST</bcp14> accept bundles received on any established session.</t>
      </section>
      <section anchor="cancellation">
        <name>Transfer Cancellation</name>
        <t>Either peer may cancel an in-progress reliable transfer.</t>
        <t>A sender cancels a transfer by sending <tt>RESET_STREAM</tt> on the bundle's stream
with an appropriate error code (<xref target="error-codes"/>). A sender might do this,
for example, when the bundle's lifetime expires before transfer completes,
or when the BPA withdraws the bundle from this CLA.</t>
        <t>A receiver cancels a transfer by sending <tt>STOP_SENDING</tt> on the bundle's
stream with an appropriate error code. The sender <bcp14>MUST</bcp14> respond with
<tt>RESET_STREAM</tt> as required by <xref section="3.5" sectionFormat="comma" target="RFC9000"/>. A receiver might do
this, for example, when the incoming bundle exceeds the receiver's storage
or policy limits, or when the receiver's BPA is shutting down.</t>
        <t>On receiving <tt>RESET_STREAM</tt>, a receiver <bcp14>MUST</bcp14> discard any partially received
bundle data for that stream and <bcp14>MUST NOT</bcp14> deliver a partial bundle to the BPA.
A receiver that has sent <tt>STOP_SENDING</tt> <bcp14>MUST</bcp14> likewise discard any data
subsequently received on that stream. A cancelled transfer is reported to the
sending BPA as a failed transfer; the bundle itself is unaffected and <bcp14>MAY</bcp14> be
retransmitted on a new stream or via another CLA, subject to BPA policy.</t>
        <t>A receiver enforcing a maximum receivable bundle size can reject a
wrapped-form bundle (<xref target="stream-content"/>) as soon as the byte string head has
been read, before any bundle data is received. A direct-form bundle can only
be rejected once the received octet count exceeds the limit, by which time
that much bandwidth has been consumed. Receivers for which this matters can
additionally bound in-flight data using the <tt>initial_max_stream_data_uni</tt>
transport parameter, or decline direct-form bundles altogether with
<tt>QBCL_LENGTH_REQUIRED</tt>. Since a sender learns the peer's stream flow control
limit during the handshake, a sender <bcp14>SHOULD NOT</bcp14> begin transfer of a bundle
larger than that limit unless it has reason to expect the limit to be
raised.</t>
        <t>Cancellation of unreliable transfers is governed by <xref target="BTP-U"/>.</t>
      </section>
      <section anchor="keepalive">
        <name>Keepalive</name>
        <t>Qubicle relies on QUIC's native idle timeout mechanism. Peers negotiate the <tt>max_idle_timeout</tt> transport parameter during connection establishment. See <xref target="timer-tuning"/> for guidance on selecting this and related values.</t>
        <t>Where a session must be kept alive across periods with no bundles to send,
implementations <bcp14>MAY</bcp14> use QUIC PING frames (<xref section="10.1.2" sectionFormat="comma" target="RFC9000"/>)
where the QUIC implementation exposes such a facility. Keepalives should be
balanced against the idle timeout guidance in <xref target="timer-tuning"/>: a session
that is deliberately allowed to time out and re-established later can be
preferable to keeping one alive through a scheduled link outage.</t>
      </section>
    </section>
    <section anchor="error-codes">
      <name>Error Codes</name>
      <t>Qubicle defines a single space of application error codes, used in the QUIC
<tt>CONNECTION_CLOSE</tt> frame (with the application-level frame type, see
<xref section="19.19" sectionFormat="comma" target="RFC9000"/>), <tt>RESET_STREAM</tt> frame, and <tt>STOP_SENDING</tt>
frame. QUIC application error codes are 62-bit unsigned integers.</t>
      <table align="left" anchor="tab-error-codes">
        <name>Qubicle Error Codes</name>
        <thead>
          <tr>
            <th align="left">Code</th>
            <th align="left">Name</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x00</td>
            <td align="left">QBCL_NO_ERROR</td>
            <td align="left">Graceful connection closure, no error</td>
          </tr>
          <tr>
            <td align="left">0x01</td>
            <td align="left">QBCL_PROTOCOL_ERROR</td>
            <td align="left">Peer violated this specification</td>
          </tr>
          <tr>
            <td align="left">0x02</td>
            <td align="left">QBCL_TRANSFER_CANCELLED</td>
            <td align="left">Transfer aborted for a reason not otherwise specified (e.g., bundle lifetime expired, BPA withdrew the bundle)</td>
          </tr>
          <tr>
            <td align="left">0x03</td>
            <td align="left">QBCL_BUNDLE_TOO_LARGE</td>
            <td align="left">Incoming bundle exceeds the receiver's maximum receivable bundle size</td>
          </tr>
          <tr>
            <td align="left">0x04</td>
            <td align="left">QBCL_STORAGE_EXHAUSTED</td>
            <td align="left">Receiver temporarily cannot accept bundles; the sender <bcp14>MAY</bcp14> retry later</td>
          </tr>
          <tr>
            <td align="left">0x05</td>
            <td align="left">QBCL_SHUTTING_DOWN</td>
            <td align="left">Peer is deliberately closing the session; no fault is implied</td>
          </tr>
          <tr>
            <td align="left">0x06</td>
            <td align="left">QBCL_LENGTH_REQUIRED</td>
            <td align="left">Receiver policy does not accept direct-form bundles (<xref target="stream-content"/>)</td>
          </tr>
          <tr>
            <td align="left">0x07</td>
            <td align="left">QBCL_UNSUPPORTED_BUNDLE_VERSION</td>
            <td align="left">Receiver does not support the version of the bundle being transferred</td>
          </tr>
        </tbody>
      </table>
      <t><tt>QBCL_NO_ERROR</tt> is only meaningful on <tt>CONNECTION_CLOSE</tt>. A cancelled
transfer always has a cause, so peers <bcp14>MUST NOT</bcp14> use <tt>QBCL_NO_ERROR</tt> in
<tt>RESET_STREAM</tt> or <tt>STOP_SENDING</tt>; a peer receiving it there <bcp14>SHOULD</bcp14> treat it
as <tt>QBCL_TRANSFER_CANCELLED</tt>.</t>
      <t>When a peer closes the session deliberately while transfers are still in
progress, it <bcp14>SHOULD</bcp14> use <tt>QBCL_SHUTTING_DOWN</tt> on <tt>CONNECTION_CLOSE</tt> rather
than <tt>QBCL_NO_ERROR</tt>, so that the remote peer can distinguish an orderly
shutdown with collateral transfer failures from an idle close.</t>
      <t>A peer receiving an unrecognized error code <bcp14>MUST</bcp14> treat it as
<tt>QBCL_PROTOCOL_ERROR</tt> on <tt>CONNECTION_CLOSE</tt> and as <tt>QBCL_TRANSFER_CANCELLED</tt>
on <tt>RESET_STREAM</tt> or <tt>STOP_SENDING</tt>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="transport-security">
        <name>Transport Security</name>
        <t>QUIC mandates TLS 1.3 for all connections, providing confidentiality, integrity, and authentication. Qubicle inherits these security properties.</t>
        <t>As specified in <xref target="peer-node-id"/>, Qubicle requires mutual certificate
authentication: both client and server present certificates, and each peer
validates the other's certificate before exchanging bundles. Certificate
validation, including the <tt>BundleEID</tt> OtherName checks and the applicable
certificate profile, <bcp14>SHOULD</bcp14> follow <xref section="4.4" sectionFormat="comma" target="RFC9174"/>. Automated
certificate provisioning is available via the ACME extensions defined in
<xref target="RFC9891"/>.</t>
      </section>
      <section anchor="bundle-security">
        <name>Bundle Security</name>
        <t>Transport security protects bundles in transit between adjacent nodes. For end-to-end bundle security, implementations <bcp14>SHOULD</bcp14> use BPSec <xref target="RFC9172"/>.</t>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <t>QUIC provides built-in protection against many denial-of-service attacks, including address validation and amplification prevention.</t>
        <t>QUIC flow control (<xref target="flow-control"/>) is the primary means of bounding the
resources a peer can consume; receivers <bcp14>SHOULD</bcp14> configure it accordingly
rather than accepting unbounded data and discarding it afterwards.</t>
      </section>
      <section anchor="zero-rtt">
        <name>0-RTT Considerations</name>
        <t>QUIC 0-RTT data is not protected against replay. Because a replayed bundle
transfer could cause a bundle to be received and forwarded more than once,
implementations <bcp14>SHOULD NOT</bcp14> send bundles as 0-RTT data, and servers <bcp14>MAY</bcp14>
decline to accept 0-RTT altogether.</t>
        <t>0-RTT resumption could nonetheless materially reduce session establishment
cost on long-delay paths between peers that reconnect frequently. The
consequence of a replayed transfer is duplicate receipt of a bundle, which a
BPA can detect from the combination of source node ID and creation timestamp
(<xref section="4.2.7" sectionFormat="comma" target="RFC9171"/>) together with any fragment offset, except for
anonymous bundles, and whose impact is bounded where BPSec (<xref target="RFC9172"/>)
protects the bundle. Whether this risk is acceptable in a given environment
is a matter for operational experience and for any QUIC profile applicable
to that environment (<xref target="applicability"/>); a deployment that does permit 0-RTT
<bcp14>SHOULD</bcp14> ensure that its BPAs perform duplicate bundle detection.</t>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <section anchor="version-negotiation">
        <name>Version Negotiation</name>
        <t>To resist ossification, Qubicle endpoints are <bcp14>RECOMMENDED</bcp14> to support QUIC
version 2 <xref target="RFC9369"/> and compatible version negotiation <xref target="RFC9368"/>.
Qubicle operates identically over any QUIC version providing the features
used in this document.</t>
      </section>
      <section anchor="timer-tuning">
        <name>Timer and Transport Parameter Tuning</name>
        <t>QUIC connection behavior is governed by a number of timers. Some are
negotiated via transport parameters during the handshake (e.g.,
<tt>max_idle_timeout</tt> and <tt>max_ack_delay</tt>), while others are derived locally
from measured path characteristics (e.g., the Probe Timeout (PTO) computed
from RTT estimates per <xref target="RFC9002"/>, seeded by an implementation's initial
RTT value).</t>
        <t>In many deployments, particularly those on the terrestrial Internet, the
default values recommended by <xref target="RFC9000"/> and <xref target="RFC9002"/> and used by
general-purpose QUIC implementations are expected to be adequate, and
Qubicle implementations <bcp14>MAY</bcp14> use them unchanged.</t>
        <t>However, Qubicle peers may possess knowledge of end-to-end path
characteristics that is unavailable to the QUIC transport itself, for
example from contact plans, orbital mechanics, or link scheduling
information in non-terrestrial deployments. Such information may indicate
expected propagation delays, predictable link outages, or highly asymmetric
paths for which Internet defaults are inappropriate (e.g., an idle timeout
short enough to be tripped by a scheduled link gap, or an initial RTT small
enough to cause spurious PTO retransmissions during the handshake).
Implementations <bcp14>SHOULD</bcp14> allow these timers and transport parameters to be
configured on a per-peer basis so that they can be adjusted using such
knowledge. The means by which such path knowledge is obtained, and the
specific adjustments derived from it, are out of scope for this document and
may be the subject of environment-specific QUIC profiles.</t>
      </section>
      <section anchor="flow-control-sizing">
        <name>Flow Control Sizing</name>
        <t>The QUIC flow control limits described in <xref target="flow-control"/> interact.
Because a sender must wait for stream credit before opening a stream, a
receiver that grants very few concurrent streams limits sender parallelism;
conversely, a receiver that grants many streams but little per-stream data
can find a large bundle stalling behind many small ones. Per-stream and
connection-level data limits also bound throughput to roughly the limit
divided by the path RTT, so limits sized purely for storage protection may
underutilize a high-bandwidth, high-delay path. The appropriate balance
between storage commitment, parallelism, and throughput is
deployment-specific, and the same out-of-scope path knowledge discussed in
<xref target="timer-tuning"/> can inform it.</t>
      </section>
      <section anchor="convergence-layer-fallback">
        <name>Convergence Layer Fallback</name>
        <t>As noted in <xref target="RFC9308"/>, some networks block UDP traffic such that
Qubicle connections cannot be established. Bundle Protocol Agents that
employ Qubicle are <bcp14>RECOMMENDED</bcp14> to support additional Convergence Layers,
e.g. TCPCLv4 <xref target="RFC9174"/>.</t>
      </section>
      <section anchor="coexistence-with-other-udp-based-convergence-layers">
        <name>Coexistence With Other UDP-based Convergence Layers</name>
        <t>It is <bcp14>RECOMMENDED</bcp14> that Qubicle implementations use a dedicated UDP port for
operational simplicity.</t>
        <t>Bundle Protocol Agents that employ Qubicle and other UDP-based Convergence
Layers on the same UDP port <bcp14>MUST</bcp14> be able to disambiguate received datagrams
in order to route them to the correct CLA. For UDP CLs that use DTLS,
<xref target="RFC9443"/> provides the required guidance to disambiguate QUIC traffic
from DTLS-encapsulated CL traffic.</t>
      </section>
      <section anchor="dns-example">
        <name>Finding a Qubicle Endpoint Via DNS</name>
        <t>Qubicle senders may be manually provisioned with a hostname
(or IP addresses) and UDP port corresponding to the listening Qubicle
endpoint for a peer Bundle Protocol Agent.
If only a hostname is known but a port is not, <xref target="RFC9460"/> SVCB
Resource Records may be looked up to find a listening
UDP port and confirm expected ALPN configuration.</t>
        <t>Consider this zone file for <tt>example.</tt>:</t>
        <artwork name="dns-zone-example"><![CDATA[
;; zone: example.
;
$ORIGIN example.
_dtn-bundle._tcp.mars-orbiter IN SRV 10 20 4556 cloud-agent.example.
_qbcl.mars-orbiter IN SVCB 0 cloud-agent.example.

cloud-agent IN A    192.0.2.1
cloud-agent IN AAAA 2001:db8::1
cloud-agent IN SVCB 10 . (
    ipv4hint=192.0.2.1
    ipv6hint=2001:db8::1
    port=1234 alpn="qbcl")
]]></artwork>
        <t>A BPA supporting both TCPCLv4 <xref target="RFC9174"/> and Qubicle may attempt to
resolve an SRV record for the <tt>_dtn-bundle._tcp</tt> prefixed hostname. A BPA
that supports Qubicle
might also issue DNS SVCB queries for the <xref target="AttrLeaf"/> prefix "_qbcl". The
sample above indicates that <tt>mars-orbiter.example.</tt> has an SVCB record in
<tt>AliasMode</tt> referring to <tt>cloud-agent.example.</tt>  The SVCB record associated
with <tt>cloud-agent.example.</tt> contains all required QUIC transport rendezvous
information.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="alpn-identifier">
        <name>ALPN Identifier</name>
        <t>IANA is requested to register the following ALPN identifier in the "TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry:</t>
        <table align="left" anchor="tab-alpn">
          <name>ALPN Registration</name>
          <thead>
            <tr>
              <th align="left">Protocol</th>
              <th align="left">Identification Sequence</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Qubicle</td>
              <td align="left">0x71 0x62 0x63 0x6C ("qbcl")</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="attrleaf-node-name">
        <name>AttrLeaf Node Name</name>
        <t>Per <xref target="AttrLeaf"/>, IANA is requested to add the following entry to the DNS
"Underscored and Globally Scoped DNS Node Names" registry:</t>
        <table align="left" anchor="tab-attrleaf">
          <name>AttrLeaf Registration</name>
          <thead>
            <tr>
              <th align="left">RR Type</th>
              <th align="left">_NODE NAME</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">SVCB</td>
              <td align="left">_qbcl</td>
              <td align="left">this document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="application-error-codes">
        <name>Application Error Codes</name>
        <t>IANA is requested to create a new registry "Qubicle Error Codes".
Values in this registry are 62-bit unsigned integers, matching the range of
QUIC application error codes. Each entry consists of a Code, a Name, a brief
Description, and a Reference.</t>
        <t>The registration policy for this registry is Specification Required
<xref target="RFC8126"/> for codes in the range 0x00 to 0x3FFFFFFF. Codes in the
range 0x40000000 to 0x3FFFFFFFFFFFFFFF are reserved for Private Use
<xref target="RFC8126"/> and are not assigned by IANA.</t>
        <t>The initial contents of the registry are:</t>
        <table align="left" anchor="tab-error-registry">
          <name>Error Code Registry</name>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00</td>
              <td align="left">QBCL_NO_ERROR</td>
              <td align="left">Graceful connection closure, no error</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">QBCL_PROTOCOL_ERROR</td>
              <td align="left">Peer violated this specification</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">QBCL_TRANSFER_CANCELLED</td>
              <td align="left">Transfer aborted, unspecified reason</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">QBCL_BUNDLE_TOO_LARGE</td>
              <td align="left">Bundle exceeds receiver's maximum size</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">QBCL_STORAGE_EXHAUSTED</td>
              <td align="left">Receiver temporarily cannot accept bundles</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">QBCL_SHUTTING_DOWN</td>
              <td align="left">Peer is deliberately closing the session</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">0x06</td>
              <td align="left">QBCL_LENGTH_REQUIRED</td>
              <td align="left">Receiver does not accept direct-form bundles</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">0x07</td>
              <td align="left">QBCL_UNSUPPORTED_BUNDLE_VERSION</td>
              <td align="left">Receiver does not support the bundle version</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">0x08-0x3FFFFFFF</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">0x40000000-0x3FFFFFFFFFFFFFFF</td>
              <td align="left">Reserved for Private Use</td>
              <td align="left"> </td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="AttrLeaf">
          <front>
            <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Formally, any DNS Resource Record (RR) may occur under any domain name. However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies. The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name"). The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch. This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8552"/>
          <seriesInfo name="DOI" value="10.17487/RFC8552"/>
        </reference>
        <reference anchor="BTP-U">
          <front>
            <title>Bundle Transfer Protocol - Unidirectional</title>
            <author fullname="Rick Taylor" initials="R." surname="Taylor">
              <organization>Aalyria Technologies</organization>
            </author>
            <date day="19" month="July" year="2026"/>
            <abstract>
              <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.

   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.

   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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-btpu-03"/>
        </reference>
        <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="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9221">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9221"/>
          <seriesInfo name="DOI" value="10.17487/RFC9221"/>
        </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="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="RFC9174">
          <front>
            <title>Delay-Tolerant Networking TCP Convergence-Layer Protocol Version 4</title>
            <author fullname="B. Sipos" initials="B." surname="Sipos"/>
            <author fullname="M. Demmer" initials="M." surname="Demmer"/>
            <author fullname="J. Ott" initials="J." surname="Ott"/>
            <author fullname="S. Perreault" initials="S." surname="Perreault"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document describes a TCP convergence layer (TCPCL) for Delay-Tolerant Networking (DTN). This version of the TCPCL protocol resolves implementation issues in the earlier TCPCL version 3 as defined in RFC 7242 and provides updates to the Bundle Protocol (BP) contents, encodings, and convergence-layer requirements in BP version 7 (BPv7). Specifically, TCPCLv4 uses BPv7 bundles encoded by the Concise Binary Object Representation (CBOR) as its service data unit being transported and provides a reliable transport of such bundles. This TCPCL version also includes security and extensibility mechanisms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9174"/>
          <seriesInfo name="DOI" value="10.17487/RFC9174"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </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="RFC9369">
          <front>
            <title>QUIC Version 2</title>
            <author fullname="M. Duke" initials="M." surname="Duke"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies QUIC version 2, which is identical to QUIC version 1 except for some trivial details. Its purpose is to combat various ossification vectors and exercise the version negotiation framework. It also serves as a template for the minimum changes in any future version of QUIC.</t>
              <t>Note that "version 2" is an informal name for this proposal that indicates it is the second version of QUIC to be published as a Standards Track document. The protocol specified here uses a version number other than 2 in the wire image, in order to minimize ossification risks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9369"/>
          <seriesInfo name="DOI" value="10.17487/RFC9369"/>
        </reference>
        <reference anchor="RFC9368">
          <front>
            <title>Compatible Version Negotiation for QUIC</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>QUIC does not provide a complete version negotiation mechanism but instead only provides a way for the server to indicate that the version the client chose is unacceptable. This document describes a version negotiation mechanism that allows a client and server to select a mutually supported version. Optionally, if the client's chosen version and the negotiated version share a compatible first flight format, the negotiation can take place without incurring an extra round trip. This document updates RFC 8999.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9368"/>
          <seriesInfo name="DOI" value="10.17487/RFC9368"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC9443">
          <front>
            <title>Multiplexing Scheme Updates for QUIC</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>RFC 7983 defines a scheme for a Real-time Transport Protocol (RTP) receiver to demultiplex Datagram Transport Layer Security (DTLS), Session Traversal Utilities for NAT (STUN), Secure Real-time Transport Protocol (SRTP) / Secure Real-time Transport Control Protocol (SRTCP), ZRTP, and Traversal Using Relays around NAT (TURN) channel packets arriving on a single port. This document updates RFC 7983 and RFC 5764 to also allow QUIC packets to be multiplexed on a single receiving socket.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9443"/>
          <seriesInfo name="DOI" value="10.17487/RFC9443"/>
        </reference>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </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="RFC9308">
          <front>
            <title>Applicability of the QUIC Transport Protocol</title>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document discusses the applicability of the QUIC transport protocol, focusing on caveats impacting application protocol development and deployment over QUIC. Its intended audience is designers of application protocol mappings to QUIC and implementors of these application protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9308"/>
          <seriesInfo name="DOI" value="10.17487/RFC9308"/>
        </reference>
        <reference anchor="RFC5326">
          <front>
            <title>Licklider Transmission Protocol - Specification</title>
            <author fullname="M. Ramadas" initials="M." surname="Ramadas"/>
            <author fullname="S. Burleigh" initials="S." surname="Burleigh"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <date month="September" year="2008"/>
            <abstract>
              <t>This document describes the Licklider Transmission Protocol (LTP), designed to provide retransmission-based reliability over links characterized by extremely long message round-trip times (RTTs) and/or frequent interruptions in connectivity. Since communication across interplanetary space is the most prominent example of this sort of environment, LTP is principally aimed at supporting "long-haul" reliable transmission in interplanetary space, but it has applications in other environments as well.</t>
              <t>This document is a product of the Delay Tolerant Networking Research Group and has been reviewed by that group. No objections to its publication as an RFC were raised. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5326"/>
          <seriesInfo name="DOI" value="10.17487/RFC5326"/>
        </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>
        <reference anchor="RFC9891">
          <front>
            <title>Automated Certificate Management Environment (ACME) Delay-Tolerant Networking (DTN) Node ID Validation Extension</title>
            <author fullname="B. Sipos" initials="B." surname="Sipos"/>
            <date month="November" year="2025"/>
            <abstract>
              <t>This document specifies an extension to the Automated Certificate Management Environment (ACME) protocol that allows an ACME server to validate the Delay-Tolerant Networking (DTN) Node ID for an ACME client. A DTN Node ID is an identifier used in the Bundle Protocol (BP) to name a "singleton endpoint": an endpoint that is registered on a single BP Node. The DTN Node ID is encoded both as a certificate Subject Alternative Name (SAN) identity of type otherName with an Other Name form of BundleEID and as an ACME Identifier type "bundleEID".</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9891"/>
          <seriesInfo name="DOI" value="10.17487/RFC9891"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
sLf/8hXZ0WXxwxa2s7XDRPx0QOqTNfcQjPHDFvgcZHXMzr1w5HaW6FQ26cgp
9OnNuCMncwkCN4slTDVHYnPUuxRMdOme7y/k3a2f1B28Av51Gp5tkYXktoFc
QSjLqb1ESJUnIwUC2a38ngEmHbrnu9/QJ3dn3C8tZAWDWewWH/KWBPxq8Zuk
55BzYVRP3cV84E/8TpKghUyoe0OS8yjPkvp9OU3v9DfAqVTf9fHNnTT9isfw
zZunUmD8zHuh1XKeBzW55huGrsaxY8exqHdH50d9QSgW03f+kiuZNzyoHRZT
90tLqvQeYi/UDY0I1zuua+nLFpJtR1FdiyANr7aigJfdxhg74bt3J/WWTlet
uNOW/+rzerP2axezRfqd+8ZM0m7vrY3GW31fIM/vWBoZ/2/36K9v9vHXS/x1
bLdVolAg0vFWQr4egtebqGcaXcmGeNkQOBBeOVQq9pEVM+aSQzSBdwe29zTI
sqwdBK1FfxHeXH4lxtYHtlvEYRr5/zEvx2y5rif8+2MgO37mdZJfXdmb1RLU
uD2/ODm150fvTztExp+Y0J+fo62jL3M8XrIshlZGWPP9ImoSCXIQp5eijnJ9
VI0Km6LSiGfYWrp3aHWwo4Dtra0YmZ8lUuXil/7xL9VMDaTnuQsEVPyLA8qZ
+VIRlrYXkSPVy4u1pBqwFPhz0ls9wW+jSGcmqsJyvzfIn5TvDh0o5epivO/t
d0L/vu6UTF2pnjHuV+rxb5uZldGto7AtLu9Cr46PL9/Kn5FW2OmvxHGPvdqV
P92H3R+mJ3LX1aOWX11W2SOO6UOddhfCe9VLq6RGhfTkFuKsdeMuiKNlPb4F
a3x6B79T2NanXPqL3P6lBW8bqua/XADXP+I/VxA3AJP7Igati3tm5C+Vtb3p
VrP1VLJJ3Vr/yP+iOrbnhv8v1649N/AfKVv7I/Vqzwz/ryhVW2s89cxM3w2D
5NIzHwovf5/xP+0fKX+GPUKOVfSLOA/wnJWVqrggvD3WIShtZx9WsA0kkpbD
HP8Xx5+P7/99AAA=

-->

</rfc>
