<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-taylor-dtn-dpp-01" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="DPP">DTN Peering Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-taylor-dtn-dpp-01"/>
    <author fullname="Rick Taylor">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>rtaylor@aalyria.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="19"/>
    <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 53?>

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

<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. Equivalently, when a pattern is read in hierarchy order, the wildcard (if present) <bcp14>MUST</bcp14> be the terminal element: no specific component, label, or character may follow it. This is what guarantees that any two patterns matching the same EID are nested, keeping both specificity comparison and longest-prefix lookup well-defined.</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 -&gt; Service Number.
If a component is not specific (i.e., is a wildcard or range), every component
to its right in the hierarchy <bcp14>MUST</bcp14> be a wildcard.</t>
          <ul spacing="normal">
            <li>
              <t>Valid: <tt>ipn:100.1.5</tt> (Fully specific), <tt>ipn:100.1.*</tt> (Service Wildcard),
<tt>ipn:100.*.*</tt> (Monotonic).</t>
            </li>
            <li>
              <t>Invalid: <tt>ipn:*.1.*</tt> (Specific Node under Wildcard Allocator),
<tt>ipn:100.*.5</tt> (Specific Service under Wildcard Node).</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), and only as the entire label or as its trailing suffix: the wildcard <bcp14>MUST</bcp14> be the last character of that label. A wildcard followed by literal characters does not exhibit monotonic specificity — two such patterns can match the same EID without either containing the other.</t>
            </li>
            <li>
              <t>A pattern whose authority contains a wildcard <bcp14>MUST</bcp14> use <tt>**</tt> as its service path: a specific path under a wildcard host is a specific child under a wildcard parent.</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), <tt>dtn://r*1.example.org</tt> and <tt>dtn://*rover.example.org</tt> (non-terminal wildcard), <tt>dtn://rover*.example.org/svc</tt> (specific path under a wildcard host).</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. The maximum
LiteralLength is 96 for <tt>ipn</tt> patterns (3 × 32 bits), which is well below
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 non-wildcard characters across
the entire EID pattern (authority and service path).</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/svc</tt></td>
                <td align="left">21 (exact)</td>
                <td align="left">277</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>dtn://rover*.example.org/**</tt></td>
                <td align="left">18 (wildcard)</td>
                <td align="left">18</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 96-bit virtual integer,
composed of three 32-bit components: Allocator, Node, and Service Number.
(<xref target="RFC9758"/> reserves Service Numbers &gt;= 2^32 for future expansion.)</t>
          <artwork><![CDATA[
LiteralLength = Bits_Allocator + Bits_Node + Bits_Service
]]></artwork>
          <t>Each component contributes:</t>
          <ul spacing="normal">
            <li>
              <t>Specific value (e.g., <tt>100</tt>): 32 bits.</t>
            </li>
            <li>
              <t>Wildcard (<tt>*</tt>): 0 bits.</t>
            </li>
            <li>
              <t>Range <tt>[min-max]</tt>: 32 - ceil(log2(Count)) bits.</t>
            </li>
          </ul>
          <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.5</tt></td>
                <td align="left">Specific EID</td>
                <td align="left">1</td>
                <td align="left">96</td>
                <td align="left">352</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ipn:100.1.*</tt></td>
                <td align="left">Service Wildcard</td>
                <td align="left">0</td>
                <td align="left">64</td>
                <td align="left">64</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ipn:100.*.*</tt></td>
                <td align="left">Node 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="RFC9758">
          <front>
            <title>Updates to the 'ipn' URI Scheme</title>
            <author fullname="R. Taylor" initials="R." surname="Taylor"/>
            <author fullname="E. Birrane III" initials="E." surname="Birrane III"/>
            <date month="May" year="2025"/>
            <abstract>
              <t>This document updates the specification of the 'ipn' URI scheme previously defined in RFC 6260 and the IANA registries established in RFC 7116. It also updates the rules for the encoding and decoding of these URIs when used as an Endpoint Identifier (EID) in the Bundle Protocol version 7 (BPv7) as defined in RFC 9171. These updates clarify the structure and behavior of the 'ipn' URI scheme, define new encodings of 'ipn' scheme URIs, and establish the registries necessary to manage this scheme.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9758"/>
          <seriesInfo name="DOI" value="10.17487/RFC9758"/>
        </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="6" month="July" 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-09"/>
        </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 1059?>

<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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
UZqPkIGWS/xyTjXieNZQAea2HefTZS7uXpDw9ZJw48n+9UEU/eMf/4hEG39p
eie1QPGj2X/2vG/+ybwVrvc2LWbNnJ+N7DO9b8F89zgOtAdNMtyG40Jn5w5h
6hfmW+Fg93RSxH3ETMmAQVhPIkD3KQt2VrbFvliFd2sIYARCJBrSDw7l+Td2
MRJX/ZjdLm9JlrZ2Dzj88JwdMqLaOFbce2L+9/8wT/YNNOW+dSpCoyNdim6A
ZABNRjukPbem9CGwZcGOFtD6On3QCjDonUbL64hjWeyeeoMEd5gPZ4DI6HeX
J4Qba4dqvmYHkhsdBfIzMDxMz8sP8Wd50YCtPThT6YGYpJvzQc24h+hhYP/x
n4I/6IHtQkDY3YPZ3yOOwdIAf3z3nemOajNJSLIHs/c9cuqUp8rfD2tKbxuU
fPd0+DVQVqmaCgLSneObm1SyRV8RMR6li2ZuLR5rnArCYSkteBDPIN8KWSiO
3n54PoB+cJdVDSx2vfbdiJVaTgTFtBVZ3E/2+UlviB14/XCXtT3hZV0duycB
4O+efU/mIY5RkYHWeao2P700+/+NEB24J8myCLEie7oshn1hBm2gvMTh6/de
z/8n+YIVWf2sqwh74IzKwNqDs0fSdznByglbCfBaGQG/Xf/A0uAw0CRFuBwQ
67C/XHIVwPVfiSUOiNb/ds3jBoY4cN4jE3W/dwhq6Pd1BKERbihAYVIAa59u
Rj8rS3voYMQmBF9D8vYX3Z9aJNAyPh48LECKhLv0LzGoB/Pk2b7pPM/I3rVG
6Ktv6d/nT/U/4ZBHMoSvqfM8AUv+Ez7/171vB3tP/haMEjD3xiRczdO+XWtf
/2PHChkepTcxMXONZcmj+i+LdFCJ+IjMz1maJ2p5iNZxbW7w3TZpKG7tL4X6
NwT6JR8C9Xrwy5401nG4PfOktMkGURxkGTClzMnQt6GEes6ZrRxBZjXaZbzC
ReEcb5y1H7GPQ3IprD9XJe55mB39CkkEUjoVup6tr5FdjK0BI1QEDqz/GoA7
XlblIjWmZ93NPGhOktRoTB8n9BUK/e4Eo2XNPua4MwWcHFtm6B5iPbwES51w
ZF/wkfNqrVODjyjH0L3rlwcoWBTEIOZDqMnP+O25x4JnOlsZ7SIOz67MNK7Y
f2VNLE2ahNYk1RVIt96N5MJrdXLdw8cjs3NsTw+jGIBTuO0Mhek9IFZKhi7J
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
ycq8urj7jjGZGRsiIyXE4TD6vwhx53iljgAA

-->

</rfc>
