<?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.8 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schinazi-masque-connect-ip-dns-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.1 -->
  <front>
    <title abbrev="CONNECT-IP DNS">DNS Extensions for Proxying IP in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-schinazi-masque-connect-ip-dns-00"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="March" day="19"/>
    <area>Web and Internet Transport</area>
    <workgroup>MASQUE</workgroup>
    <keyword>quic</keyword>
    <keyword>http</keyword>
    <keyword>datagram</keyword>
    <keyword>udp</keyword>
    <keyword>proxy</keyword>
    <keyword>tunnels</keyword>
    <keyword>quic in quic</keyword>
    <keyword>turtles all the way down</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <keyword>dns</keyword>
    <abstract>
      <?line 46?>

<t>Proxying IP in HTTP allows building a VPN through HTTP load balancers. However,
at the time of writing, that mechanism doesn't offer a mechanism for
communicating DNS information inline. In contrast, most existing VPN protocols
provide a mechanism to exchange DNS configuration information. This document
describes an extension that exchanges this information using HTTP capsules.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://DavidSchinazi.github.io/draft-schinazi-masque-connect-ip-dns/draft-schinazi-masque-connect-ip-dns.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schinazi-masque-connect-ip-dns/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Multiplexed Application Substrate over QUIC Encryption Working Group mailing list (<eref target="mailto:masque@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/masque/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/DavidSchinazi/draft-schinazi-masque-connect-ip-dns"/>.</t>
    </note>
  </front>
  <middle>
    <?line 54?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Proxying IP in HTTP (<xref target="CONNECT-IP"/>) allows building a VPN through
HTTP load balancers. However, at the time of writing, that mechanism doesn't
offer a mechanism for communicating DNS information inline. In contrast, most
existing VPN protocols provide a mechanism to exchange DNS configuration
information (e.g., <xref target="IKEv2"/>). This document describes an extension
that exchanges this information using HTTP capsules (<xref target="HTTP-DGRAM"/>).</t>
      <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>
    <section anchor="mechanism">
      <name>Mechanism</name>
      <t>Similar to how Proxying IP in HTTP exchanges IP addresses (<xref section="4.7" sectionFormat="of" target="CONNECT-IP"/>), this mechanism leverages capsules to request configuration and
to assign it. Similarly, this mechanism is bidirectional: either endpoint can
request DNS configuration by sending a DNS_REQUEST capsule, and either endpoint
can send DNS configuration in a DNS_ASSIGN capsule. These capsules follow the
format defined below.</t>
      <figure anchor="ns-addr-format">
        <name>Nameserver Address Format</name>
        <artwork><![CDATA[
Nameserver Address {
  IP Version (8),
  IP Address (32..128),
}
]]></artwork>
      </figure>
      <t>Each Nameserver Address contains the following fields:</t>
      <dl>
        <dt>IP Version:</dt>
        <dd>
          <t>IP Version of this nameserver address, encoded as an unsigned 8-bit integer.
It <bcp14>MUST</bcp14> be either 4 or 6.</t>
        </dd>
        <dt>IP Address:</dt>
        <dd>
          <t>DNS nameserver IP address. If the IP Version field has value 4, the IP
Address field <bcp14>SHALL</bcp14> have a length of 32 bits. If the IP Version field has value
6, the IP Address field <bcp14>SHALL</bcp14> have a length of 128 bits.</t>
        </dd>
      </dl>
      <figure anchor="domain-format">
        <name>Internal Domain Format</name>
        <artwork><![CDATA[
Domain {
  Domain Length (i),
  Domain Name (..),
}
]]></artwork>
      </figure>
      <t>Each Domain contains the following fields:</t>
      <dl>
        <dt>Domain Length:</dt>
        <dd>
          <t>Length of the following Domain field, encoded as a variable-length integer.</t>
        </dd>
        <dt>Domain Name:</dt>
        <dd>
          <t>Fully Qualified Domain Name in DNS presentation format and using an
