<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc category="info" ipr="trust200902"
     docName="draft-liu-add-ppp-edns-negotiation-02">
<front>
<title abbrev="PPP Encrypted DNS">PPP IPCP Extensions for Encrypted DNS Server Negotiation</title>
<author fullname="Dongjie Liu" initials="D." surname="Liu">
<organization>Jinan University</organization>
<address><email>dongjieliu8917@gmail.com</email></address>
</author>
<author fullname="Zhiwei Yan" initials="Z." surname="Yan">
<organization>CNNIC</organization>
<address><email>yanzhiwei@cnnic.cn</email></address>
</author>
<author fullname="Jian Weng" initials="J." surname="Weng">
<organization>Guangzhou University</organization>
<address><email>cryptjweng@gmail.com</email></address>
</author>
<author fullname="Guanggang Geng" initials="G." surname="Geng">
<organization>Jinan University</organization>
<address><email>guanggang.geng@gmail.com</email></address>
</author>
<author fullname="Yinyan Zhang" initials="Y." surname="Zhang">
<organization>Jinan University</organization>
<address><email>csyyzhang@gmail.com</email></address>
</author>
<date day="21" month="March" year="2026"/>
<area>Internet</area>
<workgroup>ADD Working Group</workgroup>
<abstract>
<t>This document defines extensions to the Point-to-Point Protocol (PPP) Internet Protocol Control Protocol (IPCP) for negotiating encrypted DNS resolver configurations. These extensions allow PPP peers to exchange information about encrypted DNS servers supporting protocols such as DNS over TLS (DoT), DNS over HTTPS (DoH), and DNS over QUIC (DoQ). The design maintains backward compatibility with RFC 1877 while addressing modern security requirements.</t>
</abstract>
</front>

<middle>

<section title="Introduction">
  <t>
    The Point-to-Point Protocol (PPP) <xref target="RFC1661"/> and its Ethernet
    adaptation, PPPoE (<xref target="RFC2516"/>) remain foundational technologies
    for authenticated network access, particularly in broadband and enterprise
    environments.
  </t>

  <t>PPP is widely used in scenarios such as:</t>
  <list style="symbols">
    <t>ISP broadband access (e.g., PPPoE for DSL/fiber authentication)</t>
    <t>Industrial control networks (serial PPP for SCADA/PLC communications)</t>
    <t>Cellular backhaul (PPP over GTP in 4G/5G user-plane data)</t>
    <t>Secure tunneling (PPP inside L2TP/IPsec or MPLS VPNs)</t>
  </list>

  <t>
    Despite the rise of DHCP and IPv6 RA for configuration, PPP persists due to
    its fine-grained access control, negotiation flexibility, and compatibility
    with legacy systems. However, traditional PPP IPCP extensions
    (<xref target="RFC1877"/>) only support plaintext DNS, exposing queries to
    surveillance and manipulation — a critical gap in an era where encrypted DNS
    (DoT <xref target="RFC7858"/>, DoH <xref target="RFC8484"/>,
    DoQ <xref target="RFC9250"/>) is essential for privacy and security.
  </t>

  <t>This document extends PPP IPCP to negotiate encrypted DNS resolvers, enabling:</t>
  <list style="symbols">
    <t><spanx style="strong">Secure DNS by default</spanx>: Clients automatically adopt encrypted transports (e.g., DoT on port&nbsp;853) without manual configuration.</t>
    <t><spanx style="strong">Operator-managed trust</spanx>: ISPs can provide authenticated DNS resolvers (via ADNs and certificate fingerprints) to enable secure DNS by default. Clients retain the flexibility to use other resolvers if configured accordingly.</t>
    <t><spanx style="strong">Backward compatibility</spanx>: Coexists with RFC&nbsp;1877 options, allowing fallback to plaintext DNS if needed.</t>
  </list>

  <t>
    By integrating encrypted DNS negotiation into PPP, this specification
    bridges the gap between legacy access protocols and modern security
    requirements, ensuring confidentiality and integrity for DNS queries across
    diverse deployment scenarios — from home broadband to critical
    infrastructure.
  </t>

<section title="Requirements Language">
<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"/>.</t>
</section>
</section>

