One document matched: draft-ietf-weirds-redirects-04.xml


<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->

<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2616 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml">
<!ENTITY I-D.ietf-weirds-using-http SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-weirds-using-http-01.xml">
<!ENTITY I-D.ietf-weirds-rdap-query SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-weirds-rdap-query-02.xml">
<!ENTITY I-D.ietf-weirds-bootstrap SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-weirds-bootstrap-03.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="info" docName="draft-ietf-weirds-redirects-04" ipr="trust200902">
<!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->
<!-- ***** FRONT MATTER ***** -->
<front>
<!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->
<title abbrev="RDAP Redirection Service">Redirection Service for Registration Data Access Protocol</title>
<!-- add 'role="editor"' below for the editors if appropriate -->
<!-- Another author who claims to be an editor -->
<author fullname="Carlos M. Martinez" initials="C.M." role="editor" surname="Martinez">
<organization>LACNIC</organization>
<address>
<postal>
<street>Rambla Mexico 6125</street>
<city>Montevideo</city>
<region></region>
<code>11400</code>
<country>Uruguay</country>
</postal>
<phone>+598-2604-2222</phone>
<email>carlos@lacnic.net</email>
<!-- uri and facsimile elements may also be added -->
</address>
</author>
<!-- Another author who claims to be an editor -->
<author fullname="Linlin Zhou" initials="L." role="editor" surname="Zhou">
<organization>CNNIC</organization>
<address>
<postal>
<street>No. 4, South 4th Steet, Zhongguancun</street>
<city>Beijing</city>
<region></region>
<code>100190</code>
<country>China</country>
</postal>
<phone>+8610-5881-2677</phone>
<email>zhoulinlin@cnnic.cn</email>
<!-- uri and facsimile elements may also be added -->
</address>
</author>
<author fullname="Gerardo Rada" initials="G." surname="Rada">
<organization>LACNIC</organization>
<address>
<postal>
<street>Rambla Mexico 6125</street>
<city>Montevideo</city>
<region></region>
<code>11400</code>
<country>Uruguay</country>
</postal>
<phone>+598-2604-2222</phone>
<email>gerardo@lacnic.net</email>
<!-- uri and facsimile elements may also be added -->
</address>
</author>
<date month="July" year="2014"/>
<!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->
<!-- Meta-data Declarations -->
<area>General</area>
<workgroup>Internet Engineering Task Force</workgroup>
<!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->
<keyword>weirds</keyword>
<keyword>whois</keyword>
<keyword>rdap</keyword>
<keyword>redirection</keyword>
<!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->
<abstract>
	<t>The traditional WHOIS protocol has several important shortcomings,
   and over the past few years several approaches to a better
   Registration Data Access Protocol (RDAP) have been discussed and
   proposed.</t>
   
   <t>It is worth noting that the term WHOIS is sometimes used
   interchangeably to mean either (a) the registration data itself or
   (b) the protocol used to access registration data</t>

   <t>Among these shortcomings, different registries operate different
   WHOIS services.  For users this means that several WHOIS queries to
   different registries may be necessary in order to obtain data for a
   given resource.</t>

   <t>This document describes a redirection service for RDAP queries.  This
   service allows clients to query a single RDAP service and expect
   either an authoritative answer or a redirection hint pointing to
   another, possibly authoritative, RDAP server.</t>

   <t>The solution implemented proposed here applies to Regional Internet
   Registries(RIRs) and Domain Name Registries(DNRs).</t>

</abstract>
</front>


