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

<t>This document specifies an echo service for Bundle Protocol Version 7 (BPv7) networks. An echo service receives bundles at a well-known endpoint and replies to each with a response bundle that returns the payload to the originator. This enables round-trip time measurement and end-to-end connectivity verification in Delay-Tolerant Networks. This document requests IANA allocation of a well-known IPN service number for the echo service.</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/echo-service/draft-ietf-dtn-echo-service.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-dtn-echo-service/"/>.
      </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/echo-service"/>.</t>
    </note>
  </front>
  <middle>
    <?line 44?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Delay-Tolerant Networks (DTNs) present unique challenges for network diagnostics. Unlike traditional IP networks where ICMP Echo (ping) provides immediate feedback, DTN bundles might traverse store-and-forward paths with significant delays. Nevertheless, the ability to verify end-to-end connectivity and measure round-trip time remains essential for network operators.</t>
      <t>This document specifies an echo service for Bundle Protocol Version 7 <xref target="RFC9171"/>. An echo service receives bundles at a well-known endpoint and replies to each with a single response bundle that returns the payload to the originator.</t>
      <t>The echo service is intentionally simple: it does not interpret requests and performs no special processing beyond returning each one to its originator. Defining the response bundle as a wire contract rather than an internal mechanism lets independent implementations interoperate regardless of whether the echo service is built into the Bundle Protocol Agent (BPA) or runs as an ordinary application. A standardized echo service enables diagnostic tools such as ping clients to operate across heterogeneous DTN deployments.</t>
    </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?>

