<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-welzl-panrg-oppd-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title>On-Path Proxy Discovery</title>
    <seriesInfo name="Internet-Draft" value="draft-welzl-panrg-oppd-00"/>
    <author fullname="Michael Welzl">
      <organization>University of Oslo</organization>
      <address>
        <email>michawe@ifi.uio.no</email>
      </address>
    </author>
    <date year="2024" month="October" day="21"/>
    <area>IRTF</area>
    <workgroup>Path Aware Networking RG</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 76?>

<t>This document surveys possibilities for On-Path Proxy Discovery (OPPD). It is meant to help the conversation in a planned side meeting at IETF-121 in Dublin (see the github page linked under "About This Document" for coordinates).</t>
      <t>The draft title indicates PANRG as a target of this document just because we thought that PANRG should be informed. What a suitable target is, and if this is even the right type of document, should all be discussed at the side meeting.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mwelzl.github.io/oppd/draft-welzl-panrg-oppd.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-welzl-panrg-oppd/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Path Aware Networking RG Research Group mailing list (<eref target="mailto:panrg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/panrg"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/panrg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mwelzl/oppd"/>.</t>
    </note>
  </front>
  <middle>
    <?line 82?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Proxies can carry out functions that improve the performance of an end-to-end connection. These function can be quite diverse, ranging from minimal help (e.g. just offering information) to more significant interference, e.g. splitting an end-to-end connection in half, for reliability, congestion control or both.</t>
      <t>It is commonly desirable for such proxies to be located on the path(s) that a connection already traverses, rather than using a tunneling or forwarding approach to enforce a path. This is naturally the case for transparent "Performance Enhancing Proxies" (PEPs) that have been implemented for TCP, but the transparent nature of such proxies has caused a number of problems in the past. Non-transparent proxies leave the choice of utilizing and configuring a performance enhancing function to end systems -- and such a choice requires a means to detect the proxy and explicitly communicate with it. With QUIC, the encryption of packet headers necessitates using non-transparent instead of transparent proxies, and research works such as the Sidekick <xref target="Sidekick"/> and Secure Middlebox-Assisted QUIC (SMAQ) <xref target="SMAQ"/> have shown that this is both possible and beneficial.</t>
      <t>There are various ways in which On-Path Proxy Discovery (OPPD) can work, and they differ from the ways in which end systems learn about proxies that are not necessarily on-path.</t>
      <t>This document surveys some possibilities that are available for OPPD.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <ul spacing="normal">
        <li>
          <t>Base connection: an end-to-end connection between two endpoints on which an on-path proxy is expected to carry out a performance-improving function.</t>
        </li>
        <li>
          <t>Endpoint: an entity that communicates with one or more other endpoints using a specific base connection. It is locally identified by the base connection's 5-tuple of IP address pair, protocol and port numbers.</t>
        </li>
      </ul>
    </section>
    <section anchor="general">
      <name>General assumptions</name>
      <ul spacing="normal">
        <li>
          <t>On-path proxies are expected to carry out functions in relation to a base connection. Thus, they must be on the same path, which, given the prevalence of functions such as Equal-Cost Multi-Path routing (ECMP) <xref target="RFC2992"/>, means that communication with them must use the same 5-tuple as the base connection.</t>
        </li>
        <li>
          <t>Endpoint initiation: OPPD must be initiated by an endpoint. First, in the presence of Network Address Translators (NATs) <xref target="RFC2663"/>, this is the only way to ensure that communication with the proxy uses the same IP addresses and port numbers as the base connection. Second, in this way, endpoints can execute some kind of flow control to avoid the reception of many unsolicited announcements.</t>
        </li>
        <li>
          <t>Proxies must somehow prove that they are on-path, akin to the way it is done with several ICMP messages that include the first 64 bits of the original packet that evoked them <xref target="RFC792"/>. Naturally, the part of the original packet that is to be returned must not be too easy to guess--e.g. a nonce of a certain minimum length. This establishes a certain minimal level of trust, since on-path devices are in the position to do whatever they want with a connection's packets anyway -- for example discard, rate-limit or duplicate them.</t>
        </li>
      </ul>
    </section>
    <section anchor="a-survey-of-possibilities">
      <name>A survey of possibilities</name>
      <t>Please insert your ideas below -- or add a description of a scheme that already exists.</t>
      <section anchor="endpoint-to-proxy">
        <name>Endpoint to proxy</name>
        <section anchor="special-packet-of-base-connection">
          <name>Special packet of base connection</name>
          <t>Sidekick <xref target="Sidekick"/> endpoints signal proxy support by sending a distinguished packet containing a 128-byte sidekick-request marker over the base connection's 5-tuple. Such inline signaling could confuse receiving endpoints, but sidekicks target protocols such as QUIC that discard cryptographically unauthenticated data anyway.</t>
          <t>Secure Middlebox-Assisted QUIC <xref target="SMAQ"/> leaves the design of a proxy discovery solution as future work, but also suggests to multiplex the necessary signaling over the same 5-tuple as the base connection.</t>
        </section>
        <section anchor="header-options">
          <name>Header options</name>
          <t>An endpoint could use a newly defined TCP option or UDP option
<xref target="I-D.ietf-tsvwg-udp-options"/> to signal proxy support. Such an option
could be specified to be ignored by the receiving endpoint, and receiving
endpoints that are not upgraded to support the option should ignore
it anyway. In case of QUIC, for example, the QUIC implementation at the
receiving endpoint would not even be informed about the message in the
option. This approach might have the advantage of not possibly confusing
the receiving endpoint, and it does not require the endhost to send an
additional packet.</t>
        </section>
      </section>
      <section anchor="proxy-to-endpoint">
        <name>Proxy to endpoint</name>
        <section anchor="special-packet-of-base-connection-1">
          <name>Special packet of base connection</name>
          <t>A sidekick proxy replies to a sidekick-request packet by sending a special packet from the receiver's IP address and port number back to the endpoint <xref target="Sidekick"/>. This packet contains a sidekick-reply marker, an opaque session ID, and an IP address and port number for communicating with the proxy. Upon receiving the sidekick-reply packet, the sender begins communicating directly with the proxy from a different UDP port. It initially sends back the session ID and configuration parameters to start receiving quACKs (special ACKs crafted by a Sidekick proxy).</t>
        </section>
        <section anchor="header-options-1">
          <name>Header options</name>
          <t>A proxy could insert a newly defined TCP option or UDP option
<xref target="I-D.ietf-tsvwg-udp-options"/> in a returning packet (e.g., an ACK)
to answer back to the endpoint that originally announced its proxy support.
This approach does not require the proxy to send an additional packet.</t>
        </section>
      </section>
    </section>
    <section anchor="a-survey-of-open-issues">
      <name>A survey of open issues</name>
      <t>Just an idea, having a separate list of common problems to be considered might be helpful. For example:</t>
      <ul spacing="normal">
        <li>
          <t>How to handle multiple proxies on a path?
          </t>
          <ul spacing="normal">
            <li>
              <t>Suggestion: Each proxy could send a special packet back to the endpoint, or add its information to a header option as long as there is enough space.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>How to deal with multi-path?
          </t>
          <ul spacing="normal">
            <li>
              <t>Suggestion: we ignore it, we just apply the discovery per path. Endpoints are expected to initiate the discovery process for every path at which they want to make use of a proxy should a proxy be available.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>This list will become longer as we add mechanisms to the preceding section.</t>
    </section>
    <section anchor="examined-material-that-was-not-included">
      <name>Examined material that was not included</name>
      <t><xref target="I-D.kuehlewind-quic-proxy-discovery"/> lists several possibilities for proxy discovery, but the proxies in question need not be on-path. One notable possibility mentioned in <xref target="I-D.kuehlewind-quic-proxy-discovery"/> is the use of Port Control Protocol (PCP) options; this is, in some sense, an on-path discovery method since PCP talks to NATs, which are necessarily on-path. However, there is no reason to limit the discovery process described in the present document to scenarios with NATs only.</t>
      <t>OPPD shares the on-path communication constraint with Path Layer UDP Substrate (PLUS). As such, there are commonalities between PLUS and OPPD such as the potential sharing of ports. However, the PLUS wire image in <xref target="I-D.trammell-plus-spec"/> was designed for the endpoint-to-network direction of signaling, which eliminates the need for an on-path proxy to prove that it has seen a packet. Being designed to support in-network measurement and state maintenance, PLUS is generally a much more sophisticated construct than what we expect to need for OPPD.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The idea of OPPD is only to discover on-path proxies. These devices must make it reasonably credible that they are indeed on-path; see the last item in <xref target="general"/>.</t>
      <t>Further security considerations will depend on the use case.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="Sidekick">
          <front>
            <title>Sidekick: In-Network Assistance for Secure End-to-End Transport Protocols</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="Usenix NSDI 2024" value=""/>
        </reference>
        <reference anchor="SMAQ">
          <front>
            <title>Secure Middlebox-Assisted QUIC</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="IFIP NETWORKING 2023" value=""/>
        </reference>
        <reference anchor="I-D.kuehlewind-quic-proxy-discovery">
          <front>
            <title>Discovery Mechanism for QUIC-based, Non-transparent Proxy Services</title>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Zaheduzzaman Sarker" initials="Z." surname="Sarker">
              <organization>Ericsson</organization>
            </author>
            <date day="27" month="January" year="2020"/>
            <abstract>
              <t>   Often an intermediate instance (such as a proxy server) is used to
   connect to a web server or a communicating peer if a direct end-to-
   end IP connectivity is not possible or the proxy can provide a
   support service like, e.g., address anonymisation.  To use a non-
   transparent proxy a client explicitly connects to it and requests
   forwarding to the final target server.  The client either knows the
   proxy address as preconfigured in the application or can dynamically
   learn about available proxy services.  This document describes
   different discovery mechanisms for non-transparent proxies that are
   either located in the local network, e.g. home or enterprise network,
   in the access network, or somewhere else on the Internet usually
   close to the target server or even in the same network as the target
   server.

   This document assumes that the non-transparent proxy server is
   connected via QUIC and discusses potential discovery mechanisms for
   such a QUIC-based, non-transparent proxy.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kuehlewind-quic-proxy-discovery-01"/>
        </reference>
        <reference anchor="I-D.trammell-plus-spec">
          <front>
            <title>Path Layer UDP Substrate Specification</title>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization>ETH Zurich</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>ETH Zurich</organization>
            </author>
            <date day="13" month="March" year="2017"/>
            <abstract>
              <t>   This document specifies a common Path Layer UDP Substrate (PLUS) wire
   image for encrypted transport protocols carried over UDP.  The base
   PLUS header carries information for driving a minimal state machine
   at middleboxes described in [I-D.trammell-plus-statefulness], and
   provides optional exposure of additional information to devices along
   the path using the mechanism described in
   [I-D.trammell-plus-abstract-mech].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-trammell-plus-spec-01"/>
        </reference>
        <reference anchor="I-D.ietf-tsvwg-udp-options">
          <front>
            <title>Transport Options for UDP</title>
            <author fullname="Dr. Joseph D. Touch" initials="J. D." surname="Touch">
              <organization>Independent Consultant</organization>
            </author>
            <author fullname="C. M. Heard" initials="C. M." surname="Heard">
              <organization>Unaffiliated</organization>
            </author>
            <date day="13" month="October" year="2024"/>
            <abstract>
              <t>   Transport protocols are extended through the use of transport header
   options. This document updates RFC 768 (UDP) by indicating the
   location, syntax, and semantics for UDP transport layer options
   within the surplus area after the end of the UDP user data but
   before the end of the IP length.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-udp-options-37"/>
        </reference>
        <reference anchor="RFC2992">
          <front>
            <title>Analysis of an Equal-Cost Multi-Path Algorithm</title>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>Equal-cost multi-path (ECMP) is a routing technique for routing packets along multiple paths of equal cost. The forwarding engine identifies paths by next-hop. When forwarding a packet the router must decide which next-hop (path) to use. This document gives an analysis of one method for making that decision. The analysis includes the performance of the algorithm and the disruption caused by changes to the set of next-hops. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2992"/>
          <seriesInfo name="DOI" value="10.17487/RFC2992"/>
        </reference>
        <reference anchor="RFC2663">
          <front>
            <title>IP Network Address Translator (NAT) Terminology and Considerations</title>
            <author fullname="P. Srisuresh" initials="P." surname="Srisuresh"/>
            <author fullname="M. Holdrege" initials="M." surname="Holdrege"/>
            <date month="August" year="1999"/>
            <abstract>
              <t>This document attempts to describe the operation of NAT devices and the associated considerations in general, and to define the terminology used to identify various flavors of NAT. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2663"/>
          <seriesInfo name="DOI" value="10.17487/RFC2663"/>
        </reference>
        <reference anchor="RFC792">
          <front>
            <title>Internet Control Message Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="792"/>
          <seriesInfo name="DOI" value="10.17487/RFC0792"/>
        </reference>
      </references>
    </references>
    <?line 203?>

<!--# Acknowledgments
{:numbered="false"}

TODO acknowledge.-->



  </back>
  <!-- ##markdown-source:
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
pmbwETtfnV5hk/SkGeX5t9n/AMhEjDgBKAAA

-->

</rfc>
