<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-taylor-dtn-dpp-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="DPP">DTN Peering Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-taylor-dtn-dpp-00"/>
    <author fullname="Rick Taylor">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>rtaylor@aalyria.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="15"/>
    <area>Internet</area>
    <workgroup>Delay/Disruption Tolerant Networking</workgroup>
    <keyword>DTN</keyword>
    <keyword>peering</keyword>
    <keyword>routing</keyword>
    <keyword>delay-tolerant networking</keyword>
    <abstract>
      <?line 52?>

<t>This document specifies the DTN Peering Protocol (DPP), an inter-domain
routing protocol for the Delay-Tolerant Networking (DTN) ecosystem. DPP
facilitates the exchange of reachability information between distinct
Administrative Domains (ADs), enabling inter-domain routing across the Solar
System DTN. DPP separates the control plane from the data plane: a DPP
speaker need not be a gateway that forwards bundles, allowing centralized
route controllers or orchestration systems to participate in peering on
behalf of the gateways they manage.</t>
      <t>DPP harmonizes the two DTN addressing schemes -- <tt>ipn</tt> (integer-based) and
<tt>dtn</tt> (URI-based) -- into a unified routing framework. It leverages DNS for
identity verification and supports both reactive routing and scheduled
contact windows for deep-space networks.</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/dpp/draft-taylor-dtn-dpp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-taylor-dtn-dpp/"/>.
      </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/dpp"/>.</t>
    </note>
  </front>
  <middle>
    <?line 69?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The DTN Peering Protocol (DPP) is designed for the exchange of reachability
information between distinct Administrative Domains in Delay-Tolerant Networks.
It functions as the inter-domain routing protocol for the Solar System DTN,
analogous to BGP's role in the Internet.</t>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>Two DPP speakers establish a session to exchange reachability information
across administrative boundaries. Common scenarios include:</t>
        <dl>
          <dt>Inter-Agency Connectivity:</dt>
          <dd>
            <t>NASA's Deep Space Network and ESA's ESTRACK operate independent DTN
infrastructures. DPP allows their border gateways to advertise which
spacecraft and ground stations are reachable through each network, enabling
bundles to flow between agencies.</t>
          </dd>
          <dt>Commercial-Government Integration:</dt>
          <dd>
            <t>A commercial satellite operator peers with a government science network. DPP
enables the commercial network to advertise transit capacity to deep-space
assets, while the science network advertises its spacecraft endpoints.</t>
          </dd>
          <dt>Redundant Path Discovery:</dt>
          <dd>
            <t>A Mars relay satellite is reachable via two ground station complexes. DPP
allows both paths to be advertised with appropriate metrics, enabling the
network to prefer one path while maintaining the other as backup.</t>
          </dd>
          <dt>Scheduled Contact Windows:</dt>
          <dd>
            <t>Deep-space links are available only during planned contact windows. DPP's
time-variant routing attributes allow DPP speakers to advertise future
connectivity, enabling proactive bundle scheduling.</t>
          </dd>
          <dt>Scalable Contact Graph Routing:</dt>
          <dd>
            <t>Contact Graph Routing (CGR) algorithms compute optimal bundle forwarding
based on predicted contact schedules. However, CGR complexity grows with
network size, and a single global contact graph spanning all agencies,
spacecraft, and ground stations is neither practical nor desirable -- each
organization maintains its own mission planning systems and contact
schedules. DPP provides the inter-domain routing layer that connects
independent CGR domains. Each Administrative Domain runs its own CGR
internally, while DPP speakers advertise summarized reachability (with
optional time windows) to peers. This decouples internal scheduling
complexity from external routing, allowing the Solar System DTN to scale
without requiring a single coordinated contact plan.</t>
          </dd>
        </dl>
        <t>Without DPP, each network would require manual configuration of routes to
external destinations -- an approach that does not scale as the Solar System
DTN grows.</t>
      </section>
      <section anchor="design-principles">
        <name>Design Principles</name>
        <dl>
          <dt>Transport Agnostic:</dt>
          <dd>
            <t>Defined via Protocol Buffers (gRPC) to run over any reliable transport
(TCP/IP, QUIC).</t>
          </dd>
          <dt>Unified Routing:</dt>
          <dd>
            <t>Harmonizes <tt>ipn</tt> and <tt>dtn</tt> schemes into a single routing table (FIB).</t>
          </dd>
          <dt>DNS-Rooted Identity:</dt>
          <dd>
            <t>Uses standard DNS domains as Administrative Domain identifiers.</t>
          </dd>
          <dt>Decoupled Trust:</dt>
          <dd>
            <t>Separates "Who I am" (AD Identity) from "What I route" (Allocators/Names).</t>
          </dd>
        </dl>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>This specification defines the protocol messages, state machine, and
operational requirements for DPP implementations. It does not define:</t>
        <ul spacing="normal">
          <li>
            <t>Internal routing within an Administrative Domain</t>
          </li>
          <li>
            <t>Bundle forwarding algorithms (e.g., CGR)</t>
          </li>
          <li>
            <t>Transport layer security beyond identity verification</t>
          </li>
          <li>
            <t>Policy languages for route filtering</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</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="definitions">
        <name>Definitions</name>
        <dl>
          <dt>Administrative Domain (AD):</dt>
          <dd>
            <t>An autonomous unit of routing control identified by a DNS domain name.
Examples include agency networks (e.g., <tt>dsn.example.org</tt>), commercial
providers, or research institutions.</t>
          </dd>
          <dt>DPP Speaker:</dt>
          <dd>
            <t>An entity that participates in the DPP protocol, maintaining peering
sessions with other DPP speakers and exchanging route information on behalf
of an Administrative Domain. A DPP speaker may be a gateway, a centralized
route controller, or any other system authorized to advertise and receive
routes for its AD.</t>
          </dd>
          <dt>Gateway:</dt>
          <dd>
            <t>A border node within an Administrative Domain that forwards bundles to
other ADs. A gateway may or may not also be a DPP speaker. When a DPP
speaker is not itself a gateway, it uses the <tt>gateway_eid</tt> attribute
(see <xref target="gateway-eid-resolution"/>) to direct traffic to the appropriate
gateway.</t>
          </dd>
          <dt>EID Pattern:</dt>
          <dd>
            <t>A pattern matching one or more Bundle Protocol <xref target="RFC9171"/> Endpoint
Identifiers, as defined in <xref target="I-D.ietf-dtn-eid-pattern"/>.</t>
          </dd>
          <dt>Forwarding Information Base (FIB):</dt>
          <dd>
            <t>The consolidated routing table used by a gateway to forward bundles.</t>
          </dd>
          <dt>Metric:</dt>
          <dd>
            <t>A numeric value expressing route preference, analogous to BGP's Multi-Exit
