<?xml version="1.0" encoding="utf-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="2" ipr="trust200902" docName="draft-albanna-regext-rdap-deleg-05" submissionType="IETF" category="std" xml:lang="en" indexInclude="true" consensus="true">

<front>
  <title abbrev="RDAP DELEG Extension">RDAP Extension for DNS DELEG</title>
  <seriesInfo value="draft-albanna-regext-rdap-deleg-05" stream="IETF" status="standard" name="Internet-Draft"/>
  <author initials="Z." surname="AlBanna" fullname="Zaid AlBanna">
    <organization>Verisign</organization>
    <address>
      <postal>
        <street>12061 Bluemont Way</street>
        <city>Reston</city>
        <code>20190</code>
        <country>US</country>
        <region>VA</region>
      </postal>
      <email>zalbanna@verisign.com</email>
    </address>
  </author>
  <author initials="S." surname="Hollenbeck" fullname="Scott Hollenbeck">
    <organization>SAHollenbeck LLC</organization>
    <address>
      <postal>
        <street></street>
        <city>Nokesville</city>
        <code>20181</code>
        <country>US</country>
        <region>VA</region>
      </postal>
      <email>sah@sahollenbeck.com</email>
    </address>
  </author>
  <date/>
  <area>Internet</area>
  <workgroup>Registration Extensions (REGEXT)</workgroup>

<abstract>
 <t>This document describes an extension of the Registration Data Access Protocol (RDAP) that includes DNS DELEG values in responses to RDAP domain object queries.</t>
</abstract>

</front>

<middle>

<section anchor="introduction"><name>Introduction</name>
<t>
This document describes an extension of the Registration Data Access Protocol (RDAP) that includes DNS DELEG values in responses to RDAP domain object queries as described in section 5.3 of RFC 9083 <xref target="RFC9083"/>. The definition of DNS DELEG information is based on concepts described in Internet-Draft "Extensible Delegation for DNS" <xref target="DELEG"/> and Internet-Draft "Extensible Provisioning Protocol (EPP) mapping for DELEG records" <xref target="brown-epp-deleg"/>. This draft is subject to changes that may take place in [DELEG] and [brown-epp-deleg] as they are developed. 
</t>

</section>

<section><name>Conventions used in this document</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 anchor="rdap-conformance"><name>RDAP Conformance</name>
<t>RDAP responses that contain values described in this document MUST indicate conformance with this specification by including an rdapConformance (<xref target="RFC9083"/>) value of "dnsDeleg". The information needed to register this value in the RDAP Extensions Registry is described in <xref target="iana-considerations"/>.</t>
       
      <figure anchor="rdapConformance_example">
        <preamble>Example rdapConformance structure with extension specified:</preamble>
        <artwork xml:space="preserve">
   "rdapConformance" : 
     [
       "rdap_level_0",
       "dnsDeleg"
     ]
        </artwork>
      </figure>
</section>


<section anchor="rdap-response-specification"><name>RDAP Response Specification</name>
<t> This specification describes a new data structure that is used to return DNS DELEG information in an RDAP domain response. A new element, "DelegInfos", is defined to return a representation of DNS DELEG and DELEGPARAMS records. As described in Internet-Draft "Extensible Delegation for DNS" <xref target="DELEG"/>, a DELEG record is based on "SvcParams" for the SVCB record type RFC 9460 <xref target="RFC9460"/> but differs from it by not having the "SvcPriority" and "TargetName" fields. The "DelegInfos" data structure is a JSON array whose members contain lists of key:value pairs (DelegInfoKey:DelegInfoValue) that describe DNS DELEG record information associated with a registered domain name. 
</t>

<t>TBD: a full specification of the key-value pairs that can appear in a DelegInfos object. It may be possible to cite specific text from <xref target="DELEG"/> and/or <xref target="brown-epp-deleg"/>; we need to see how those specifications evolve.</t>
</section>

<section><name>Examples of the "DelegInfos" object </name>
<t>
Example 1: A DELEG record type based on a section A.1 of DELEG <xref target="DELEG"/>:
</t>

<sourcecode><![CDATA[
"dnsDeleg_DelegInfos": [
 {
  "server-ipv6": "3fff::33"
  "include-delegparam": ["config2.example.net","cname.example.org","Acfg.example.org"]
 }
]
]]></sourcecode>

