<?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">
<!-- Dynamic Host Configuration Protocol -->
<!ENTITY RFC2131 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2131.xml">
<!-- Dynamic Host Configuration Protocol for IPv6 (DHCPv6) -->
<!ENTITY RFC3315 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3315.xml">
<!-- DNS Extensions to Support IP Version 6 -->
<!ENTITY RFC3596 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3596.xml">
<!-- Basic transition mechanism / dual stack -->
<!ENTITY RFC4213 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4213.xml">
<!-- IPv6 Router Advertisement Options for DNS configurations -->
<!ENTITY RFC6106 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6106.xml">
<!-- Common Misbehavior Against DNS Queries for IPv6 Addresses -->
<!ENTITY RFC4074 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4074.xml">
<!-- Operational Considerations and Issues with IPv6 DNS -->
<!ENTITY RFC4472 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4472.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-yasuda-cache-server-selection-01" ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
        or pre5378Trust200902
     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="Cache Server Selection">
	Cache DNS Server Selection on the Dual-stack Home Network
    </title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Ayumu Yasuda" initials="A." 
            surname="Yasuda">
      <organization>NTT East</organization>

      <address>
        <postal>
          <street>3-19-2 Nishi Shinjuku, Shinjuku-ku</street>

          <!-- Reorder these if your country does things differently -->

          <city>Tokyo</city>

          <region></region>

          <code></code>

          <country>Japan</country>
        </postal>

        <email>a.yasuda@east.ntt.co.jp</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Isao Iwasa" initials="I." 
            surname="Iwasa">
      <organization>NTT East</organization>

      <address>
        <postal>
          <street>3-19-2 Nishi Shinjuku, Shinjuku-ku</street>

          <!-- Reorder these if your country does things differently -->

          <city>Tokyo</city>

          <region></region>

          <code></code>

          <country>Japan</country>
        </postal>
        <email>i.iwasa@east.ntt.co.jp</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Ichiro Mizukoshi" initials="I." 
            surname="Mizukoshi">
      <organization>NTT East</organization>

      <address>
        <postal>
          <street>3-19-2 Nishi Shinjuku, Shinjuku-ku</street>

          <!-- Reorder these if your country does things differently -->

          <city>Tokyo</city>

          <region></region>

          <code></code>

          <country>Japan</country>
        </postal>
        <email>i.mizukoshi@east.ntt.co.jp</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <date year="2012" />

    <!-- 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>Operation and Management</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>home network, CE, cache DNS server</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>
   This document suggests two methods to select a cache DNS server on the 
   clients or CEs. Several options to select a cache DNS server are 
   implemented on clients or CEs, and this situation causes some 
   problems and troubles. This document describes merits and
   demerits of these options, and suggests two preferred
   methods of the cache DNS server selection.
</t>
</abstract>
  </front>

  <middle>
<section title="Introduction">
<t>
<!--The original specification of xml2rfc format is in <xref
      target="RFC2629">RFC&nbsp;2629</xref>.
-->
   When clients or CEs know several IP addresses of IPv4 DNS servers and
   IPv6 DNS servers in the home network environment, there is no rule in
   a cache DNS server selection method that clients or CEs refer to. 
</t>
<t>
   The selection method depends on implementations of clients or CEs. 
   This situation causes some problems as noted at <xref target="problems" pageno="false" format="default"/>.
</t>
<t>
   This document describes five methods for solving these problems by
   modifying only clients and/or CEs. By adopting these methods to 
   clients or CEs, it is possible to optimize the procedure to resolve 
   names in this situation. 
   Finally, two methods are recommended.
</t>
</section>

<!--
<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"></xref>.
</t>
</section>
-->

<section title="Technology and Terminology">
<t>
<list style="hanging">
<t hangText="CE:">
   Equipment which is installed in a user's home network such  
   as Broadband Router or Home Gateway. The basic features are 
   required by <xref target="I-D.ietf-v6ops-6204bis"></xref>, and the design 
   considerations are described in                             
<xref target="I-D.donley-v6ops-ce-router-design"></xref>.
</t>
<t hangText="v4 DNS:">
   Cache DNS server which has A RR and AAAA RR, and accept IPv4 transport only.
</t>
<t hangText="v6 DNS:">
   Cache DNS server which has A RR and AAAA RR, and accept IPv6 transport only.
</t>
</list>
</t>
</section>
<section title="Network Topology">
<t>
   This document picks up two typical topologies as dual-stack home 
   network.
</t>

  <section anchor="wo_ce" title="Network Topology without CE">
