<?xml version="1.0"?>
<?rfc compact="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc toc="yes" ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc ipr="trust200902" category="std" docName="draft-andrews-v6ops-6to4-router-option-02">
  <front>
    <title>6to4 DHCP Relay Router Option</title>
    <author initials="M.P." surname="Andrews" fullname="Mark P. Andrews">
      <organization abbrev="ISC">Internet Systems Consortium</organization>
      <address>
	<postal>
	  <street>950 Charter Street</street>
	  <city>Redwood City</city>
	  <region>CA</region>
	  <code>94063</code>
	  <country>US</country>
	</postal>
	<email>marka@isc.org</email>
      </address>
    </author>
    <date day="10" month="May" year="2011"/>
    <abstract>
      <t>
	Provides a DHCP 6to4 Relay Router option.
      </t>
    </abstract>
  </front>
  <middle>
    <section toc="yes" anchor="intro" title="Introduction">
      <t>
	Using 6to4 <xref target="RFC3056"/> currently requires manual
	configuration of the relay router or the use of a anycast relay
	router <xref target="RFC3068"/>.  The latter has a number of
	well known issues (add reference).
      </t>
      <t>
	This document attempts to address some of those issues by
	providing a method for clients to discover the address of
	a 6to4 relay router.  It is expected that the 6to4 relay
	router will be managed and that it will be topologically
	close to the client thereby reducing some of the issues
	with using public anycast relay routers.
      </t>
      <t>
	Additionally not all IPv4 address allocated to clients are
	suitable for use with 6to4.  Whether they be <xref
	target="RFC1918"/> address, or other addresses behind a NAT,
	or are behind a firewall which blocks 6to4 encapsulted traffic.
	This document provides a method for the DHCP server operator to
	signal that the address being returned is not suitable for
	use with 6to4.
      </t>
      <section toc="yes" anchor="reserved" title="Reserved
      Words">
        <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>
    <section toc="yes" anchor="option" title="6to4 Relay Router Option">
      <t>
	The 6to4 DHCP Relay Router Option (6to4RRO) has code TBD and
	consists of a single IPv4 address specifing the IPv4 address of
	the 6to4 relay router.  Setting the relay router address to
	0.0.0.0 indicates that 6to4 will not work for returned lease
	address.
      </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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      TBD      |       4       |          relay router         ~
   +---------------+---------------+---------------+---------------+
   ~            address            |
   +-------------------------------+
	</artwork>
      </figure>
      <t>
	The presence of a 6to4RRO option in the reply MUST NOT be
	used as a indication that the client should use 6to4.  It is
	only a instruction to the client of how it should do 6to4 if
	it is otherwise configured to use 6to4.
      </t>
    </section>
    <section toc="yes" anchor="cpe" title="CPE Equipment">
      <t>
	CPE equipment SHOULD be configured to request the 6to4RRO
	option if 6to4 has been enabled.  If 0.0.0.0 is returned
	in response to the 6to4RRO option the CPE SHOULD disable
	6to4 and withdraw any advertised 6to4 prefixes.
      </t>
      <t>
	The 6to4RRO SHOULD be requested even if a 6to4 relay router
	has been manually configured.  This is done so that the CPE
	can see if 6to4 needs to be disabled if it is moved between
	networks.  Returned values other than 0.0.0.0 MAY be ignored.
      </t>
      <t>
	CPE equipement MAY have a configuration knob to disable
	requesting the 6to4RRO.  This knob MUST default to OFF.
      </t>
    </section>
    <section toc="yes" anchor="comparison" title="Comparision of 6to4RRO vs 192.88.99.1">
      <t>
	Provides a way to distribute load independent of the routing table.
      </t>
      <t>
	Using a unicast adddress rather than a anycast address allows for
	reliable reassembly of the IPv4 encapsulating packet.
      </t>
      <t>
	Provides a way to supply 6to4 decapsulation service which is unlikely
	to leak to unexpected clients.
      </t>
    </section>
    <section toc="yes" anchor="6rd" title="Comparision of 6to4 and 6to4RRO to 6rd">
      <t>
	6rd <xref target="RFC5969"/> works well as a replacement for 6to4
	when the ISP controls the CPE equipment and is willing to deploy
	6rd border routers.  6rd does not work so well as a replacement
	if any these conditions are not met for logistical reasons and
	may require parallel deployment with 6to4 until the CPE equipement
	is updated.
      </t>
      <t>
	6rd requires active participation of the ISP.  6to4 does not.
      </t>
      <t>
	6rd does not provide a signal to tell the CPE/host not to use 6to4.
      </t>
      <t>
	The 6to4RRO can often be deployed without requiring additional
	vendor support with existing equipment.
      </t>
      <t>
	6to4RRO should not be seen as a reason to not support 6rd in
	CPE/hosts.  6to4RRO and 6rd have different deployment senarios.
      </t>
    </section>
    <section toc="yes" anchor="deploy" title="Deployment Senarios">
      <section toc="yes" anchor="enterprise" title="Enterprise Deployment">
        <t>
	  To prevent accidental 6to4 tunnels a enterprise would set
	  6to4RRO to 0.0.0.0.  This is intended to turn off mobile
	  clients that have accidently left 6to4 enabled when
	  connecting to the enterprises network.
        </t>
      </section>
      <section toc="yes" anchor="isp" title="ISP Deployment">
        <t>
	  ISPs, with a IPv6 connection to the public Internet, would
	  set 6to4RRO to point to 6to4 relay routers run by the ISP.
	  This will provide their customers with a managed 6to4 routers
	  which are topologically close to the client.  If the ISP does
	  not have IPv6 connectivity it SHOULD NOT set the 6to4RRO option
	  unless it knows the addresses it it returning will not work
	  with 6to4.
        </t>
        <t>
	  If the ISP is returning a IPv4 addresses which will be subject
	  to network address translation, regardless of whether they have
	  IPv6 connectivity or not, it SHOULD set the returned 6to4RRO
	  option to 0.0.0.0.  This is intended to stop clients using IPv4
	  addresses which will not work with 6to4.
        </t>
      </section>
    </section>
    <section toc="yes" anchor="iana" title="IANA Considerations">
      <t>
	IANA is requested to allocate a DHCP option code point.
      </t>
    </section>
    <section toc="yes" anchor="security" title="Security Considerations">
      <t>
	A rogue DHCP server advertising this option can cause 6to4 traffic
	to be redirected anywhere in the world.
      </t>
      <t>
	Setting the returned address to 0.0.0.0 can be used to deny 6to4
	service when it would otherwise work.
      </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="Y. Rekhter">
	    <organization />
	  </author>
	  <author initials="B." surname="Moskowitz" fullname="B. Moskowitz">
	    <organization />
	  </author>
	  <author initials="D." surname="Karrenberg" fullname="D. Karrenberg">
	    <organization />
	  </author>
	  <author initials="G. J." surname="de Groot" fullname="G. J. de Groot">
	    <organization />
	  </author>
	  <author initials="E." surname="Lear" fullname="E. Lear">
	    <organization />
	  </author>
	  <date month="February" year="1996" />
	</front>
	<seriesInfo name="BCP" value="5" />
	<seriesInfo name="RFC" value="1918" />
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="S. Bradner">
            <organization />
          </author>
          <date month="March" year="1997" />
        </front>
        <seriesInfo name="BCP" value="14" />
        <seriesInfo name="RFC" value="2119" />
      </reference>
      <reference anchor="RFC3056">
	<front>
	  <title>Connection of IPv6 Domains via IPv4 Clouds</title>
	  <author initials="B." surname="Carpenter" fullname="B. Carpenter">
	    <organization />
	  </author>
	  <author initials="K." surname="Moore" fullname="K. Moore">
	    <organization />
	  </author>
	  <date month="February" year="2001" />
	</front>
	<seriesInfo name="RFC" value="3056" />
      </reference>
      <reference anchor="RFC3068">
	<front>
	  <title>An Anycast Prefix for 6to4 Relay Routers</title>
	  <author initials="C." surname="Huitema" fullname="C. Huitema">
	    <organization>Microsoft</organization>
	  </author>
	  <date month="June" year="2001" />
	</front>
	<seriesInfo name="RFC" value="3068" />
      </reference>
    </references>
    <references title="Informative References">
      <reference anchor="RFC5969">
	<front>
	  <title>IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) --
                         Protocol Specification</title>
	  <author initials="W." surname="Townsley" fullname="W. Townsley">
	    <organization/>
	  </author>
	  <author initials="O." surname="Troan" fullname="O. Troan">
	    <organization>Cisco</organization>
	  </author>
	  <date month="August" year="2010" />
	</front>
	<seriesInfo name="RFC" value="5969" />
      </reference>
    </references>
  </back>
</rfc>