<section title="Additional IPCP Configuration Options">
<t>This document defines three new IPCP Configuration Options:</t>
<texttable anchor="table_options">
<ttcol align="left">Type</ttcol>
<ttcol align="left">Name</ttcol>
<ttcol align="left">Description</ttcol>
<c>133</c><c>Primary Encrypted DNS</c><c>Primary encrypted DNS server</c>
<c>134</c><c>Secondary Encrypted DNS</c><c>Secondary encrypted DNS server</c>
<c>135</c><c>DNS Encryption Parameters</c><c>Additional encryption parameters</c>
</texttable>

<section title="Primary Encrypted DNS Server Option">
<t>This option provides the primary encrypted DNS resolver configuration.</t>
<figure anchor="fig_primary" title="Primary Encrypted DNS Option Format">
<artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |    Protocol   |    Reserved   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          ADN Length           |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
~                   Authentication Domain Name (ADN)            ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Port Number          |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
~                 Additional Parameters (Optional)              ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
</figure>
<t>Fields:
<list style="symbols">
<t>Type: 133</t>
<t>Length: ≥ 6</t>
<t>Protocol: 1=DoT, 2=DoH, 3=DoQ</t>
<t>Reserved: MUST be 0</t>
<t>ADN Length: Length of ADN field</t>
<t>ADN: Resolver FQDN (RFC 1035 format)</t>
<t>Port Number: Defaults to 853 (DoT/DoQ) or 443 (DoH) if 0</t>
</list></t>
</section>

<section title="Secondary Encrypted DNS Server Option">
  <t>
    This option provides a fallback encrypted DNS resolver configuration when
    the primary server is unavailable. It follows the same structure as the
    Primary Encrypted DNS Server Option (Section&nbsp;2.1) but uses a distinct
    type code.
  </t>

  <list style="symbols">
    <t>Type: 134</t>
  </list>
</section>

<section title="DNS Encryption Parameters Option">
<t>This option provides supplemental configuration parameters required for specific encrypted DNS protocols. It enables negotiation of advanced settings that cannot be conveyed in the primary/secondary options alone.</t>

<figure anchor="fig_params" title="DNS Encryption Parameters Option Format">
<artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |Server Selector|  Param Type   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Param Length          |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
~                       Parameter Value                        ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
</figure>

   <t>Fields:</t>
  <list style="symbols">
    <t>Type: 135</t>
    <t>Length: ≥ 5</t>
    <t>Server Selector (1&nbsp;octet):</t>
  </list>

  <list style="symbols">
    <t>0x00 – Parameters apply to the Primary Encrypted DNS Server (Option 133)</t>
    <t>0x01 – Parameters apply to the Secondary Encrypted DNS Server (Option 134)</t>
    <t>Other values are reserved for future use</t>
  </list>

  <list style="symbols">
    <t>Param Type (1&nbsp;octet):</t>
  </list>

  <list style="symbols">
    <t>0x01 – ALPN Protocols</t>
    <t>0x02 – DoH Path Template</t>
    <t>0x03–0xFF – Reserved</t>
  </list>

  <list style="symbols">
    <t>Param Length: Length of Parameter Value</t>
    <t>Parameter Value: Protocol-specific data</t>
  </list>

  <t>Defined Parameters:</t>
  <list style="numbers">
    <t><spanx style="strong">ALPN Protocols (Type&nbsp;0x01)</spanx> – Value: comma-separated list of ALPN identifiers as defined in [RFC7301]. Example: “dot,h2” for DoT and HTTP/2.</t>
    <t><spanx style="strong">DoH Path Template (Type&nbsp;0x02)</spanx> – Value: URI path for DoH requests (UTF-8). Example: “/dns-query”.</t>
  </list>
    <t>
    When multiple Option 135 instances are received for the same server (specified by the Server Selector)
    with the same Param Type, the client MUST use the parameter value from the last received Option 135
    in the IPCP negotiation. This follows the standard negotiation behavior of IPCP (RFC 1332), ensuring determinism.
    Parameter options are processed independently per server. If a client receives an unrecognized Param Type
    or an invalid value, it SHOULD ignore that specific option and continue processing other valid options.
  </t>
