<?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.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pauly-httpbis-alias-proxy-status-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <front>
    <title abbrev="DNS Aliases Proxy-Status">HTTP Proxy-Status Parameter for Next-Hop Aliases</title>
    <seriesInfo name="Internet-Draft" value="draft-pauly-httpbis-alias-proxy-status-00"/>
    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple, Inc.</organization>
      <address>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <date year="2022" month="November" day="30"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines an HTTP Proxy-Status Parameter that contains a list of aliases
received over DNS when establishing a connection to the next hop.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/tfpauly/privacy-proxy"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Proxy-Status HTTP response field <xref target="PROXY-STATUS"/> allows proxies to convey
information about how a proxied request was handled in HTTP responses sent to clients.
It defines a set of parameters that provide information, such as the name of the next
hop.</t>
      <t><xref target="PROXY-STATUS"/> defines a <tt>next-hop</tt> parameter, which can contain a hostname,
IP address, or alias of the next hop. This parameter can contain only one such item,
so it cannot be used to communicate a chain of aliases encountered during DNS resolution
when connecting to the next hop.</t>
      <t>Knowing the full chain of aliases that were used during DNS resolution is particularly
useful for clients of forward proxies, in which the client is requesting to connect
to a specific target hostname using the CONNECT method <xref target="HTTP"/> or
UDP proxying <xref target="CONNECT-UDP"/>. DNS aliases can be used to "cloak" hosts that
perform tracking or malicious activity behind more innocuous hostnames, and clients
such as web browsers use the chain of DNS aliases to influence behavior like cookie
usage policies <xref target="COOKIES"/> or blocking of malicious hosts.</t>
      <t>This document allows clients to receive the chain of DNS aliases for the next hop
by including the list of names in a new <tt>next-hop-aliases</tt> Proxy-Status parameter.</t>
      <section anchor="requirements">
        <name>Requirements</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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>
      </section>
    </section>
    <section anchor="parameter">
      <name>next-hop-aliases Parameter</name>
      <t>The <tt>next-hop-aliases</tt> parameter's value is a String that contains one or more DNS names in
a comma-separated list. The items in the list include all names received in CNAME
records <xref target="DNS"/> or AliasMode SVCB or HTTPS records <xref target="SVCB"/>
during the course of resolving the next hop's hostname using DNS. Since DNS names can include
comma (<tt>,</tt>) characters in them, any commas that appear in a DNS names MUST be represented
using a percent-encoded <tt>%2C</tt> value instead.</t>
      <t>For example:</t>
      <sourcecode type="example"><![CDATA[
Proxy-Status: proxy.example.net; next-hop=2001:db8::1
    next-hop-aliases="tracker.example.com.,service1.example-cdn.com."
]]></sourcecode>
      <t>indicates that proxy.example.net, which used the IP address "2001:db8::1" as the next hop
for this request, encountered the CNAMEs "tracker.example.com." and "service1.example-cdn.com"
in the DNS resolution chain. Note that while this example includes both the <tt>next-hop</tt> and
<tt>next-hop-aliases</tt> parameters, <tt>next-hop-aliases</tt> can be included without including <tt>next-hop</tt>.</t>
      <t>The <tt>next-hop-aliases</tt> parameter only applies when DNS was used to resolve the next hop's name, and
does not apply in all situations. Clients can use the information in this parameter to determine
how to use the connection established through the proxy, but need to gracefully handle situations
in which this parameter is not present.</t>
    </section>
    <section anchor="sec-considerations">
      <name>Security Considerations</name>
      <t>The <tt>next-hop-aliases</tt> parameter does not include any DNSSEC information or imply that DNSSEC was used.
The information included in the parameter can only be trusted to be valid insofar as the client
trusts its proxy to provide accurate information. This information is intended to be used as
a hint, and SHOULD NOT be used for making security decisions about the identity resource access
through the proxy.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the "next-hop-aliases" parameter
in the "HTTP Proxy-Status Parameters" registry
&lt;<eref target="https://www.iana.org/assignments/http-proxy-status"/>&gt;.</t>
      <dl>
        <dt>Name:</dt>
        <dd>
          <t>next-hop-aliases</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>A string containing one or more DNS alises used to establish a proxied connection