<t>
Example 2: A DELEG record for domain names Acfg.example.org and subcfg.example.org, based on section A.2 of DELEG <xref target="DELEG"/>:
</t>
   
<sourcecode><![CDATA[
 "dnsDeleg_DelegInfos": [
  {      
   "server-ipv6": "2001:db8::6666"
   "server-name": "ns3.example.org."
   "include-delegparam": ["subcfg.example.org."]
  },     
  {    
    "server-name": "subcfg.example.org."
    "server-ipv4": "203.0.113.1"
    "server-ipv6": "3fff::2"
  }
 ]   
]]></sourcecode>

<t>
Example 3: A DELEG record for domain name config2.example.org, based on section A.3 of DELEG <xref target="DELEG"/>:
</t>

<sourcecode><![CDATA[
"dnsDeleg_DelegInfos": [
 {
  "server-name": "b.example.org."
 }
]
]]></sourcecode>

<t>
Example 4: An RDAP response that includes a DelegInfos object based on section A.4.3.1 of DELEG <xref target="DELEG"/>:
</t>

<sourcecode><![CDATA[{
  "objectClassName": "domain",
  "handle": "2336799_SomeHandle",
  "ldhName": "foo.example.",
  "links": [
    ...
  ],
  "status": [
    "client delete prohibited",
    "client transfer prohibited",
    "client update prohibited"
  ],
  "entities": [
    ...
  ],
  "events": [
    ...
  ],
  "secureDNS": {
    ...
  },
  "dnsDeleg_DelegInfos": [
     {
        "server-ipv4": ["192.0.2.1",]
        "server-ipv6": ["2001:db8::1",]
        "server-name": ["ns2.example.net","ns3.example.net"]
     }
  ],
  "nameservers": [
    {
      "objectClassName": "nameserver",
      "ldhName": "ns2.example.net"
    },
    {
      "objectClassName": "nameserver",
      "ldhName": "ns3.example.net"
    }
  ],
  "rdapConformance": [
    "rdap_level_0",
    "dnsDeleg"
  ],
  "notices": [
    ...
  ]
}]]></sourcecode>

<t>
Example 5: An RDAP response that includes a DelegInfos object based on section A.4.3.2 of DELEG <xref target="DELEG"/>:
</t>
<sourcecode><![CDATA[{
  "objectClassName": "domain",
  "handle": "2336799_SomeHandle",
  "ldhName": "foo.test",
  "links": [
    {
      ...
    }
  ],
  "status": [
    "client delete prohibited",
    "client transfer prohibited",
    "client update prohibited"
  ],
  "entities": [
    ...
  ],
  "events": [
    ...
  ],
  "secureDNS": {
    ...
  },
  "dnsDeleg_DelegInfos": [
     {
        "server-ipv6": ["3fff::33",]
        "server-name": ["Acfg.example.org","config2.example.net"]
     }
  ],
  "nameservers": [
    {
      "objectClassName": "nameserver",
      "ldhName": "Acfg.example.org"
    },
    {
      "objectClassName": "nameserver",
      "ldhName": "config2.example.net"
    }
  ],
  "rdapConformance": [
    "rdap_level_0",
    "dnsDeleg"
  ],
  "notices": [
    ...
  ]
}]]></sourcecode>
</section>

<section anchor="iana-considerations"><name>IANA Considerations</name>
<t>
IANA is requested to register the following value in the RDAP Extensions Registry:
</t>

<t>
<strong>Extension identifier:</strong> <tt>dnsDeleg</tt>
</t>

<t>
<strong>Registry operator:</strong> Any
</t>

<t>
<strong>Published specification:</strong> this document
</t>

<t>
<strong>Contact:</strong> IETF &lt;<eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref>&gt;
</t>

<t>
<strong>Intended usage:</strong> this extension describes how DNS DELEG record values can be included in RDAP responses.
</t>
</section>

<section anchor="security-cons"><name>Security Considerations</name>
<t>
The Security Considerations described in RFC 9083 <xref target="RFC9083"/> are applicable to this extension.
</t>
</section>

<section anchor="acknowledgements"><name>Acknowledgments</name>
<t>
The following individuals have provided feedback and contributions to the content and direction of this document:

James Gould 

</t>
</section>

</middle>