</section>
</section>

<section title="Negotiation Process">
 <t>
    This section specifies the state machine and processing rules for encrypted
    DNS option negotiation. The procedure follows standard IPCP negotiation
    defined in <xref target="RFC1332"/>, with additional validation specific to
    encrypted DNS parameters.
  </t>

<section title="Client Request Behavior">
    <t>1. The client MAY include Option&nbsp;133 and/or 134 in Configure-Request</t>
    <t>2. To request configuration:</t>
    <list style="symbols">
      <t>Set ADN Length = 0</t>
      <t>Set Port Number = 0</t>
      <t>Omit ADN field</t>
    </list>
    <t>3. The client MAY include Option&nbsp;135 to request specific parameters</t>
  </section>

  <section title="Server Response Behavior">
    <t>1. If server supports encrypted DNS:</t>
    <list style="symbols">
      <t>For valid requests: Respond with Configure-Ack</t>
      <t>For invalid/empty requests: Respond with Configure-Nak containing valid configuration</t>
    </list>
    <t>2. If server doesn't support encrypted DNS:</t>
    <list style="symbols">
      <t>Respond with Configure-Reject</t>
    </list>
      <t>If the client includes a DNS Encryption Parameters Option (Option 135) in a Configure-Request, the server responds in one of the following ways:</t>
  <list style="symbols">
    <t>If the server supports <spanx style="strong">all</spanx> of the requested parameters, it MUST include them unchanged in a Configure-Ack.</t>
    <t>If the server supports a <spanx style="strong">subset</spanx> of the requested parameters, or supports alternative values for them, it SHOULD respond with a Configure-Nak containing a valid DNS Encryption Parameters Option with the parameters (and values) it is willing to support.</t>
    <t>If the server does not support encrypted DNS negotiation at all, or does not recognize Option 135, it SHOULD respond with a Configure-Reject for this option.</t>
  </list>
  </section>

  <section title="Configuration Priority">
     <t>When both Options&nbsp;129 (RFC&nbsp;1877) and 133 or 134 are present:</t>
    <list style="numbers">
      <t>Clients SHOULD prefer encrypted DNS (Option&nbsp;133/134)</t>
      <t>Clients MAY fall back to plaintext DNS if encrypted connection fails</t>
    </list>
  </section>
</section>

<section title="Security Considerations">
  <section title="Authentication">
    <list style="symbols">
     <t>Clients MUST validate the server's TLS certificate against the provided ADN</t>
     <t>Clients SHOULD perform standard TLS certificate validation by checking that the server's certificate is valid, chains to a trusted root, and matches the provided Authentication Domain Name (ADN)</t>
    </list>
  </section>

  <section title="Privacy Protection">
    <list style="symbols">
      <t>While the options themselves may be transmitted in cleartext, they enable encrypted DNS transport</t>
      <t>Implementations SHOULD use PPP encryption (e.g., MPPE) when available</t>
    </list>
  </section>

  <section title="Downgrade Attacks">
    <list style="symbols">
      <t>Active attackers may remove encrypted DNS options from IPCP negotiation</t>
      <t>Clients SHOULD maintain a history of successful encrypted DNS usage and warn when unexpectedly unavailable</t>
    </list>
  </section>

  <section title="Client Flexibility">
    <t>The DNS resolver addresses negotiated via PPP IPCP are intended as configuration suggestions. Implementations MAY allow users to manually override these settings or fall back to other resolvers, as PPP itself does not enforce DNS usage. This flexibility ensures that end-user choice is not restricted by network-provided configuration.</t>
  </section>

</section>

<section title="IANA Considerations">
<t>This document has no IANA actions.</t>
</section>

<section title="Acknowledgments">
<t>This work is supported by the National Key Research and Development Program of China&nbsp;(No.&nbsp;2022YFB3103000). The authors would like to thank Dan Wing from Cisco for his useful input.</t>
</section>

</middle>