Internationalized Domain Names for Applications (IDNA) A-label
(<xref target="IDNA"/>).</t>
        </dd>
      </dl>
      <figure anchor="assigned-addr-format">
        <name>Assigned Address Format</name>
        <artwork><![CDATA[
DNS Configuration {
  Request ID (i),
  Nameserver Address Count (i),
  Nameserver Address (..) ...,
  Internal Domain Count (i),
  Internal Domain (..) ...,
  Search Domain Count (i),
  Search Domain (..) ...,
}
]]></artwork>
      </figure>
      <t>Each DNS Configuration contains the following fields:</t>
      <dl newline="true" spacing="normal">
        <dt>Request ID:</dt>
        <dd>
          <t>Request identifier, encoded as a variable-length integer. If this DNS
Configuration is part of a request, then this contains a unique request
identifier. If this DNS configuration is part of an assignment that is in
response to a DNS configuration request then this field <bcp14>SHALL</bcp14> contain the value
of the corresponding field in the request. If this DNS configuration is part of
an unsolicited assignment, this field <bcp14>SHALL</bcp14> be zero.</t>
        </dd>
        <dt>Nameserver Address Count:</dt>
        <dd>
          <t>The number of Nameserver Address structures following this field. Encoded as
a variable-length integer.</t>
        </dd>
        <dt>Nameserver Address:</dt>
        <dd>
          <t>A series of Nameserver Address structures representing DNS name servers.</t>
        </dd>
        <dt>Internal Domain Count:</dt>
        <dd>
          <t>The number of Domain structures following this field. Encoded as a
variable-length integer.</t>
        </dd>
        <dt>Internal Domain:</dt>
        <dd>
          <t>A series of Domain structures representing internal DNS names.</t>
        </dd>
        <dt>Search Domain Count:</dt>
        <dd>
          <t>The number of Domain structures following this field. Encoded as a
variable-length integer.</t>
        </dd>
        <dt>Search Domain:</dt>
        <dd>
          <t>A series of Domain structures representing search domains.</t>
        </dd>
      </dl>
      <section anchor="dns-req">
        <name>DNS_REQUEST Capsule</name>
        <t>The DNS_REQUEST capsule (see <xref target="iana"/> for the value of the capsule type) allows
an endpoint to request DNS configuration from its peer. The capsule allows the
endpoint to optionally indicate a preference for which DNS configuration it
would get assigned. The sender can indicate that it has no preference by not
sending any addresses or names in its request DNS Configuration.</t>
        <figure anchor="dns-req-format">
          <name>DNS_REQUEST Capsule Format</name>
          <artwork><![CDATA[
DNS_REQUEST Capsule {
  Type (i) = DNS_REQUEST,
  Length (i),
  DNS Configuration (..),
}
]]></artwork>
        </figure>
        <t>When sending a DNS_REQUEST capsule, the sender <bcp14>MUST</bcp14> generate and send a new
non-zero request ID that was not previously used on this IP Proxying stream.</t>
        <t>An endpoint that receives a DNS_REQUEST capsule <bcp14>SHALL</bcp14> reply by sending a
DNS_ASSIGN capsule with the corresponding request ID. That DNS_ASSIGN capsule
<bcp14>MAY</bcp14> be empty, that indicates that its sender has no DNS configuration to share
with its peer.</t>
      </section>
      <section anchor="dns-assign">
        <name>DNS_ASSIGN Capsule</name>
        <t>The DNS_ASSIGN capsule (see <xref target="iana"/> for the value of the capsule type) allows
an endpoint to send DNS configuration to its peer.</t>
        <figure anchor="dns-assign-format">
          <name>DNS_ASSIGN Capsule Format</name>
          <artwork><![CDATA[
DNS_ASSIGN Capsule {
  Type (i) = DNS_ASSIGN,
  Length (i),
  DNS Configuration (..),
}
]]></artwork>
        </figure>
        <t>When sending a DNS_ASSIGN capsule in response to a received DNS_REQUEST
