<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std" docName="draft-que-dhc-dns-multi-dhcp-servers-01" ipr="trust200902">
  <front>
    <title abbrev="DNS Delete CONFIRMATION">DNS Delete-Confirm Mechanism with Multi-DHCP-Servers</title>

    <author fullname="Xirong Que" initials="X." surname="Que">
      <organization>BUPT University</organization>

      <address>
        <postal>
          <street>Beijing University of Posts and Telecommunications (BUPT)</street>

          <city>Beijing</city>

          <code>100876</code>

          <country>P.R. China</country>
        </postal>

        <phone>+86-10-6228-3411</phone>

        <email>rongqx@bupt.edu.cn</email>
      </address>
    </author>
	
    <author fullname="Wenhong Wang" initials="W." surname="Wang">
      <organization>BUPT University</organization>

      <address>
        <postal>
          <street>Beijing University of Posts and Telecommunications (BUPT)</street>

          <city>Beijing</city>

          <code>100876</code>

          <country>P.R. China</country>
        </postal>

        <email>wangwh@bupt.edu.cn</email>
      </address>
    </author>
	
    <author fullname="Lanshan Zhang" initials="L." surname="Zhang">
      <organization>BUPT University</organization>

      <address>
        <postal>
          <street>Beijing University of Posts and Telecommunications (BUPT)</street>

          <city>Beijing</city>

          <code>100876</code>

          <country>P.R. China</country>
        </postal>

        <phone>+86-13146885878</phone>

        <email>zls326@sina.com</email>
      </address>
    </author>
	
    <author fullname="Linhui Sun" initials="L." surname="Sun">
      <organization>BUPT University</organization>

      <address>
        <postal>
          <street>Beijing University of Posts and Telecommunications (BUPT)</street>

          <city>Beijing</city>

          <code>100876</code>

          <country>P.R. China</country>
        </postal>

        <phone>+86-13870912585</phone>

        <email>sunlinhui@bupt.edu.cn</email>
      </address>
    </author>

    <date year="2015" />

    <workgroup>DHC Working Group</workgroup>

    <abstract>
      <t>[I-D.ietf-dhc-addr-registration] specifies how a host register 
	  its self-generated addresses in DNS through DHCPv6 server. 
	  <xref target="RFC3315"/> allows multiple DHCPv6 servers working in 
	  an administrative domain. There exists a scenario that the client 
	  may register its addresses in multiple servers for some reasons 
	  such as higher availability and etc. This document defines a 
	  mechanism to ensure the multiple servers could work properly during 
	  updating DNS.</t>
    </abstract>

  </front>

  <middle>
 
    <section title="Introduction">
      <t>[I-D.ietf-dhc-addr-registration] describes a mechanism to register 
	  self-generated and statically configured addresses in DNS through a 
	  DHCPv6 server. The client will send a DNS registration request to the 
	  DHCPv6 server after successfully assigning a self-generated IPv6 
	  address on one of its interfaces. The DHCPv6 server then registers 
	  the client's IPv6 address to FQDN binding towards a configured DNS 
	  server, with a valid-lifetime. The client must extend the 
	  registration before it expires. If the DHCPv6 server does not receive 
	  such a refresh after the valid-lifetime has passed, it SHOULD remove 
	  the IPv6-address-to-FQDN bindings in DNS.</t>
	  
	  <t>Multiple DHCPv6 servers working in an administrative domain is 
	  encouraged since it could bring higher availability, load balancing 
	  ability and other benefits. However in the context of Multiple servers 
	  within a single network, problems may arise when performing DNS update. 
	  This document specifies a mechanism to ensure servers could coordinate 
	  with each other and update DNS correctly.</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"/>.</t>
    </section>
	
	<section title="Problem Statement">
	  <t>[I-D.ietf-dhc-addr-registration] describes a mechanism to register 
	  self-generated and statically configured addresses in DNS through a 
	  DHCPv6 server. When there are multiple address registration DHCPv6 
	  servers within an administration domain, the client can send DNS 
	  registration request to multiple servers, and the servers can work 
	  correctly in registering DNS. When the client wants to extend its 
	  registered DNS entry, it will send an extension request to the 
	  registration servers. However, when one of the registration servers 
	  which received the initial registration request does not receive 
	  the extension request, it will remove the client's IPv6-address-to-FQDN 
	  bindings in DNS once its original valid-lifetime has passed, without 
	  verifying with the client.</t>
	</section>
	
	<section title="Solution Overview">
	  <t>After the servers update DNS correctly, the client SHOULD extends 
	  this by sending a new ADDR-REGISTRATION-REQUEST message to a 
	  DHCPv6 address registration server.  After receiving the refresh 
	  message, the DHCPv6 address registration server update the address 
	  registration entry.  Before the servers that missed the extension 
	  remove the entry prematurely (i.e., when it expired originally), the 
	  server MUST send an ADDR-REGISTRATION-CONFIRMATION message to the 
	  client to confirm whether the entry should be removed. The 
	  ADDR-REGISTRATION-VALIDATION message MUST be sent back to the server 
	  to indicate whether the server should remove the address 
	  registration entry or not.</t>
        <figure align="center" title="Address Registration Confirmation Procedure">
          <artwork><![CDATA[
       +----+      +-----------+                  +---------------+
       |Host|      |Edge router|                  |Addr-Reg Server|
       +----+      +-----------+                  +---------------+
         |     SLAAC    |                                |
         |<------------>|                                |
         |              |                                |
         |              | ADDR-REGISTRATION-CONFIRMATION |
         |<----------------------------------------------|
         |              |                                |Register
         |              |                                |address
         |              | ADDR-REGISTRATION-VALIDATION   |in DNS
         |---------------------------------------------->|
          ]]></artwork>
        </figure>
	</section>

	<section title="New DHCPv6 Messages">
	  <t>Two new DHCPv6 messages between the client and the server: DHCPv6 
	  ADDR-REGISTRATION-CONFIRMATION Message and DHCPv6 
	  ADDR-REGISTRATION-VALIDATION Message are defined.This section 
	  describes the structures of these messages.</t>
	  
	  <section title="DHCPv6 ADDR-REGISTRATION-CONFIRMATION Message">
	    <t>Before the servers that missed the extension remove the entry 
		prematurely, the DHCPv6 server sends an ADDR-REGISTRATION-CONFIRMATION 
		message to a client to whether or not remove the entry. The format 
		of the ADDR-REGISTRATION-REQUEST message is described as follows:</t>
		
        <figure align="center" title="The format of ADDR-REGISTRATION-CONFIRMATION Message">
          <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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    msg-type   |                 transaction-id                |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     .                            options                            .
     .                           (variable)                          .
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ]]></artwork>
        </figure>
        <t><list hangIndent="16" style="hanging">

        <t hangText="   msg-type"> Identifies the message type.</t>
		
        <t hangText="   transaction-id"> The transaction ID for this message exchange.</t>
		
        <t hangText="   options"> Options carried in this message.</t>
		
        </list></t>

        <t>The ADDR-REGISTRATION-CONFIRMATION message MUST contain server 
		identifier option and MUST contain the IA_NA option and the DHCPv6 
		FQDN option [RFC4704].  The IA_NA option MUST contain the IPv6 
		address of the server.  When the client receives the 
		ADDR-REGISTRATION-CONFIRMATION message.</t>
		
	  </section>
	  
	  <section title="DHCPv6 ADDR-REGISTRATION-VALIDATION Message">
	    <t>When received the ADDR-REGISTRATION-CONFIRMATION message from 
		the server, the client determines whether to remove the entry and 
		sent ADDR-REGISTRATION-VALIDATION message to the server. The 
		format of the ADDR-REGISTRATION-VALIDATION message is described 
		as follows:</t>
		
        <figure align="center" title="The format of ADDR-REGISTRATION-VALIDATION Message">
          <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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    msg-type   |                 transaction-id                |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     .                            options                            .
     .                           (variable)                          .
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ]]></artwork>
        </figure>
        <t><list hangIndent="16" style="hanging">

        <t hangText="   msg-type"> Identifies the message type.</t>
		
        <t hangText="   transaction-id"> The transaction ID for this message exchange.</t>
		
        <t hangText="   options"> Options carried in this message.</t>
		
        </list></t>
		
        <t>If the binding entry is valid, ADDR-REGISTRATION-VALIDATION MUST 
		contain the IA_NA option and the DHCPv6 FQDN option [RFC4704]. The 
		IA_NA option MUST contain at least one IA Address option. The 
		valid-lifetime field of the IA Address option MUST be set to the 
		period for which the client would like to register the binding in 
		DNS. If the binding entry is invalid, the client MUST NOT put any 
		option in the ADDR-REGISTRATION-VALIDATION message.</t>
		
	  </section>
	</section>
	
	<section title="DHCPv6 Address Registration Confirmation Procedure">
       <t>If there are multiple DHCPv6 servers within an administration domain, 
	   when the client extends the configuration, one of the server MAY miss 
	   the extension and remove the binding entry by mistake.  Before the 
	   server removes the binding entry, the server MUST send 
	   ADDR-REGISTRATION-CONFIRMATION to confirm whether or not to remove the 
	   binding entry.</t>
	   
	   <section title="DHCPv6 Address Registration Confirmation Request">
	   <t>For every successful binding registration, the address registration 
	   server MUST record the IPv6-address-to-FQDN bindings and associated 
	   valid-lifetimes in its storage.</t>
	   
	   <t>The address registration client MUST refresh the registration before 
	   it expires (i.e. before the valid-lifetime of the IA address elapses) 
	   by sending a new ADDR-REGISTRATION-REQUEST to the address registration 
	   server.</t>
	   
	   <t>If the address registration server does not receive such a refresh 
	   and the valid-lifetime will pass, the address registration server sends 
	   ADDR-REGISTRATION-CONFIRMATION to the client.</t>
	   
	   <t>If the binding entry is valid, ADDR-REGISTRATION-VALIDATION MUST 
	   contain the IA_NA option and the DHCPv6 FQDN option. If the binding 
	   entry is invalid, the client MUST NOT put any option in the 
	   ADDR-REGISTRATION-VALIDATION message.</t>
	   </section>
	   
	   <section title="Registration Expiry and Refresh">
	   <t>When the server receives the ADDR-REGISTRATION-VALIDATION message, 
	   if the option is null, then remove the IPv6-address-to-FQDN binding 
	   entry in DNS, also the local record. But if the option contain the 
	   IA_NA option and the FQDN option, the server MUST refresh the 
	   registration.</t>
	   </section>
	</section>

    <section title="Security Considerations (TBD)">
      <t>TBD</t>
    </section>

    <section title="IANA Considerations (TBD)">
      <t>This document defines two new DHCPv6 message, the 
	  ADDR-REGISTRATION-CONFIRMATION message (TBA1) and 
	  ADDR-REGISTRATION-VALIDATION message (TBA2) described 
	  in Section 4.</t>
    </section>
	
  </middle>
  
  <back>
    <references title="Normative References">
	<?rfc include='reference.RFC.2119'?>
    </references>
	
	<references title="Informative References">
	<?rfc include='reference.RFC.3315'?>
	</references>

  </back>
</rfc>