<middle>
<section title="Introduction">
    <t>A user interested in obtaining registration information for a given
    number or domain resource normally uses the WHOIS service provided by
    the RIRs and DNRs.</t>

    <t>In order to avoid having to query several databases until obtaining
    an answer, some approaches have been discussed and implemented in the
    past, most notably the Joint WHOIS [lacnic-joint-whois] initiative.
    However, among other shortcomings, Joint WHOIS is implemented using
    proxies and server-side referrals.</t>

    <t>The RDAP protocol (draft-ietf-weirds-using-http
    [I-D.ietf-weirds-using-http]) makes it comparatively easy to
    implement client-side redirects based on normal HTTP 1.1 semantics
    and behavior.</t>

    <t>The goal of this I-D is to describe an implementation of an RDAP
    redirection service and to encourage discussion on the topic of
    redirects in this problem domain.</t>
	
	
	<section title="Requirements Language">
		<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
		  "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
		  document are to be interpreted as described in <xref
		  target="RFC2119">RFC 2119</xref>.</t>
	  </section>

  <section anchor="rest" title="The REST Approach to Web Services">

      <t>While a full introduction to REST and RESTful
      interfaces is out of the scope of this document it is important to
      note that these interfaces employ the verbs defined in HTTP (GET,
      POST, HEAD, DELETE) and HTTP response codes to signal the semantics
      and outcomes of an operation.</t>

      <t>As WHOIS is a read-only service only the GET and HEAD verbs are
      usually implemented.</t>

      <t>HTTP status codes provide signaling for errors and other conditions,
      including the concept of "client-side redirection" as outlined below.</t>

  </section> <!-- rest-->    

  <section anchor="rest_whois_redir" title="Request Redirection for RDAP Queries">
      <t>Each RDAP server should answer directly only those queries for which
      it is authoritative.  In this case, being authoritative equals
      "having direct access to a given registry database".</t>

      <t>For all other queries, a RDAP server could provide a 301 MOVED
      PERMANENTLY redirect answer pointing to an URL hosted on a different
      RDAP server.</t>

      <t>As all requests are to be performed employing HTTP GETs, a user agent
      can transparently follow the HTTP 30x redirection hints ([RFC2616])
      until obtaining a non-error answer (HTTP 20x) or an unrecoverable
      error condition (HTTP 40x or 50x).</t>
  </section> <!-- rest_whois_redir-->

  <section anchor="bootstrapping" title="The Redirection Table. The Bootstrap Problem.">
      <t>For the redirection table lookup function, the redirector can either have pre-populated local table or have access to a service provided by some form of directory service. How either this local table or directory service is fed is known as the "bootstrap problem".</t>

      <t>RDAP Bootstrap is described in <xref target="I-D.ietf-weirds-bootstrap">draft-ietf-weirds-bootstrap</xref></t>
      
  </section> <!-- bootstrapping -->  

</section>

<section anchor="redir_uses" title="Architectural Use Cases of Redirects in RDAP">

<section anchor="joint_whois" title="A Joint RDAP Tree through HTTP Redirection">
      
      <t>In an scenario where a client does not know which registry can provide authoritative answers***TBC</t>

      <t>
        When an RDAP server receives a query for which it does not have an authoritative answer
        to provide, it MAY provide an HTTP 30x redirection message pointing the client
        to a redirection-only RDAP server, which in turn can provide further redirections
        guiding the client to an authoritative server.
      </t>

	   <t>
        The redirect-only server is responsible for tracking and returning the authoritative sources 
        for IP, AS, domain name, name server or entity queries. All the query format are described 
        in the <xref target="I-D.ietf-weirds-rdap-query">draft-ietf-weirds-rdap-query</xref>. We call this
        redirect server "the redirector".
      </t>

    	<t>The redirect server needs access to data sources that, given a queried resource, provide a pointer
    to the authoritative RDAP server. For lack of a better name, we will call this data source the "redirection table".</t>
        
      <t>Assuming the redirector has access to a redirection table, the following pseudo code describes
      its expected behaviour:</t>
        
<figure align="center" anchor="redir_state_machine">
<artwork align="center"><![CDATA[
          while(true) {
              query = read_query_from_network()
              auth_rdap_svr = redirect_table_lookup (query.resource)
              if (auth_rdap_svr != null) {
                   write_http_301(auth_rdap_svr)
              } else {
                  write_http_404("resource not in redirect table")
              }
          }
	            ]]></artwork>
<postamble>Redirector state machine</postamble>
</figure>