to the next hop.</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="PROXY-STATUS">
          <front>
            <title>The Proxy-Status HTTP Response Header Field</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P. Sikora" initials="P." surname="Sikora">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document defines the Proxy-Status HTTP response field to convey the details of an intermediary's response handling, including generated errors.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9209"/>
          <seriesInfo name="DOI" value="10.17487/RFC9209"/>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes. </t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP. More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="DNS">
          <front>
            <title>Common DNS Operational and Configuration Errors</title>
            <author fullname="D. Barr" initials="D." surname="Barr">
              <organization/>
            </author>
            <date month="February" year="1996"/>
            <abstract>
              <t>This memo describes errors often found in both the operation of Domain Name System (DNS) servers, and in the data that these DNS servers contain.  This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1912"/>
          <seriesInfo name="DOI" value="10.17487/RFC1912"/>
        </reference>
        <reference anchor="SVCB">
          <front>
            <title>Service binding and parameter specification via the DNS (DNS SVCB and HTTPS RRs)</title>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Google</organization>
            </author>
            <author fullname="Mike Bishop" initials="M." surname="Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Erik Nygren" initials="E." surname="Nygren">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="11" month="October" year="2022"/>
            <abstract>
              <t>   This document specifies the "SVCB" 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 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 [HTTP].
   By providing more information to the client before it attempts to
   establish a connection, these records offer potential benefits to
   both performance and privacy.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/MikeBishop/dns-alt-svc
   (https://github.com/MikeBishop/dns-alt-svc).  The most recent working
   version of the document, open issues, etc. should all be available
   there.  The authors (gratefully) accept pull requests.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-svcb-https-11"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="COOKIES">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth">
              <organization/>
            </author>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol.  Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet.  This document obsoletes RFC 2965.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6265"/>
          <seriesInfo name="DOI" value="10.17487/RFC6265"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA41X7W7jxhX9P08x1aJIAohay0iTtdptq8gO1shadi25aBAE
9YgcWQOTHGVmKK1geJ+lz5In67l3SIqSd7fdH15qOB9nzj333MskSUQwIdcj
+W4+v5E3zn7YJbOgQuXljXKq0EE7ubROTvWHkLyzaznOjfLaC7VYOL0ZyfPp
rBk7WC8ym5bYYCQzp5YhWasq3yWrENYL4xNFK5I1z/c8Pzk5EZkKeiRS/H2w
bjeSPmRCmLUbyeAqH05PTs5OTsWj3m2ty0bysgS6UofknE4QAhuV2b9Vbkuc
ugPGtRnJX4JN+9JbF5xeejztCnr4VQhVhZV1IyETIfHPlH4k5wPcG0B5JMKf
26LYdUatexjJ8Xqd6z4QpAMe1IUyOWDyLf+u6O0gtYUQSZJItfDBqRQI5yvj
JYipCl0GmemlKUGbKr9If1ipIFNbBgWIUsnc+CDtUqo6Ek6n2mx0Ju0Gsyke
25UupQYdC8xdmfIBq7BBqdNgbCmDxZ5algipXNn1IKIsTJblWohXxKuzWcWT
CbM+RMZYnfZrW3otl0bnmXx6+sPN7fW/fk5m8/H8bvb29sfJ2enJ2fMzUOZ2
6yWF2uCuOBtINnonTAldFYoRqYWtCMsWQOPMDCf8VuEOcqu8XCGwOcZMeXi6
l56IpE1zgyc/EJcdXvGWmVo3XPpIJo7YmEzLDgQIo0pXUvlIDabTwoYmEWn6
/C33R97T/ATz7/fH9hERg91TRLoOJGaurA90UF9c3kiVZbgU9Ilc48B2j+co
SRZPu+fBZrbMd/ij4yVM0EVfeIsHmlXaIBdaVh4EMv1FUZWGsoxkseL1rZqk
LlNbUWJhdlY5Eg9JCuBsXrEiWF2NnPD6pZx+Ku2W32B4WeX5y1M4DFscEmF9
8iAZrxtMWuXKIfswFbuxHdXhpi3xc6tc1iisTyKJdNPxcSJtVeupRlzjF3iE
TNY6NUuTyqDcgw5tZACuucbkejq9mMwluF9Z1jsJkRUwHJ5AAdaJu/MbRrGj
RZhRr0kwHqVy9ub5ecC3bHigIHZi00tzqx57DCCSJNbakUglOcgjbYzbF1ie
GotchKuYjQk7bII8z2RhHcm6hMXQ6+YiYAUZ1LAmGqlv9UIuHNKTMgMYImNN
rLo4gQ3JkldQh6az1MYAR24eMd/aR6MRHPWg5doSMix4evrb5Pr6p8sLzpLv
Tr/7E3MkF7mtr7HsXIPvOzj2x9o6mlgDQ211n8dJ2uiKUSx2AJ7mVdYEsnFP
pkVyIpZ6u0/bpN7q/tD02rwDylev5C3EZJwumE62SFQlSWXJy97V3Wze68f/
5fSan28v/nF3eXtxTs+zd+P379sHUc+Yvbu+e3++f9qvnFxfXV1Mz+NijMqD
IdG7Gv/ciwHuXd/ML6+n4/c9ulk4ZBPKAIUL0gfusXa4TQYViEz71JlFtNcf
Jje//2f4LckXcTsdDsnd4o83w++/xQ9K/3gau078CWZ3AmVPK8ecUs6rtQkq
J+nBpuHtpVwh4cEfSswx251y9/Sq5fo5UvuJ2LRTvvJyo6BLynAlZ8HFOHcr
JvkiJQ2lBmmlibxQ7IUq8Zq2IzZIHGS0mj3URxJrzUQZab5b3KItvJg2mY6v
LqgUswRAGE4i5Q/PhqdR+dwkXVnsMPvn5AcaIQchw2vX0Iu3l8n5wOiwTLLS
48p+ky64bfLPz6L2SZa/rZznIsWOuWnGG+V/5Y9tDIgGcmYog/c0kAHVNxPM
hvz6vn//DWUXtSxkDJGEgmK+i4zV/t2Jd2dHVj1U5jQkRuVZZyICQG3XLsVI
QkUmA3H3fzyd3DcBLH3QKoM+fgQ3+oMq0ESNhPj48WPzS3RTchS9dlC/G6AR
/HOrq7foFYejbPFmNBrGXu5IQm97bKjI52Y9bjbowwk3JtXDZjRJs5Lf9AgH
mtEy48q5byQOETSVPho6wrEv7bLXwdRrO43GqKJz7etU/6AScwkiiWGbTwHv
xfT/HPyeqJV8VGHZQwdyaoOuS/LK5DriqLdo1OHlwoZYUzstDk4VX0pPZP8n
XtdVr945k1uDolqFjlPvjxj8bw+IRkRNN1Uebk+4C1a+LawxR/RxhnD7xZfI
LJZSp0Tb7BoP8yZU3B76gZzUZYjAN7Wy28M2hruHhXMzeijQGgpqbjHQVtl9
O9426hxnZ6uHSDOLqy8XIKbU8RoPCD31QEAYW+IOQtHpew5gmHixOhupfsmZ
TuEkaBsmWIhO2MUt4L1ep0l6MPh/mLBs2WtNElaBGMwuJgccQeOmIH5ZbPWE
Jk4DPueQ0logtXoPm1+OOmTE34aRH/yCmRha4O0S3lRnWWwhBM+EoYX4PbKj
Jc23gEpBCfXEHQB1z30AyXP5LLP2QJYYyigaeryJlXFfwdsZS+7buPXxDfsZ
2k7PxMcPIJZUBqT0kiRbwS4JGexDvJAGR/JyPB0fRfG4jXL6AfUrfvxo2TuO
Y29Pa+MSvS98jmJ+3NDtxF9++fVrLk2j16+32+3AqFIN8H38WnlvHkrujl7T
hIMv/W/+CuRT+rYWoxe+LMQ5tyNrugpNGEsfi3pdz7l3PKroWEs9RJPsbUJ1
vib3+SZefq/c6iVcFoWRDjwgT/wXwMDPcyMRAAA=

-->

</rfc>
