<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- Some of the more generally applicable PIs that most I-Ds might want to use -->
<!-- Try to enforce the ID-nits conventions and DTD validity -->
<?rfc strict="yes" ?>
<!-- Items used when reviewing the document -->
<?rfc comments="no" ?>
<!-- Controls display of <cref> elements -->
<?rfc inline="no" ?>
<!-- When no, put comments at end in comments section,
                                 otherwise, put inline -->
<?rfc editing="no" ?>
<!-- When yes, insert editing marks: editing marks consist of a 
                                 string such as <29> printed in the blank line at the 
                                 beginning of each paragraph of text. -->
<!-- Create Table of Contents (ToC) and set some options for it.  
         Note the ToC may be omitted for very short documents,but idnits insists on a ToC 
         if the document has more than 15 pages. -->
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<!-- If "yes" eliminates blank lines before main section entries. -->
<?rfc tocdepth="3"?>
<!-- Sets the number of levels of sections/subsections... in ToC -->
<!-- Choose the options for the references. 
         Some like symbolic tags in the references (and citations) and others prefer 
         numbers. The RFC Editor always uses symbolic tags.
         The tags used are the anchor attributes of the references. -->
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<!-- If "yes", causes the references to be sorted in order of tags.
                                 This doesn't have any effect unless symrefs is "yes" also. -->
<!-- These two save paper: Just setting compact to "yes" makes savings by not starting each 
         main section on a new page but does not omit the blank lines between list items. 
         If subcompact is also "yes" the blank lines between list items are also omitted. -->
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<!-- end of list of popular I-D processing instructions -->
<!-- end of list of processing instructions -->
<rfc category="bcp" docName="draft-baker-v6ops-cpe-autoconfigure-00"
     ipr="trust200902">
  <front>
    <title abbrev="">Requirements for a Zero-Configuration IPv6 CPE</title>

    <author fullname="Fred Baker" initials="F.J." surname="Baker">
      <organization/>

      <address>
        <postal>
          <street/>

          <city>Santa Barbara</city>

          <code>93117</code>

          <region>California</region>

          <country>USA</country>
        </postal>

        <email>FredBaker.IETF@gmail.com</email>
      </address>
    </author>

    <date/>

    <area>Operations and Management</area>

    <workgroup>IPv6 Operations</workgroup>

    <abstract>
      <t>This note is a breif exploration of what is required for a CPE to be
      auto-configurable from the perspective on an ISP or other upstream
      network. It assumes that the CPE may also be IPv4-capable (probably
      using NAPT), but that the requirements for that are well understood and
      need no further specification. </t>
    </abstract>

    <!--		
		<note title="Foreword">
		</note>
		-->

    <!--
      <?rfc needLines="10" ?>
      <texttable anchor="table_example" title="A Very Simple Table">
      <preamble>Tables use ttcol to define column headers and widths.
      Every cell then has a &quot;c&quot; element for its content.</preamble>
          <ttcol align="center">ttcol #1</ttcol>
                                    <ttcol align="center">ttcol #2</ttcol>
                      <c>c #1</c>		<c>c #2</c>
                      <c>c #3</c>		<c>c #4</c>
                      <c>c #5</c>		<c>c #6</c>
      <postamble>which is a very simple example.</postamble>
      </texttable>
    -->
  </front>

  <middle>
    <!--		
      <t>There are multiple list styles: "symbols", "letters", "numbers",
"hanging", "format", etc.</t>
      <t>
	<list style="symbols">
	    <t>First bullet</t>
	    <t>Second bullet</t>
	</list>
     </t>
-->

    <!--
      <?rfc needLines="10" ?>
