<?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 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">
]>
<?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" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="bcp"
     docName="draft-ietf-dhc-dhcpv6-redundancy-consider-02"
     ipr="trust200902">

  <front>
    <title abbrev="DHCPv6 Redundancy Considerations">DHCPv6 Redundancy
    Deployment Considerations</title>

    <author fullname="John Jason Brzozowski" initials="J.B."
            surname="Brzozowski">
      <organization>Comcast Cable Communications</organization>
      <address>
        <postal>
          <street>1306 Goshen Parkway</street>
          <city>West Chester</city>
          <region>PA</region>
          <code>19380</code>
          <country>USA</country>
        </postal>
        <phone>+1-609-377-6594</phone>
        <email>john_brzozowski@cable.comcast.com</email>
      </address>
    </author>

    <author fullname="Jean-Francois Tremblay" initials="J.F."
            surname="Tremblay">
      <organization>Videotron Ltd.</organization>
      <address>
        <postal>
          <street>612 Saint-Jacques</street>
          <city>Montreal</city>
          <region>Quebec</region>
          <code>H3C 4M8</code>
          <country>Canada</country>
        </postal>
        <email>jf@jftremblay.com</email>
      </address>
    </author>

    <author fullname="Jack Chen" initials="J.C." surname="Chen">
      <organization>Time Warner Cable</organization>
      <address>
        <postal>
          <street>13820 Sunrise Valley Drive</street>
          <city>Herndon</city>
          <region>VA</region>
          <code>20171</code>
          <country>USA</country>
        </postal>
        <email>jack.chen@twcable.com</email>
      </address>
    </author>

    <author fullname="Tomasz Mrugalski" initials="T.M." surname="Mrugalski">
      <organization abbrev="ISC">Internet Systems Consortium, Inc.</organization>

      <address>
        <postal>
          <street>950 Charter St.</street>
          <city>Redwood City</city>
          <region>CA</region>
          <code>94063</code>
          <country>USA</country>
        </postal>

        <phone>+1 650 423 1345</phone>

        <email>tomasz.mrugalski@gmail.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <date day="31" month="October" year="2011" />

    <!-- 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>Internet</area>

    <workgroup>Dynamic Host Configuration (DHC)</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>DHCPv6</keyword>
    <keyword>Redundancy</keyword>
    <keyword>Deployment Considerations</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 documents some deployment considerations for those who
      wishing to use DHCPv6 to support their deployment of IPv6. Specifically,
      providing semi-redundant DHCPv6 services is discussed in this
      document.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>To support the deployment of IPv6 redundancy and high availability
      are required for many if not all components. This document provides
      information specific to the proposed near term approach for deploying
      semi-redundant DHCPv6 services in advance of DHCPv6 server
      implementations that support a standards based failover or redundancy
      protocol.</t>
    </section>

    <section anchor="assumptions" title="Scope and Assumptions">
      <t>This document specifies an interim architecture to provide a
      semi-redundant DHCPv6 solution before the availability of vendor or
      standard based solutions. The proposed architecture may be used in wide
      range of networks, two notable deployment models are discussed: service
      provider and enterprise network environments. The described architecture
      leverages only existing and implemented DHCPv6 standards. This document
      does not address a standards based solution for DHCPv6 redundancy. In
      the absence of a standards based DHCPv6 redundancy protocol and
      implementation, some analogies are loosely drawn with the DHCPv4
      failover protocol for reference. Specific discussions related to DHCPv4
      failover and redundancy is out of scope for this document. Reader interested
      in initial work being done in DHCPv6 failover is recommended to read
      <xref target="I-D.mrugalski-dhc-dhcpv6-failover-requirements"/>.</t>

      <t>Although DHCPv6 redundancy may be useful in a wide range of
      scenarios, they may be generalized for illustration purposes in the two
      aforementioned. The following assumptions were made with regards to the
      existing DHCPv6 infrastructure, regardless of the model used: <!--Generic assumptions -->
      <list style="numbers">
          <t>At least two DHCPv6 servers are used to service to the same
          clients, but the number of servers is not restricted.</t>

          <t>Existing DHCPv6 servers will not directly communicate or interact
          with one another in the assignment of IPv6 addresses and
          configuration information to requesting clients.</t>

          <t>DHCPv6 clients are instructed to run stateful DHCPv6 to request
          at least one IPv6 address. Configuration information and other
          options like a delegated IPv6 prefix may be also requested.</t>

          <!-- Customer gateways and service providers equipement support IPv4 and IPv6 simultaneously.
	       </t> IPv4 is not relevant, removed after jjmb comment. -->

          <t>Clients requesting IPv6 addresses, prefixes, and or options care
          of DHCPv6 must recognize and honor the DHCPv6 preference option.
          Furthermore, the requesting clients must process DHCPv6 ADVERTISE
          messages per <xref target="RFC3315"/> when the preference
          option is present.</t>

          <t>DHCPv6 server failure does not imply failure of any other network
          service or protocol, e.g. TFTP servers. Redundancy of any additional
          services configured by means of DHCPv6 are outside of scope of this
          document. For example, a single DHCPv6 server may configure multiple
          TFTP servers, with preference for each TFTP server, as specified in
          <xref target="RFC5970"/>.</t>
        </list></t>

      <t>While techniques described in this document provide some aspects of
      redundancy, it should be noted that complete redundancy will not be 
      available until DHCPv6 protocol is standardized. Initial work toward
      that goal is described in 
      <xref target="I-D.mrugalski-dhc-dhcpv6-failover-requirements"/>.</t>

      <section title="Service provider model">
        <t>The service provider model represents cases, where end-user devices
        may be configured directly, without any intermediate devices (like
        home routers used in service provider model). DHCPv6 clients include
        cable modems, customer gateways or home routers, and end-user devices.
        In some cases hosts may be configured directly using the service
        provider DHCPv6 infrastructure or via intermediate router, that is in
        turn being configured by the provider DHCPv6 infrastructure. The
        service provider DHCPv6 infrastructure may be semi-redundant in either
        case. Cable modems, customer gateways or home routers, and end-user
        devices are commonly referred to as CPE (Customer Premises Equipment).
        The following additional assumptions were made, besides the ones made
        in <xref target="assumptions"/>: <!--