<t>
   A client PC connects directly to the both IPv4 and IPv6 Internet. 
   This topology is composed without CE.
</t>

      <figure align="center" anchor="homenetwork_topology_without_CE">
        <artwork align="left"><![CDATA[

          +--------------+         +--------------+ 
          | v4 Internet  |         | v6 Internet  | 
          |              |         |              | 
          |   +------+   |         |   +------+   | 
          |   |v4 DNS|   |         |   |v6 DNS|   | 
          |   +------+   |         |   +------+   | 
          +-------+------+         +------+-------+ 
                  |                       |
                  |                       |
                  +-----------+-----------+
                              |
                        +-----+-----+
                        | Client PC |
                        +-----------+

            ]]></artwork>

       <postamble>Home network topology without CE</postamble>
      </figure>

  </section>

  <section title="Network Topology with CE">
<t>
   A client PC connects to both IPv4 and IPv6 Internet through a CE.
</t>

      <figure align="center" anchor="homenetwork_topology_with_CE">
        <artwork align="left"><![CDATA[

          +--------------+         +--------------+ 
          | v4 Internet  |         | v6 Internet  | 
          |              |         |              | 
          |   +------+   |         |   +------+   | 
          |   |v4 DNS|   |         |   |v6 DNS|   | 
          |   +------+   |         |   +------+   | 
          +-------+------+         +------+-------+ 
                  |                       |
                  |                       |
                  +-----------+-----------+
                              |
                           +--+--+
                           | CE  |
                           +--+--+
                              |
                        +-----+-----+
                        | Client PC |
                        +-----------+

            ]]></artwork>

       <postamble>Home network topology with CE</postamble>
      </figure>

<t>
   In this network, CE works as a proxy DNS server for clients. 
   Other configurations are same as <xref target="wo_ce" pageno="false" format="default"/>.
</t>

  </section>
</section>

<section anchor="problems" title="Problem Statement">
<t>
   Clients or CEs always refer to a cache DNS server. Usually the address of
   the cache DNS server is set by DHCPv4<xref target="RFC2131"></xref> and 
   DHCPv6<xref target="RFC3315"></xref>, RA<xref target="RFC6106"></xref> or manually. At that time,
   clients or CEs know two or more different DNS servers' addresses of IPv4 and IPv6.
</t>
<t>
   There are no standards or guidelines that indicates which DNS server is
   referred to and how it is selected on the clients or CEs. Thus there
   are some implementations of DNS selection method on the clients or
   CEs.
</t>
<t>
   The viewpoints of the problems are described as follows.
</t>

 <section title="CE Vendors Have Many Options to be Implemented">
<t>
     <list style="symbols">
        <t>It is not efficient for vendors to implement all the options.</t>
        <t>Users need to select one option if vendor implements many options,
           and it's not realistic to require users to select one option.</t>
     </list>
</t>
  </section>

  <section title="Many Options Complicate ISP Operation">
<t>
   When there are several options to select a cache DNS server on
   clients and CEs, ISPs or network operators have to adjust each option to
   operate comfortably.

     <list style="symbols">
        <t>If the queries go to one cache DNS server, the load of the DNS    
           servers is on one side.</t>
        <t>If CEs send queries to both IPv4 DNS and IPv6 DNS, ISP will       
           receive twice as many queries as current.</t>
     </list>
</t>
  </section>

  <section title="Many Options Complicate Applications Development">
<t>
   When a user accesses to the same target by some clients,
   the behaviors are different according to the implementations of 
   clients or CEs.
</t>
<t>
   It is a critical issue for application developers.
</t>
  </section>

  <section title="CDN Don't Want Query Type/Transport Inconsistency">
<t>
   CDN providers control their own traffic by returning different address 
   of contents servers for every cache DNS server. When the queries from 
   CEs are on one side, CDN providers cannot control the contents delivery 
   traffic well.
</t>

      <figure align="center" anchor="CDN">
        <artwork align="left"><![CDATA[

       +------+       +---------+       +-----------+      
       |client|  ->   |cache DNS|  ->   |           |  www.example.com
       +------+  <=   +---------+  <=   |           |      
                 S1                S1   |           |      +----+
                      +---------+       |           |      | S1 |
                      |cache DNS|  ->   |           |      +----+
                      +---------+  <=   | contents  |      
                                   S2   |    DNS    |      +----+
       +------+       +---------+       |           |      | S2 |
       |client|  ->   |cache DNS|  ->   |           |      +----+
       +------+  <=   +---------+  <=   |           |      
                 S1                S1   |           |      +----+
                      +---------+       |           |      | S3 |
                      |cache DNS|  ->   |           |      +----+
                      +---------+  <=   +-----------+      
                                   S3 

                                                   -> : query
                                                   <= : answer
                                                   Sx : contents server

            ]]></artwork>

       <postamble>Traffic control of using DNS on CDN</postamble>
      </figure>
  </section>

  <section title="IPv6/IPv4 TCP Fallback Problem">