<figure anchor="reference" title="Figure">
<artwork align="center">
<![CDATA[
	ASCII artwork goes here... 
]]>
</artwork>
</figure>
-->

    <section anchor="introduction" title="Introduction">
      <t>We observe that, in today's offerings, "IPv6-capable" has many
      different meanings. These often require specific configuration and are
      non-interoperable.</t>

      <t>The objective is to enable a customer to purchase a CPE router from a
      mass market store, or for an ISP to purchase CPE Routers for its managed
      service offering, that implement <xref target="RFC2460">IPv6</xref> and
      can be attached to any residential/SOHO network and any ISP or other
      upstream network "as is out of the box", and work correctly.</t>

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

    <section anchor="operation" title="Operational Requirements">
      <t>The goal stated in <xref target="introduction"/> requires that
      downstream, which is to say within the home or SOHO , the CPE must
      presume that there may exist systems that will <xref
      target="RFC4862">autoconfigure</xref> themselves using information in a
      <xref target="RFC4861"> Router Advertisement</xref>, and that there may
      exist systems that require address assignment using <xref
      target="RFC3315">DHCPv6</xref>. It may offer a DNS service using a
      provider such as OpenDNS, Google Public DNS, Amazon Route 53, or some
      other such service, or relay the address of an ISP-provided DNS
      server.</t>

      <t>Similarly, the stated goal requires that upstream, the CPE must
      presume that it will be required to solicit and observe a <xref
      target="RFC4861"> Router Advertisement</xref>, and <list style="symbols">
          <t>learn an upstream DHCPv6 server address,</t>

          <t>either <xref target="RFC4862">autoconfigure</xref> its upstream
          address or derive one using <xref
          target="RFC3315">DHCPv6</xref>,</t>

          <t>potentially learn an DNS server address from an <xref
          target="RFC4339">RDNSS</xref> or from DHCPv6,</t>

          <t>and allocate IPv6 /64 prefixes for each of its interior subnets
          using the <xref target="RFC3633">IPv6 Prefix Options for
          DHCP</xref>.</t>
        </list></t>

      <t>Given that, it is in a position to offer IPv6 services in the
      residential/SOHO network depending on the upstream IPv6
      capabilities.</t>
    </section>

    <section anchor="achieve" title="Expected Behavior">
      <t>As a result, a CPE needs to perform several steps, and come out of
      the box configured to do so. These include: <list style="numbers">
          <t>Upon detecting the upstream interface as "up", emit a <xref
          target="RFC4861">Router Solicitation</xref> on it.</t>

          <t>If it receives a <xref target="RFC4861">Router
          Advertisement</xref>, verify its contents. These may include: <list
              style="symbols">
              <t>If the RA contains a valid Prefix Information Option whose
              prefix is available for autoconfiguration, create an address in
              that prefix for that interface as specified in <xref
              target="RFC4862">SLAAC</xref>.</t>

              <t>Failing that, use <xref target="RFC3315">DHCPv6</xref> to
              request an address from the upstream network.</t>

              <t>In that same DHCP request, it MAY request an <xref
              target="RFC3633">IA_PD</xref> delegation of a set of prefixes as
              described in <xref target="IA_PD"/>.</t>
            </list></t>

          <t>If it has not already done so, the router should request an <xref
          target="RFC3633">IA_PD</xref> delegation of a set of prefixes as
          described in <xref target="IA_PD"/>.</t>

          <t>Given an upstream interface and a delegation of prefixes to use
          downstream, it should <list style="symbols">
              <t>subdelegate a /64 prefix to each downstream interface</t>

              <t>allocate an address to each downstream interface using the
              relevant prefixes</t>

              <t>start announcing a periodic RA on each downstream interface.
              This RA should include, in addition to usual information
              elements, the <xref target="RFC4339">RDNSS</xref>.</t>
            </list></t>
        </list></t>
    </section>

    <section anchor="IA_PD" title="Prefix Delegation">
      <t>When the CPE requests a set of prefixes from its upstream network,
      there are several conditions that may apply:<list style="symbols">
          <t><xref target="RFC4291"/> and <xref target="RFC7421"/> presume a
          /64 prefix on each IPv6 subnet.</t>

          <t>Each LAN to which the CPE connects may be presumed to require a
          subnet - if not immediately, at some point in the future.</t>

          <t>There may be LANs in the residential/SOHO network that are not
          attached to the CPE, but require subdelegation within the network
          using DHCPv6 or <xref target="RFC7788">HNCP</xref>.</t>
        </list></t>

      <t>The IA_PD requests a prefix, and indicates its preference for a
      "Length for this prefix in bits". By nature, this is exponential: if a
      home requires 17 subnets, it will require the prefix to be no longer
      than 59 bits, and therefore technically requesting at least 32 /64
      prefixes. In fact, some ISPs have stated privately that they actually
      allocate prefix lengths of 56, 60, or 64 (and therefore sets of 256, 16,
      or 1 /64) depending on the CPE's request.</t>

      <t>The CPE should request as many as it thinks it might need, including
      interior sub-delegation if it has an idea of what that may require.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This memo asks the IANA for no new parameters.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This note describes the use of existing features, each of which has
      its own Security Considerations, and as such adds no new security
      vulnerabilities.</t>
    </section>

    <section anchor="Privacy" title="Privacy Considerations">
      <t>This memo calls for no personally identifiable information. The data
      conveyed may, however, be correlatable with other data that is
      personally identifiable. Such things are beyond the scope of this
      document.</t>
    </section>

    <section anchor="hrpc" title="Human Rights Considerations">
      <t>Technologies described in this memo are not necessarily associated
      with a human being, and as such violate no human rights.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t/>
    </section>
  </middle>

  <back>
    <!-- references split to informative and normative -->

    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.2460"?>

      <?rfc include="reference.RFC.3315" ?>

      <?rfc include="reference.RFC.3633" ?>

      <?rfc include="reference.RFC.4861" ?>

      <?rfc include="reference.RFC.4339" ?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.4291"?>

      <?rfc include="reference.RFC.4862" ?>

      <?rfc include="reference.RFC.7217" ?>

      <?rfc include="reference.RFC.4941" ?>

      <?rfc include="reference.RFC.7421"?>

      <?rfc include="reference.RFC.7788" ?>
    </references>

    <section anchor="log" title="Change Log">
      <t><list style="hanging">
          <t hangText="Initial Version:">Jun 13 2017</t>
        </list></t>
    </section>
  </back>
</rfc>