[tm: We should cover PD here.]
[jft: Should we consider that? I think so]
[jjmb: this model may be used with PD however it will quickly be outgrown once PD deployments increase in quantity] Besides already mentioned assumptions, the following additional assumptions were made with regards to the existing DHCPv6 infrastructure in a service provider model: --><list
            style="numbers">
            <t>The service provider edge routers and access routers (CMTS for
            cable or DSLAM/BRAS for DSL for example) are IPv6 enabled when
            required.</t>

            <t>CPE devices are instructed to perform stateful DHCPv6 to
            request at least one IPv6 address, delegated prefix, and or
            configuration information. CPE devices may also be instructed to
            leverage stateless DHCPv6 <xref target="RFC3736"/> to
            acquire configuration information only. This assumes that IPv6
            address and prefix information has been acquired using other
            means.<!--
[jjmb: there is not a strict requirement for SLAAC on the WAN interface.  Any CPE will leverage the router advertisement as an indicator of how to acquire its IPv6 address(es), prefixes, and
 configuration information.]--></t>

            <t>The primary application of this BCP is for native IPv6
            services. Use and applicability to transition mechanisms is out of
            scope for this document.</t>

            <t>CPE devices must implement a stateful DHCPv6 client <xref
            target="RFC3315"/>, support for DHCPv6 prefix delegation 
            <xref target="RFC3633"/> or stateless DHCPv6 <xref
            target="RFC3736"/> may also be implemented.</t>
          </list></t>
      </section>

      <section title="Enterprise model">
        <t>The enterprise model represents cases where end-user devices are
        most often configured directly without any intermediate devices (like
        home routers used in service provider model). However enterprise IPv6
        environments quite often use or require that DHCPv6 relay agents are
        in place to support the use of DHCPv6 for the acquisition of IPv6
        addresses and or configuration information. The assumptions here
        extend those that are defined in the beginning of <xref
        target="assumptions"/>:<list style="numbers">
            <t>DHCPv6 clients are hosts and are considered end nodes. Examples
            of such clients include computers, laptops, and possibily mobile
            devices.</t>

            <t>DHCPv6 clients generally do not require the assignment of an
            IPv6 prefix delegation and as such do not support DHCPv6 prefix
            delegation <xref target="RFC3633"/>.</t>
          </list></t>
      </section>
    </section>

    <section title="Protocol requirements">
      <t><!--[jft: Is this section a repeat of the previous one?]-->The
      following sections outline the requirements that must be satisfied by
      DHCPv6 clients, relays, and servers to ensure the desired behavior is
      provided using pre-existing DHCPv6 server implementations as is. The
      objective is to provide a semi-redundant DHCPv6 service to support the
      deployment of IPv6 where DHCPv6 is required for the assignment of IPv6
      addresses, prefixes, and or configuration information.</t>

      <section title="DHCPv6 Servers">
        <t>This interim architecture requires DHCPv6 servers that are <xref
        target="RFC3315"/> compliant and support the
        necessary options required to support this solution. Essential to the
        the use of the interim architecture is support for stateful DHCPv6 and
        the DHCPv6 preference option both which are specified in <xref
        target="RFC3315"/>. For deployment scenarios where
        IPv6 prefix delegation is employed DHCPv6 servers must support DHCPv6
        prefix delegation as defined by <xref target="RFC3633"/>.
        Further, where stateless DHCPv6 is used support for <xref
        target="RFC3736"/> is required by DHCPv6 servers.</t>
      </section>

      <section title="DHCPv6 Relays">
        <t>There are no specific requirements regarding relays. However, it is
        implied that DHCPv6 relay agents must be <xref
        target="RFC3315"/> compliant and must support the
        ability to relay DHCPv6 messages to more than one destination
        minimally.</t>

        <!--[jjmb] the items below are valid but are out of scope for this document