<t>
   When a client's network is adapted for IPv6 and an ISP doesn't have global 
   reachability to the IPv6 Internet because of some reasons,
   IPv6/IPv4 TCP fallback problem which is stated at <xref target="RFC4074"></xref> 
   and <xref target="RFC4472"></xref> occurs.
</t>
<t>
   For example, assuming a scenario, one client doesn't have a connectivity to the IPv6 Internet,
   and a harmful node advertises rogue RA to the client.
   At that time, the client gets IPv6 global prefix and tries to connect to the IPv6 Internet 
   by using IPv6. But it cannot access to the IPv6 Internet, then the client falls back to IPv4.
</t>
<t>
   If taking a method which doesn't answer AAAA record when a client has
   no connectivity to the IPv6 Internet, the IPv6/IPv4 TCP fallback 
   problem doesn't occur in any environment.
</t>
<t>
   To solve this problem,  CEs will return an answer only available transport
   records to users. By returning an answer only available transport, 
   clients decline to access to the destination on the transport which 
   doesn't have a connectivity to the Internet.
</t>
  </section>
</section>

<section title="Selection Methods of Cache DNS Server">
<t>
   In this section, five different options are described as a method of 
   referring to a cache DNS server to solve the problems.
</t>

  <section title="Every Query Refers to the One IPv4 Cache DNS Server">
<t>
   The referred cache DNS server is fixed to IPv4 DNS regardless of the query
   type which is A or AAAA. When clients refer to an IPv4 cache DNS
   server, also fix the using transport protocol as IPv4.
</t>
<t>
   This function will be implemented on clients or CEs.
</t>
<t>
   It is not a problem to send an AAAA query to a cache DNS server
   on the IPv4 transport.<xref target="RFC4213"></xref>
</t>
<t>
   Pros:
     <list style="symbols">
        <t>The behavior is simple, troubleshooting is easier than other   
           options generally.</t>
     </list>
</t>
<t>
   Cons:
     <list style="symbols">
        <t>The mismatch between RR type and transport arises.</t>
        <t>When a client refers IPv6 query to an IPv4 DNS, some troubles on   
           the IPv4 network influence the IPv6 network.</t>
        <t>This method is against deployment of IPv6 in the world.</t>
     </list>
</t>
  </section>

  <section title="Every Query Refers to the One IPv6 Cache DNS Server">
<t>
   The referred DNS server is fixed to IPv6 DNS regardless of the query
   type which is A or AAAA. When clients refer to an IPv6 cache DNS
   server, also fix the using transport protocol as IPv6.
</t>
<t>
   This function will be implemented on clients or CEs.
</t>
<t>
   It is not a problem that a resolver send A query to a cache DNS server
   over the IPv6 transport.<xref target="RFC4213"></xref>
</t>
<t>
   Pros:
     <list style="symbols">
        <t>The behavior is simple, troubleshooting is easier than other   
           options generally.</t>
     </list>
</t>
<t>
   Cons:
     <list style="symbols">
        <t>The mismatch between RR type and transport arises.</t>
        <t>When a client refers IPv4 query to an IPv6 DNS, some troubles on   
           the IPv6 network influence the IPv4 network.</t>
        <t>There are bad influences to users who don't have IPv6 connectivity
           to the IPv6 Internet.</t>
     </list>
</t>
  </section>

  <section anchor="qry_both" title="Every Query Refers to IPv4 and IPv6 Cache DNS Server">
<t>
   Clients and CEs send query to both IPv4 and IPv6 cache DNS servers at
   same time. When clients or CEs send to IPv4 DNS, use IPv4 transport.
   When clients or CEs send to IPv6 DNS, use IPv6 transport. The answer
   which returns faster is used for a client. 
</t>
<t>
   This function will be implemented on clients or CEs.
</t>
<t>
   Pros:
     <list style="symbols">
        <t>The response time is to be faster.</t>
        <t>IPv6/IPv4 TCP fallback problem will be solved.</t>
     </list>