capsule, the Request ID field in the DNS_ASSIGN capsule <bcp14>SHALL</bcp14> be set to the
value in the received DNS_REQUEST capsule. Otherwise the request ID <bcp14>MUST</bcp14> be set
to zero.</t>
      </section>
    </section>
    <section anchor="handling">
      <name>Handling</name>
      <t>Note that internal domains include subdomains. In other words, if the DNS
configuration contains a domain, that indicates that the corresponding domain
and all of its subdomains can be resolved by the nameservers exchanged in the
same DNS configuration.</t>
      <t>As with other IP Proxying capsules, the receiver can decide to whether to use
or ignore the configuration information. For example, in the consumer VPN
scenario, clients will trust the server and apply received DNS configuration,
whereas servers will ignore any DNS configuration sent by the client.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Acting on received DNS_ASSIGN capsules can have significant impact on endpoint
security. Endpoints <bcp14>MUST</bcp14> ignore DNS_ASSIGN capsules unless it has reason to
trust its peer and is expecting DNS configuration from it.</t>
      <t>The requirement for an endpoint to always send DNS_ASSIGN capsules in response
to DNS_REQUEST capsules could lead it to buffer unbounded amounts of memory if
the underlying stream is blocked by flow or congestion control. Implementations
<bcp14>MUST</bcp14> place an upper bound on that buffering and abort the stream if that limit
is reached.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document, if approved, will request IANA add the following values to the
"HTTP Capsule Types" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/masque"/>&gt;.</t>
      <table anchor="iana-capsules-table">
        <name>New Capsules</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Capsule Type</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x2B40144C</td>
            <td align="left">DNS_ASSIGN</td>
          </tr>
          <tr>
            <td align="left">0x2B40144D</td>
            <td align="left">DNS_REQUEST</td>
          </tr>
        </tbody>
      </table>
      <t>Note that, if this document is approved, the values defined above will be
replaced by smaller ones before publication.</t>
      <t>All of these new entries use the following values for these fields:</t>
      <dl spacing="compact" newline="false">
        <dt>Status:</dt>
        <dd>
          <t>provisional (permanent if this document is approved)</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Change Controller:</dt>
        <dd>
          <t>IETF</t>
        </dd>
        <dt>Contact:</dt>
        <dd>
          <t>masque@ietf.org</t>
        </dd>
        <dt>Notes:</dt>
        <dd>
          <t>None</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="CONNECT-IP">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="A. Chernyakhovsky" initials="A." surname="Chernyakhovsky"/>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <date month="October" year="2023"/>
            <abstract>
              <t>This document describes how to proxy IP packets in HTTP. This protocol is similar to UDP proxying in HTTP but allows transmitting arbitrary IP packets. More specifically, this document defines a protocol that allows an HTTP client to create an IP tunnel through an HTTP server that acts as an IP proxy. This document updates RFC 9298.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9484"/>
          <seriesInfo name="DOI" value="10.17487/RFC9484"/>
        </reference>
        <reference anchor="HTTP-DGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </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="IDNA">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IKEv2">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="IKEv2-DNS">
          <front>
            <title>Split DNS Configuration for the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="P. Wouters" initials="P." surname="Wouters"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This document defines two Configuration Payload Attribute Types (INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA) for the Internet Key Exchange Protocol version 2 (IKEv2). These payloads add support for private (internal-only) DNS domains. These domains are intended to be resolved using non-public DNS servers that are only reachable through the IPsec connection. DNS resolution for other domains remains unchanged. These Configuration Payloads only apply to split- tunnel configurations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8598"/>
          <seriesInfo name="DOI" value="10.17487/RFC8598"/>
        </reference>
      </references>
    </references>
    <?line 296?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The mechanism is this document was inspired by <xref target="IKEv2"/> and
<xref target="IKEv2-DNS"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