Discriminator (MED).</t>
          </dd>
          <dt>AD_PATH:</dt>
          <dd>
            <t>An ordered list of Administrative Domains that a route advertisement has
traversed, used for loop detection.</t>
          </dd>
        </dl>
      </section>
      <section anchor="on-the-use-of-dns">
        <name>On the Use of DNS</name>
        <t>Readers familiar with deep-space networking may question the reliance on DNS,
given that DNS is not deployed on spacecraft and requires low-latency
connectivity. This concern, while understandable, misses the architectural
context:</t>
        <dl>
          <dt>DPP speakers are ground infrastructure.</dt>
          <dd>
            <t>DPP operates at administrative boundaries. DPP speakers are ground stations,
mission control centers, network operations facilities, or centralized route
controllers -- all of which have reliable Internet connectivity and can
perform DNS lookups in milliseconds. Gateways, by contrast, are the
forwarding nodes that handle bundle traffic and may be located anywhere --
including on spacecraft or relay satellites -- since they do not need DNS
access or direct participation in DPP.</t>
          </dd>
          <dt>DNS is used for authentication, not routing.</dt>
          <dd>
            <t>DNS lookups occur only during session establishment (the handshake phase) to
retrieve the peer's public key for identity verification. Once a session is
established, no further DNS queries are required. Route advertisements and
withdrawals flow over the established session without DNS involvement.</t>
          </dd>
          <dt>Spacecraft do not run DPP.</dt>
          <dd>
            <t>Spacecraft run the Bundle Protocol and may use CGR or static routing for
internal forwarding decisions. They receive forwarding instructions from their
ground-based mission operations, which participate in DPP on their behalf.
The spacecraft need not know about Administrative Domains or DNS. However,
spacecraft and relay satellites <bcp14>MAY</bcp14> serve as gateways -- forwarding bundles
between Administrative Domains -- without participating in DPP directly.
A ground-based DPP speaker advertises routes on their behalf using the
<tt>gateway_eid</tt> attribute to identify the in-space forwarding node.</t>
          </dd>
        </dl>
        <t>This architecture mirrors the Internet: BGP routers require IP connectivity to
establish sessions, but the end hosts they route traffic for need not
understand BGP. Similarly, DPP speakers require DNS access, but the spacecraft
and sensors they route bundles for need not understand DPP.</t>
      </section>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <section anchor="administrative-domains">
        <name>Administrative Domains</name>
        <t>An Administrative Domain is an autonomous unit of routing control.</t>
        <dl>
          <dt>Identity:</dt>
          <dd>
            <t>An AD is identified solely by a DNS domain name (e.g., <tt>dsn.example.org</tt>).</t>
          </dd>
          <dt>Independence:</dt>
          <dd>
            <t>An AD Identity is distinct from the resources it advertises. An AD named
<tt>dsn.example.org</tt> may advertise <tt>ipn:100</tt> and <tt>dtn://rover1.example.org</tt>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="dpp-speakers-and-gateways">
        <name>DPP Speakers and Gateways</name>
        <t>DPP speakers and gateways are defined in <xref target="definitions"/>. A DPP speaker and
a gateway <bcp14>MAY</bcp14> be the same node, but they need not be. For example, a
centralized route controller may run DPP sessions on behalf of multiple
gateways within its AD, using the <tt>gateway_eid</tt> attribute to direct traffic
to the appropriate forwarding node. This separation of the control plane
(DPP) from the data plane (bundle forwarding) allows flexible deployment
topologies.</t>
        <t>An Administrative Domain <bcp14>MAY</bcp14> deploy multiple DPP speakers, each maintaining
independent peering sessions with external ADs. Because loop detection
operates on the AD identity (the <tt>local_ad_id</tt> in the AD_PATH) rather than
on individual speaker identity, multiple speakers within the same AD do not
introduce routing loops (see <xref target="loop-detection"/>).</t>
      </section>
    </section>
    <section anchor="addressing-and-metrics">
      <name>Addressing and Metrics</name>
      <t>DPP introduces a Harmonized Specificity Score to allow integer-based <tt>ipn</tt>
patterns and string-based <tt>dtn</tt> patterns to coexist in a single routing
decision process.</t>
      <section anchor="eid-pattern-constraints-monotonic-specificity">
        <name>EID Pattern Constraints (Monotonic Specificity)</name>
        <t>To ensure efficient FIB lookups and O(1) specificity scoring, DPP restricts the
generic EID patterns defined in <xref target="I-D.ietf-dtn-eid-pattern"/> to a Strict
Monotonic Subset.</t>
        <t>A pattern exhibits monotonic specificity if all wildcard components are confined
to the logical "leaves" of the naming hierarchy. A specific child component
cannot exist under a wildcard parent.</t>
        <section anchor="ipn-scheme-constraints-left-to-right-hierarchy">
          <name>IPN Scheme Constraints (Left-to-Right Hierarchy)</name>
          <t>The <tt>ipn</tt> scheme hierarchy is defined as Allocator -&gt; Node.</t>
          <ul spacing="normal">
            <li>
              <t>Wildcards or ranges are only permitted in the Node number if the Allocator
is specific.</t>
            </li>
            <li>
              <t>Valid: <tt>ipn:100.1</tt> (Specific), <tt>ipn:100.*</tt> (Monotonic).</t>
            </li>
            <li>
              <t>Invalid: <tt>ipn:*.1</tt>, <tt>ipn:[100-200].1</tt> (Specific Node under Wildcard
Allocator).</t>
            </li>
          </ul>
        </section>
        <section anchor="dtn-scheme-constraints-right-to-left-hierarchy">
          <name>DTN Scheme Constraints (Right-to-Left Hierarchy)</name>
          <t>The <tt>dtn</tt> scheme hierarchy follows standard DNS rules: TLD &lt;- Domain &lt;- Host.</t>
          <ul spacing="normal">
            <li>
              <t>Wildcards are only permitted in the left-most label (the Host or lowest
subdomain).</t>
            </li>
            <li>
              <t>Valid: <tt>dtn://rover1.example.org</tt> (Exact), <tt>dtn://*.example.org</tt> (Wildcard
Host), <tt>dtn://rover*.example.org</tt> (Partial Host).</t>
            </li>
            <li>
              <t>Invalid: <tt>dtn://rover1.*.example.org</tt> (Specific Child under Wildcard Parent).</t>
            </li>
          </ul>
        </section>
        <section anchor="single-wildcard-constraint">
          <name>Single Wildcard Constraint</name>
          <t>To support the simplified specificity metric, a pattern <bcp14>MUST</bcp14> contain at most