<t><xref target="jwhois_tree" /> shows the general scheme of a single RDAP Redirection Service serving three different RIRs standalone RDAPs while providing a seamless query interface to clients.</t>
<figure align="center" anchor="jwhois_tree">
<artwork align="center"><![CDATA[
              ......................
              |                    |
              |  RDAP REDIRECTOR   |
              |                    |
              `....................'
                    _,  |   ._
                 ,,'    |     `.
              ,-'       |       `-.
           ,-'          |          `._
       _,-'             |             `.
     .'                 |               `-.
+-----------Y    +-------------.    ,------------b
|   REGY1   |    |  REGY2      |    |   REGY3    |
|           |    |             |    |            |
'`'''''''''''    '`''''''''''''     '`''''''''''''
	            ]]></artwork>
<postamble>RDAP Joint WHOIS Tree.</postamble>
</figure>
<t><xref target='redir_example' /> shows how HTTP 301 redirection hints guide a client looking
		   for registration data for the IPv4 address 23.1.1.1 (administered by ARIN) from
		   LACNIC's WHOIS, the redirector and finally ARIN's WHOIS.</t>
<figure align="center" anchor="redir_example">
<artwork align="left"><![CDATA[
                       LACNIC      REDIRECTOR       ARIN
                       RDAP        RDAP             RDAP
                         .           .               .
     Q: 23.1.1.1? ---->  |           |               |
                         |           |               |
       <-- HTTP 301 ---  |           |               |
      ('Try Redirector') |           |               |
                         |           |               |
                         |           |               |
     Q: 23.1.1.1? -----------------> |               |
                                     |               |
        <---------- HTTP 301 --------|               |
               ('Try ARIN RDAP')     |               |
                                     |               |
                                                     |
       Q: 23.1.1.1? -------------------------------> |
                                                     |
          <---------- HTTP 200 --------------------- |
                 (WHOIS response is returned)        |
                                                     |
                                                     |
                                                     .
            ]]></artwork>
<postamble>Querying WHOIS data for 23.1.1.1</postamble>
</figure>
</section> <!-- joint_whois -->

<section anchor="helper_servers" title="Helper Service for Constrained RDAP Clients">
  <t>It is expected that a significant portion of RDAP clients will be written for and operate under constrained
    environments. For example, simple Javascript clients written to run inside a web browser's sandbox cannot perform 
    arbitrary DNS queries nor open sockets, thus limiting the ability of the client to actually access bootstrapping data</t>
<t>TBD</t>
</section> <!-- helper servers -->

</section><!-- use cases -->

<section anchor="security_considerations" title="Security Considerations">
  <t>
    HTTP 30x-based redirection could offer an attack vector for a Man-in-the-Middle type of attack, where 
  the adversary modifies the redirection URL offered by the server to the client.
    </t>
  <t>
      For example, an attacker able to modify HTTP traffic could modify the redirect URL 
      from http://www.labs.lacnic.net/restwhois/rwhois_redir/ip/23.1.1.1 and change it into
       http://www.labs.somenic.net/restwhois/rwhois_redir/ip/23.1.1.1, where bogus information
     can be offered to the client.
    </t>
  <t>This particular type of attack can be prevented by usint HTTPS for the RDAP connection. However, this certainly
    places a load burden upon the servers.</t>
  <t>
      While security practices are outside the scope of this document, the authors believe it 
      is important to identify such problematic use cases to any DNR or RIR that may implement the redirection WHOIS service.
    </t>

<section title='Loops in Redirection'>
   <t>When redirection is used there is always the risk that bogus user-
   agents and applications or malicious user can create loops that in
   turn may become Denial of Service attacks.</t>

   <t>Commonly used user agents (including HTTP libraries) have loop
   detection features that are deemed sufficient for breaking loops in
   RDAP.</t>
</section>

</section>

<!-- This PI places the pagebreak correctly (before the section title) in the text output. -->
<?rfc needLines="8" ?>
</middle>
<!--  *****BACK MATTER ***** -->
<back>
<!-- References split into informative and normative -->
<!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->
<references title="Normative References">
      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
      &RFC2119;

      
</references>

<references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->
      
      &RFC2616;
      
      &I-D.ietf-weirds-using-http;
      
      &I-D.ietf-weirds-rdap-query;
      
      &I-D.ietf-weirds-bootstrap;
      
      <reference anchor="lacnic-joint-whois" target="ftp://anonymous@ftp.registro.br/pub/gter/gter20/02-jwhois-lacnic.pdf">
        <front>
          <title>LACNIC Joint WHOIS Implementation</title>

          <author>
            <organization>LACNIC</organization>
          </author>

          <date year="2005" />
        </front>
      </reference>      
      
	</references>
</back>
</rfc>

PAFTECH AB 2003-20262026-04-24 01:09:42