<back>
 <references>
 <name>Normative References</name>
 <reference anchor="DELEG" target="https://datatracker.ietf.org/doc/draft-dnsop-deleg/">
 <front>
 <title>Extensible Delegation for DNS</title>
 <author fullname="P. Špaček" initials="P." surname="Špaček"/>
 <author fullname="R. Weber" initials="R." surname="Weber"/>
 <author fullname="D. Lawrence" initials="D." surname="Lawrence"/>
 <date day="23" month="July" year="2026"/>
 <abstract>
 <t>This document specifies a new extensible method for the delegation of authority for a domain in the Domain Name System (DNS) using DELEG and DELEGPARAM records. A delegation in the DNS enables efficient and distributed management of the DNS namespace. The traditional DNS delegation is based on NS records which contain only hostnames of servers and no other parameters. In classic DNS, both parent and child zones contain copies of NS delegation records, which can potentially be out of sync and confusing. The new delegation records are extensible, can be secured with DNSSEC, and eliminate the problem of having two sources of truth for delegation information.</t>
 </abstract>
 </front>
 <seriesInfo name="Internet-Draft" value="draft-dnsop-deleg"/>
 </reference>
 <reference anchor="brown-epp-deleg" target="https://datatracker.ietf.org/doc/draft-brown-epp-deleg/">
 <front>
 <title>Extensible Provisioning Protocol (EPP) mapping for DELEG records</title>
 <author fullname="Gavin Brown" initials="G." surname="Brown">
 <organization>ICANN</organization>
 </author>
 <author fullname="Paul Hoffman" initials="P." surname="Hoffman">
 <organization>ICANN</organization>
 </author>
 <date day="21" month="July" year="2026"/>
 <abstract>
 <t>This document describes an extension to the Extensible Provisioning Protocol ([STD69]) which allows clients to provision DELEG records for domain names.</t>
 </abstract>
 </front>
 <seriesInfo name="Internet-Draft" value="draft-brown-epp-deleg"/>
 </reference>
 <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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="RFC9083" target="https://www.rfc-editor.org/info/rfc9083">
 <front>
 <title>JSON Responses for the Registration Data Access Protocol (RDAP)</title>
 <author fullname="S. Hollenbeck" initials="S." surname="Hollenbeck"/>
 <author fullname="A. Newton" initials="A." surname="Newton"/>
 <date month="June" year="2021"/>
 <abstract>
 <t>This document describes JSON data structures representing registration information maintained by Regional Internet Registries (RIRs) and Domain Name Registries (DNRs). These data structures are used to form Registration Data Access Protocol (RDAP) query responses. This document obsoletes RFC 7483.</t>
 </abstract>
 </front>
 <seriesInfo name="STD" value="95"/>
 <seriesInfo name="RFC" value="9083"/>
 <seriesInfo name="DOI" value="10.17487/RFC9083"/>
 </reference>
 </references>
 <references>
 <name>Informative References</name>
     <reference anchor="RFC9460" target="https://www.rfc-editor.org/info/rfc9460">
     <front>
     <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
     <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
     <author fullname="M. Bishop" initials="M." surname="Bishop"/>
     <author fullname="E. Nygren" initials="E." surname="Nygren"/>
     <date month="November" year="2023"/>
     <abstract>
     <t>This document specifies the "SVCB" ("Service Binding") 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 are extensible to support future uses (such as 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 (see RFC 9110, "HTTP Semantics").  By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
     </abstract>
     </front>
     <seriesInfo name="BCP" value="78"/>
     <seriesInfo name="RFC" value="9460"/>
     <seriesInfo name="DOI" value="10.17487/RFC9460"/>
 </reference>
 </references>

 <section numbered="true" toc="default">
    <name>Change History</name>
    <section anchor="change-04-to-05" numbered="true" toc="default">
      <name>Change from 04 to 05</name>
       <ol spacing="compact" type="1">
          <li>Removed reference to the members of the list object, priority and target</li>
          <li>Updated JSON data structure name from delegInfo to DelegInfos as per draft-ietf-deleg-11</li>
          <li>Changed examples to be based on the examples provided in draft-ietf-deleg-11</li>
          <li>Reorganized references.</li>
          <li>Added a change history section</li>
       </ol>
    </section>
 </section>

</back>
</rfc>