one wildcard character (<tt>*</tt>).</t>
          <t>Complex globs (e.g., <tt>dtn://r*v*r.example.org</tt>) <bcp14>MUST NOT</bcp14> be used.</t>
        </section>
      </section>
      <section anchor="specificity-scoring">
        <name>Specificity Scoring</name>
        <t>The specificity score prioritizes Exact Matches over Wildcards, and Longer
Prefixes over Shorter Prefixes.</t>
        <ul empty="true">
          <li>
            <t>The specificity score is computed locally by the receiver from the EidPattern.
It is NOT transmitted in route advertisements, as it can be deterministically
derived from the pattern itself.</t>
          </li>
        </ul>
        <t>The score is calculated as a <tt>uint32</tt>:</t>
        <artwork><![CDATA[
Score = (IsExact x 256) + LiteralLength
]]></artwork>
        <dl>
          <dt>IsExact (0 or 1):</dt>
          <dd>
            <t>1 if the pattern contains NO wildcards; 0 otherwise.</t>
          </dd>
          <dt>Multiplier (256):</dt>
          <dd>
            <t>A weight ensuring any Exact Match outranks any Wildcard Match (assuming max
literal length &lt; 256).</t>
          </dd>
          <dt>LiteralLength:</dt>
          <dd>
            <t>The count of non-wildcard characters (or equivalent bits for integers).</t>
          </dd>
        </dl>
        <section anchor="dtn-scheme-scoring">
          <name>DTN Scheme Scoring</name>
          <t>For <tt>dtn</tt> URIs, LiteralLength is the count of characters in the Authority
string excluding the wildcard.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Pattern</th>
                <th align="left">Characters</th>
                <th align="left">Score</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>dtn://rover1.example.org</tt></td>
                <td align="left">18 (exact)</td>
                <td align="left">274</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>dtn://rover*.example.org</tt></td>
                <td align="left">17 (wildcard)</td>
                <td align="left">17</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="ipn-scheme-scoring">
          <name>IPN Scheme Scoring</name>
          <t>For <tt>ipn</tt> EIDs, LiteralLength represents the "Effective Bit Depth" of the
pattern. The IPN address space is treated as a 64-bit virtual integer, split
logically into a 32-bit Allocator and a 32-bit Node.</t>
          <artwork><![CDATA[
LiteralLength = Bits_Allocator + Bits_Node
]]></artwork>
          <ol spacing="normal" type="1"><li>
              <t>Allocator Part (Bits 63-32):
              </t>
              <ul spacing="normal">
                <li>
                  <t>Specific Allocator (e.g., <tt>100</tt>): 32 bits.</t>
                </li>
                <li>
                  <t>Wildcard Allocator (<tt>*</tt>): 0 bits.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Node Part (Bits 31-0):
              </t>
              <ul spacing="normal">
                <li>
                  <t>Specific Node (e.g., <tt>.1</tt>): 32 bits.</t>
                </li>
                <li>
                  <t>Wildcard Node (<tt>.*</tt>): 0 bits.</t>
                </li>
                <li>
                  <t>Range <tt>.[min-max]</tt>: 32 - ceil(log2(Count)) bits.</t>
                </li>
              </ul>
            </li>
          </ol>
          <table>
            <thead>
              <tr>
                <th align="left">IPN Pattern</th>
                <th align="left">Classification</th>
                <th align="left">IsExact</th>
                <th align="left">LiteralLength</th>
                <th align="left">Score</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>ipn:100.1</tt></td>
                <td align="left">Specific Node</td>
                <td align="left">1</td>
                <td align="left">64</td>
                <td align="left">320</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ipn:100.*</tt></td>
                <td align="left">Allocator Wildcard</td>
                <td align="left">0</td>
                <td align="left">32</td>
                <td align="left">32</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ipn:100.[10-13]</tt></td>
                <td align="left">Node Range (Size 4)</td>
                <td align="left">0</td>
                <td align="left">62</td>
                <td align="left">62</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ipn:*</tt></td>
                <td align="left">Default Route</td>
                <td align="left">0</td>
                <td align="left">0</td>
                <td align="left">0</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="the-metric-field">
        <name>The Metric Field</name>
        <t>The <tt>metric</tt> field in route advertisements is analogous to BGP's Multi-Exit
Discriminator (MED) <xref target="RFC4271"/>. It allows an Administrative Domain to express
a preference for how traffic should enter its network when multiple paths
exist.</t>
        <t>For example:</t>
        <artwork><![CDATA[
Organization B has two DPP speakers peering with Organization A:
  - Speaker in Europe  (gateway with high latency to Mars relay)
  - Speaker in Australia (gateway with low latency to Mars relay)

Organization B advertises routes to ipn:200.* via both speakers:
  - Europe speaker:    metric = 100
  - Australia speaker: metric = 10

Organization A, having learned the same route from both peers,
prefers the lower metric and routes traffic via Australia.
]]></artwork>
        <table>
          <thead>
            <tr>
              <th align="left">Property</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Direction</td>
              <td align="left">Controls incoming traffic (traffic TO your AD)</td>
            </tr>
            <tr>
              <td align="left">Scope</td>
              <td align="left">Only compared between routes from the SAME origin AD</td>
            </tr>
            <tr>
              <td align="left">Default</td>
              <td align="left">Lower metric = more preferred</td>
            </tr>
            <tr>
              <td align="left">Use Cases</td>
              <td align="left">Capacity balancing, latency optimization, cost management</td>
            </tr>
          </tbody>
        </table>
        <t>The metric is set by the originating AD and propagated unchanged through
intermediate ADs. It provides a policy knob for traffic engineering without
requiring coordination between ADs.</t>
      </section>
      <section anchor="route-selection-algorithm">
        <name>Route Selection Algorithm</name>
        <t>When a DPP speaker receives multiple routes to the same destination, it <bcp14>MUST</bcp14>
select the Best Path using the following tie-breaking order:</t>
        <ol spacing="normal" type="1"><li>
            <t>Highest Specificity Score: Prefer <tt>rover1</tt> over <tt>rover*</tt>. (Computed
locally from the EidPattern.)</t>
          </li>
          <li>
            <t>Shortest AD_PATH: Prefer 1 hop over 3 hops.</t>
          </li>
          <li>
            <t>Lowest Metric: Administrator preference, analogous to BGP MED.</t>
          </li>
          <li>
            <t>Oldest Route: Stability preference.</t>
          </li>
        </ol>
        <t>A DPP speaker <bcp14>MAY</bcp14> implement additional local policy that overrides this order,
but such policy is outside the scope of this specification.</t>
      </section>
    </section>
    <section anchor="trust-and-verification-model">
      <name>Trust and Verification Model</name>
      <t>DPP leverages DNS as the root of trust for Administrative Domain identities,
utilizing a "Check-and-Challenge" mechanism.</t>
      <section anchor="the-dtndomain-svcb-record">
        <name>The _dtn_domain SVCB Record</name>
        <t>To prove ownership of an AD Identity (e.g., <tt>dsn.example.org</tt>), the
administrator <bcp14>MUST</bcp14> publish one or more SVCB records <xref target="RFC9460"/> at
<tt>_dtn_domain.&lt;AD-Domain&gt;</tt>.</t>
        <t>The <tt>_dtn_domain</tt> prefix is chosen to reserve the broader <tt>_dtn</tt> namespace
for future transport-specific uses (e.g., convergence layer discovery).</t>
        <t>Record format:</t>
        <artwork><![CDATA[
_dtn_domain.<AD-Domain>.  IN  SVCB  <priority> <target> <params>
]]></artwork>
        <t>Required SvcParams:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Key ID</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>dtn-alg</tt></td>
              <td align="left">TBD</td>
              <td align="left">Signature algorithm (e.g., <tt>ed25519</tt>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>dtn-pubkey</tt></td>
              <td align="left">TBD</td>
              <td align="left">Base64-encoded public key</td>
            </tr>
          </tbody>
        </table>
        <t>Optional SvcParams:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Key ID</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>alpn</tt></td>
              <td align="left">1</td>
              <td align="left">Application protocols (e.g., <tt>dpp</tt>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>port</tt></td>
              <td align="left">3</td>
              <td align="left">DPP service port</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ipv4hint</tt></td>
              <td align="left">4</td>
              <td align="left">IPv4 address hints</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ipv6hint</tt></td>
              <td align="left">6</td>
              <td align="left">IPv6 address hints</td>
            </tr>
          </tbody>
        </table>
        <t>Example:</t>
        <artwork><![CDATA[
_dtn_domain.dsn.example.org.  IN  SVCB  1 . (
    dtn-alg=ed25519
    dtn-pubkey=MCowBQYDK2VwAyEAGb9... )
]]></artwork>
        <t>An SVCB record with target "." indicates the service is available at the AD
domain itself. Alternatively, the target <bcp14>MAY</bcp14> specify a different hostname:</t>
        <artwork><![CDATA[
_dtn_domain.dsn.example.org.  IN  SVCB  1 gateway.dsn.example.org. (
    dtn-alg=ed25519
    dtn-pubkey=MCowBQYDK2VwAyEAGb9...
    port=4556 )
]]></artwork>
        <t>Implementations <bcp14>MUST</bcp14> support the <tt>ed25519</tt> algorithm. Implementations <bcp14>MAY</bcp14>
support additional algorithms.</t>
        <section anchor="multiple-dpp-speakers-per-ad">
          <name>Multiple DPP Speakers per AD</name>
          <t>An Administrative Domain that deploys multiple DPP speakers has two options
for key management:</t>
          <dl>
            <dt>Shared key:</dt>
            <dd>
              <t>All speakers share a single key pair. The AD publishes one SVCB record and
distributes the private key to each speaker. This is operationally simple
but means that compromise of any single speaker exposes the key for the
entire AD.</t>
            </dd>
            <dt>Per-speaker keys:</dt>
            <dd>
              <t>Each speaker has its own key pair. The AD publishes multiple SVCB records
at <tt>_dtn_domain.&lt;AD-Domain&gt;</tt>, each with a distinct <tt>dtn-pubkey</tt>. During
verification, the Responder <bcp14>MUST</bcp14> attempt signature verification against
each public key in the record set until one succeeds or all have been
tried.</t>
            </dd>
          </dl>
          <t>Example with per-speaker keys:</t>
          <artwork><![CDATA[
; Speaker at Goldstone
_dtn_domain.dsn.example.org.  IN  SVCB  1 gds.dsn.example.org. (
    dtn-alg=ed25519
    dtn-pubkey=MCowBQYDK2VwAyEAGb9...
    port=4556 )

; Speaker at Canberra
_dtn_domain.dsn.example.org.  IN  SVCB  2 cbr.dsn.example.org. (
    dtn-alg=ed25519
    dtn-pubkey=MCowBQYDK2VwAyEAdQ7...
    port=4556 )
]]></artwork>
          <t>Both approaches are valid. Per-speaker keys provide better operational
security -- a compromised speaker can be revoked by removing its SVCB
record without affecting other speakers in the AD. The choice between
shared and per-speaker keys is a local operational decision and is
transparent to the peering partner.</t>
        </section>
        <section anchor="alignment-with-cl-discovery">
          <name>Alignment with CL Discovery</name>
          <t>This approach aligns with <xref target="I-D.ek-dtn-ipn-arpa"/> which uses DNS for
convergence layer endpoint discovery. The <tt>_dtn_domain</tt> prefix is used for
AD identity verification, leaving the broader <tt>_dtn</tt> namespace available
for transport-specific service discovery in future specifications.</t>
        </section>
        <section anchor="alternative-approaches">
          <name>Alternative Approaches (Working Group Note)</name>
          <t>This subsection documents alternative DNS-based identity verification
approaches considered during protocol design. It is intended for Working
Group discussion and will be removed before publication.</t>
          <t>Alternative A: TXT Record</t>
          <t>A simpler approach using TXT records, following the pattern established by
DKIM <xref target="RFC6376"/> and DMARC <xref target="RFC7489"/>:</t>
          <artwork><![CDATA[
_dtn_id.dsn.example.org.  IN  TXT  (
    "v=dtn1; a=ed25519; k=MCowBQYDK2VwAyEAGb9..." )
]]></artwork>
          <table>
            <thead>
              <tr>
                <th align="left">Pros</th>
                <th align="left">Cons</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Simple, widely deployed</td>
                <td align="left">Less structured, requires parsing</td>
              </tr>
              <tr>
                <td align="left">Proven pattern (DKIM, DMARC, ACME)</td>
                <td align="left">Cannot combine identity with service discovery</td>
              </tr>
              <tr>
                <td align="left">No IANA registration needed for record format</td>
                <td align="left">Separate records needed for CL endpoints</td>
              </tr>
            </tbody>
          </table>
          <t>Alternative B: Namespaced TXT Record</t>
          <t>Using a <tt>_dtn</tt> namespace with sub-labels for different purposes:</t>
          <artwork><![CDATA[
_dtn._id.dsn.example.org.  IN  TXT  (
    "v=1 a=ed25519 k=MCowBQYDK2VwAyEAGb9..." )
_dtn._bundle._tcp.dsn.example.org.  IN  SRV  (
    1 1 4556 gateway.dsn.example.org. )
]]></artwork>
          <table>
            <thead>
              <tr>
                <th align="left">Pros</th>
                <th align="left">Cons</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Separates identity from service discovery</td>
                <td align="left">Multiple lookups required</td>
              </tr>
              <tr>
                <td align="left">Uses established SRV pattern for CL</td>
                <td align="left">More complex DNS configuration</td>
              </tr>
              <tr>
                <td align="left">Compatible with existing resolver behavior</td>
                <td align="left">Namespace fragmentation</td>
              </tr>
            </tbody>
          </table>
          <t>Rationale for SVCB:</t>
          <t>The authors selected SVCB (Alternative C) because:</t>
          <ol spacing="normal" type="1"><li>
              <t>Unified record: Single DNS lookup provides both identity verification and
optional service discovery parameters.</t>
            </li>
            <li>
              <t>Extensibility: SVCB's typed parameter model allows future extensions
without format changes.</t>
            </li>
            <li>
              <t>Alignment: Consistent with the direction of <xref target="I-D.ek-dtn-ipn-arpa"/> and
modern DNS service discovery patterns.</t>
            </li>
            <li>
              <t>Structured data: Native support for typed parameters avoids ad-hoc parsing
of TXT record values.</t>
            </li>
          </ol>
          <t>The authors invite feedback on this design choice.</t>
        </section>
      </section>
      <section anchor="handshake-and-verification-flow">
        <name>Handshake and Verification Flow</name>
        <t>When two DPP speakers peer, they <bcp14>MUST</bcp14> perform the following cryptographic
handshake:</t>
        <ol spacing="normal" type="1"><li>
            <t>Hello: The Initiator <bcp14>MUST</bcp14> send a <tt>Hello</tt> message containing its
<tt>local_ad_id</tt>.</t>
          </li>
          <li>
            <t>Lookup: The Responder <bcp14>MUST</bcp14> query DNS for SVCB records at
<tt>_dtn_domain.&lt;local_ad_id&gt;</tt> to fetch the Initiator's Public Key(s) (from the
<tt>dtn-pubkey</tt> parameter of each record). If the DNS lookup fails or no
valid records are found, the Responder <bcp14>MUST</bcp14> reject the session.</t>
          </li>
          <li>
            <t>Challenge: The Responder <bcp14>MUST</bcp14> generate a cryptographically random nonce
(minimum 16 bytes) and send a <tt>HelloChallenge</tt> message.</t>
          </li>
          <li>
            <t>Response: The Initiator <bcp14>MUST</bcp14> sign the nonce with its Private Key and send
a <tt>HelloResponse</tt> message.</t>
          </li>
          <li>
            <t>Verification: The Responder <bcp14>MUST</bcp14> verify the signature against the Public
Key(s) from DNS. If multiple SVCB records were returned, the Responder
<bcp14>MUST</bcp14> attempt verification against each <tt>dtn-pubkey</tt> until one succeeds.
If any key produces a valid signature, the session is ESTABLISHED. If no
key produces a valid signature, the Responder <bcp14>MUST</bcp14> reject the session and
<bcp14>SHOULD</bcp14> send a <tt>Notification</tt> with an appropriate error code.</t>
          </li>
        </ol>
      </section>
      <section anchor="loop-detection">
        <name>Loop Detection</name>
        <t>Routing loops are prevented using the AD_PATH attribute (similar to BGP's
AS_PATH <xref target="RFC4271"/>). Loop detection operates on Administrative Domain
identity, not on individual DPP speaker identity. This means an AD <bcp14>MAY</bcp14>
deploy multiple speakers without risk of routing loops, as all speakers
within an AD share the same <tt>local_ad_id</tt>.</t>
        <dl>
          <dt>Mechanism:</dt>
          <dd>
            <t>Every route advertisement <bcp14>MUST</bcp14> include the ordered list of ADs it has
traversed.</t>
          </dd>
          <dt>Propagation:</dt>
          <dd>
            <t>When a DPP speaker re-advertises a route to a peer, it <bcp14>MUST</bcp14> prepend its own
<tt>local_ad_id</tt> to the AD_PATH.</t>
          </dd>
          <dt>Detection:</dt>
          <dd>
            <t>If a DPP speaker receives a route where AD_PATH contains its own
<tt>local_ad_id</tt>, the route <bcp14>MUST</bcp14> be silently discarded.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="route-attributes-and-advertisements">
      <name>Route Attributes and Advertisements</name>
      <t>DPP uses an extensible attribute model inspired by BGP path attributes
<xref target="RFC4271"/>. This allows new route properties to be defined in future protocol
versions without breaking existing implementations.</t>
      <section anchor="advertisement-structure">
        <name>Advertisement Structure</name>
        <t>A <tt>RouteAdvertisement</tt> follows the BGP UPDATE model:</t>
        <dl>
          <dt>Patterns:</dt>
          <dd>
            <t>One or more EidPattern destinations (equivalent to NLRI)</t>
          </dd>
          <dt>Path attributes:</dt>
          <dd>
            <t>Properties shared by all destinations (ad_path, metric)</t>
          </dd>
          <dt>Extensible attributes:</dt>
          <dd>
            <t>Optional properties (time window, link characteristics, next-hop)</t>
          </dd>
        </dl>
      </section>
      <section anchor="path-attributes">
        <name>Path Attributes</name>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>patterns</tt></td>
              <td align="left">EID patterns for destination matching</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ad_path</tt></td>
              <td align="left">List of AD domains traversed (for loop detection and path length)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>metric</tt></td>
              <td align="left">Administrator preference (lower = preferred, analogous to BGP MED)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="extensible-attributes">
        <name>Extensible Attributes</name>
        <t>Optional attributes shared by all destinations:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Attribute</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>gateway_eid</tt></td>
              <td align="left">Bundle forwarding endpoint (see <xref target="gateway-eid-resolution"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>valid_from</tt></td>
              <td align="left">When routes become active (if omitted: immediate)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>valid_until</tt></td>
              <td align="left">When routes expire (if omitted: until withdrawn)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>bandwidth_bps</tt></td>
              <td align="left">Link rate in bits per second</td>
            </tr>
            <tr>
              <td align="left">
                <tt>max_bundle_size</tt></td>
              <td align="left">Maximum bundle size in bytes</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="forward-compatibility">
        <name>Forward Compatibility</name>
        <t>Implementations <bcp14>MUST</bcp14> handle unknown attributes as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>If <tt>transitive = true</tt>: Preserve and propagate the attribute unchanged.</t>
          </li>
          <li>
            <t>If <tt>transitive = false</tt>: Silently discard the attribute.</t>
          </li>
        </ol>
        <t>This allows intermediate DPP speakers to forward routes with attributes they
do not understand, enabling incremental deployment of new attribute types.</t>
      </section>
      <section anchor="time-variant-routing">
        <name>Time-Variant Routing</name>
        <t>The <tt>valid_from</tt> and <tt>valid_until</tt> attributes enable scheduled contacts for
deep-space networks (<xref target="CCSDS-SABRE"/>). Routes without these attributes are
valid immediately and remain valid until explicitly withdrawn.</t>
        <t>A peer <bcp14>MAY</bcp14> send multiple advertisements with non-overlapping time windows to
describe a series of scheduled contacts.</t>
      </section>
      <section anchor="route-withdrawal">
        <name>Route Withdrawal</name>
        <t>A <tt>RouteWithdrawal</tt> cancels previously advertised routes. For scheduled
routes, the <tt>valid_from</tt> field identifies which advertisement is being
withdrawn. If no matching route exists, the withdrawal is silently ignored.</t>
      </section>
      <section anchor="gateway-eid-resolution">
        <name>Gateway EID Resolution</name>
        <t>The <tt>gateway_eid</tt> attribute specifies the endpoint where bundles matching the
advertised patterns should be forwarded. This enables separation of the
control plane (DPP session) from the data plane (bundle forwarding).</t>
        <t>Resolution rules:</t>
        <ol spacing="normal" type="1"><li>
            <t>If a <tt>gateway_eid</tt> attribute is present, use it as the forwarding
destination.</t>
          </li>
          <li>
            <t>If <tt>gateway_eid</tt> is absent, derive the gateway EID from the peer's AD
identity (<tt>local_ad_id</tt> from Hello) as follows:  </t>
            <ul spacing="normal">
              <li>
                <t>If the AD identity is already a valid EID (e.g.,
<tt>dtn://gateway.example.org</tt>), use it directly.</t>
              </li>
              <li>
                <t>If the AD identity is a DNS domain name, convert it to a DTN EID:      </t>
                <artwork><![CDATA[
<dns_name>  ->  dtn://<dns_name>/
]]></artwork>
                <t>
For example: <tt>dsn.example.org</tt> -&gt; <tt>dtn://dsn.example.org/</tt></t>
              </li>
              <li>
                <t>Alternatively, implementations <bcp14>MAY</bcp14> query DNS to discover an IPN EID
mapping for the domain. See <xref target="I-D.ek-dtn-ipn-arpa"/> for the ongoing
work on IPN URI scheme DNS resolution.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>This design allows flexibility in deployment while providing sensible
defaults:</t>
        <dl>
          <dt>DNS-based AD:</dt>
          <dd>
            <t>An AD with identity <tt>dsn.example.org</tt> automatically maps to
<tt>dtn://dsn.example.org/</tt> as the default gateway. No explicit <tt>gateway_eid</tt>
is required.</t>
          </dd>
          <dt>Explicit EID AD:</dt>
          <dd>
            <t>A DPP speaker with AD identity <tt>dtn://gateway.dsn.example.org</tt> uses that
EID directly.</t>
          </dd>
          <dt>Separated control plane:</dt>
          <dd>
            <t>A DPP speaker that is not itself a gateway (e.g., a centralized route
controller) can advertise routes with explicit <tt>gateway_eid</tt> pointing to
the forwarding nodes within the AD, enabling load distribution or failover.</t>
          </dd>
          <dt>Load distribution:</dt>
          <dd>
            <t>Multiple routes to the same destination can be advertised with different
<tt>gateway_eid</tt> values and metrics.</t>
          </dd>
        </dl>
        <t>Examples:</t>
        <artwork><![CDATA[
# AD identity is DNS name - gateway_eid derived automatically
AD Identity: dsn.example.org
Default Gateway EID: dtn://dsn.example.org/

RouteAdvertisement {
  patterns: [ipn:100.*]
  ad_path: ["dsn.example.org"]
  metric: 10
  // No gateway_eid needed - defaults to dtn://dsn.example.org/
}
]]></artwork>
        <artwork><![CDATA[
# Explicit gateway_eid for control/data plane separation
AD Identity: dsn.example.org

RouteAdvertisement {
  patterns: [ipn:100.*]
  ad_path: ["dsn.example.org"]
  metric: 10
  attributes: [
    gateway_eid: "dtn://ingress1.dsn.example.org"
  ]
}
]]></artwork>
      </section>
    </section>
    <section anchor="protocol-definition">
      <name>Protocol Definition</name>
      <t>The protocol uses a single bi-directional gRPC stream for the entire
lifecycle of the session.</t>
      <section anchor="service-definition">
        <name>Service Definition</name>
        <sourcecode type="protobuf"><![CDATA[
syntax = "proto3";
package dtn.peering.v1;

import "google/protobuf/timestamp.proto";

service DtnPeering {
  // Single stream for Handshake, Auth, Routes, and Keepalives
  rpc Peer(stream PeerMessage) returns (stream PeerMessage);
}
]]></sourcecode>
      </section>
      <section anchor="message-envelope">
        <name>Message Envelope</name>
        <sourcecode type="protobuf"><![CDATA[
message PeerMessage {
  uint64 sequence_number = 1;
  oneof payload {
    Hello hello = 10;
    HelloChallenge challenge = 11;
    HelloResponse response = 12;
    KeepAlive keep_alive = 20;
    RouteUpdate update = 21;
    Notification notification = 30;
  }
}
]]></sourcecode>
      </section>
      <section anchor="identity-and-authentication-messages">
        <name>Identity and Authentication Messages</name>
        <sourcecode type="protobuf"><![CDATA[
message Hello {
  string local_ad_id = 1;        // DNS Domain (e.g., "dsn.example.org")
  string speaker_node_id = 2;    // Debug ID (e.g., "dtn://speaker-alpha")
  uint32 hold_time_seconds = 3;
}

message HelloChallenge { bytes nonce = 1; }
message HelloResponse { bytes signature = 1; }
]]></sourcecode>
      </section>
      <section anchor="routing-messages">
        <name>Routing Messages</name>
        <sourcecode type="protobuf"><![CDATA[
message RouteUpdate {
  repeated RouteAdvertisement announcements = 1;
  repeated RouteWithdrawal withdrawals = 2;
}

// Route advertisement with extensible attributes
// Next-hop is determined per Gateway EID Resolution
// (explicit attribute or derived from AD identity)
// All fields except `patterns` are path attributes
// shared by all destinations
message RouteAdvertisement {
  // Destinations (NLRI equivalent)
  repeated EidPattern patterns = 1;

  // Path attributes (shared by all destinations)
  repeated string ad_path = 2;  // List of AD Domains for loop detection
  uint32 metric = 3;            // Administrator preference (lower = preferred)
  // Note: specificity_score is NOT transmitted;
  // receiver computes it from pattern

  // Extensible attributes
  repeated RouteAttribute attributes = 10;
}

message RouteWithdrawal {
  repeated EidPattern patterns = 1;         // Destinations to withdraw
  // For scheduled routes, valid_from identifies which advertisement
  // to withdraw
  google.protobuf.Timestamp valid_from = 2; // Optional: identifies
                                            // scheduled route
}
]]></sourcecode>
      </section>
      <section anchor="route-attributes">
        <name>Route Attributes</name>
        <sourcecode type="protobuf"><![CDATA[
// Extensible route attribute (BGP-style path attributes)
// New attribute types can be added in future protocol versions
message RouteAttribute {
  oneof attribute {
    // Gateway for data plane separation
    string gateway_eid = 1;                      // Bundle forwarding
                                                 // endpoint

    // Time window attributes
    google.protobuf.Timestamp valid_from = 2;    // When routes become
                                                 // active
    google.protobuf.Timestamp valid_until = 3;   // When routes expire

    // Link characteristics
    uint64 bandwidth_bps = 4;          // Link rate (bits per second)
    uint32 max_bundle_size = 5;        // Maximum bundle size (bytes)

    // Forward compatibility: unknown attributes are preserved
    // and propagated
    UnknownAttribute unknown = 255;
  }
}

// For forward compatibility with future attribute types
message UnknownAttribute {
  uint32 type_id = 1;      // Identifies the attribute type
  bytes value = 2;         // Opaque value
  bool transitive = 3;     // If true, propagate even if not understood
}
]]></sourcecode>
      </section>
      <section anchor="data-types">
        <name>Data Types</name>
        <sourcecode type="protobuf"><![CDATA[
message EidPattern {
  oneof scheme {
    IpnPattern ipn = 1;
    DtnPattern dtn = 2;
  }
}

message IpnPattern {
  uint32 allocator_id = 1;
  uint32 node_id = 2;
  bool is_wildcard = 3;
}

message DtnPattern {
  string authority_string = 1; // e.g. "rover*.example.org"
  bool is_wildcard = 2;
}
]]></sourcecode>
      </section>
      <section anchor="control-messages">
        <name>Control Messages</name>
        <sourcecode type="protobuf"><![CDATA[
message KeepAlive {}

message Notification {
  enum Level { INFO=0; WARNING=1; ERROR=2; }
  Level level = 1;
  string message = 2;
  int32 code = 3;
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="operational-state-machine">
      <name>Operational State Machine</name>
      <t>A conformant DPP speaker <bcp14>MUST</bcp14> implement the following connection state
machine.</t>
      <section anchor="states">
        <name>States</name>
        <table>
          <thead>
            <tr>
              <th align="left">State</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CONNECTING</td>
              <td align="left">Transport (TCP/TLS) established. Speaker <bcp14>MUST</bcp14> send a <tt>Hello</tt> message.</td>
            </tr>
            <tr>
              <td align="left">HANDSHAKE_SENT</td>
              <td align="left">
                <tt>Hello</tt> sent. Speaker <bcp14>MUST</bcp14> wait for <tt>HelloChallenge</tt>.</td>
            </tr>
            <tr>
              <td align="left">CHALLENGE_WAIT</td>
              <td align="left">Waiting for <tt>HelloChallenge</tt>. Upon receipt, Speaker <bcp14>MUST</bcp14> sign nonce and send <tt>HelloResponse</tt>.</td>
            </tr>
            <tr>
              <td align="left">RESPONSE_SENT</td>
              <td align="left">Signed nonce sent. Speaker <bcp14>MUST</bcp14> wait for verification acknowledgment or <tt>RouteUpdate</tt>.</td>
            </tr>
            <tr>
              <td align="left">ESTABLISHED</td>
              <td align="left">Valid signature verified. Speaker <bcp14>MAY</bcp14> send and receive <tt>RouteUpdate</tt> messages.</td>
            </tr>
            <tr>
              <td align="left">FAILED</td>
              <td align="left">Error occurred. Speaker <bcp14>MUST</bcp14> send <tt>Notification</tt> (if possible) and close stream.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="keepalive-requirements">
        <name>Keepalive Requirements</name>
        <t>In the ESTABLISHED state, a DPP speaker <bcp14>MUST</bcp14> send <tt>KeepAlive</tt> messages at
intervals not exceeding <tt>hold_time_seconds / 3</tt>.</t>
      </section>
      <section anchor="error-handling">
        <name>Error Handling</name>
        <t>Any error condition (DNS lookup failure, invalid signature, hold timer expiry,
transport error) <bcp14>MUST</bcp14> cause the DPP speaker to:</t>
        <ol spacing="normal" type="1"><li>
            <t>Send a <tt>Notification</tt> message with an appropriate error code (if possible).</t>
          </li>
          <li>
            <t>Close the stream.</t>
          </li>
          <li>
            <t>Log the failure reason (<bcp14>SHOULD</bcp14>).</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="identity-verification">
        <name>Identity Verification</name>
        <t>DPP relies on DNS for identity verification. The security of this mechanism
depends on:</t>
        <dl>
          <dt>DNSSEC:</dt>
          <dd>
            <t>Deployments <bcp14>SHOULD</bcp14> use DNSSEC to protect against DNS spoofing attacks.
Without DNSSEC, an attacker who can manipulate DNS responses could
impersonate an Administrative Domain.</t>
          </dd>
          <dt>Private Key Protection:</dt>
          <dd>
            <t>The private key corresponding to the public key published in the
<tt>_dtn_domain</tt> SVCB record <bcp14>MUST</bcp14> be protected. Compromise of this key allows impersonation
of the Administrative Domain.</t>
          </dd>
        </dl>
      </section>
      <section anchor="transport-security">
        <name>Transport Security</name>
        <t>This specification does not mandate transport layer security beyond identity
verification. However:</t>
        <ul spacing="normal">
          <li>
            <t>Implementations <bcp14>SHOULD</bcp14> use TLS 1.3 or later for transport encryption.</t>
          </li>
          <li>
            <t>Implementations <bcp14>SHOULD</bcp14> verify the peer's TLS certificate matches the
claimed AD identity.</t>
          </li>
        </ul>
      </section>
      <section anchor="route-injection-attacks">
        <name>Route Injection Attacks</name>
        <t>A malicious or compromised DPP speaker could advertise routes for destinations
it does not legitimately serve. Mitigations include:</t>
        <dl>
          <dt>Out-of-band verification:</dt>
          <dd>
            <t>Operators <bcp14>SHOULD</bcp14> verify route advertisements through external channels
before accepting routes to critical destinations.</t>
          </dd>
          <dt>Route filtering:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> support policy-based route filtering to reject
unexpected advertisements.</t>
          </dd>
          <dt>Anomaly detection:</dt>
          <dd>
            <t>Operators <bcp14>SHOULD</bcp14> monitor for unexpected route changes.</t>
          </dd>
        </dl>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <t>DPP speakers are potentially vulnerable to denial of service attacks:</t>
        <dl>
          <dt>Connection exhaustion:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> limit the number of concurrent sessions and
implement rate limiting for new connections.</t>
          </dd>
          <dt>Route table exhaustion:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> limit the number of routes accepted from a single
peer.</t>
          </dd>
          <dt>Keepalive flooding:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> rate-limit incoming messages.</t>
          </dd>
        </dl>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>Route advertisements reveal network topology and reachability information.
Operators should consider whether this information is sensitive before
establishing peering relationships.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="svcb-svcparamkeys">
        <name>SVCB SvcParamKeys</name>
        <t>This document requests IANA registration of the following entries in the
"Service Parameter Keys (SvcParamKeys)" registry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Number</th>
              <th align="left">Name</th>
              <th align="left">Meaning</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">dtn-alg</td>
              <td align="left">DTN identity signature algorithm</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">TBD</td>
              <td align="left">dtn-pubkey</td>
              <td align="left">DTN identity public key (base64)</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="underscore-prefixed-dns-name">
        <name>Underscore-Prefixed DNS Name</name>
        <t>This document requests registration of <tt>_dtn_domain</tt> in the "Underscored and
Globally Scoped DNS Node Names" registry per <xref target="RFC8552"/>:</t>
        <table>
          <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">_dtn_domain</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="future-considerations">
        <name>Future Considerations</name>
        <t>Future versions may additionally request:</t>
        <ul spacing="normal">
          <li>
            <t>Registration of a well-known port for DPP (if not using existing gRPC
conventions)</t>
          </li>
          <li>
            <t>Establishment of a registry for DPP route attribute types</t>
          </li>
          <li>
            <t>Registration of <tt>dpp</tt> in the ALPN Protocol IDs registry</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8552">
          <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="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="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="I-D.ietf-dtn-eid-pattern">
          <front>
            <title>Bundle Protocol Endpoint ID Patterns</title>
            <author fullname="Brian Sipos" initials="B." surname="Sipos">
              <organization>The Johns Hopkins University Applied Physics Laboratory</organization>
            </author>
            <date day="16" month="January" year="2026"/>
            <abstract>
              <t>   This document extends the Bundle Protocol Endpoint ID (EID) concept
   into an EID Pattern, which is used to categorize any EID as matching
   a specific pattern or not.  EID Patterns are suitable for expressing
   configuration, for being used on-the-wire by protocols, and for being
   easily understandable by a layperson.  EID Patterns include scheme-
   specific optimizations for expressing set membership and each scheme
   pattern includes text and binary encoding forms; the pattern for the
   "ipn" EID scheme being designed to be highly compressible in its
   binary form.  This document also defines a Public Key Infrastructure
   Using X.509 (PKIX) Other Name form to contain an EID Pattern and a
   handling rule to use a pattern to match an EID.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-eid-pattern-06"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC6376">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Signatures</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
              <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="76"/>
          <seriesInfo name="RFC" value="6376"/>
          <seriesInfo name="DOI" value="10.17487/RFC6376"/>
        </reference>
        <reference anchor="RFC7489">
          <front>
            <title>Domain-based Message Authentication, Reporting, and Conformance (DMARC)</title>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <author fullname="E. Zwicky" initials="E." role="editor" surname="Zwicky"/>
            <date month="March" year="2015"/>
            <abstract>
              <t>Domain-based Message Authentication, Reporting, and Conformance (DMARC) is a scalable mechanism by which a mail-originating organization can express domain-level policies and preferences for message validation, disposition, and reporting, that a mail-receiving organization can use to improve mail handling.</t>
              <t>Originators of Internet Mail need to be able to associate reliable and authenticated domain identifiers with messages, communicate policies about messages that use those identifiers, and report about mail using those identifiers. These abilities have several benefits: Receivers can provide feedback to Domain Owners about the use of their domains; this feedback can provide valuable insight about the management of internal operations and the presence of external domain name abuse.</t>
              <t>DMARC does not produce or encourage elevated delivery privilege of authenticated email. DMARC is a mechanism for policy distribution that enables increasingly strict handling of messages that fail authentication checks, ranging from no action, through altered delivery, up to message rejection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7489"/>
          <seriesInfo name="DOI" value="10.17487/RFC7489"/>
        </reference>
        <reference anchor="I-D.ek-dtn-ipn-arpa">
          <front>
            <title>The ipn.arpa Zone and IPN DNS Operations</title>
            <author fullname="Erik Kline" initials="E." surname="Kline">
              <organization>Aalyria Technologies, LLC</organization>
            </author>
            <date day="4" month="November" year="2025"/>
            <abstract>
              <t>   This document requests a DNS parent for IPN addresses, discusses the
   registration procedures and management of the DNS zone, as well as
   some operational recommendations.  This document specifies that IPN
   addresses may have a DNS representation of the form
   1.978879.ipn.arpa, for IPN node 1 under IPN Allocator 978879.

   This document also describes how this DNS structure can be useful in
   locating the Bundle Protocol (BP) Convergence Layer (CL) endpoint(s)
   of the BP Agent responsible for a given IPN address.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ek-dtn-ipn-arpa-00"/>
        </reference>
        <reference anchor="CCSDS-SABRE" target="https://public.ccsds.org/">
          <front>
            <title>Schedule-Aware Bundle Routing</title>
            <author>
              <organization>Consultative Committee for Space Data Systems</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 1060?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document was developed as part of the Hardy BPv7 DTN Router project.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
GyIjOcRhP/i/05qz9guKAAA=

-->

</rfc>
