<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC2373 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2373.xml">
<!ENTITY RFC3315 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3315.xml">
<!ENTITY RFC4291 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4291.xml">
<!ENTITY RFC4861 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4861.xml">
<!ENTITY RFC4862 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4862.xml">
<!ENTITY RFC4941 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4941.xml">
<!ENTITY RFC5942 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5942.xml">
<!ENTITY RFC6164 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6164.xml">
<!ENTITY RFC6583 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6583.xml">
<!ENTITY RFC7217 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7217.xml">
<!ENTITY RFC7421 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7421.xml">
<!ENTITY RFC7608 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7608.xml">
<!ENTITY RFC7707 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7707.xml">
<!ENTITY RFC7721 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7721.xml">
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8273 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8273.xml">
<!ENTITY I-D.jinmei-6man-prefix-clarify SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.jinmei-6man-prefix-clarify.xml">
<!ENTITY I-D.bourbaki-6man-classless-ipv6 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.bourbaki-6man-classless-ipv6.xml">
<!ENTITY I-D.jaeggli-v6ops-indefensible-nd SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.jaeggli-v6ops-indefensible-nd.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" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-farmer-6man-exceptions-64-06" ipr="trust200902">
 <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN" 
    they will automatically be output with "(if approved)" -->

 <!-- ***** FRONT MATTER ***** -->

 <front>
   <title abbrev="Exceptions to the IPv6 Subnet Boundary">Exceptions to the Standard Subnet Boundary in IPv6 Addressing</title>
   <author fullname="David Farmer" initials="D.E." surname="Farmer">
     <organization abbrev="Univ. of Minnesota">University of Minnesota</organization>
     <address>
       <postal>
         <street>Office of Information Technology</street>
         <street>2218 University Ave SE</street>
         <city>Minneapolis</city>
         <region>MN</region>
         <code>55414</code>
         <country>US</country>
       </postal>
       <phone>+16126260815</phone>
       <email>farmer@umn.edu</email>
       <uri>http://www.umn.edu/</uri>
     </address>
   </author>
   <date year="2018" />
   <area>Internet Area</area>
   <workgroup>6man Working Group</workgroup>
   <keyword>IPv6 assignment prefix on-link exceptions 64-bit standard subnet boundary </keyword>
   <abstract>
     <t>This document clarifies exceptions to the standard subnet boundary in IPv6 addressing. The exceptions include unicast IPv6 addresses with the first three bits 000, manually configured addresses, DHCPv6 assigned addresses, IPv6 on&#8209;link determination, and the possibility of an exception specified in separate IPv6 link&#8209;type specific documents. Further, operational guidance is provided, and Appendix A discusses the valid options for configuring the parameters of an IPv6 subnet.</t>
   </abstract>
 </front>
 <middle>
   <section anchor="Intro" title=" Introduction">

     <t>The standard subnet boundary in IPv6 addressing provides the basis for unicast addresses to be autonomously generated, using stateless address auto&#8209;configuration (SLAAC) <xref target="RFC4862"></xref>, and assigned to interfaces on host. SLAAC allows hosts to connect to link networks without any pre&#8209;configuration, which is especially useful for general&#8209;purpose hosts and mobile devices. In this circumstance, unicast addresses have an internal structure composed of standard 64&#8209;bit interface identifiers (IIDs) and therefore 64&#8209;bit subnet prefixes, as described in the IPv6 Addressing Architecture <xref target="RFC4291"></xref> Section 2.5. For additional discussion of the standard subnet boundary in IPv6 addressing see <xref target="RFC7421">RFC&nbsp;7421</xref>.</t>

     <t>However, in other circumstances, such as with manually configured addresses or DHCPv6 <xref target="RFC3315"></xref> assigned addresses, unicast addresses are assigned to interfaces on nodes as opaque 128&#8209;bit quantities without any knowledge of the internal structure or the subnets present on the link network. These circumstances are also described in IPv6 Addressing Architecture <xref target="RFC4291"></xref> Section 2.5, "a node may consider that unicast addresses (including its own) have no internal structure."</t>

     <t>Further, unlike IPv4 where there is a single subnet mask parameter with the two aspects of a subnet, address assignment and on&#8209;link determination, tightly coupled together, while in IPv6 they are split into two logically separate parameters serving the two aspects independently. The subnet assignment prefix is used for performing autonomous address assignment by SLAAC. Separately, the on&#8209;link prefix is used to determine if an address can be delivered using a directly connected link network. IPv6 Neighbor Discovery (ND) <xref target="RFC4861"></xref>, the IPv6 Subnet Model <xref target="RFC5942"></xref>, and SLAAC <xref target="RFC4862"></xref> describe and specify the use of these parameters in detail.</t>

     <t>Briefly, unicast addresses assigned to interfaces on nodes are not considered on&#8209;link unless covered by an on&#8209;link prefix advertised through ND Router Advertisement (RA) messages containing Prefix Information Options (PIOs) with the on&#8209;link (L) flag set or by manual configuration. Whereas autonomous address assignment uses subnet assignment prefixes that are also advertised through the same ND RA messages and PIOs but with the autonomous (A) flag set instead. While they act independently, most frequently subnets are configured using subnet assignment prefixes with identical on&#8209;link prefixes, see Appendix A for further decision of this and the other valid options for configuring the parameters of an IPv6 subnet. However, unlike subnet assignment prefixes, which are effectively required to be 64 bits in length, on&#8209;link prefixes may have any length between 0 and 128 bits, inclusive. Nevertheless, for consistency with the standard subnet boundary, 64&#8209;bit on&#8209;link prefix lengths are recommended in most circumstances.</t>

     <t>Reinforcing the ideas that on&#8209;link prefixes are logically separate and may have any length. On&#8209;link prefixes are part of the next&#8209;hop determination process, described in IPv6 ND <xref target="RFC4861"></xref> Section 5.2, which is intrinsically part of routing and forwarding within IPv6, and <xref target="RFC7608">BCP&nbsp;198</xref> says, "forwarding processes MUST be designed to process prefixes of any length up to /128, by increments of 1."</t>

     <t>Finally, SLAAC is currently designed to utilize a single IID length to validate the length of the subnet assignment prefixes provided to it. However, SLAAC itself does not define the IID length or assume it is 64 bits in length. It utilizes the IID length defined in separate link&#8209;type specific documents that are intended to be consistent with the standard 64&#8209;bit IID length specified in the IPv6 Addressing Architecture <xref target="RFC4291"></xref> Section 2.5.1. While this is a possible exception to the standard subnet boundary, currently there are no IPv6 link&#8209;type specific documents that specify an IID length other than 64 bits.  Effectively requiring 64&#8209;bit IIDs and therefore 64&#8209;bit subnet assignment prefixes are used for performing autonomous address assignment by SLAAC.</t>

     <t>In summary, the essential theory of this document is that the two parameters that define IPv6 subnets, the subnet assignment prefix and the on&#8209;link prefix, interact with the standard subnet boundary in subtle but complex ways. IPv6 subnets are primarily configured using subnet assignment prefixes and when they are used IPv6 subnets and IIDs are both effectively required to be 64 bits in length.  However, it is also possible to configure IPv6 subnets solely using on-link prefixes, which may have any length between 0 and 128 bits, inclusive. Nevertheless, for consistency with the standard subnet boundary, 64&#8209;bit on-link prefix lengths are recommended in most circumstances. Therefore, when IPv6 subnets are configured solely using on-link prefixes, IPv6 subnets and IIDs are both only recommended to be 64 bits in length.</t>

     <t>By clarifying the following exceptions to the standard subnet boundary and providing clear operational guidance, this document intends to provide clarity to and a better understanding of this subtle but complex interaction between the standard subnet boundary in IPv6 addressing and how IPv6 subnets are defined and implemented by the protocols in question.</t>

     <section title="Requirements Language">
       <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP&nbsp;14 <xref target="RFC2119"></xref> <xref target="RFC8174"></xref> when, and only when, they appear in all capitals, as shown here.</t>
     </section>
   </section>

   <section anchor="Exceptions" title="Exceptions to the Standard Subnet Boundary"> 

     <section title="Unicast Addresses with the First Three Bits 000">
       <t>These are all currently special&#8209;purpose IPv6 addresses or are otherwise reserved. Also, they are generally not assigned to interfaces on hosts, especially not to general&#8209;purpose hosts. Examples of these addresses are the unspecified address, the loopback address, and the IPv4&#8209;Mapped IPv6 Address from <xref target="RFC4291">RFC&nbsp;4291</xref> sections 2.5.2, 2.5.3, and 2.5.5.2 respectively.</t>

       <t>Most of these addresses have no internal structure and are considered opaque 128&#8209;bit quantities. However, some of these addresses could be presumed to have structure, such as the IPv4-mapped IPv6 address. This structure comes from embedding an IPv4 address within an IPv6 address, but this structure is unrelated to and different from the internal structure, composed of standard IIDs and subnets created by the standard subnet boundary.</t>

       <t>Historically, reservations were also made in this range for the mapping of OSI NSAP and IPX address into IPv6 addresses. They had structures similar to the IPv4&#8209;mapped IPv6 address discussed above. However, they have since been deprecated.</t>

       <t><list style="empty">
         <t>Note: ever since <xref target="RFC2373">RFC&nbsp;2373</xref> addresses with the first three bits 000 have been an exception to the standard subnet boundary, and addresses with the first three bits 001 through 111, except for multicast addresses, have been expected to be consistent with the standard 64&#8209;bit IID length and the standard subnet boundary. However, currently only 2000::/3 has been allocated as global unicast address space and released to the IANA for distribution to the Regional Internet Registries (RIRs). The applicability of the standard subnet boundary to future allocations will be determined at the time the allocations are release to the IANA. Nevertheless, implementations of IPv6 should assume the standard subnet boundary applies to future allocations and that 2000::/3 is not special in this regard.</t>
       </list></t>
     </section>

     <section anchor="manualconfig" title="Manually Configured Addresses">
       <t>IPv6 addresses manually configured on a node's interface, sometimes known as statically configured, are an exception to the standard subnet boundary as they are considered opaque 128&#8209;bit quantities and are assigned to node interfaces without any knowledge of the internal structure or the subnets present on the link network.</t>

       <t>Manually configured addresses MAY also include an associated on&#8209;link prefix length. This on&#8209;link prefix length (n) MAY have any value between 0 and 128 bits, inclusive. If an on&#8209;link prefix length is included, the most significant, or leftmost, n bits of the manually configured address are considered the on&#8209;link prefix. Otherwise, if an on&#8209;link prefix length is not included, an on&#8209;link prefix MUST NOT be automatically assumed, but an on&#8209;link prefix may be learned from a PIO with the L flag set. Nevertheless, for consistency with the standard subnet boundary, 64&#8209;bit on&#8209;link prefix lengths are recommended in most circumstances. See section 3 for operational guidance regarding on&#8209;link prefix lengths.</t>
     </section>

     <section anchor="DHCPv6" title="DHCPv6 Assigned Addresses">
        <t>IPv6 addresses assigned to a host's interface via DHCPv6 <xref target="RFC3315"></xref> (Identity Association for Non-temporary Addresses (IA_NA) or Identity Association for Temporary Addresses (IN_TA)) are an exception to the standard subnet boundary as they are considered opaque 128&#8209;bit quantities and are assigned to host interfaces without any knowledge of the internal structure or the subnets present on the link network. Further, DHCPv6 assigned addresses MUST NOT automatically assume an on&#8209;link prefix, but an on&#8209;link prefix may be learned from a PIO with the L flag set.</t>

     </section>

     <section anchor="On-link" title="IPv6 On-link Determination">
        <t>IPv6 on&#8209;link determination is an exception to the standard subnet boundary, in that IPv6 ND <xref target="RFC4861"></xref> does not require on&#8209;link prefixes to be 64 bits in length. To the contrary, on&#8209;link prefixes MAY have any length between 0 and 128 bits, inclusive. Nevertheless, for consistency with the standard subnet boundary, 64&#8209;bit on&#8209;link prefix lengths are recommended in most circumstances. See section 3 for operational guidance regarding on&#8209;link prefix lengths.</t>
     </section>

     <section title="IPv6 Link-type Specific Documents">
        <t>Separate IPv6 link&#8209;type specific documents, sometimes known as "IPv6&#8209;over&#8209;FOO" documents, specify the IID length utilized by SLAAC to validate the length of subnet assignment prefixes provided. The IID length defined SHOULD be consistent with the standard 64&#8209;bit IID length specified in the IPv6 Addressing Architecture <xref target="RFC4291"></xref>. However, these documents may create an exception to the standard 64&#8209;bit IID length scoped to a specific link&#8209;type technology when justified.  Although currently, there are no IPv6 link&#8209;type specific documents that specify an IID length other than 64 bits.</t>  

        <t>When an exception to the standard 64&#8209;bit IID is specified in a link&#8209;type specific document, valid justification needs to be documented in some detail.</t>

        <t>Further, SLAAC is currently designed to validate against only a single IID length per link&#8209;type technology. As a result, a link&#8209;type technology that specifies a non-standard IID length cannot be directly bridged with another link&#8209;type technology that specifies the standard 64&#8209;bit IID length without creating confusion about the IID length that is to be used for validation. Therefore, if this type of direct bridging is allowed, then a mechanism to ensure there is no confusion about which IID length SLAAC is to validate against needs to be provided.</t>
     </section>
   </section>

   <section title="Operational Guidance">
      <t>At a high-level, this document recommends the following principles for the configuration of IPv6 subnets. The configuration of subnet assignment prefixes is recommended, allowing hosts to use autonomous address assignment. With this configuration, subnet assignment prefixes are required to be 64 bits in length, requiring 64&#8209;bit subnets in this circumstance. Further, identical on&#8209;link prefixes are recommended, but on&#8209;link prefixes are required to be 64 bits or shorter. Otherwise, if a subnet assignment prefix is not configured, then hosts will have to use manually configured addresses or DHCPv6 assigned addresses and these subnets are solely configured by on&#8209;link prefixes. These on&#8209;link prefixes are recommended to be 64 bits in length, therefore only recommending 64&#8209;bit subnets in this circumstance. There are two exceptions to these principles, the possible future specification of a link&#8209;type specific document based on an IID length that is not 64 bits and inter&#8209;router point&#8209;to&#8209;point links with 127&#8209;bit prefixes <xref target="RFC6164"></xref>. Further, each subnet must be configured on a single link network and must not overlap subnets on other link networks.</t>

      <t>More formally;</t>

      <t><list style="empty">
        <t>Network operators SHOULD configure routers to advertise to each link network at least one subnet assignment prefix (a PIO with the A flag set). If a subnet assignment prefix is advertised, it MUST be (128 &#8211; N) bits in length and an identical on&#8209;link prefix (a PIO with the L flag set) SHOULD also be advertised. If an on&#8209;link prefix is advertised and is covered by a subnet assignment prefix, the on&#8209;link prefix MUST NOT be longer than (128 &#8211; N) bits in length.</t> 

        <t>Otherwise, if a subnet assignment prefix is not advertised, network operators SHOULD configure routers to advertise to each link network at least one on&#8209;link prefix (a PIO with the L flag set) that is (128 &#8211; N) bits in length or provide the same manually configured on&#8209;link prefix to each node on the link network that is (128 &#8211; N) bits in length.</t>

        <t>Where N = 64 or the IID length specified in the link&#8209;type specific document for the link network in question.</t> 

        <t>Alternatively, network operators MAY configure point&#8209;to&#8209;point router links with on&#8209;link prefixes that SHOULD be 127 bits in length, typically by manual configuration, and with no subnet assignment prefix. See <xref target="RFC6164">RFC&nbsp;6164</xref> Section 6 for address selection considerations.</t>

        <t>Further, each on&#8209;link prefix and each subnet assignment prefix MUST be uniquely configured on a single link network and MUST NOT overlap on&#8209;link prefixes or subnet assignment prefixes configured on any other link networks. On&#8209;link prefixes MAY overlap subnet assignment prefixes configured on the same link network.</t>

      </list></t>

      <t>Appendix A discusses in further detail the valid options for configuring the parameters of IPv6 subnet.</t>
  </section>

   <section anchor="IANA" title="IANA Considerations">
     <t>This document includes no request to IANA.</t>
   </section>

   <section anchor="security" title="Security Considerations">
     <t>This document clarifies exceptions to the standard subnet boundary in IPv6 addressing. These clarifications are not security related and therefore are not expected to introduce any new security considerations.</t>

     <t>The use of subnets solely configured by on&#8209;link prefixes negatively impacts techniques that are intended to increase the security and privacy of users <xref target="RFC4941">RFC&nbsp;4941</xref> and <xref target="RFC7217">RFC&nbsp;7217</xref>, as they depend on the use of SLAAC, hence the recommendation to configure subnet assignment prefixes allowing the use of SLAAC. Further, the use of subnets solely configured by on&#8209;link prefixes also permits longer on&#8209;link prefixes effectively allowing smaller subnets and making it more feasible to perform IPv6 address scans. These and other related security and privacy considerations are discussed in <xref target="RFC7707">RFC&nbsp;7707</xref> and <xref target="RFC7721">RFC&nbsp;7721</xref>.</t>

     <t>However, the use of smaller subnets can be effective mitigation for neighbor cache exhaustion issues as discussed in <xref target="RFC6164">RFC&nbsp;6164</xref> and <xref target="RFC6583">RFC&nbsp;6583</xref>. The relative weights applied in this trade&#8209;off will vary from situation to situation.</t>
   </section>

   <section anchor="acknowledgments" title="Acknowledgments">
     <t>This document was inspired by a series of discussions on the 6MAN and the V6OPS working group mailing lists over a period of approximately two years, including discussions around the following drafts; <xref target="I-D.jinmei-6man-prefix-clarify"></xref>, <xref target="I-D.bourbaki-6man-classless-ipv6"></xref>, and <xref target="I-D.jaeggli-v6ops-indefensible-nd"></xref>. All revolving around the discussion of <xref target="RFC4291bis">RFC&nbsp;4291bis</xref> and its advancement to Internet Standard.</t>

     <t>This document was produced using the xml2rfc tool <xref target="RFC2629"></xref>.</t>

     <t>The author would like to thank the following, in alphabetical order, for their contributions and comments:</t>
     <t><list style="empty">
       <t>Brian Carpenter, Bruce Curtis, Fernando Gont, Craig Miller, Alexandre Petrescu, and Tatuya Jinmei</t>
     </list></t>
   </section>

   <section anchor="changes" title="Change log [RFC Editor: Please remove]">
   
     <t><list>
     <?rfc subcompact="yes" ?>
     <t>draft-farmer-6man-exceptions-64-06, 2018-August-9:</t>
       <t><list style="symbols">
       <t>Added to the note in Section 2.1, about the applicability of standard subnet boundary to future allocations.</t>
       <t>Wordsmithed the two exceptions in the formal guidance.</t> 
       <t>Added a subnet uniqueness requirement in the operational guidance.</t> 
       <t>Other miscellaneous editorial changes.</t>
       </list></t>
       <t></t>    
     <t>draft-farmer-6man-exceptions-64-05, 2018-August-6:</t>
       <t><list style="symbols">
       <t>Fixed typo in organization tag from version 4</t>
       </list></t>
       <t></t>    
     <t>draft-farmer-6man-exceptions-64-04, 2018-August-6:</t>
       <t></t> 
       <t><list style="symbols">
       <t>Changed references for RFC4291bis to RFC4291 except in Acknowledgments</t>
       <t>Missed a 64-bit boundary, changing it to standard subnet boundary, in the note in Section 2.1.</t>
       <t>Added that only 2000::/3 has bee release for allocations, in the note in Section 2.1.</t>
       <t>Other miscellaneous editorial changes and typos fixed.</t>
       <t>Changes to Author's address</t>
       </list></t>
       <t></t> 
     <t>draft-farmer-6man-exceptions-64-03, 2018-August-3:</t>
       <t></t> 
       <t><list style="symbols">
       <t>Several editorial changes to manual configuration and DHCPv6 sections</t>
       <t>Changed 64-bit boundary to standard subnet boundary in the title and through the document.</t>
       <t>Several editorial changes to the operational guidance section and changed from 64-bit to 128-N and N=64 in the formal guidance.</t>
       <t>Added titles for the M and O flags.</t>
       <t>Other miscellaneous editorial changes.</t>
       </list></t>
       <t></t> 
     <t>draft-farmer-6man-exceptions-64-02, 2018-July-31:</t>
       <t></t> 
       <t><list style="symbols">
       <t>Rewrote summary paragraph of the Introduction, using both subnets and IIDs.</t> 
       <t>Added that privacy addresses require SLAAC in the Security Considerations.</t>
       <t>Added that manual config and DHCPv6 can also be used with Options 1-3 of Appendix A.</t>
       <t>Added quick mention of M and O flags to discussion of DHCPv6 in Option 4 of Appendix A.</t>
       <t>Fixed typos introduced in version 01.</t>
       <t>More formatting changes.</t>
       <t>Editorial changes.</t>
       </list></t>
       <t></t> 
     <t>draft-farmer-6man-exceptions-64-01, 2018-July-24:</t>
       <t></t> 
       <t><list style="symbols">
       <t>Numerous formatting changes.</t>
       <t>Editorial changes.</t>
       <t>Moved Acknowledgments to just before change log.</t>
       </list></t>
       <t></t>
     <t>draft-farmer-6man-exceptions-64-00, 2018-July-23:</t>
       <t></t>
       <t><list style="symbols">
       <t>Original version.</t>
       </list></t>
       <t></t>
     <?rfc subcompact="no" ?>
     </list></t>
   </section>
 </middle>

 <!--  *****BACK MATTER ***** -->

 <back>

   <references title="Normative References">
     &RFC2119;
     &RFC3315;
     &RFC4291;
     &RFC4861;
     &RFC4862;
     &RFC5942;
     &RFC6164;
     &RFC7608;
     &RFC8174;
   </references>

   <references title="Informative References">
     &RFC2629;
     &RFC2373;
     &RFC4941;
     &RFC6583;
     &RFC7217;
     &RFC7421;
     &RFC7707;
     &RFC7721;
     &RFC8273;
     &I-D.jinmei-6man-prefix-clarify;
     &I-D.bourbaki-6man-classless-ipv6;
     &I-D.jaeggli-v6ops-indefensible-nd;
     <reference anchor="RFC4291bis"
                target="https://tools.ietf.org/id/draft-ietf-6man-rfc4291bis">
       <front>
         <title>IP Version 6 Addressing Architecture</title>
         <author initials="R" surname="Hinden" fullname="Robert Hinden">
         <organization/>
         </author>
         <author initials="S" surname="Deering" fullname="Steve Deering">
         <organization/>
         </author>
         <date month="July" day="3" year="2017"/>       
       </front>
       <seriesInfo name="Internet-Draft" value="draft-ietf-6man-rfc4291bis-09"/>
       <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-6man-rfc4291bis-09.txt"/>
     </reference>
   </references>

<?rfc needLines="20" ?>

   <section anchor="Subnets" title="Options for Configuring IPv6 Subnets">
      <t>As discussed in the Introduction, IPv6 subnets are defined by two separate parameters, acting independently, the subnet assignment prefix and the on&#8209;link prefix. It is possible to configure these two parameters with several different relationships to each other. These parameters are primarily advertised in ND RA messages by PIOs, with the A and L flags designating the purpose of the PIO. However, on&#8209;link prefixes may also be manually configured.</t> 

      <t>SLAAC <xref target="RFC4862"></xref> section 5.5.3 bullet d, validates subnet assignment prefixes against the IID length specified in separate link&#8209;type specific documents that are intended to be consistent with the standard 64&#8209;bit IID length. Currently, there are no link&#8209;type specific documents that specify a non&#8209;standard IID length. Therefore subnet assignment prefixes are effectively required to be 64 bits in length. Further, to simplify the following discussion the possibility that a link&#8209;type specific document could specify a non&#8209;standard IID length is ignored.</t>

      <t>Whereas on&#8209;link prefixes have no such validation specified in IPv6 ND <xref target="RFC4861"></xref>, this is also confirmed in SLAAC <xref target="RFC4862"></xref> section 5.5.3 bullet d. Therefore on&#8209;link prefixes are not required to be 64 bits in length; they may have any length between 0 and 128 bits, inclusive. Nevertheless, for consistency with the standard subnet boundary, 64&#8209;bit on&#8209;link prefixes lengths are recommended, except for inter&#8209;router point&#8209;to&#8209;point links with 127&#8209;bit prefixes.</t>

      <t>The following are the valid options for configuring the two parameters that define an IPv6 subnet;</t>
    
      <t><list style="numbers">
        <?rfc subcompact="yes" ?>
        <t>Subnet assignment prefixes with identical on&#8209;link prefixes</t>
        <t>Subnet assignment prefixes with shorter covering on&#8209;link prefixes</t>
        <t>Only subnet assignment prefixes with no on&#8209;link prefixes</t>
        <t>Only on&#8209;link prefixes with no subnet assignment prefixes</t>
        <?rfc subcompact="no" ?>
      </list></t>

      <t>Options 1 through 3, all define subnet assignment prefixes, designating the use of autonomous address assignment, performed by SLAAC, and effectively requiring subnets that are 64 bits in length. However, manually configured addresses or DHCPv6 assigned addresses may also be used in addition to autonomous address assignment.</t>
 
      <t>Option 1 is both the most frequently used and the only recommended option, except for inter-router point&#8209;to&#8209;point links with 127&#8209;bit prefixes, it has identical subnet assignment prefixes and on&#8209;link prefixes of 64 bits in length. The 64&#8209;bit subnets used for autonomous address assignment are considered to be on&#8209;link. This option is particularly recommended for networks that are made available to the general public or networks that intend to connect general-purpose hosts or mobile devices.</t> 

      <t>Option 2 is not recommended, but is still a valid configuration; it has on&#8209;link prefixes shorter than 64 bits, between 0 and 63 bits, inclusive, but covering the subnet assignment prefixes included. The 64&#8209;bit subnets used for autonomous address assignment are considered on&#8209;link, along with other numerically adjacent subnets. However, these other numerically adjacent subnets are not used for autonomous address assignment unless additional separate 64&#8209;bit subnet assignment prefixes are also included.</t>

      <t>Option 3 is not recommended, but is still a valid configuration; it has subnet assignment prefixes but no on&#8209;link prefixes. Therefore the 64&#8209;bit subnets used for autonomous address assignment are not considered on&#8209;link, and all traffic for the subnets, including host-to-host traffic, must be sent to a default router. See <xref target="RFC8273">RFC&nbsp;8273</xref> for an example of this option.</t>

      <t>Option 4 is not recommended, but is still a valid configuration; it has on&#8209;link prefixes, but no subnet assignment prefixes, and therefore manually configured addresses or DHCPv6 assigned addresses must be used. The on&#8209;link prefixes may have any length between 0 and 128 bits, inclusive.  However, 64&#8209;bit on&#8209;link prefixes are recommended, except for inter-router point-to-point links with 127&#8209;bit prefixes. This option effectively results in subnets that are defined only by the on&#8209;link prefixes, and therefore the subnets may have any lengths, even though 64 bits is recommended.</t>

      <t>Furthermore, Option 4 essentially allows for the use of subnets longer than 64 bits. While this violates the spirit of the standard subnet boundary, technically it is not a violation; manually configured addresses, DHCPv6 assigned addresses, and on&#8209;link determination are all exceptions to the standard subnet boundary defined in this document. Nevertheless, for consistency with the standard subnet boundary, 64&#8209;bit on&#8209;link prefix lengths are recommended, effectively recommending 64&#8209;bit subnets, except for inter&#8209;router point&#8209;to&#8209;point links with 127&#8209;bit prefixes.</t>

      <t>There can be operationally valid reasons for configuring subnets longer than 64 bits, and when a subnet is solely configured by an on&#8209;link prefix, longer subnets while not recommended are not prohibited either. <xref target="RFC6164">RFC&nbsp;6164</xref> explicitly allows 127&#8209;bit prefixes for inter&#8209;router point&#8209;to&#8209;point links. Hence the explicit exceptions included for it. Additionally, <xref target="RFC6583">RFC&nbsp;6583</xref> discusses "sizing subnets to reflect the number of addresses actually in use" as an operational mitigation for neighbor cache exhaustion issues. <xref target="RFC7421">RFC&nbsp;7421 section 3</xref> discusses these issues in more detail, but there could be other reasons as well. Nevertheless, address conservation by itself is never considered a valid reason for configuring subnets longer than 64 bits.  Accordingly, if a site needs additional subnets, additional 64&#8209;bit subnets are expected to be provided.</t>

      <t>When DHCPv6 is used a DHCPv6 server or DHCPv6 relay agent will also be needed on the link network. Further, the managed address configuration (M) flag in IPv6 ND RA messages signals to hosts that DHCPv6 should be used for IPv6 address assignment and the other configuration (O) flag signals that other configuration information is available via DHCPv6. However, some hosts do not implement DHCPv6 and other hosts do not provide a mechanism for manually configuring an address on an interface. Hosts that implement neither, only implementing SLAAC, do exist and do not operate on subnets configured based on Option 4 regardless of the length of the on&#8209;link prefix configured.</t>

      <t>It is possible to simultaneously configure multiple different subnets, associated with a single link network, each based on the same or different options described above. For example, there could be two different subnets based on Option 1 and one based on Option 4, all associated with the same link network.</t>

      <t>Logically there is another option that could define a subnet, "Subnet assignment prefixes with longer covered on&#8209;link prefixes," but it does not result in an operationally valid subnet. While SLAAC and ND accept this configuration, it is particularly problematic and is considered an invalid configuration by the operational guidance provided in section 3. It would have on&#8209;link prefixes longer than 64 bits, between 65 and 128 bits, inclusive, that are covered by an included 64&#8209;bit subnet assignment prefix. This configuration results in the 64&#8209;bit subnet used for autonomous address assignment being inconsistently considered on&#8209;link for some address and not on&#8209;link for other addresses within the same subnet. This inconsistency creates a performance differential between addresses within the same subnet, which is inefficient and difficult to troubleshoot.</t>
   </section>
 
 </back>
</rfc>
