<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

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

<rfc ipr="trust200902" docName="draft-ietf-sunset4-noipv4-01" category="std">

  <front>

    <title abbrev="No IPv4">Turning off IPv4 Using DHCPv6 or Router Advertisements</title>

		<author initials="S." surname="Perreault" fullname="Simon Perreault">
		  <organization>Jive Communications</organization>
		  <address>
		    <postal>
		    	<street/>
		      <city>Québec</city>
		      <region>QC</region>
		      <country>Canada</country>
		    </postal>
		    <email>sperreault@jive.com</email>
		  </address>
		</author>

    <author initials="W." surname="George" fullname="Wes George">
      <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>wesley.george@twcable.com</email>
      </address>
    </author>

    <author initials="T." surname="Tsou" fullname="Tina Tsou">
      <organization>Huawei Technologies (USA)</organization>
      <address>
        <postal>
          <street>2330 Central Expressway</street>
          <city>Santa Clara</city>
          <region>CA</region>
          <code>95050</code>
          <country>USA</country>
        </postal>
        <phone>+1 408 330 4424</phone>
        <email>tina.tsou.zouting@huawei.com</email>
      </address>
    </author>

		<author initials="T" fullname="Tianle Yang" 
            surname="Yang">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street>32, Xuanwumenxi Ave.</street>

          <city>Xicheng District</city>

          <region>Beijing</region>

          <code>100053</code>

          <country>China</country>
        </postal>

        <email>yangtianle@chinamobile.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>    
    
		<author initials="L" fullname="Li Lianyuan" 
            surname="Li">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street>32,  Xuanwumenxi Ave.</street>

          <city>Xicheng District</city>

          <region>Beijing</region>

          <code>100053</code>

          <country>China</country>
        </postal>

        <email>lilianyuan@chinamobile.com</email>

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

    <author initials="JF" surname="Tremblay" fullname="Jean-Francois Tremblay">
      <organization>Viagénie</organization>
      <address>
        <postal>
          <street>246 Aberdeen</street>
          <city>Québec</city>
          <region>QC</region>
          <code>G1R 2E1</code>
          <country>Canada</country>
        </postal>
        <phone>+1 418 656 9254</phone>
        <email>jean-francois.tremblay@viagenie.ca</email>
        <uri>http://viagenie.ca</uri>
      </address>
    </author>

    <date/>

    <abstract>
      <t>This memo defines a new DHCPv6 option and a new Router Advertisement
        option to inform a dual-stack host or router that IPv4 can be
        turned off.</t>
    </abstract>

  </front>

  <middle>

    <section title="Introduction">

      <t>When a dual-stack host makes a DHCPv4 request, it typically interprets
        the absence of a response as a failure condition. This may cause operational 
        problems when deploying an IPv6-only network. Providing a way to inform 
        hosts and routers that IPv4 is not available would prevent such problems
        and allow for smoother deployments.</t>

      <t>One situation where problems arise is with a dual-stack home router
      	provisioned with an IPv6-only WAN connection. It
        typically assigns an IPv4 address to its LAN interface, starts services
        on that interface and hands out IPv4 addresses to clients on
        the LAN by answering DHCPv4 requests. This is done unconditionally,
        without taking the status of the IPv4 connectivity on the WAN interface
        into account. Hosts on the LAN install a default route
        pointing to the router and behave as if IPv4 connectivity was
        available.  IPv4 packets destined to the Internet get dropped at the
        router and timeouts happen. The end result is that IPv4 remains fully
        active on the LAN and on the router itself even if it would be desirable 
        to turn it off, especially for applications that do not implement 
        Happy Eyeballs <xref target="RFC6555"/>.</t>

			<t>Another situation relates to the load on DHCPv4 servers and relays. 
				In large dual-stack network (LAN, WLAN), thousands of 
				hosts, including mobile phones, may generate a significant amount of trafic by attempting 
				to contact a DHCP server. If the servers and relays are configured in IPv6-only,
				the dual-stack or IPv4-only clients will broadcast DHCPDISCOVER messages endlessly, 
				creating a DDOS-like attack on the network. This scenario has also been briefly 
				described for DHCPv6 in <xref target="RFC7083"/>.
				
				Although DHCP mandates a exponential backoff, it is limited to 64 seconds, 
				which may still generate significant traffic (see section 4.1 of <xref target="RFC2131"/>).
				Various operating systems also implement the backoff algorithms in 
				different ways, or not at all, with different limit values.
				Some test results for a few popular operating systems are available in appendix. 
				 </t>

      <t>A new mechanism is needed to indicate the absence of IPv4 connectivity. 
      	Considering the end goal is turn off all IPv4 connectivity, the chosen
      	mechanism  should be transported over IPv6. Therefore, this document introduce a new
        DHCPv6 <xref target="RFC3315"/> option and a new Router Advertisement
        (RA) <xref target="RFC4861"/> option for the purpose of explicitly
        indicating to the host that IPv4 connectivity is unavailable.</t>

    </section>

    <section title="Terminology">

      <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>

      <t>The following terms are also used in this document:
        <list style="hanging">

          <t hangText="Upstream Interface:">An interface on which the No-IPv4
            option is received over either DHCPv6 or RA.</t>

        </list>
      </t>

    </section>

    <section title="Problems Being Addressed">

      <section title="Load on DHCPv4 Server and Relay">

        <t>When a DHCPv4 server or relay is present but intentionally does not 
          react to DHCPDISCOVERs, the aggregated traffic generated by a large 
          number of dual-stack hosts can represent a significant bandwidth load. This
          scenario is encountered with an ISP serving multiple types of subscribers
          where some a provisioned for IP4 service and others are
          not. It might not be feasible for operational reasons to block the
          useless requests before they reach the DHCPv4 servers, for example if 
          the DHCPv4 servers themselves are the only ones with the knowledge of which nodes
          should or should not get an IPv4 address.</t>

      </section>

      <section title="Bandwidth Consumption">

        <t>In addition to the useless load on the DHCPv4 servers, the above scenario
          could also consume a significant amount of bandwidth, especially if
          the aggregated traffic from many clients goes through a low-bandwidth
          link or through a wireless link.</t>

      </section>

      <section title="Power Inefficiency">

        <t>A dual-stack node that does not get a DHCPv4 response will usually
          continue retransmitting forever. Therefore, only providing IPv6
          on a link will cause the node to needlessly wake up periodically and
          transmit a few packets. For example, the popular DHCPv4 client
          implementation by ISC wakes up every 5 minutes by default and tries to
          contact a DHCPv4 server for 60 seconds. With this configuration, a
          node will not be able to sleep 20% of the time.</t>

      </section>

      <section title="IPv4 Only Applications" anchor="LLA">

        <t>In many cases, IPv4-only applications such as Skype use an autoconfigured
        	IPv4 Link-Local Addresses (LLA) to send IPv4 packets on the LAN. In an 
        	IPv6-only environment, this behavior may waste a significant amount of bandwidth.</t>

      </section>

    </section>

    <section title="Design Considerations">

      <section title="DHCPv6 vs DHCPv4">

        <t>
          <list style="empty">
            <t>NOTE: This section will be removed before publication as an
              RFC.</t>
          </list>
        </t>

        <t>This document describes a new DHCPv6 option to turn off IPv4. An
          equivalent option could conceivably be created for DHCPv4. The pros
          and cons are discussed below. Arguments with a + sign argue for a
          DHCPv4 option, arguments with a - sign argue against.

          <list style="hanging">

            <t hangText="+">Devices that don't speak IPv6 won't be listening for
              a "turn off IPv4" code, and therefore won't stop trying to
              establish IPv4 connectivity.
              <list style="hanging">
                <t hangText="-">Devices that haven't been updated to speak IPv6
                  likely won't recognize a new DHCPv4 code telling them that
                  IPv4 isn't supported.
                  <list style="hanging">
                    <t hangText="+">However, it's easier to implement something
                      that turns off the IP stack than implement IPv6.</t>
                  </list>
                </t>
              </list>
            </t>

            <t hangText="-">Devices that don't speak IPv6 that are still active
              on the network mean that either IPv4 can't/shouldn't be turned off
              yet, or IPv4 local connectivity should be maintained to retain
              local services, even if global IPv4 connectivity is not necessary
              (think local LAN DLNA streaming, etc).</t>

            <t hangText="-">When the goal is to turn off IPv4, having to
              maintain and operate an IPv4 infrastructure (routing, ACLs, etc.)
              just to be able to send negative responses to DHCPv4 requests is
              not productive.  Having the option transported in IPv6 allows the
              ISP to focus on operating an IPv6-only network.
              <list style="hanging">
                <t hangText="+">However, a full IPv4 infrastructure would not be
                  necessary in many cases. The local router could contain a very
                  restricted DHCPv4 server function whose only purpose would be
                  to reply with the No-IPv4 option. No IPv4 traffic would have
                  to be carried to a distant DHCPv4 server. Note however that
                  this may not be operationally feasible in some situations.</t>
              </list>
            </t>

            <t hangText="-">Turning IPv4 off using an IPv4-transported signal
              means that there is no way to go back. Once the DHCPv4 option has
              been accepted by the DHCPv4 client, IPv4 can no longer be turned
              on remotely (rebooting the client still works).  Configurations
              change, mistakes happen, and so it is necessary to have a way to
              turn IPv4 back on.  With a DHCPv6 option, IPv4 can be turned back
              on as soon as the client makes a new DHCPv6 request, which can be
              the next scheduled one or can be triggered immediately with a
              Reconfigure message.</t>

          </list>
        </t>

        <t>The authors conclude that a DHCPv6 option is clearly necessary,
          whereas the need for a DHCPv4 option is not as obvious. More feedback 
          on this topic would be appreciated.</t>

      </section>

      <section title="DHCPv6 vs RA">

        <t>Both DHCPv6 and RA-based solutions are presented in this draft. It
          is expected that the working group will decide whether both solutions,
          only one, or none are desirable.</t>

      </section>

    </section>

    <section title="The No-IPv4 DHCPv6 Option">

      <t>The No-IPv4 DHCPv6 option is used to signal the unavailability of IPv4
        connectivity.</t>

      <section title="DHCPv6 Wire Format">

        <t>The format of the DHCPv6 No-IPv4 option is:</t>

        <figure>
          <artwork>
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         OPTION_NO_IPV4        |          option-len           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    v4-level   |
+-+-+-+-+-+-+-+-+

  option-code     OPTION_NO_IPV4 (TBD).

  option-len      1.

  v4-level        Level of IPv4 functionality.
          </artwork>
        </figure>

        <t>The DHCPv6 client MUST place the OPTION_NO_IPV4 option code in the
          Option Request Option (<xref target="RFC3315"/> section 22.7). Servers
          MAY include the option in responses (if they have been so
          configured). Servers MAY also place the OPTION_NO_IPV4 option code in
          an Option Request Option contained in a Reconfigure message.</t>

      </section>

      <section title="RA Wire Format">

        <t>The format of the RA No-IPv4 option is:</t>

        <figure>
          <artwork>
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |   v4-level    |    Reserved   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Reserved                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Type          TBD

  Length        1.

  v4-level      Level of IPv4 functionality.

  Reserved      These fields are unused.  They MUST be initialized
                to zero by the sender and MUST be ignored by the
                receiver.
          </artwork>
        </figure>

      </section>

      <section title="Semantics">

        <t>The option applies to the link on which it is received.  It is used
          to indicate to the client that it should disable some or all of its
          IPv4 functionality. What should be disabled depends on the value of
          v4-level.</t>

        <t>v4-level can take the following values:

          <list style="hanging">

            <t hangText="0 - IPv4 fully enabled:">This is equivalent to the
              absence of the No-IPv4 option. It is included here so that a
              DHCPv6 server can explicitly re-enable IPv4 access by including it
              in a Reply message following a Reconfigure, or similarly by a
              router in a spontaneous Router Advertisement.</t>

            <t hangText="1 - No IPv4 upstream:">Any kind of IPv4 connectivity is
              unavailable on the link on which the option is received.
              Therefore, any attempts to provision IPv4 by the host or to use
              IPv4 in any fashion, on that link, will be useless. IPv4 MAY be
              dropped, blocked, or otherwise ignored on that link.</t>

            <t>Upon reception of the No-IPv4 option with value 1, the following
              IPv4 functionality MUST be disabled on the Upstream Interface:
              <list style="letters">
                <t>IPv4 addresses MUST NOT be assigned.</t>
                <t>Currently-assigned IPv4 addresses MUST be unassigned.</t>
                <t>Dynamic configuration of link-local IPv4 addresses <xref
                    target="RFC3927"/> MUST be disabled.</t>
                <t>IPv4, ICMPv4, or ARP packets MUST NOT be sent.</t>
                <t>IPv4, ICMPv4, or ARP packets received MUST be ignored.</t>
                <t>DNS A queries MUST NOT be sent, even transported over
                  IPv6.</t>
                </list>
            </t>

            <t hangText="2 - No IPv4 upstream, local IPv4 restricted:">Same
              semantics as value 1, with the following additions:</t>

            <t>If all DHCPv6- or RA-configured interfaces receive the No-IPv4
              option with a mix of values 1, 2, and 3 (but not exclusively 3),
              and no other interface provides IPv4 connectivity to the Internet,
              IPv4 is partially shut down, leaving only local connectivity
              active. On the Upstream Interface, IPv4 MUST be shut down as
              listed above. On other interfaces, IPv4 addresses MUST NOT be
              assigned except for the following:
              <list style="symbols">
                <t>Loopback (127.0.0.0/8)</t>
                <t>Link Local (169.254.0.0/16) <xref target="RFC3927"/></t>
                <t>Private-Use (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
                  <xref target="RFC1918"/></t>
              </list>
            </t>

            <t hangText="3 - No IPv4 at all:">This is intended to be a stricter
              version of the above.</t>

            <t>The host or router receiving this option MUST disable IPv4
              functionality on the Upstream Interface in the same way as for
              value 1 or 2.</t>

            <t>If all DHCPv6 or RA-configured interfaces received the No-IPv4
              option with value 3, and no other interface provides
              IPv4 connectivity to the Internet, IPv4 is completely shut down.
              In particular:
              <list style="letters">
                <t>IPv4 address MUST NOT be assigned to any interface.</t>
                <t>Currently-assigned IPv4 addresses MUST be unassigned.</t>
                <t>Dynamic configuration of link-local IPv4 addresses <xref
                    target="RFC3927"/> MUST be disabled.</t>
                <t>IPv4, ICMPv4, or ARP packets MUST NOT be sent on any
                  interface.</t>
                <t>IPv4, ICMPv4, or ARP packets received on any interface MUST be
                  ignored.</t>
                <t>In the above, "any interface" includes loopback interfaces. In
                  particular, the 127.0.0.1 special address MUST be removed.</t>
                <t>Server programs listening on IPv4 addresses (e.g., a DHCPv4
                  server) MAY be shut down.</t>
                <t>DNS A queries MUST NOT be sent, even transported over
                  IPv6.</t>
                <t>If the host or router also runs a DHCPv6 server, it SHOULD
                  include the No-IPv4 option with value 2 in DHCPv6 responses it
                  sends to clients that request it, unless prohibited by local
                  policy. If it currently has active clients, it SHOULD send a
                  Reconfigure to each of them with the OPTION_NO_IPV4 included
                  in the Option Request Option.</t>
                <t>If the router sends Router Advertisement, it SHOULD include
                  the No-IPv4 option with value 2 in RA messages it sends,
                  unless prohibited by local policy. It SHOULD also send RAs
                  immediately so that the changes take effect for all current
                  hosts.</t>
              </list>
            </t>

            <t>The intent is to remove all traces of IPv4 activity. Once the
              No-IPv4 option with value 3 is activated, the network stack should
              behave as if IPv4 functionality had never been present. For
              example, a modular kernel implementation could accomplish the
              above by unloading the IPv4 kernel module at run time.</t>

          </list>

        </t>

      </section>

      <section title="Example">

        <t>A dual-stack home gateway is set up with a single WAN uplink and
          is configured to use DHCPv4 and DHCPv6 to automatically obtain IPv4
          and IPv6 connectivity. On the LAN side, it has one link with multiple
          hosts.</t>

        <t>When it boots, the router assigns 192.168.1.1/24 to its LAN
          interfaces and starts a DHCPv4 server listening on it. It hands out
          addresses 191.168.1.100-199 to clients. It also starts an IPv6 Router
          Advertisement daemon as well as a stateless DHCPv6 server, also
          listening on the LAN interfaces.</t>

        <t>On the WAN side, it starts two provisioning procedures in parallel:
          one for IPv4 and one for IPv6.</t>

        <t>At this point, the ISP does not know if the router supports IPv6-only
          operation.  Therefore, by default, the ISP responds to DHCPv4 requests
          as usual.</t>
       
        <t>As part of the IPv6 provisioning procedure, the router sends a DHCPv6
          request containing OPTION_NO_IPV4 in an Option Request Option. The
          ISP's DHCPv6 server's reply includes the No-IPv4 option with value 3.
          When this procedure finishes, the ISP has determined that this
          customer will run in IPv6-only mode and starts dropping all IPv4
          packets at the first hop. If an IPv4 address was assigned, it is
          reclaimed, and possibly reassigned to another subscriber.</t>

        <t>The home router aborts the IPv4 provisioning procedure (if it is
          still running) and deactivates all IPv4 functionality. It shuts down
          its DHCPv4 server. It also configures its own stateless DHCPv6 server
          to send the No-IPv4 option to clients that request it. 
          (JFT: What happens if the timer below is not implemented and IPv4 completes before IPv6?
          Maybe we could recommend to run IPv6 provisioning first when OPTION_NO_IPV4 is supported.)</t>

        <t>As an optimization, the router could delay setting up IPv4 by a few
          seconds (10 seconds seems reasonable). If the IPv6 procedure completes
          with the No-IPv4 option during that time, IPv4 will never have been
          set up and the router will operate in pure IPv6-only mode from the
          start.</t>

      </section>

    </section>

    <section title="Security Considerations">

      <t>One security concern is that an attacker could use the No-IPv4 option
        to deny IPv4 access to a victim. However, unprotected vanilla DHCP can
        already be exploited to cause such a denial of service (<xref
          target="RFC2131"/> section 7).</t>

      <t>TO BE COMPLETED</t>

    </section>

    <section title="IANA Considerations">

      <t>IANA is requested to assign value TBD with description OPTION_NO_IPV4 
        in the "DHCP Option Codes" table which is part of the <eref
          target="http://www.iana.org/assignments/dhcpv6-parameters">dhcpv6-parameters
          registry</eref>.</t>

      <t>IANA is requested to assign value TBD with description "No-IPv4 Option"
        in the IPv6 Neighbor Discovery Option Formats table which is part of the
        icmpv6-parameters registry.</t>

    </section>
    <section title="Acknowledgements">
      <t>Thanks in particular to Marc Blanchet who was the driving force behind
        this work.</t>
      <t>Rajiv Asati contributed section <xref target="LLA"/>.</t>
    </section>

  </middle>

  <back>

    <references title="Normative References">

      <reference anchor='RFC1918'>

        <front>
          <title>Address Allocation for Private Internets</title>
          <author initials='Y.' surname='Rekhter' fullname='Yakov Rekhter'>
            <organization>Cisco systems</organization>
            <address>
              <postal>
                <street>170 West Tasman Drive</street>
                <city>San Jose</city>
                <region>CA</region>
                <code>95134-1706</code>
                <country>US</country></postal>
              <phone>+1 914 528 0090</phone>
              <facsimile>+1 408 526 4952</facsimile>
              <email>yakov@cisco.com</email></address></author>
          <author initials='R.' surname='Moskowitz' fullname='Robert G. Moskowitz'>
            <organization>Chrysler Corporation</organization>
            <address>
              <postal>
                <street>25999 Lawrence Ave</street>
                <city>Center Line</city>
                <region>MI</region>
                <code>48015</code>
                <country>US</country></postal>
              <phone>+1 810 758 8212</phone>
              <facsimile>+1 810 758 8173</facsimile>
              <email>rgm3@is.chrysler.com</email></address></author>
          <author initials='D.' surname='Karrenberg' fullname='Daniel Karrenberg'>
            <organization>RIPE Network Coordination Centre</organization>
            <address>
              <postal>
                <street>Kruislaan 409</street>
                <city>Amsterdam</city>
                <region />
                <code>1098 SJ</code>
                <country>NL</country></postal>
              <phone>+31 20 5925065</phone>
              <facsimile>+31 20 5925090</facsimile>
              <email>Daniel.Karrenberg@ripe.net</email></address></author>
          <author initials='G.' surname='Groot' fullname='Geert Jan de Groot'>
            <organization>RIPE Network Coordination Centre</organization>
            <address>
              <postal>
                <street>Kruislaan 409</street>
                <city>Amsterdam</city>
                <region />
                <code>1098 SJ</code>
                <country>NL</country></postal>
              <phone>+31 20 5925065</phone>
              <facsimile>+31 20 5925090</facsimile>
              <email>GeertJan.deGroot@ripe.net</email></address></author>
          <author initials='E.' surname='Lear' fullname='Eliot Lear'>
            <organization>Silicon Graphics, Inc.</organization>
            <address>
              <postal>
                <street>2011 N. Shoreline Blvd.</street>
                <street>Mail Stop 15-730</street>
                <city>Mountain View</city>
                <region>CA</region>
                <code>94043-1389</code>
                <country>US</country></postal>
              <phone>+1 415 960 1980</phone>
              <facsimile>+1 415 961 9584</facsimile>
              <email>lear@sgi.com</email></address></author>
          <date year='1996' month='February' /></front>

        <seriesInfo name='BCP' value='5' />
        <seriesInfo name='RFC' value='1918' />
        <format type='TXT' octets='22270' target='http://www.rfc-editor.org/rfc/rfc1918.txt' />
      </reference>

      <reference anchor='RFC2119'>

        <front>
          <title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials='S.' surname='Bradner' fullname='Scott Bradner'>
            <organization>Harvard University</organization>
            <address>
              <postal>
                <street>1350 Mass. Ave.</street>
                <street>Cambridge</street>
                <street>MA 02138</street></postal>
              <phone>- +1 617 495 3864</phone>
              <email>sob@harvard.edu</email></address></author>
          <date year='1997' month='March' />
          <area>General</area>
          <keyword>keyword</keyword>
          <abstract>
            <t>
              In many standards track documents several words are used to signify
              the requirements in the specification.  These words are often
              capitalized.  This document defines these words as they should be
              interpreted in IETF documents.  Authors who follow these guidelines
              should incorporate this phrase near the beginning of their document:

              <list>
                <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
                  RFC 2119.
            </t></list></t>
            <t>
              Note that the force of these words is modified by the requirement
              level of the document in which they are used.
        </t></abstract></front>

        <seriesInfo name='BCP' value='14' />
        <seriesInfo name='RFC' value='2119' />
        <format type='TXT' octets='4723' target='http://www.rfc-editor.org/rfc/rfc2119.txt' />
        <format type='HTML' octets='17491' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
        <format type='XML' octets='5777' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
      </reference>

      <reference anchor='RFC3315'>

        <front>
          <title>Dynamic Host Configuration Protocol for IPv6 (DHCPv6)</title>
          <author initials='R.' surname='Droms' fullname='R. Droms'>
            <organization /></author>
          <author initials='J.' surname='Bound' fullname='J. Bound'>
            <organization /></author>
          <author initials='B.' surname='Volz' fullname='B. Volz'>
            <organization /></author>
          <author initials='T.' surname='Lemon' fullname='T. Lemon'>
            <organization /></author>
          <author initials='C.' surname='Perkins' fullname='C. Perkins'>
            <organization /></author>
          <author initials='M.' surname='Carney' fullname='M. Carney'>
            <organization /></author>
          <date year='2003' month='July' /></front>

        <seriesInfo name='RFC' value='3315' />
        <format type='TXT' octets='231402' target='http://www.rfc-editor.org/rfc/rfc3315.txt' />
      </reference>

      <reference anchor='RFC3927'>

        <front>
          <title>Dynamic Configuration of IPv4 Link-Local Addresses</title>
          <author initials='S.' surname='Cheshire' fullname='S. Cheshire'>
            <organization /></author>
          <author initials='B.' surname='Aboba' fullname='B. Aboba'>
            <organization /></author>
          <author initials='E.' surname='Guttman' fullname='E. Guttman'>
            <organization /></author>
          <date year='2005' month='May' />
          <abstract>
            <t>To participate in wide-area IP networking, a host needs to be configured with IP addresses for its interfaces, either manually by the user or automatically from a source on the network such as a Dynamic Host Configuration Protocol (DHCP) server. Unfortunately, such address configuration information may not always be available. It is therefore beneficial for a host to be able to depend on a useful subset of IP networking functions even when no address configuration is available. This document describes how a host may automatically configure an interface with an IPv4 address within the 169.254/16 prefix that is valid for communication with other devices connected to the same physical (or logical) link.&lt;/t>&lt;t> IPv4 Link-Local addresses are not suitable for communication with devices not directly connected to the same physical (or logical) link, and are only used where stable, routable addresses are not available (such as on ad hoc or isolated networks). This document does not recommend that IPv4 Link-Local addresses and routable addresses be configured simultaneously on the same interface. [STANDARDS-TRACK]</t></abstract></front>

        <seriesInfo name='RFC' value='3927' />
        <format type='TXT' octets='83102' target='http://www.rfc-editor.org/rfc/rfc3927.txt' />
      </reference>

      <reference anchor='RFC4861'>

        <front>
          <title>Neighbor Discovery for IP version 6 (IPv6)</title>
          <author initials='T.' surname='Narten' fullname='T. Narten'>
            <organization /></author>
          <author initials='E.' surname='Nordmark' fullname='E. Nordmark'>
            <organization /></author>
          <author initials='W.' surname='Simpson' fullname='W. Simpson'>
            <organization /></author>
          <author initials='H.' surname='Soliman' fullname='H. Soliman'>
            <organization /></author>
          <date year='2007' month='September' />
          <abstract>
            <t>This document specifies the Neighbor Discovery protocol for IP Version 6.  IPv6 nodes on the same link use Neighbor Discovery to discover each other's presence, to determine each other's link-layer addresses, to find routers, and to maintain reachability information about the paths to active neighbors. [STANDARDS-TRACK]</t></abstract></front>

        <seriesInfo name='RFC' value='4861' />
        <format type='TXT' octets='235106' target='http://www.rfc-editor.org/rfc/rfc4861.txt' />
      </reference>

    </references>

    <references title="Informative References">

      <reference anchor='RFC2131'>

        <front>
          <title abbrev='DHCP'>Dynamic Host Configuration Protocol</title>
          <author initials='R.' surname='Droms' fullname='Ralph Droms'>
            <organization>Computer Science Department</organization>
            <address>
              <postal>
                <street>323 Dana Engineering</street>
                <street>Bucknell University</street>
                <street>Lewisburg</street>
                <street>PA 17837</street></postal>
              <phone>(717) 524-1145</phone>
              <email>droms@bucknell.edu</email></address></author>
          <date year='1997' month='March' />
          <area>Internet</area>
          <keyword>DHCP</keyword>
          <keyword>configuration</keyword>
          <keyword>dynamic host configuration protocol</keyword>
          <keyword>host</keyword>
          <abstract>
            <t>
              The Dynamic Host Configuration Protocol (DHCP) provides a framework
              for passing configuration information to hosts on a TCPIP network.
              DHCP is based on the Bootstrap Protocol (BOOTP) , adding the
              capability of automatic allocation of reusable network addresses and
              additional configuration options .  DHCP captures the behavior of
              BOOTP relay agents [7, 21], and DHCP participants can interoperate
              with BOOTP participants .
        </t></abstract></front>

        <seriesInfo name='RFC' value='2131' />
        <format type='TXT' octets='113738' target='http://www.rfc-editor.org/rfc/rfc2131.txt' />
        <format type='HTML' octets='134047' target='http://xml.resource.org/public/rfc/html/rfc2131.html' />
        <format type='XML' octets='118050' target='http://xml.resource.org/public/rfc/xml/rfc2131.xml' />
      </reference>

			<reference anchor="RFC7083">
				<front>
					<title>
						Modification to Default Values of SOL_MAX_RT and INF_MAX_RT
					</title>
					<author initials="R." surname="Droms" fullname="R. Droms">
						<organization/>
					</author>
					<date year="2013" month="November"/>
					<abstract>
						<t>
						This document updates RFC 3315 by redefining the default values for SOL_MAX_RT and INF_MAX_RT and defining options through which a DHCPv6 server can override the client's default value for SOL_MAX_RT and INF_MAX_RT with new values.
						</t>
					</abstract>
				</front>
			<seriesInfo name="RFC" value="7083"/>
			<format type="TXT" octets="14630" target="http://www.rfc-editor.org/rfc/rfc7083.txt"/>
			</reference>

			<reference anchor="RFC6555">
				<front>
					<title>Happy Eyeballs: Success with Dual-Stack Hosts</title>
					<author initials="D." surname="Wing" fullname="D. Wing">
						<organization/>
					</author>
					<author initials="A." surname="Yourtchenko" fullname="A. Yourtchenko">
						<organization/>
					</author>
					<date year="2012" month="April"/>
					<abstract>
						<t>
						When a server's IPv4 path and protocol are working, but the server's IPv6 path and protocol are not working, a dual-stack client application experiences significant connection delay compared to an IPv4-only client. This is undesirable because it causes the dual- stack client to have a worse user experience. This document specifies requirements for algorithms that reduce this user-visible delay and provides an algorithm. [STANDARDS-TRACK]
						</t>
					</abstract>
				</front>
				<seriesInfo name="RFC" value="6555"/>
				<format type="TXT" octets="34048" target="http://www.rfc-editor.org/rfc/rfc6555.txt"/>
			</reference>

    </references>

     <section title="Test Results of Terminals Behavior">
    
    	<t>In RFC3315 [RFC3315, DHCPv6], SOL_MAX_RT is defined in DHCPv6  to 
				prevent the frequently requesting of clients, which reduces the 
				aggregated traffic. But in RFC2131 [RFC2131, DHCPv4], there are not
				corresponding IPv4 definitions or options for client's behavior if 
				the server does not respond for the Discover messages. </t>
    
    	<t>In fact, most of the terminals creat backoff algorithms to help them 
    		retransmit DHCPDISCOVER message in different frequency according to 
    		their state machine. The same point of almost all the verious Operating 
    		Systems is that they could not stop DHCPDISCOVER requests to the 
    		server. And that will cause DDoS-Like attack to the server and bandwidth 
    		consumption in the link.</t>
    		
    	<t>We test some of the most popular terminals' OS in WLAN, the 	results 
    		are illuminated as below.</t>
    
    	
			<figure  title="Figure:Terminals DHCPDISCOVER requests when Server's 
											DHCPv4 module is down">
	   		 <artwork name="Terminals DHCPDISCOVER requests when Server's DHCPv4
	    									module is down">

--------------------------------------------------------------------
                    DHCP Discovery Packages Time Table                
--------------------------------------------------------------------
  | Windows7   |Windows XP   |  IOS_5.0.1 |Android_2.3.7|Symbian_S60  
No|Time | Time | Time | Time |Time | Time |Time | Time  |Time| Time 
  |     |offset|      |offset|     |offset|     |offset |    |offset
--|-----|------|------|------|-----|------|-----|-------|----|------
1 |0    |      |0     |      |0.1  |      |7.8  |       |0   |      
2 |3.9  |3.9   |0.1   | 0.1  |1.4  |  1.3 |10.3 |  2.5  |2   |  2   
3 |13.3 |9.4   |4.1   | 4    |3.8  |  2.4 |17.9 |  7.6  |6   |  4   
4 |30.5 |17.2  |12.1  | 8    |7.9  |  4.1 |33.9 |  16   |8   |  2   
5 |62.8 |32.3  |29.1  | 17   |16.3 |  8.4 |36.5 |  2.6  |12  |  4   
6 |65.9 |3.1   |64.9  | 35.8 |24.9 |  8.6 |  reconnect  |14  |  2   
7 |74.9 |9     |68.9  | 4    |33.4 |  8.5 |56.6 |  20.1 |18  |  4   
8 |92.1 |17.2  |77.9  | 9    |42.2 |  8.8 |60.2 |  3.6  |20  |  2   
9 |395.2|303.1 |93.9  | 16   |50.8 |  8.6 |68.4 |  8.2  |24  |  4   
10|399.1|3.9   |433.9 | 340  |59.1 |  8.3 |84.8 |  16.4 |26  |  2   
11|407.1|8     |438.9 | 5    |127.3|  68.2|86.7 |  1.9  |30.1|  4.1 
12|423.4|16.3  |447.9 | 9    |128.9|  1.6 |  reconnect  |32.1|  2   
13|455.4|32    |464.9 | 17   |131.1|  2.2 |106.7|  20   |36.1|  4   
14|460.4|5     |794.9 | 330  |135.1|  4   |111.4|  4.7  |38.1|  2   
15|467.4|7     |799.9 | 5    |143.4|  8.3 |120.6|  9.2  |42.1|  4   
16|483.4|16    |808.9 | 9    |151.7|  8.3 |134.9|  14.3 |44.1|  2   
17|842.9|359.5 |824.9 | 16   |160.4|  8.7 |136.8|  1.9  |48.2|  4.1 
18|846.9|4     |1141.9| 317  |168.8|  8.4 |  reconnect  |50.2|  2   
--------------------------------------------------------------------

 					</artwork>
	  	</figure>   

			<t>In this figure:</t>

			<t>For Windows7, it seems to initiate 8 times DHCPDISCOVER requests in about
				300s interval.</t>
				
			<t>For WindowsXP, firstly it launches 9 times DHCPDISCOVER messages, but after
				that it cannot get any response from the server, then it initiates 5 times
				requests in one cycle in around 330s intervals, and never stop.</t>
				
			<t>For IOS5.0.1, it seems like WindowsXP. There are 10 times attempts in one 
				cycle, and the interval is about 68s.</t>
				
			<t>Symbian_S60 uses the simplest backoff method, it launches DISCOVER in 
				every 2 or 4 seconds.</t>
				
			<t>Android2.3.7 is the only Operating System which can stop DISCOVER request
				by disconnect its wireless connection. It reboot wireless and dhcp connection
				every 20 seconds.</t>
    
    </section>

  </back>

</rfc>