<t>This document uses terminology from the Bundle Protocol Version 7 specification <xref target="RFC9171"/>.</t>
      <dl>
        <dt>Echo Service:</dt>
        <dd>
          <t>A Bundle Protocol service that returns each request to its originator as a response.</t>
        </dd>
        <dt>Request:</dt>
        <dd>
          <t>An application data unit (ADU) delivered (<xref section="3.1" sectionFormat="comma" target="RFC9171"/>) to an echo service at one of its echo service endpoints.</t>
        </dd>
        <dt>Request Bundle:</dt>
        <dd>
          <t>The bundle that carries a request as its payload, addressed to an echo service endpoint.</t>
        </dd>
        <dt>Response:</dt>
        <dd>
          <t>The ADU that an echo service sends in reply to a request: a byte-for-byte copy of that request (<xref target="payload-block"/>).</t>
        </dd>
        <dt>Response Bundle:</dt>
        <dd>
          <t>The new bundle, sourced by the echo service node, that carries a response as its payload; <xref target="response-bundle"/> defines its content.</t>
        </dd>
      </dl>
      <t>Requests and responses are the units of the echo service's behavior; request bundles and response bundles are named where the content or processing of the bundle itself matters. The source or destination of a request or response is that of the bundle that carries it.</t>
    </section>
    <section anchor="echo-service-specification">
      <name>Echo Service Specification</name>
      <section anchor="service-endpoint">
        <name>Service Endpoint</name>
        <t>An echo service registers to receive requests at one or more endpoint identifiers. The well-known endpoint is ipn-scheme service number TBD1 (<xref target="iana-considerations"/>) on any node; for example, <tt>ipn:2.TBD1</tt> represents the echo service on node number 2. Implementations <bcp14>MAY</bcp14> also support service number 7 for backwards compatibility with existing deployments; service number 7 is in the Private Use range per <xref target="RFC9758"/> and cannot be reserved.</t>
        <t>An echo service <bcp14>SHOULD</bcp14> support the well-known endpoint, so that clients can reach it without out-of-band configuration. It <bcp14>MAY</bcp14> also support private or alternative endpoints, which clients must learn of by other means.</t>
      </section>
      <section anchor="request-delivery">
        <name>Request Delivery</name>
        <t>A request bundle is received and processed by the echo service node's BPA like any other bundle destined for one of the node's endpoints: the BPA processes its extension blocks, applies local security policy, reassembles it if it arrived as fragments, and delivers the request to the echo service (<xref section="5.7" sectionFormat="comma" target="RFC9171"/>).</t>
        <t>The echo service therefore receives the request, together with delivery metadata from the request bundle (<xref section="3.1" sectionFormat="comma" target="RFC9171"/>): its source node ID and destination EID, and, as far as the BPA makes them available, its bundle processing control flags, lifetime, age, and report-to EID. The echo service uses this metadata only to decide whether to respond (<xref target="when-a-response-is-sent"/>) and to set the primary block of the response bundle (<xref target="primary-block"/>). It has no other use for the request bundle, and in particular none for its extension blocks.</t>
      </section>
      <section anchor="response-bundle">
        <name>The Response Bundle</name>
        <t>When a request is delivered to an echo service, the echo service responds as specified in this section. When it responds (<xref target="when-a-response-is-sent"/>), it <bcp14>MUST</bcp14> request transmission of exactly one response bundle conforming to these rules (<xref section="5.2" sectionFormat="comma" target="RFC9171"/>), and <bcp14>MUST NOT</bcp14> emit more than one response per request.</t>
        <t>The response bundle is a new bundle, sourced by the echo service node, whether the echo service runs as an application or is built into the BPA. It is constructed and processed under <xref target="RFC9171"/> (and, where security is applied, <xref target="RFC9172"/>) like any other bundle the node sources, and this document does not restate those rules. The rules in this section constrain only what the echo service supplies for that new bundle: the values of certain primary block fields, which it takes from the delivery metadata of the request (<xref target="request-delivery"/>), and its payload, which is the response.</t>
        <section anchor="when-a-response-is-sent">
          <name>When a Response Is Sent</name>
          <t>An echo service <bcp14>MUST NOT</bcp14> respond to a request whose source is the null endpoint ID, as no return path exists (<xref section="4.2.3" sectionFormat="comma" target="RFC9171"/>).</t>
          <t>An echo service <bcp14>MUST NOT</bcp14> respond to a request that is an administrative record (that is, when the request bundle's "ADU is an administrative record" flag is set), to avoid reflecting status reports and the bundle loops that could result.</t>
          <t>An echo service <bcp14>MUST NOT</bcp14> respond to a request whose source is an echo service endpoint: an ipn-scheme EID with the well-known echo service number (<xref target="iana-considerations"/>), or an EID that the echo service is configured to recognize as an echo service endpoint (for example, service number 7 where legacy echo services are deployed). Because only an echo service sources bundles from an echo service endpoint, and then only response bundles, such a request is in fact a response, typically elicited by a request whose source was forged; answering it would set two echo services exchanging responses with each other indefinitely.</t>
          <t>An echo service <bcp14>MAY</bcp14> also decline to respond to a request as a matter of local policy, for example to enforce access restrictions or rate limits (<xref target="ops-policy"/>).</t>
          <t>An echo service <bcp14>MUST NOT</bcp14> generate bundles other than response bundles. Other services at the node <bcp14>SHOULD NOT</bcp14> use an echo service endpoint as the source of bundles they originate.</t>
        </section>
        <section anchor="primary-block">
          <name>Primary Block</name>
          <t>The primary block of the response bundle <bcp14>MUST</bcp14> be set as follows. Where these rules take a value from the request bundle, it is from the delivery metadata (<xref target="request-delivery"/>); this is the only respect in which the response bundle depends on the request bundle.</t>
          <dl>
            <dt>Destination:</dt>
            <dd>
              <t><bcp14>MUST</bcp14> be set to the source node ID of the request bundle.</t>
            </dd>
            <dt>Source:</dt>
            <dd>
              <t>If the request bundle was addressed to a singleton endpoint, <bcp14>MUST</bcp14> be set to that echo service endpoint ID; where a node exposes more than one echo service endpoint (for example, both an <tt>ipn</tt> and a <tt>dtn</tt> endpoint), this is the specific endpoint to which the request bundle was addressed. If the request bundle was addressed to a non-singleton endpoint, which cannot serve as the source of a bundle, the source <bcp14>SHOULD</bcp14> be set to the EID of the echo service node's administrative endpoint (<xref target="ops-non-singleton"/>).</t>
            </dd>
            <dt>Creation Timestamp:</dt>
            <dd>
              <t>An echo service <bcp14>MUST NOT</bcp14> reuse the request bundle's creation timestamp; the response bundle is assigned its own, as for any bundle the node sources.</t>
            </dd>
            <dt>Lifetime:</dt>
            <dd>
              <t>The response bundle <bcp14>SHOULD</bcp14> be assigned a lifetime that gives it a reasonable opportunity to reach the originator. Like any bundle the node sources, it is subject to the node's local lifetime policy, which bounds the retention cost of response bundles even when a request bundle asserts a very long lifetime. Within that bound, an echo service <bcp14>MAY</bcp14> set the response bundle's lifetime by reusing the request bundle's lifetime value, or by deriving it from the request bundle's observed transit time (its age on reception). A lifetime derived from observed transit time limits retention, but can underestimate the requirement of a return path slower than the forward path, and so benefits from a generous margin.</t>
            </dd>
            <dt>Report-To:</dt>
            <dd>
              <t>If the request bundle requested status reports, an echo service <bcp14>SHOULD</bcp14> set the response bundle's report-to EID to that of the request bundle, so that status reports for both legs of the exchange reach the same observer. Because the request bundle and response bundle are distinct bundles, each report is then attributable to its leg by the source EID of its subject bundle. Otherwise, the report-to EID is set as for any bundle the node sources.</t>
            </dd>
          </dl>
          <section anchor="flags">
            <name>Bundle Processing Control Flags</name>
            <t>The response bundle's bundle processing control flags are set as for any bundle the node sources, except as follows.</t>
            <dl>
              <dt>"ADU is an administrative record":</dt>
              <dd>
                <t><bcp14>MUST NOT</bcp14> be set. The response is a copy of the request, which is not an administrative record (<xref target="when-a-response-is-sent"/>).</t>
              </dd>
              <dt>"Bundle must not be fragmented":</dt>
              <dd>
                <t><bcp14>SHOULD</bcp14> be copied from the request bundle, unless local policy requires otherwise. A client that sets this flag is typically measuring round-trip time or probing the largest bundle a path will carry (<xref target="size-probing"/>), and either measurement is undermined if the response bundle is fragmented on the return path.</t>
              </dd>
              <dt>"Acknowledgement by application is requested":</dt>
              <dd>
                <t><bcp14>MUST NOT</bcp14> be set. The response does not solicit an application acknowledgement.</t>
              </dd>
              <dt>Status-report-request flags ("Request reporting of bundle reception", "Request reporting of bundle forwarding", "Request reporting of bundle delivery", and "Request reporting of bundle deletion"):</dt>
              <dd>
                <t><bcp14>MAY</bcp14> be set, typically by mirroring the request bundle's flags, so that an observer can follow both legs of the exchange. These take effect together with the report-to EID (see the Report-To field above).</t>
              </dd>
              <dt>"Status time requested in reports":</dt>
              <dd>
                <t><bcp14>MAY</bcp14> be set, typically by mirroring the request bundle's value when the echo service mirrors the status-report-request flags, so that reports for the response bundle carry the time of the reported event whenever the requester asked for that detail.</t>
              </dd>
            </dl>
          </section>
        </section>
        <section anchor="payload-block">
          <name>Payload Block</name>
          <t>The response, carried in the payload block of the response bundle, <bcp14>MUST</bcp14> be identical, byte for byte, to the request as delivered to the echo service (<xref target="request-delivery"/>). An echo service <bcp14>MUST NOT</bcp14> alter, truncate, reorder, or append to the request in forming the response. Only the request is guaranteed to survive the round trip, which lets a client verify round-trip integrity by comparing the response with the request it sent.</t>
        </section>
        <section anchor="extension-blocks">
          <name>Extension Blocks</name>
          <t>The response bundle carries the extension blocks that the node's normal outbound bundle processing and local security policy add to any bundle it sources — for example a Bundle Age Block, Hop Count Block, Previous Node Block, or BPSec <xref target="RFC9172"/> block — and no others. The extension blocks of the request bundle are processed by the BPA on reception and are not part of what is delivered to the echo service (<xref target="request-delivery"/>); none of them is carried into the response bundle.</t>
        </section>
      </section>
      <section anchor="client-considerations">
        <name>Client Considerations</name>
        <t>While this specification focuses primarily on the echo service, certain requirements apply to clients to ensure correct operation. This section defines those normative requirements.</t>
        <section anchor="session-disambiguation">
          <name>Session Disambiguation</name>
          <t>When multiple clients run concurrently on the same node, each session must be distinguishable so that responses are delivered to the correct client. Multiple concurrent clients on the same node <bcp14>MUST</bcp14> use distinct source endpoint identifiers. Per <xref target="RFC9171"/>, each application instance registers with a unique endpoint ID, and the combination of source and destination provides session disambiguation at the bundle layer without requiring any session identifier in the request.</t>
        </section>
        <section anchor="response-authenticity">
          <name>Response Authenticity</name>
          <t>A response bundle is an independently sourced bundle: its primary block is that of the echo service, and it is not cryptographically bound to the request bundle. A client therefore cannot use a Bundle Integrity Block (BIB) it placed on the request bundle to authenticate the response, because the response bundle is a new bundle and carries no extension block from the request bundle (see <xref target="extension-blocks"/>). A client that requires assurance of a response's origin relies instead on the echo service node's own BPSec <xref target="RFC9172"/> policy applied to the response bundle, for example a BIB whose security source is the echo service node. Alternatively, because each response is identical to its request, a client can detect modified or spoofed responses by validating each response against state it retained locally when sending the request; see <xref target="payload-format"/>.</t>
        </section>
        <section anchor="fragmentation">
          <name>Fragmentation</name>
          <t>Diagnostic clients <bcp14>SHOULD</bcp14> set the "bundle must not be fragmented" flag in request bundles, unless they intend to exercise fragmentation itself. Fragmentation complicates round-trip time measurement and response verification: fragments might take different paths, arrive out of order, or be lost independently. Setting this flag ensures the request bundle either traverses the network intact or is dropped, providing cleaner diagnostic results. An echo service normally copies the flag to the response bundle (<xref target="flags"/>), so the same holds for the return path. Setting the flag also makes it possible to probe the largest bundle a path will carry; see <xref target="size-probing"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="ops">
      <name>Operational Considerations</name>
      <t>An echo service is a diagnostic tool, and whether a given request should be answered depends on the network in which it operates: the same request can be a legitimate connectivity check in one deployment and reconnaissance or a reflection attempt in another. This document therefore does not enumerate the conditions under which an echo service responds. Instead, it requires that those conditions be under the control of the node operator, and describes the considerations an operator weighs.</t>
      <section anchor="ops-policy">
        <name>Enabling and Restricting the Echo Service</name>
        <t>An implementation <bcp14>MUST</bcp14> provide a means for the operator to disable the echo service; to limit the responses it sends, both by restricting which requests it answers and by rate (<xref target="rate-limiting"/>); and, where the echo service propagates status-report settings onto response bundles (<xref target="response-bundle"/>), to disable that propagation. These means can be provided by the echo service itself, by the BPA through which requests are delivered to it, or by both. A request that the echo service declines to answer is consumed without a response (<xref target="when-a-response-is-sent"/>).</t>
        <t>Policy can be applied at different points and at different granularities, for example:</t>
        <ul spacing="normal">
          <li>
            <t>by the BPA before delivery, so that unwanted requests never reach the echo service;</t>
          </li>
          <li>
            <t>by source node ID, or by a set of source EIDs (for example, expressed as EID patterns <xref target="I-D.ietf-dtn-eid-pattern"/>);</t>
          </li>
          <li>
            <t>by the presence on the request bundle of a BPSec <xref target="RFC9172"/> integrity block whose security source the node trusts;</t>
          </li>
          <li>
            <t>by the BPA before delivery, according to the extension blocks present on the request bundle, for example discarding request bundles that carry blocks of types the node does not expect;</t>
          </li>
          <li>
            <t>by the node from which the request bundle was received, where the convergence layer or a Previous Node Block identifies it; or</t>
          </li>
          <li>
            <t>by the echo service endpoint at which the request arrived.</t>
          </li>
        </ul>
        <t>Control over whether the echo service propagates the request bundle's report-to EID and status-report-request flags onto the response bundle matters because propagation lets a requester direct status reports from every node on the return path to an EID of its choosing.</t>
        <t>Whether and how an operator applies these limits is a deployment decision. Answering every delivered request maximizes the diagnostic value of a well-known endpoint and simplifies interoperability testing, but exposes the node to the concerns described in <xref target="security-considerations"/>. In a network whose bundle sources are not otherwise authenticated, restricting the echo service to requests whose source is authenticated or otherwise trusted is particularly effective against reflection, which relies on forged sources.</t>
      </section>
      <section anchor="rate-limiting">
        <name>Rate Limiting</name>
        <t>In this document, rate limiting means declining to respond to some requests, as described in <xref target="ops-policy"/>, rather than delaying responses: a delayed response consumes storage at the echo service node, and to the client it is indistinguishable from a slow return path. An echo service sends no indication to the requester that a response was withheld, because any such indication would itself be a bundle directed at a possibly spoofed source.</t>
        <t>The limit, and how it is measured, are matters of local policy. A limit applied per source node ID bounds the traffic the echo service can direct at any one destination; a limit applied per previous node bounds the load any one neighbor can impose. Where the BPA, rather than the echo service, discards request bundles before delivery, it deletes them as specified in <xref section="5.10" sectionFormat="comma" target="RFC9171"/>; any deletion status report it generates (for example, with reason code "Traffic pared") is subject to the node's status-reporting policy and raises the same reflection concern.</t>
      </section>
      <section anchor="ops-missing">
        <name>Missing and Multiple Responses</name>
        <t>Because an echo service sends nothing when it declines a request, a client that receives fewer responses than it sent requests cannot tell, from the responses alone, whether a request or response was lost or expired in transit, whether a request was declined by policy or rate limiting, or whether no echo service is present at all. Loss figures reported by ping clients (<xref target="ping-clients"/>) therefore count unanswered requests, whatever the cause, not only path loss. Status reports can narrow the ambiguity where they are available: a delivery report for a request bundle with no corresponding response indicates that the request reached the echo service node, and that the response was then declined or lost on the return path.</t>
        <t>Conversely, a client can receive more than one response to a single request, in two different ways:</t>
        <ul spacing="normal">
          <li>
            <t>Distinct response bundles. Where a request is addressed to a non-singleton endpoint, each member that answers sends its own response in its own response bundle, with its own source and creation timestamp (<xref target="ops-non-singleton"/>). These are different bundles, so they are not removed by any duplicate suppression on the return path, and their sources identify the responders.</t>
          </li>
          <li>
            <t>Copies of one response bundle. The network can replicate a response bundle on the return path. The copies share its source node ID and creation timestamp, and the client's BPA might or might not suppress them.</t>
          </li>
        </ul>
        <t>Either way, every response is identical to its request, so a client matches responses to requests by content (<xref target="payload-format"/>). A ping client typically takes the round-trip time from the first response to arrive, counts the request as answered once, and reports any further responses separately. A client that can see the source node ID and creation timestamp of each response bundle can also tell distinct response bundles apart from copies of the same one.</t>
      </section>
      <section anchor="ops-non-singleton">
        <name>Non-Singleton Endpoints</name>
        <t>Every ipn-scheme EID identifies a singleton endpoint (<xref section="5.1" sectionFormat="comma" target="RFC9758"/>), but other EIDs, such as dtn-scheme EIDs whose demux begins with '~' (<xref section="4.2.5.1.1" sectionFormat="comma" target="RFC9171"/>), can identify endpoints with many members. If an echo service is registered in such an endpoint, a single request elicits a response from every member that receives it. Each echo service still emits at most one response, but the number of responses in the network scales with the membership of the endpoint, reintroducing the count amplification that <xref target="reflection-and-amplification"/> otherwise rules out.</t>
        <t>An echo service <bcp14>SHOULD NOT</bcp14> answer requests addressed to a non-singleton endpoint unless the operator has explicitly configured it to do so. When it does, the response bundle cannot be sourced from the non-singleton EID to which the request bundle was addressed, because the source of a bundle is a node ID (<xref section="4.2.5.2" sectionFormat="comma" target="RFC9171"/>). The echo service <bcp14>SHOULD</bcp14> instead use the EID of its node's administrative endpoint: for example <tt>ipn:2.0</tt> (<xref section="5.7" sectionFormat="comma" target="RFC9758"/>) or <tt>dtn://node-name/</tt> (<xref section="4.2.5.1.1" sectionFormat="comma" target="RFC9171"/>), preferably in the same URI scheme as the request's destination where the node has an administrative EID in that scheme. Every node is permanently registered in its administrative endpoint (<xref section="4.2.5.2" sectionFormat="comma" target="RFC9171"/>), so this choice needs no additional configuration; where the echo service runs as an application on a BPA that does not let applications source bundles from the administrative endpoint, the BPA can set the source on the echo service's behalf. This choice has three properties that a source shared by the members of the endpoint would lack:</t>
        <ul spacing="normal">
          <li>
            <t>It contains reflection. Whatever answers a response addresses it to the response's source. Were that source the group's EID, each such answer would be delivered to every member, and two echo groups induced to answer one another, for example by a request to one group forged with the other group's EID as its source, would multiply the traffic by the size of the group at every exchange. A group EID is not normally recognizable as an echo service endpoint, so the rule in <xref target="when-a-response-is-sent"/> would not stop this. An administrative endpoint is a single node that does not echo bundles, so any such exchange ends there.</t>
          </li>
          <li>
            <t>It keeps response bundles distinct. A bundle is identified by its source node ID and creation timestamp. Members that share a source assign creation timestamps independently and, answering the same request at about the same time, can easily assign the same one; duplicate suppression, fragment reassembly, and status reporting on the return path would then conflate response bundles from different members.</t>
          </li>
          <li>
            <t>It identifies the responder, which nothing else in the response bundle does: the response is identical to the request, and a Previous Node Block identifies only the last hop.</t>
          </li>
        </ul>
        <t>A client that addresses a non-singleton endpoint should therefore expect zero, one, or many responses to each request, each sourced from the administrative endpoint of the responding node rather than from the EID the client addressed. Such a client matches responses to requests by content (<xref target="payload-format"/>), not by source.</t>
      </section>
      <section anchor="ops-endpoint-config">
        <name>Endpoint Configuration</name>
        <t>The well-known service number requested in <xref target="iana-considerations"/> is a default, not a requirement: as <xref section="5.6" sectionFormat="comma" target="RFC9758"/> describes, it lets a client sensibly assume where the service is operating unless configuration says otherwise. Existing deployments answer echo requests on a variety of service numbers. Implementations <bcp14>SHOULD</bcp14> therefore allow the operator to configure the endpoints at which the echo service is registered, and ping clients <bcp14>SHOULD</bcp14> allow the target endpoint to be specified in full.</t>
      </section>
      <section anchor="client-source-endpoints">
        <name>Client Source Endpoints</name>
        <t>Ping clients need a distinct source endpoint for each concurrent session (<xref target="session-disambiguation"/>), usually for the lifetime of that session only. This document does not reserve service numbers for such transient use; a BPA that supports transient registrations can allocate them from a Private Use range of <xref target="RFC9758"/>. Because responses can arrive long after a session has ended, it is good practice for a BPA not to reassign a recently released source endpoint to a different application promptly, and for a client to discard responses that do not match a request it sent.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section discusses security issues relevant to the echo service and potential mitigations.</t>
      <section anchor="reflection-and-amplification">
        <name>Reflection and Amplification</name>
        <t>Like any echo or reflection service, an echo service can be abused to direct traffic at a victim. Because the source of a bundle is not authenticated by default, an attacker can send requests whose source is set to a victim's endpoint, causing the echo service to send responses to that victim. The echo service thereby launders the attacker's traffic and conceals its origin.</t>
        <t>The volume amplification factor is close to one: each response is identical to its request, and the requirement to emit at most one response per request (see <xref target="response-bundle"/>) prevents count amplification. The principal risk is therefore reflection toward, and concentration of traffic on, a chosen victim rather than bandwidth amplification. Operators can mitigate this risk by:</t>
        <ul spacing="normal">
          <li>
            <t>Rate-limiting responses, particularly to or from previously unseen endpoints (<xref target="rate-limiting"/>)</t>
          </li>
          <li>
            <t>Restricting responses to authenticated or otherwise trusted requesters, for example using Bundle Protocol Security <xref target="RFC9172"/> (<xref target="ops-policy"/>)</t>
          </li>
          <li>
            <t>Monitoring for unusual traffic patterns that might indicate abuse</t>
          </li>
        </ul>
        <t>An echo service that propagates the request bundle's report-to EID and status-report-request flags onto the response bundle (see <xref target="response-bundle"/>) extends this reflection surface to the status reports generated for the response bundle; the same mitigations apply, and an operator can also disable that propagation (<xref target="ops-policy"/>).</t>
        <t>Registering an echo service in a non-singleton endpoint reintroduces count amplification, since every member that receives a request answers it; see <xref target="ops-non-singleton"/>.</t>
        <t>Because an echo service originates nothing but responses (<xref target="when-a-response-is-sent"/>), a bundle whose source is an echo service endpoint is only ever a response bundle. A receiver can use this to recognize reflected traffic: a bundle from an echo service endpoint that does not correspond to a request the destination application sent, for example one delivered to an application that is not a ping client, indicates that the destination's endpoint has been forged as the source of requests elsewhere. An application or BPA <bcp14>MAY</bcp14> discard such bundles, and a BPA <bcp14>MAY</bcp14> apply rate limits or other policy to bundles whose source is a well-known echo service endpoint. Echo services are themselves the most important such receiver, since answering a response would create a loop between two echo services; <xref target="when-a-response-is-sent"/> therefore forbids it.</t>
        <t>Responses to requests addressed to non-singleton endpoints are sourced from the responding node's administrative endpoint instead (<xref target="ops-non-singleton"/>), so an echo service cannot recognize them by their source. This does not reopen the loop: if such a response reaches another echo service, because the request's source was forged as that echo service's endpoint, the second echo service answers it, but its response is addressed to the administrative endpoint, which does not echo bundles, and the exchange ends there.</t>
        <t>Source EIDs are not authenticated by default, so these checks help discard reflected traffic but do not authenticate genuine responses; see <xref target="response-authenticity"/>.</t>
      </section>
      <section anchor="information-disclosure">
        <name>Information Disclosure</name>
        <t>Echo responses inherently confirm the existence and reachability of the echo service endpoint. Additionally, round-trip time measurements might reveal information about network topology, path characteristics, and store-and-forward delays that could be useful to an adversary mapping a network.</t>
        <t>Extension blocks on request bundles can also reveal how nodes on the forward path process bundles, and so which block types they support, how they apply security policy, and potentially which implementations they run (<xref target="block-probing"/>). Most of this comes from status reports rather than from the echo service: a block that no node processes, marked "Transmit status report if block can't be processed", elicits a report from every node that receives it where status reporting is enabled, sent to a report-to EID of the requester's choosing. The same is true of a bundle sent to any destination, and the exposure is limited in the same way, by disabling status reporting as <xref section="8" sectionFormat="comma" target="RFC9171"/> recommends by default, or by filtering bundles at the edge of the network. The echo service adds only whether a response returns, and none of the request bundle's extension blocks are carried into the response bundle (<xref target="extension-blocks"/>), so the return path is not exposed. Such probing is also a legitimate diagnostic, which this document does not prohibit.</t>
        <t>In sensitive environments where this information disclosure is a concern, operators can:</t>
        <ul spacing="normal">
          <li>
            <t>Restrict echo service access to authenticated endpoints using BPSec, or discard request bundles carrying unexpected extension blocks before delivery (<xref target="ops-policy"/>)</t>
          </li>
          <li>
            <t>Disable the echo service entirely on nodes where diagnostics are not required (<xref target="ops-policy"/>)</t>
          </li>
          <li>
            <t>Deploy the echo service only on designated diagnostic nodes rather than throughout the network</t>
          </li>
        </ul>
      </section>
      <section anchor="resource-exhaustion">
        <name>Resource Exhaustion</name>
        <t>An attacker could attempt to exhaust echo service resources by sending a large volume of requests or very large requests. Since the echo service must construct and transmit a response for each request, this creates both memory and bandwidth pressure. The following protections are <bcp14>RECOMMENDED</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>Limiting the maximum size of request accepted</t>
          </li>
          <li>
            <t>Limiting the rate of requests answered (<xref target="rate-limiting"/>)</t>
          </li>
          <li>
            <t>Monitoring resource usage, and declining requests when under stress</t>
          </li>
        </ul>
        <t>These protections need not be implemented by the echo service itself. Where the echo service runs as an application on a BPA, the BPA can provide them before requests are delivered, for example by limiting the size of bundles it accepts, the rate at which bundles are delivered to the echo service endpoint, or the storage allotted to such bundles. What matters is that the deployment as a whole provides them, under the operator's control (<xref target="ops-policy"/>).</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="well-known-service-registration">
        <name>Well-Known Service Registration</name>
        <t>This document requests IANA to register the following entry in the "'ipn' Scheme URI Well-Known Service Numbers for BPv7" registry established by <xref target="RFC9758"/>, assigning the next available value in the Standards Action range (128-255):</t>
        <table align="left" anchor="iana-echo-service">
          <name>Echo Service Registration</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD1</td>
              <td align="left">Echo Service</td>
              <td align="left">(this document)</td>
            </tr>
          </tbody>
        </table>
        <t>RFC Editor: please replace TBD1 throughout this document with the value assigned by IANA, and remove this note.</t>
        <t>Note: Existing implementations do not agree on a service number for echo. Several use 7 by convention, mirroring the well-known UDP port for the Echo Protocol <xref target="RFC862"/>, while others use different values (for example, 2047). All of these lie within ranges designated Private Use by <xref target="RFC9758"/> and so cannot be reserved. This document requests a value from the Standards Action range to provide a single registered value; see also <xref target="ops-endpoint-config"/>.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9171">
          <front>
            <title>Bundle Protocol Version 7</title>
            <author fullname="S. Burleigh" initials="S." surname="Burleigh"/>
            <author fullname="K. Fall" initials="K." surname="Fall"/>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document presents a specification for the Bundle Protocol, adapted from the experimental Bundle Protocol specification developed by the Delay-Tolerant Networking Research Group of the Internet Research Task Force and documented in RFC 5050.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9171"/>
          <seriesInfo name="DOI" value="10.17487/RFC9171"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="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="RFC9172">
          <front>
            <title>Bundle Protocol Security (BPSec)</title>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <author fullname="K. McKeever" initials="K." surname="McKeever"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document defines a security protocol providing data integrity and confidentiality services for the Bundle Protocol (BP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9172"/>
          <seriesInfo name="DOI" value="10.17487/RFC9172"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="23" month="September" 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.  The Other Name form is used to
   update the PKIX profiles of RFC 9174 and [I-D.ietf-dtn-bpsec-cose].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-eid-pattern-11"/>
        </reference>
        <reference anchor="RFC862">
          <front>
            <title>Echo Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="May" year="1983"/>
            <abstract>
              <t>This RFC specifies a standard for the ARPA Internet community. Hosts on the ARPA Internet that choose to implement a Echo Protocol are expected to adopt and implement this standard. The Echo service simply sends back to the originating source any data it receives.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="20"/>
          <seriesInfo name="RFC" value="862"/>
          <seriesInfo name="DOI" value="10.17487/RFC862"/>
        </reference>
        <reference anchor="RFC8899">
          <front>
            <title>Packetization Layer Path MTU Discovery for Datagram Transports</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="T. Jones" initials="T." surname="Jones"/>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen"/>
            <author fullname="I. Rüngeler" initials="I." surname="Rüngeler"/>
            <author fullname="T. Völker" initials="T." surname="Völker"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document specifies Datagram Packetization Layer Path MTU Discovery (DPLPMTUD). This is a robust method for Path MTU Discovery (PMTUD) for datagram Packetization Layers (PLs). It allows a PL, or a datagram application that uses a PL, to discover whether a network path can support the current size of datagram. This can be used to detect and reduce the message size when a sender encounters a packet black hole. It can also probe a network path to discover whether the maximum packet size can be increased. This provides functionality for datagram transports that is equivalent to the PLPMTUD specification for TCP, specified in RFC 4821, which it updates. It also updates the UDP Usage Guidelines to refer to this method for use with UDP datagrams and updates SCTP.</t>
              <t>The document provides implementation notes for incorporating Datagram PMTUD into IETF datagram transports or applications that use datagram transports.</t>
              <t>This specification updates RFC 4960, RFC 4821, RFC 6951, RFC 8085, and RFC 8261.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8899"/>
          <seriesInfo name="DOI" value="10.17487/RFC8899"/>
        </reference>
        <reference anchor="RFC9174">
          <front>
            <title>Delay-Tolerant Networking TCP Convergence-Layer Protocol Version 4</title>
            <author fullname="B. Sipos" initials="B." surname="Sipos"/>
            <author fullname="M. Demmer" initials="M." surname="Demmer"/>
            <author fullname="J. Ott" initials="J." surname="Ott"/>
            <author fullname="S. Perreault" initials="S." surname="Perreault"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document describes a TCP convergence layer (TCPCL) for Delay-Tolerant Networking (DTN). This version of the TCPCL protocol resolves implementation issues in the earlier TCPCL version 3 as defined in RFC 7242 and provides updates to the Bundle Protocol (BP) contents, encodings, and convergence-layer requirements in BP version 7 (BPv7). Specifically, TCPCLv4 uses BPv7 bundles encoded by the Concise Binary Object Representation (CBOR) as its service data unit being transported and provides a reliable transport of such bundles. This TCPCL version also includes security and extensibility mechanisms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9174"/>
          <seriesInfo name="DOI" value="10.17487/RFC9174"/>
        </reference>
      </references>
    </references>
    <?line 308?>

<section anchor="ping-clients">
      <name>Ping Clients</name>
      <t>This appendix provides non-normative guidance for implementing ping clients that use the echo service. While the body of this document defines the echo service behavior, effective ping clients require careful attention to timing, session management, and request design.</t>
      <section anchor="rtt-calculation">
        <name>Round-Trip Time Calculation</name>
        <t>Accurate round-trip time (RTT) measurement is the primary purpose of most ping implementations. Ping clients should calculate RTT using locally stored timestamps rather than timestamps embedded in the request:</t>
        <sourcecode type="pseudocode"><![CDATA[
RTT = response_receive_time - request_sent_times[sequence_number]
]]></sourcecode>
        <t>This approach offers several advantages:</t>
        <ul spacing="normal">
          <li>
            <t>Requires no clock synchronization between nodes</t>
          </li>
          <li>
            <t>Works correctly even if the response is corrupted</t>
          </li>
          <li>
            <t>Avoids serialization overhead in the timing path</t>
          </li>
        </ul>
        <t>The client should maintain a map from sequence number to sent timestamp. It should populate the map when each request is transmitted and consult it when each response arrives. Entries should be removed after a configurable timeout to prevent unbounded memory growth.</t>
      </section>
      <section anchor="endpoint-selection">
        <name>Endpoint Selection</name>
        <t>As required by <xref target="session-disambiguation"/>, multiple concurrent clients on the same node use distinct source endpoint identifiers.</t>
        <t>For example, if two concurrent ping sessions on node <tt>ipn:1.0</tt> target <tt>ipn:2.TBD1</tt>, they should use distinct source endpoints such as <tt>ipn:1.1001</tt> and <tt>ipn:1.1002</tt>. The BPA then delivers each response to the correct session based on the destination of its response bundle.</t>
        <t>A ping client must not use a well-known echo service endpoint (for example, service number TBD1) as its own source endpoint. Per <xref target="when-a-response-is-sent"/>, services other than the echo service do not source bundles from an echo service endpoint, and an echo service does not answer a request so sourced.</t>
      </section>
      <section anchor="payload-format">
        <name>Request Format</name>
        <t>Because each response is identical to its request, the format of requests is entirely at the discretion of the ping client; the echo service neither parses nor interprets them. This document defines no request format.</t>
        <t>A client need only place a sequence number in each request, so that it can match each response to the request that produced it. Everything else a client needs is kept in local state, keyed by that sequence number:</t>
        <ul spacing="normal">
          <li>
            <t>the time the request was sent, used for the round-trip time calculation of <xref target="rtt-calculation"/> (timestamps need not be carried in the request); and</t>
          </li>
          <li>
            <t>optionally, whatever lets the client confirm that a response is an unmodified echo of its own request — for example, by retaining each request it sent and comparing it against the response.</t>
          </li>
        </ul>
        <t>Alongside the sequence number, a client should include a value that it does not reuse across sessions and that an off-path attacker cannot predict, such as a random nonce. This lets the client reject responses belonging to an earlier session that used the same source endpoint, and responses forged by an attacker able to guess sequence numbers; see also <xref target="ops-missing"/>.</t>
        <t>Because the whole request returns unchanged, a client can match and validate responses with no agreed wire format and without relying on Bundle Protocol Security in the network. Authenticating the responder itself is a separate matter, addressed by the echo service node's own BPSec policy on the response bundle (<xref target="response-authenticity"/>).</t>
        <t>A client may also pad the request with additional bytes to reach a chosen request bundle size, for example to probe the largest bundle a path will carry (<xref target="size-probing"/>).</t>
      </section>
      <section anchor="status-reports">
        <name>Interpreting Status Reports</name>
        <t>A client may request status reports on its request bundles in the usual way, by setting the relevant bundle processing control flags and a report-to EID. Such reports concern the request bundle's own progress toward the echo service and carry the client's endpoint as the source EID of the subject bundle.</t>
        <t>By setting status-report-request flags and a report-to EID on its request bundle, a ping client asks to observe the exchange end-to-end. An echo service can honor this by propagating those settings onto the response bundle (see <xref target="response-bundle"/>). Where it does, the designated observer receives status reports for both legs of the exchange and can attribute each report to its leg from the source EID of the report's subject bundle: the client's endpoint for the request bundle, and for the response bundle the echo service endpoint or, where the request was addressed to a non-singleton endpoint, the responding node's administrative endpoint (see <xref target="ops-non-singleton"/>). Because not every echo service does so, and status reporting is optional in any case, a client should not rely on receiving reports for the return leg. Note also that a client can tie a request-leg report to a specific request, because it knows that bundle's identifier, but cannot in general tie a response-leg report to a specific request: the response bundle's creation timestamp is assigned by the echo service and is not predictable by the client. Round-trip completion for a given request is instead confirmed by the response, which carries the sequence number (see <xref target="rtt-calculation"/>).</t>
        <t>Status reports on the request bundle can still aid diagnosis. For example, a "Forwarded" report with no corresponding response suggests the request bundle was lost between an intermediate node and the echo service. Note that status reporting is optional per <xref target="RFC9171"/> and many BPA implementations disable it by default; clients should not rely on receiving status reports for correct operation.</t>
      </section>
      <section anchor="path-probing">
        <name>Path Probing</name>
        <t>A response confirms more than reachability: it shows that the request bundle, as the client constructed it, was carried to the echo service node and that a response bundle came back. By varying how it constructs request bundles, a ping client can use this to test how a path treats particular bundles before an application relies on them. This section describes two such probes: varying the extension blocks on request bundles, and varying their size.</t>
        <section anchor="block-probing">
          <name>Extension Block Probing</name>
          <t>A request bundle is an ordinary bundle sourced by the client's node, so the client can attach extension blocks to it, and set their block processing control flags (<xref section="4.2.4" sectionFormat="comma" target="RFC9171"/>), as for any bundle it sources. A response then shows that a request bundle carrying those blocks was received, processed, and forwarded by every node on the forward path, and delivered at the echo service node. A client can use this to test, for example, whether the nodes on a path support a new extension block type, or accept a BPSec <xref target="RFC9172"/> block with a particular security context.</t>
          <t>The block attached can be of a type whose support is under test, or of a type that no node on the path is expected to process, such as one from the private and experimental range (<xref section="4.3.2" sectionFormat="comma" target="RFC9171"/>), in which case it serves purely as a signal. Either way, the client sets "Transmit status report if block can't be processed" on the block and a report-to EID that it monitors. Each node that receives the request bundle and cannot process the block then generates a reception status report with reason code "Block unsupported", where status reporting is enabled (<xref section="5.6" sectionFormat="comma" target="RFC9171"/>); nodes that can process the block do not. The block's other flags determine what happens next:</t>
          <ul spacing="normal">
            <li>
              <t>With neither "Delete bundle if block can't be processed" nor "Discard block if it can't be processed" set, the request bundle continues with the block intact. Every node on the forward path that cannot process the block reports, so a block that no node processes elicits a report from each node in turn, and the response still confirms the path end to end.</t>
            </li>
            <li>
              <t>With "Discard block if it can't be processed" set, the first node that cannot process the block reports and removes it, and the request bundle continues without it. The report identifies where support for the block ends, and the response is unaffected.</t>
            </li>
            <li>
              <t>With "Delete bundle if block can't be processed" set, the first node that cannot process the block reports and deletes the request bundle, so no response returns. A response then shows that every node on the forward path, including the echo service node, processed the block, even where status reporting is disabled.</t>
            </li>
          </ul>
          <t>A Hop Count Block (<xref section="4.4.3" sectionFormat="comma" target="RFC9171"/>) can be used in a similar way to bound how far a request bundle travels: a request bundle whose hop count exceeds its hop limit is deleted for the reason "Hop limit exceeded", and a deletion status report, where requested and generated, identifies the node at which this happened.</t>
          <t>Such probes test only the forward path. The response bundle is a new bundle that carries none of the request bundle's extension blocks (<xref target="extension-blocks"/>), so the return path is not tested; testing it needs a request sent in the opposite direction. A request can also go unanswered for reasons unrelated to the block under test (<xref target="ops-missing"/>), including policy at the echo service node that discards request bundles carrying unexpected extension blocks (<xref target="ops-policy"/>). A missing response is therefore best interpreted against a control: a request bundle without the block under test, sent along the same path at about the same time. A response to the control but not to the probe points to the block; no response to either says nothing about it. Status reports add detail where they are available, but are often disabled (<xref target="status-reports"/>).</t>
          <t>Attaching extension blocks to a request bundle depends on the interface that the client's BPA offers to applications. A client that can only submit ADUs for transmission might be unable to do so, so this kind of probing is better suited to diagnostic tools with lower-level access to their BPA.</t>
        </section>
        <section anchor="size-probing">
          <name>Bundle Size Probing</name>
          <t>A client can probe the largest bundle that a path will carry without fragmentation by sending request bundles of increasing size, padding the request (<xref target="payload-format"/>), with "Bundle must not be fragmented" set (<xref target="fragmentation"/>). Because a response is identical to its request, the response bundle carries the same data on the return path, so unlike extension block probes, a size probe tests both directions: a response shows that the forward path carried the request bundle, and the return path the response bundle, each unfragmented.</t>
          <t>This resembles packetization layer path MTU discovery <xref target="RFC8899"/> rather than ICMP-based path MTU discovery. <xref target="RFC9171"/> defines no status report reason code indicating that a bundle was too large to forward unfragmented; a node that cannot forward such a bundle might retain it until a sufficiently long contact, or delete it for another reason, such as "No timely contact with next node on route". A client therefore learns only from success, and a result is subject to the following limits:</t>
          <ul spacing="normal">
            <li>
              <t>The limit is not a fixed property of the path. It depends on convergence-layer limits, such as the TCPCL Transfer MRU <xref target="RFC9174"/>, and on the volume of upcoming contacts and the storage available at each node (<xref section="5.8" sectionFormat="comma" target="RFC9171"/>), and so can vary over time.</t>
            </li>
            <li>
              <t>The client controls only the size of the request bundle as it leaves its node. Nodes on the path can add extension blocks, and the response bundle carries the echo service node's own primary block and extension blocks (<xref target="extension-blocks"/>), so it can be larger or smaller than the request bundle. A result is approximate by the size of those blocks.</t>
            </li>
            <li>
              <t>An echo service node can limit the size of request it accepts (<xref target="resource-exhaustion"/>), which caps the size that can be probed, and a missing response cannot by itself be distinguished from loss or rate limiting (<xref target="ops-missing"/>). Interleaving small control requests helps to separate a size limit from other causes, and a delivery status report for a large request bundle, where available, shows that the forward path carried it and so places the limit on the return path.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="statistics">
        <name>Statistics</name>
        <t>Ping clients should track and report standard statistics consistent with traditional IP ping:</t>
        <ul spacing="normal">
          <li>
            <t>Requests transmitted</t>
          </li>
          <li>
            <t>Responses received</t>
          </li>
          <li>
            <t>Loss percentage</t>
          </li>
          <li>
            <t>RTT minimum, average, maximum, and standard deviation</t>
          </li>
        </ul>
        <t>These statistics provide a quick assessment of network health and help identify routing problems, congestion, or intermittent connectivity.</t>
        <t>Example output format following ICMP ping conventions:</t>
        <sourcecode type="text"><![CDATA[
--- ipn:2.TBD1 ping statistics ---
5 requests transmitted, 4 received, 20% loss
rtt min/avg/max/stddev = 1.234/2.567/4.891/1.203 s
]]></sourcecode>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
nzz+JnOEQP9/pWJNyEGvAAA=

-->

</rfc>