<back>
<references title="Normative References">
<reference anchor="RFC1661">
<front>
<title>The Point-to-Point Protocol (PPP)</title>
<author><organization>IETF</organization></author>
<date year="1994" month="July"/>
</front>
<seriesInfo name="RFC" value="1661"/>
</reference>
<reference anchor="RFC1332">
<front>
<title>PPP Internet Protocol Control Protocol</title>
<author><organization>IETF</organization></author>
<date year="1992" month="May"/>
</front>
<seriesInfo name="RFC" value="1332"/>
</reference>
<reference anchor="RFC2119">
<front>
<title>Key words for use in RFCs</title>
<author><organization>IETF</organization></author>
<date year="1997" month="March"/>
</front>
<seriesInfo name="RFC" value="2119"/>
</reference>
<reference anchor="RFC7301">
<front>
<title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
<author><organization>IETF</organization></author>
<date year="2014" month="July"/>
</front>
<seriesInfo name="RFC" value="7301"/>
</reference>
<reference anchor="RFC8174">
<front>
<title>Ambiguity of Uppercase</title>
<author><organization>IETF</organization></author>
<date year="2017" month="May"/>
</front>
<seriesInfo name="RFC" value="8174"/>
</reference>
<reference anchor="RFC7858">
<front>
<title>Specification for DNS over TLS</title>
<author><organization>IETF</organization></author>
<date year="2016" month="May"/>
</front>
<seriesInfo name="RFC" value="7858"/>
</reference>
<reference anchor="RFC8484">
<front>
<title>DNS Queries over HTTPS</title>
<author><organization>IETF</organization></author>
<date year="2018" month="October"/>
</front>
<seriesInfo name="RFC" value="8484"/>
</reference>
<reference anchor="RFC9250">
<front>
<title>DNS over Dedicated QUIC</title>
<author><organization>IETF</organization></author>
<date year="2022" month="May"/>
</front>
<seriesInfo name="RFC" value="9250"/>
</reference>
<reference anchor="RFC2516">
<front>
<title>PPP over Ethernet</title>
<author><organization>IETF</organization></author>
<date year="1999" month="February"/>
</front>
<seriesInfo name="RFC" value="2516"/>
</reference>
</references>

<references title="Informative References">
<reference anchor="RFC1877">
<front>
<title>PPP IPCP Extensions for Name Server Addresses</title>
<author><organization>IETF</organization></author>
<date year="1995" month="December"/>
</front>
<seriesInfo name="RFC" value="1877"/>
</reference>
<reference anchor="RFC9460">
<front>
<title>Service Binding via DNS</title>
<author><organization>IETF</organization></author>
<date year="2023" month="November"/>
</front>
<seriesInfo name="RFC" value="9460"/>
</reference>
</references>

<section title="Future Considerations" numbered="false">
  <t>This document focuses on PPP IPCP. Future work may explore analogous extensions for other configuration protocols, such as IPv6 Router Advertisements (RAs) or DHCP, to enable encrypted DNS negotiation in those contexts.</t>
</section>

<section title="Appendix A. Example Negotiations" numbered="false">

  <section title="A.1. Basic DoT Configuration" numbered="false">
    <figure>
      <artwork><![CDATA[
Client: Configure-Request
  Option 133: 
    Type: 133, Length: 10, Protocol: 1 (DoT), 
    ADN Len: 0, Port: 0

Server: Configure-Nak
  Option 133:
    Type: 133, Length: 22, Protocol: 1 (DoT),
    ADN Len: 14, ADN: "dot.example.com",
    Port: 853
]]></artwork>
    </figure>
  </section>

  <section title="A.2. DoH with Custom Path" numbered="false">
    <figure>
      <artwork><![CDATA[
Client: Configure-Request
  Option 133: 
    Type: 133, Length: 10, Protocol: 2 (DoH), 
    ADN Len: 0, Port: 0
  Option 135:
    Type: 135, Length: 8,
    Param Type: 2 (DoH Path), Value: "/dns-query"

Server: Configure-Ack
  Option 133:
    Type: 133, Length: 22, Protocol: 2 (DoH),
    ADN Len: 14, ADN: "doh.example.com",
    Port: 443
  Option 135:
    Type: 135, Length: 8,
    Param Type: 2 (DoH Path), Value: "/dns-query"
]]></artwork>
    </figure>
  </section>

</section>
</back>
</rfc>