DHCPv6 relays compliant to <xref target="RFC3315"></xref> compliant.
DHCPv6 relays must also support snooping of DHCPv6-PD and install a static route for each delegated prefix with the DHCPv6 client address as next-hop.
The relay MAY remove the static route for the delegated prefix after the expiration of the client lease. (JFT: more to say here?)-->
      </section>

      <section title="DHCPv6 Clients">
        <t>DHCPv6 clients are required to be compliant to <xref
        target="RFC3315"/> and support the necessary
        options required to support this solution depending on the mode of
        operations and desired behavior. Where prefix delegation is required
        DHCPv6 clients will be required to support DHCPv6 prefix delegation as
        defined in <xref target="RFC3633"/>. Clients used with this
        semi-redundant DHCPv6 deployment model must support the acquistion of
        at least one IPv6 address and configuration information using stateful
        DHCPv6 as specified by <xref target="RFC3315"/>.
        The use of stateless DHCPv6 which is also specified in <xref
        target="RFC3315"/> may also be supported. DHCPv6
        client must recognize and adhere to the processing of the advertised
        DHCPv6 preference options sent by the DHCPv6 servers.</t>
      </section>
    </section>

    <section title="Deployment models">
      <!--[jjmb] need to make reference to Rapid Commit and how it fits into these models-->
      
      <t>At the time of this writing a standards-based DHCPv6 redundancy
	protocol and implementations are not available. As a result DHCPv6
      server implementations will be used as-is to provide best effort,
      semi-redundant DHCPv6 services. Behavior of the DHCPv6 services will in
      part be governed by the configuration used by each of the servers.
      Additionally, various aspects of the DHCPv6 protocol <xref
      target="RFC3315"/> will be leveraged to yield the desired
      behavior. No inter-server or inter-process communications will be used
      to coordinate DHCPv6 events and or activities. DHCP services for both
      IPv4 and IPv6 may operate simultaneously on the same physical server(s)
      or may operate on different ones.</t>

      <section anchor="split-prefixes" title="Split Prefixes">
        <t>In the split prefixes model, each DHCPv6 server is configured with
        a unique, non-overlapping range derived from the /64 prefix deployed
        for use within an IPv6 network. Distribution between two servers, for
	example, would require that an allocated /64 be split in two /65 ranges. 
        2001:db8:1:0001:0000::/65 and 2001:db8:1:0001:8000::/65 would be
        assigned to each DHCPv6 server for allocation to clients derived from
        2001:db8:1:0001::/64 prefix.

	<!--[JFT: does this work in CNR and for DNS? How is the reverse done?]. 
	    [jjmb: yes this works with CNR 7.x, ISC and at least one other 
	    implementation. I never tried it with Dibbler, perhaps Tomasz can 
	    verify. What are you asking about the reverse? Are you asking about 
	    DNS? If yes, DNS can use a /64, this is what I am doing today with 
	    no issue.] 
	    [jjmb: we should also add an example of the use of the same prefix
	    and range ie a /64 prefix with the same /64 prefix used on two or 
	    more DHCP servers. This also works and has been tested.] 
	    [tm: you can configure DNS to accept update for the whole /64 zone
	    and allow both DHCPv6 servers to do the update? Is this reasonable 
	    approach? As Dibbler is not tied to any specific DNS server 
	    implementation, it just tries to do the reverse update.]--></t>

        <t>Each DHCP server allocates IPv6 addresses from the
        corresponding ranges per device class. Each DHCPv6 server will
        be simultaneously active and operational. Address allocation
        is governed largely through the use of the DHCPv6 preference
        option, so server with higher preference value is always
        prefered. Additional proprietary mechanisms can be leveraged
        to further enforce the favoring of one DHCP server over
        another. Example of such scenario is presented in <xref
        target="example-1"/>.</t>

        <t>It is important to note that over time, it is possible that
        bindings may be disproportionally distributed amongst DHCPv6 servers
        and not any one server will be authoritative for all bindings.</t>

        <t>Per
        <xref target="RFC3315"/>, a DHCPv6 ADVERTISE messages with a
        preference option of 255 is an indicator to a DHCPv6 client to
        immediately begin a client-initiated message exchange by transmitting
        a REQUEST message. Alternatively, a DHCPv6 ADVERTISE messages with a
        preference option of any value lesser than 255 or absent preference option is an
        indicator to the client that it must wait for subsequent ADVERTISE
        messages before proceeding, as defined in Section 17.1.2 of 
        <xref target="RFC3315"/>.
        Additionally, in the event of a DHCPv6 server failure it is desirable
        for a server other than the server that originally responded to be
        able to rebind the client. It is not critical, that the DHCPv6 server
        be able to rebind the client in this scenario, however, this is
        generally desirable behavior. Given the proposed architecture, the
        remaining active DHCPv6 server will have a different range configured
        making it technically incorrect for the same to rebind the client in
        its current state. Ultimately, when rebinding fails the client will
	acquire a new binding from the configured range unique to an active
	server.  Furthermore, shorter T1, T2, valid, and preferred lifetimes
	can be used to reduce the possibility that a client or some other
	element on the network will experience a disruption in service or
	access to relevant binding data.  The values used for T2, preferred
	and valid lifetime can be adjusted or configured to minimize service
	disruption.  Ideally T2, preferred and valid lifetimes that are equal
	or near equal can be used to trigger a DHCPv6 client to reacquire
	IPv6 address, prefix, and or configuration information almost
	immediately after rebinding fails.  It is important to note that
	shorter values will most certainly create additional load and
	processing for the DHCPv6 server, which must be considered.</t>

	<t>Using a split prefix configuration model dynamic updates to DNS can
	  be coordinated to ensure that the DNS is properly updated with
	  current binding information.  Challenges arise with regards to the
	  update of PTR for IPv6 addresses since the DNS may need to be
	  overwritten in a failure condition.  The use of a split prefixes
	  enables the differentiation of bindings and binding timing to
	  determine which represents the current state.  This becomes
	  particularly important when DHCPv6 Leasequery <xref target="RFC5007"/>
	  and/or DHCPv6 Bulk Leasequery <xref target="RFC5460"/> are 
	  leveraged to determine lease or binding state.  An additional benefit 
	  is that the use of separate ranges per DHCPv6 server makes failure 
	  conditions more obvious and detectable.</t>

	  <!--[jjmb I think we should propose/suggest values for T1, T2, PL, and VL.]-->

        <figure align="center" anchor="example-1">
          <artwork align="center"><![CDATA[
+----------+                 +-----------+
| Client 1 +-\            +--+ Server 1  |
+----------+  \           |  +-----------+
               \          |   
                \         |
                 \        |  
+----------+      \       |  +-----------+
| Client 2 +--------------+--| Server 2  |
+----------+      /       |  +-----------+
      .          /        .
      .         /         .  
      .        /          .
+----------+  /           .  +-----------+
| Client N +-/            .--| n+1 Server|
+----------+                 +-----------+

Server 1
========
Prefix=2001:db8:1:0:0::/64
Range=2001:db8:1:0:0::/65
Preference=255

Server 2
========
Prefix=2001:db8:1:0:0::/64
Range=2001:db8:1:0:8000::/65
Preference=0

Server n+1
==========
Prefix, range, and preference would 
vary based on range definition

]]></artwork>
          <postamble>Split prefixes approach.</postamble>
        </figure>
      </section>

      <section title="Multiple Unique Prefixes">
        <t>In the multiple prefix model, each DHCPv6 server is configured with a
        unique, non-overlapping prefix. A /64 range equal to the prefix is
        configured on each server. For example, the range
        2001:db8:1:0000::/64 would be assigned to a single DHCPv6 server for
        allocation to clients equal to its parent prefix 2001:db8:1:0000::/64.
        Subsequently the second DHCPv6 server could use 2001:db8:1:0001:::/64
        as range and prefix.  This would be repeated for each active DHCP server.
        Example of this scenario is presented in <xref target="example-2"/>.</t>

        <t>This approach uses a unique prefix and ultimately range per DHCPv6
        server with corresponding prefixes configured for use in the network.
        The corresponding network infrastructure must in turn be configured to
        use multiple prefixes on the inteface(s) facing the DHCPv6 client. The
        configuration is similar on all the servers, but a different prefix
        and a different preference is used per DHCPv6 server.</t>

        <t>This approach would drastically increase the rate of consumption of
        IPv6 prefixes and would also yield operational and management
        challenges related to the underlying network since a significantly
        higher number of prefixes would need to be configured and routed. This
        approach also does not provide a clean migration path to the desired
        solution leveraging a standards-based DHCPv6 redundancy or failover
        protocol, which of course has yet to be specified.</t>

      <t>The use of multiple unique prefixes provides benefits similar to those 
	referred to in <xref target="split-prefixes"/> related
        to dynamic updates to DNS. 
	The use of multiple unique prefixes enables the differentiation of
	bindings and binding timing to determine which represents the current
	state.  This becomes particularly important when DHCPv6 Leasequery
	<xref target="RFC5007"/> and/or DHCPv6 Bulk Leasequery
	<xref target="RFC5460"/> are leveraged to
	determine lease or binding state.  The use of separate prefixes and
	ranges per DHCPv6 server makes failure conditions more obvious and
	detectable.</t>


      <figure align="center" anchor="example-2">
          <artwork align="center"><![CDATA[
+----------+                 +-----------+
| Client 1 +-\            +--+ Server 1  |
+----------+  \           |  +-----------+
               \          |
                \         |
                 \        |
+----------+      \       |  +-----------+
| Client 2 +--------------+--| Server 2  |
+----------+      /       |  +-----------+
      .          /        .
      .         /         .
      .        /          .
+----------+  /           .  +-----------+
| Client N +-/            .--| n+1 Server|
+----------+                 +-----------+

Server 1
========
Prefix=2001:db8:1:0000::/64
Range=2001:db8:1:0000::/64
Preference=255

Server 2
========
Prefix=2001:db8:1:1000::/64
Range=2001:db8:1:1000::/64
Preference=0

Server 3
========
Prefix=2001:db8:1:2000::/64
Range=2001:db8:1:2000::/64
Preference=(>0 and <255)
]]></artwork>
          <postamble>Multiple unique prefix approach.</postamble>
        </figure>
      </section>
      
      <section title="Identical Prefixes">
      <t>In the identical prefix model, each DHCPv6 server is configured with
	the same overlapping prefix and range deployed for use within an IPv6
	network.  Distribution between two or more servers, for example,
	would require that the same /64 prefix and range be configured on all
	DHCP servers.  For example, the range 2001:db8:1:0001:0000::/64 would
	be assigned to all DHCPv6 server for allocation to clients derived
	from 2001:db8:1:0001::/64 prefix.  This would be repeated for each
	active DHCP server. Example of such scenario is presented in
	<xref target="example-3"/>.</t>

        <t>This approach uses the same prefix, length, and range definition
        across multiple DHCPv6 servers. All other configuration remaining the
        same the only other attribute of configuration option configured
        differently per DHCPv6 server would be DHCPv6 preference. This
        approach conceivably eases the migration of DHCPv6 services to fully
        support a standards based redundancy or failover protocol. Similar to
        the split prefix architecture described above this approach does not
        place any additional addressing requirements on network
        infrastructure.</t>

	<t>The use of identical prefixes provides no benefit or
        advantage related to dynamic DNS updates, support of DHCPv6 Leasequery
        <xref target="RFC5007"/> or DHCPv6 Bulk Leasequery <xref
        target="RFC5460"/>. In this case all DHCP servers will use the 
	same prefix and range configurations making it less obvious that a 
	failure condition or event has occurred.</t>

	<figure align="center" anchor="example-3">
          <artwork align="center"><![CDATA[
+----------+                 +-----------+
| Client 1 +-\            +--+ Server 1  |
+----------+  \           |  +-----------+
               \          |
                \         |
                 \        |
+----------+      \       |  +-----------+
| Client 2 +--------------+--| Server 2  |
+----------+      /       |  +-----------+
      .          /        .
      .         /         .
      .        /          .
+----------+  /           .  +-----------+
| Client N +-/            .--| n+1 Server|
+----------+                 +-----------+

Server 1
========
Prefix=2001:db8:1:0000::/64
Range=2001:db8:1:0000::/64
Preference=255

Server 2
========
Prefix=2001:db8:1:0000::/64
Range=2001:db8:1:0000::/64
Preference=0

Server 3
========
Prefix=2001:db8:1:0000::/64
Range=2001:db8:1:0000::/64
Preference=(>0 and <255)
]]></artwork>
          <postamble>Identical prefix approach.</postamble>
        </figure>
      </section>
    </section>
      

    <section title="Challenges and Issues">
      <t>The lack of interaction between DHCPv6 servers introduces a number of
      challenges related to the operations of the same in a production
      environment. The following areas are of particular concern:</t>

      <t>
	<list style="symbols">
          <t>In indentical prefixes scenario, both servers must follow the same
          address allocation procedure, i.e. they both must use the same algorithm 
          and the same policy to determine which address is going to be assigned
          to a specific client. Otherwise there is a distinct chance that each
          server will assign the same address to two different clients.</t>
          
          <t>Interactions with DNS server(s) to support the dynamic update of
          the same address when one or more DHCPv6 servers have
          become unavailable. This specifically becomes a challenge when or if
          nodes that were initially granted a lease: 
	  <list style="numbers">
	    <t>Attempt to renew or rebind the lease originally granted, or</t>
	    <t>Attempt to obtain a new lease</t>
	  </list> 
	  
	  <!--
	      In either of the cases cited above, safeguards leveraged
	      to prevent the deliberate or inadvertent overwriting of DNS data
	      will likely prevent the responding DHCPv6 server from properly
	      updating DNS with the client&rsquo;s new information and or may
	      result in stale data in DNS. Possible solutions include the
	      following:<list style="symbols">
              <t>The ability to configure the override and or disabling of the
              safeguards that prevent the over-writing of DNS data care of
              RFC2136, specifically, related to <xref target="RFC4701"></xref> 
	      and <xref target="RFC4703"></xref>. This behavior must specifically
              be supported by the DHCPv6 server. This will allow for the
              overwriting of existing RRs in DNS that represent the former
              binding for the client. As a result clients will not have
              multiple RRs in DNS for a client&rsquo;s FQDN-to-IPv6 address
              mapping. Conversely, RR&rsquo;s for a client&rsquo;s IPv6
              address-to-FQDN mapping will not be actively overwritten or
              deleted. Stale reverse zone data will be purged using well
              known DNS constructs, including but not limited to leveraging
              TTLs. Access control on the DNS server must be leveraged to
              restrict which DHCP servers may update DNS.</t>
            </list></t>
	    removed after David Hankins, Ted Lemon and Bernie Volz comments
	  -->
	  
	  DHCID Resource Record, defined in <xref target="RFC4701"/>, 
	  allows identification of the current owner for specific DNS data that
	  can be used during DNS Update procedure <xref target="RFC2136"/>.
	  <xref target="RFC4704"/> specifies how DHCPv6 servers and/or client
	  may perform updates. <xref target="RFC4703"/> provides a way how to 
	  solve conflicts between clients. Although it deals with most cases,
	  it is still possible to leave abandoned RR records. Consider following 
	  scenario. There are two independent servers. Server A assigns a lease
	  to a client and updates DNS with AAAA record for assigned address and
	  name. When the client renews, server A is not available and server B
	  assigns a different lease. DNS is again updated (now two AAAA RRs are
	  in the DNS for the client). Anyone trying to use the DNS information 
	  doesn't know which of the two leases is active. And, if server A 
	  never recovers, its information may never be removed.
	  </t>

          <t>Interactions with DHCPv6 servers to facilitate the acquisition of
          IPv6 lease data care of the DHCPv6 Leasequery <xref
          target="RFC5007"/> or DHCPv6 Bulk Leasequery <xref
          target="RFC5460"/> protocols when one or more DHCPv6 servers
          have become unavailable and have granted leases to DHCPv6 clients.
          If IPv6 lease data is required and the granting server is
          unavailable it will not be possible to obtain any information about
          leases granted until one of the following has taken place. 
	  <list style="numbers">
	    <t>The granting DHCPv6 server becomes available with all lease
	    information restored</t>
	    
	    <t>The client has renewed or rebound its lease against a
	    different DHCPv6 server</t>
	  </list>
	  It is important to note that with DHCPv6 until such time
	  that a redundancy or failover protocol is available binding
	  updates and synchronization will not occur between DHCPv6
	  servers. </t>
	</list>
      </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA is not requested to assign any numbers at this time.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Security considerations specific to the operation of the DHCPv6
      protocol are created through the use of this interim architecture for
      DHCPv6 redundancy beyond what has been cited for Dynamic Host
      Configuration Protocol for IPv6 (DHCPv6) <xref target="RFC3315"/>.
      There are considerations related to DNS, specifically the dynamic
      updating of DNS, when such models are employed. Potential opportunities
      are created to overwrite valid DNS resource records when provisions have
      been made accommodate some of the models cited in this document. In some
      cases this is desirable to ensure that DNS remains up to date when using
      one or more of these models, however, abuse of the same could result in
      undesirable behavior.</t>
    </section>

    <section title="Acknowledgements">
      <t>Many thanks to Bernie Volz, Kim Kinnear, Ralph Droms, David Hankins and
      Chuck Anderson for their input and review.</t>

      <t>This work has been partially supported by Department of
      Computer Communications (a division of Gdansk University of
      Technology) and the Polish Ministry of Science and Higher
      Education under the European Regional Development Fund, Grant
      No. POIG.01.01.02-00-045/09-00 (Future Internet Engineering
      Project).</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="reference.RFC.2136"?>
      <?rfc include="reference.RFC.4701"?>
      <?rfc include="reference.RFC.3315"?>
      <?rfc include="reference.RFC.3633"?>
      <?rfc include="reference.RFC.4703"?>
      <?rfc include="reference.RFC.4704"?>
      <?rfc include="reference.RFC.3736"?>
      <?rfc include="reference.RFC.5007"?>
      <?rfc include="reference.RFC.5460"?>
      <?rfc include="reference.RFC.5970"?>

    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.mrugalski-dhc-dhcpv6-failover-requirements.xml" ?>
    </references>
  </back>
</rfc>

