<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
    <!ENTITY rfc2119 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
]>

<rfc category="info" ipr="trust200902" docName="draft-blanchet-weirds-bootstrap-00.txt">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<?rfc compact="yes" ?>

<front>
<title abbrev="Finding Authoritative RDAP server">Finding the Authoritative Registration Data (RDAP) Server</title>
<author initials='M.' surname="Blanchet" fullname='Marc Blanchet'>
  <organization>Viagenie</organization>
  <address>
    <postal>
      <street>246 Aberdeen</street>
      <city>Quebec</city>
      <region>QC</region>
      <code>G1R 2E1</code>
      <country>Canada</country>
    </postal>
    <email>Marc.Blanchet@viagenie.ca</email>
    <uri>http://www.viagenie.ca</uri>
  </address>
</author>
<date/>
<abstract>
<t>This document specifies a method to find which Registration Data Access Protocol (RDAP) server is authoritative to answer queries for a requested scope, such as domain names, IP addresses or Autonomous System numbers.</t>
</abstract>
</front>
<middle>
  <section title="Introduction">
<t>Querying and retrieving registration data from registries are defined in the Registration Data Access Protocol(RDAP)<xref target="I-D.ietf-weirds-rdap-query"/><xref target="I-D.ietf-weirds-using-http"/><xref target="I-D.ietf-weirds-json-response"/>. These documents do not specify where to send the queries. This document specifies a method to find which server is authoritative to answer queries for the requested scope.</t>
<t>(author note: should it have some text on various possibilities that have been discussed, such as IETF84...?)</t>
<t>The proposed mechanism starts with a well-known domain suffix (rdap.arpa) managed by IANA. Below the suffix, each scope is delegated to the entity responsible for the registration data. A RDAP client constructs a DNS query based on the scope of the user query and receives from the DNS the address(es) of the servers to contact to send the registration data query using the RDAP protocol.</t>
<t>The use of DNS provides the scaling and delegation properties needed for this large scale registration data access.</t>
  </section>
  <section title="Domain Name Registry">
    <t>The domain names authoritative registration data servers are found by concatenating the queried FQDN to the domain suffix: "domain.rdap.arpa." and then generating DNS address queries for that concatenated domain.</t>
    <t>For example, a RDAP query for example.com generates a DNS request to example.com.domain.rdap.arpa. IDN labels are in their A-label form<xref target="RFC5891"/>.</t>
  </section>
  <section title="Internet Numbers Registry">
    <section title="IPv4 Address Space">
    <t>The IPv4 address space authoritative registration data servers are found by concatenating the reversed IPv4 address to the domain suffix: "ip4.rdap.arpa." and then generating A/AAAA DNS address queries for that concatenated domain. The reversed IPv4 address method is identical to the in-addr.arpa. tree method (<xref target="RFC1035"/> section 3.5).</t>
    <t>For example, a query for 192.9.200.0/24 generates a DNS request to 200.9.192.ip4.rdap.arpa.</t>
    </section>
    <section title="IPv6 Address Space">
    <t>The IPv6 address space authoritative registration data servers are found by concatenating the reversed full IPv6 address to the domain suffix: "ip6.rdap.arpa." and then generating A/AAAA DNS address queries for that concatenated domain. The reversed full IPv6 address method is identical to the ip6.arpa. tree method (<xref target="RFC1886"/> section 2.5).</t>
    <t>For example, a query for 2001:db8::/32 generates a DNS request to 8.b.d.0.1.0.0.2.ip6.rdap.arpa.</t>
    </section>
    <section title="Autonomous Systems">
    <t>The Autonomous Systems (AS) authoritative registration data servers are found by concatenating the AS number to the domain suffix: "autnum.rdap.arpa." and then generating A/AAAA DNS address queries for that concateneted domain.</t>
    <t>For example, a query for AS 65411 generates a DNS request to 65411.autnum.rdap.arpa.</t>
    </section>
  </section>
  <section title="Nameserver">
   <t>TBD</t>
  </section>
  <section title="Entity">
   <t>TBD</t>
  </section>
  <section title="A and AAAA Queries">
    <t>The RDAP client SHOULD not decide which of A and/or AAAA queries is sent as the DNS RR query. The client should use standard IP-independent APIs such as <xref target="RFC3493"/>.</t>
  </section>
  <section title="Processing NXDOMAIN Considerations">
   <t>When a RDAP client receives a NXDOMAIN answer for the query, which means the queried domain does not exist, then the client removes the leftmost label of the domain and restart the query. The client redo this until either a positive answer or the domain to query is the root of the scope (i.e. {domain,ip4,ip6,autnum}.rdap.arpa). In this case, there is no such registration server available for the requested data and an error should be pushed to the end user.</t>
   <t>For example, if the initial query is 8.b.d.0.1.0.0.2.ip6.rdap.arpa. and the answer is NXDOMAIN, then the new query is b.d.0.1.0.0.2.ip6.rdap.arpa. and if the answer is still NXDOMAIN, then a new query to b.d.0.1.0.0.2.ip6.rdap.arpa. is tried. The removal of leftmost labels continues until either a positive answer is received or the root of the scope (ip6.rdap.arpa in this example) is reached.</t>
  </section>
  <section title="Querying to the Authoritative Server">
   <t>After finding the authoritative server IP address, the client connects using the appropriate transport and application protocol to do the RDAP query<xref target="I-D.ietf-weirds-rdap-query"/>. The following is a non-normative example of the processing.</t>
   <t>If the query is to find the registration data for "example.com", and the autoritative server is reachable by 2001:db8:1:1::1 over HTTP<xref target="I-D.ietf-weirds-using-http"/>, then the following steps will happen:
    <list style="symbols">
     <t>client sends A and AAAA DNS requests for example.com.domain.rdap.arpa.</t>
     <t>NXDOMAIN is received.</t>
     <t>client sends A and AAAA DNS requests for com.domain.rdap.arpa.</t>
     <t>2001:db8:1:1:1 is received as the AAAA</t>
     <t>client sends an HTTP request to 2001:db8:1:1::1 with the following url:  http://com.domain.rdap.arpa/domain/example.com</t>
     <t>client receives registration data for that domain<xref target="I-D.ietf-weirds-json-response"/></t>
    </list>
    </t>
  </section>
  <section title="Deployment Considerations">
   <t>RDAP clients SHOULD not cache any server information, since that caching(and related expiration processing) is already happening at the DNS level. Therefore, the RDAP clients SHOULD always process a new RDAP request by querying the DNS to find the authoritative RDAP server as specified in this document.</t>
   <t>RDAP server operators may use various techniques such as anycast<xref target="RFC4786"/> to manage the load on their servers.</t>
   <t>To avoid walking up the tree, DNS wildcards may be used by the zone operators with the considerations discussed in <xref target="RFC4592"/>. Using the previous example, if the wildcard is defined for 1.0.0.2.ip6.rdap.arpa., the query to 8.b.d.0.1.0.0.2.ip6.rdap.arpa. will receive a positive answer instead of a negative answer. Therefore, no walking up the tree will be done to find the authoritative server.</t> 
   <t>This specification makes no assumption on how the authorities of registration data may work together on sharing their information for a common service. For example, the autnum zone may be wholly delegated to a single entity that acts on behalf of all regional registries for that space. The registration information of all autnum space can be provided by all registries to that single entity or redirection may be used at the HTTP level by the single operating entity to the servers of the authoritative registries.</t>
  </section>
  <section title="Security Considerations">
     <t>TBD</t>
  </section>
  <section title="IANA Considerations">
   <t>IANA is requested to do the following:
   <list style="symbols">
    <t>delegation of rdap.arpa as a zone file managed by IANA</t>
    <t>creation of the domain,ip4,ip6,autnum zones under rdap.arpa.</t>
    <t>process by which an authoritative registration data registry requests addition/modification/removal of delegation of the zone for the scope the registry owns.</t>
    <t>author note: more details needed</t>
   </list>
  </t>
  </section>
  <section title="Acknowledgements">
     <t>The weirds working group had multiple discussions on this topic, including a session during IETF 84. All the people involved in these discussions are herin acknowledged. Simon Perreault, Jean-Philippe Dionne, John Levine,  have provided input and suggestions to this document.</t>
  </section>
</middle>
<back>
  <references title="Normative References">
    <?rfc include="reference.I-D.ietf-weirds-rdap-query.xml"?>
    <?rfc include="reference.I-D.ietf-weirds-using-http.xml"?>
    <?rfc include="reference.I-D.ietf-weirds-json-response.xml"?>
    <?rfc include="reference.RFC.1035" ?>
    <?rfc include="reference.RFC.1886" ?>
    <?rfc include="reference.RFC.5891" ?>
  </references>
  <references title="Informative References">
    <?rfc include="reference.RFC.3493" ?>
    <?rfc include="reference.RFC.4592" ?>
    <?rfc include="reference.RFC.4786" ?>
  </references>
</back>
</rfc>