</t>
<t>
   Cons:
     <list style="symbols">
        <t>The number of queries increases twice.</t>
        <t>Referred DNS server is not constant.</t>
     </list>
</t>
  </section>

  <section anchor="dp_query" title="Select a DNS Server Depends on Query Type">
<t>
   The transport protocol from a CE to a cache DNS server depends on the query
   type from clients to a CE. The CE maps query type onto a transport
   protocol toward a cache DNS server. When the query type from a client
   is A RR, the CE uses IPv4 transport to the IPv4 cache DNS server.
   When the query type from a client is AAAA RR, the CE uses IPv6
   transport to the IPv6 cache DNS server. 
</t>
<t>
   This function will be implemented on CEs.
</t>
<t>
   Pros:
     <list style="symbols">
        <t>IPv6/IPv4 TCP fallback problem will be solved.</t>
     </list>
</t>
<t>
   Cons:
     <list style="symbols">
        <t>Other query types need to be considered about to be able to handle them.</t>
        <t>IPv6 network topology is not same as IPv4 network, so it is not   
           appropriate for depending on the query type.</t>
     </list>
</t>
<t>
   The relationship between a query and a transport protocol is stated in <xref target="RFC3596"></xref> Section 1:
<list>
<t>
   The IP protocol version used for querying resource records is
   independent of the protocol version of the resource records; e.g.,
   IPv4 transport can be used to query IPv6 records and vice versa.
</t>
</list>
</t>
<t>
   A query type and a transport protocol are independent, 
   and it is not a problem that a transport protocol depends on a query type.
</t>
  </section>

  <section title="Select a DNS Server Depends on Transport from Clients">
<t>
   DNS server which is selected depends on the transport protocol from
   clients to CEs. When the transport is IPv4, CE selects IPv4 DNS
   server. When the transport is IPv6, CE selects IPv6 DNS server.
</t>
<t>
   Pros:
     <list style="symbols">
        <t>A client and a CE select same DNS server.</t>
     </list>
</t>
<t>
   Cons:
     <list style="symbols">
        <t>The mismatch between RR type and transport arises.</t>
        <t>When ISP networks become native IPv6, but home network is still    
           IPv4, user cannot access to the destination.</t>
        <t>All queries from clients which doesn't have IPv6 transport 
           for DNS, like Windows XP, go to IPv4 DNS.</t>
     </list>
</t>
  </section>
</section>

<section title="The Recommended Option to Implement to CE">
<t>
   According to above discussion, this document recommends two selection
   methods of cache DNS servers. First method, which is noted at <xref target="qry_both" pageno="false" format="default"/>,
   is that a CE sends queries to both IPv4 and IPv6 cache DNS servers at same time.

   Second recommended method is noted at <xref target="dp_query" pageno="false" format="default"/>,
   which indicates that a CE selects a cache DNS server depends on query type from a client.
</t>
</section>

<section anchor="Security" title="Security Considerations">
<t>
   There are no new security considerations.
</t>
</section>

<section anchor="IANA" title="IANA Considerations">
<t>
   There are no IANA considerations.
</t>
</section>


  </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; -->

      &RFC2131;
      &RFC3315;
      &RFC3596;
      &RFC4213;
      &RFC6106;

    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->

      &RFC4074; <!-- inappropriate AAAA replies -->
      &RFC4472;


      <reference anchor="I-D.donley-v6ops-ce-router-design"
                 target="draft-donley-v6ops-ce-router-design-00 (expired)">
        <front>
          <title>Design Considerations for an IPv6 CE Router</title>

          <author initials="C."  surname="Donley"></author>
          <author initials="J."  surname="Brzozowski"></author>
          <author initials="H."  surname="Liu"></author>
          <author initials="V."  surname="Kuarsingh"></author>
          <author initials="J."  surname="Weil"></author>

          <date year="March 2012" />
          <keyword>draft-donley-v6ops-ce-router-design-00 (work in progress)</keyword>
        </front>
      </reference>


      <reference anchor="I-D.ietf-v6ops-6204bis"
                 target="draft-ietf-v6ops-6204bis-11 (work in progress)">
        <front>
          <title>Basic Requirements for IPv6 Customer Edge Routers</title>

          <author initials="H."  surname="Singh"></author>
          <author initials="W."  surname="Beebee"></author>
          <author initials="C."  surname="Donley"></author>
          <author initials="B."  surname="Stark"></author>

          <date year="May 2012" />
          <keyword>draft-ietf-v6ops-6204bis-09 (work in progress)</keyword>
        </front>
      </reference>

    </references>

  </back>
</rfc>
