<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    " ">
  <!ENTITY zwsp   "​">
  <!ENTITY nbhy   "‑">
  <!ENTITY wj     "⁠">
]>
<!-- 
     draft-rfcxml-general-template-standard-00
  
     This template includes examples of the most commonly used features of RFCXML with comments 
     explaining how to customise them. This template can be quickly turned into an I-D by editing 
     the examples provided. Look for [REPLACE], [REPLACE/DELETE], [CHECK] and edit accordingly.
     Note - 'DELETE' means delete the element or attribute, not just the contents.
     
     Documentation is at https://authors.ietf.org/en/templates-and-schemas
-->
<?xml-model href="rfc7991bis.rnc"?>
<!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-smith-6man-icmpv6-prefix-redirect-00" ipr="trust200902" obsoletes="" updates="4861" submissionType="IETF" xml:lang="en" version="3">
 <!-- [REPLACE] 
       * docName with name of your draft
     [CHECK] 
       * category should be one of std, bcp, info, exp, historic
       * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
       * updates can be an RFC number as NNNN
       * obsoletes can be an RFC number as NNNN 
-->
 <front>
  <title abbrev="ICMPv6 Prefix Redirect">ICMPv6 Prefix Redirect Messages</title>
  <seriesInfo name="Internet-Draft" value="draft-smith-6man-icmpv6-prefix-redirect-00"/>
  <author fullname="Mark Smith" initials="M" role="editor" surname="Smith">
   <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->
   <!-- Can have more than one author -->
   <!-- all of the following elements are optional -->
   <address>
    <postal>
     <!-- Reorder these if your country does things differently -->
     <street>PO BOX 521</street>
     <city>Heidelberg</city>
     <region>Victoria</region>
     <code>3084</code>
     <country>AU</country>
     <!-- Uses two letter country code -->
    </postal>
    <email>markzzzsmith@gmail.com</email>
    <!-- Can have more than one <email> element -->
   </address>
  </author>
  <date year="2025"/>
  <!-- On draft subbmission:
         * If only the current year is specified, the current day and month will be used.
         * If the month and year are both specified and are the current ones, the current day will
           be used
         * If the year is not the current one, it is necessary to specify at least a month and day="1" will be used.
    -->
  <area>Internet</area>
  <workgroup>Internet Engineering Task Force</workgroup>
  <!-- "Internet Engineering Task Force" is fine for individual submissions.  If this element is 
          not present, the default is "Network Working Group", which is used by the RFC Editor as 
          a nod to the history of the RFC Series. -->
  <keyword>ipv6</keyword>
  <keyword>icmpv6</keyword>
  <keyword>prefix</keyword>
  <keyword>redirect</keyword>
  <keyword>redirection</keyword>
  <!-- [REPLACE/DELETE]. Multiple allowed.  Keywords are incorporated into HTML output files for 
         use by search engines. -->
  <abstract>
   <t>The existing IPv6 ICMPv6 Redirect Message informs a host of a better next hop for a single destination IPv6 address. There is now a use case for informing a host of a better next hop for a prefix of IPv6 addresses that includes or covers the single destination address that triggered the ICMPv6 redirect message. This memo specifies an ICMPv6 Prefix Redirect Message for this purpose.</t>
  </abstract>
 </front>
 <middle>
  <section>
   <name>Introduction</name>
   <t>[RFC9663] describes a method of assigning client hosts a prefix or range IPv6 addresses via DHCPv6-PD [RFC8415]. The IPv6 prefix size expected to be delegated to client hosts is a /64.</t>
   <t>The primary goal of [RFC9663] is to avoid large numbers of IPv6 neighbor cache entries in the router(s) connected to the same and a typically large network segment, which can occur due to IPv6 hosts having multiple IPv6 addresses for various purposes [BCP204][RFC1681].</t>
   <t>These hosts' addresses' neighbor cache entries are instead replaced with route table entries for the prefixes provided to the hosts via DHCPv6-PD. There will typically only be a single neighbor cache entry for each host, for the link-local address that is used as the next hop address for the DHCPv6-PD provided prefix in the route table.</t>
   <t>When packets are sent between hosts on the same link with different host prefixes, from and to addresses within the delegated prefixes, the sending host will normally send the packets to a default router for delivery, as the sending host is not aware that the destination address is within a prefix that is directly reachable via a host attached to the same link.</t>
   <t>[RFC9663] advises that routers SHOULD send an ICMPv6 Redirect Message [RFC4861] to the packet sending host to inform it that the destination address of the packet is directly reachable via another host attached to the same link.</t>
   <t>The major drawback of using existing ICMPv6 Redirect Messages in this case is that the ICMPv6 Redirect Message only redirects packets for a single destination address. Should the same sending host send a packet to a different destination within the same destination prefix assigned to an on-link host, it will again send that packet to a default router and the default router will again generate an ICMPv6 Redirect Message for the different destination address to the same on-link destination host.</t>
   <t>In the scenario described by [RFC9663], a default router is aware of the prefix assigned to a host that includes the destination address that will trigger an ICMPv6 Redirect Message. Consequently, rather than generating an ICMPv6 Redirect Message for an individual destination address, it would be preferable if an ICMPv6 redirection message could convey redirection for a prefix covering a range of destination addresses assigned to a host.</t>
   <t>This memo enhances the existing ICMPv6 Redirect Message so that it can convey an IPv6 prefix that includes the single IPv6 destination address that triggered the redirection. This enhanced redirect message is known as an ICMPv6 Prefix Redirect Message. The ICMPv6 Prefix Redirect Message is backwardly compatible with host implementations that only understand the existing single destination IPv6 address ICMPv6 Redirect Message.</t>
   <section>
    <name>Broadband Access Network Use-Case</name>
    <t>Broadband access networks can commonly have subscriber layer 2 aggregation distributed across multiple points-of-presence (PoPs), such as telephone exchanges (central offices), while the upstream layer 3 Broadband Network Gateway (BNG) is located in a remote data center, reached via the access network backhaul links. The BNG is likely to provide services to multiple PoPs, hence the more central location in a data center. Subscribers individual services and sessions are typically isolated from each other using VLAN tags. Each subscriber session between the BNG and the subscriber's CPE will have a unique IPv6 /64 or perhaps a /128. They will be delegated an IPv6 prefix for their CPE's downstream LAN interfaces of up to a /48 via DHCPv6-PD.</t>
    <t>A drawback of this existing deployment model is that all inter-subscriber traffic between subscribers attached to the same PoP, and therefore the same layer 2 aggregation infastructure,  will traverse the backhaul link or links to the remote data center in both directions as well as traversing the BNG or BNGs the subscribers sessions reside on.</t>
    <t>Another drawback of this existing model is that content caches also have to be co-located in the data center where the BNGs are located or further upstream in the network. As content caches are commonly used for distributing high bandwidth video content, large amounts of video traffic traverse the BNGs and the backhaul links between the subscriber PoPs.</t>
    <t>An alternative deployment model would be to place all subscribers CPE within a single LAN segment (e.g. VLAN) within a PoP in addition to any upstream BNGs, meaning that the subscriber CPEs and BNGs share a single common IPv6 /64 subnet. Subscriber CPEs still use DHCPv6-PD to acquire prefixes, e.g., up to a /48, for their downstream LAN interfaces.</t>
    <t>Should a subscriber send a packet to another subscriber attached to the same PoP, the sending subscriber's CPE would use its default route to an upstream BNG to reach the destination subscriber's CPE. The receiving BNG would recognise that the two subscribers' CPE are attached to the same LAN segment, and could send an ICMPv6 Prefix Redirect Message to the source subscriber's CPE, informing it that the destination subscriber's CPE's DHCPv6-PD acquired LAN prefix, e.g. up to /48, is directly reachable over the single common subnet via the common layer 2 aggregation infrastructure.</t>
    <t>This would have the benefits of removing the inter-subscriber traffic from the backhaul link to the upsteam data center and BNG, sending it directly between the subscribers' CPEs. This would also reduce the latency of the traffic between the subscribers, which may be beneficial for on-line gaming between the two subscribers.</t>
    <t>This deployment model would also allow content caches to be placed within the subscriber PoP, attached to the same LAN segment as the subscriber CPEs. ICMPv6 Redirect or ICMPv6 Prefix Redirect Messages could be used to inform subscriber CPEs that a content cache is directly reachable within the PoP rather than going via the BNG. This could signficantly reduce the amount of traffic travelling over the access network backhaul to the upstream BNG, and the traffic load on the BNG, when the traffic being distributed by the content cache is high bandwidth video traffic.</t>
    <t>[RFC4861] prohibits routers, of which subscriber CPE are a type, from processing ICMPv6 Redirect Messages. The same prohibition would apply to ICMPv6 Prefix Redirect Messages. Similarly, Router Advertisements (RAs) [RFC4861] are also not to be used by routers, although they may be processed for validation. However, [RFC7084] loosens this prohibitation for RA processing, allowing CPE to process RAs to learn of upstream default routers - the CPE's upstream interface is acting as a router interface for the purposes of packet forwarding, and acting as a host interface for the purposes of discovering upstream default routers. A similar loosening of this prohibition, in an update to [RFC7084], to allow CPE to process ICMPv6 Redirect Messages and ICMPv6 Prefix Redirect Messages would be needed to suit this new model.</t>
    <t>In a sense, Router Advertisments, ICMPv6 Redirect Messages and ICMPv6 Prefix Redirect Messages are acting as an ad-hoc on-demand routing protocol between the upstream BNG and subscribers' CPEs, that do not have a conventional routing protocol adjacency.</t>
    <t>One of the reasons that subscriber sessions are isolated using VLAN tags is for authentication purposes. In this alternative shared single LAN segment model, subscriber authentication could continue to be achieved via a Lightweight DHCPv6 Relay Agent [RFC6221] Interface-ID option [RFC8415] or Subscriber-ID option [RFC4580], or via [IEEE802.1X] authentication.</t>
    <t>BNGs are commonly used to record individual subscriber traffic statistics for traffic billing functions. Sending traffic directly between subscribers or subscribers and a PoP located content cache via ICMPv6 Redirect Messages or ICMPv6 Prefix Redirect Messages would mean that the redirected traffic would not be recored by the BNG (other than the packets that trigger the Redirect Messages). This may be a suitable trade-off in comparison to the backhaul link and BNG resources saved by having traffic directly flow between subscribers or subscribers and a PoP located content cache when possible.</t>
   </section>
   <section>
    <name>Requirements Language</name>
    <t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;,
          &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT
          RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be
          interpreted as described in BCP 14 <xref target="RFC2119"/>
     <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.</t>
   </section>
   <!-- [CHECK] The 'Requirements Language' section is optional -->
  </section>
  <section>
   <name>ICMPv6 Prefix Redirect Message Format</name>
   <t>The enhanced ICMPv6 Redirect Message Format is as per [RFC4861] 4.5, with the following modification:</t>
   <ul>
	   <li>The first 8 bits of the Reserved field are designated as the "Prefix Length" field, carrying the length of the prefix being redirected.</li>
   </ul>

   <t>Note that the Destination Address field continues to carry the IPv6 address of the packet that triggered the enhanced ICMPv6 Prefix Redirect Message, retaining backward compatibility with hosts that do not understand an ICMPv6 Prefix Redirect Message.</t>
  </section>
  <section>
   <name>Router Processing</name>
   <t>A router that can send ICMPv6 Prefix Redirect messages follows the Router Specificification in section 8.2 of [RFC4861], with the additional step:</t>
   <ul>
	   <li>The Prefix Length field is set to the length of the prefix in the route table that best matches the destination IPv6 address that triggered the prefix redirection.</li>
   </ul>
  </section>

<section>
   <name>Host Processing</name>
   <t>A host that receives an ICMPv6 Prefix Redirect Message initially validates the message according to the steps specified in [RFC4861], Section 8.1.</t>

	<section>

	   <name>Legacy Hosts</name>
	   <t>Once the message has been validated, a legacy host that does not understand the ICMPv6 Prefix Redirect message will ignore the Prefix Length field because it is utilising part of the existing Reserved field, which is a backward-compatible change; [RFC4861]:</t>
	   <t>"The contents of the Reserved field, and of any unrecognized options, MUST be ignored. Future, backward-compatible changes to the protocol may specify the contents of the Reserved field or add new options; backward-incompatible changes may use different Code values."</t>

	   <t>A legacy host will process the ICMPv6 Prefix Redirect message as though it was for a single destination address, the address held in the ICMP Prefix Redirect message Destination Address field, per [RFC4861] section 8.3.</t>
		</section>

		<section>
	   <name>ICMPv6 Prefix Redirect Aware hosts</name>
	   <t>In addition to validating the ICMPv6 Prefix Redirect Message according to [RFC4861] section 8.1, a host implementing this specification also validates the Prefix Length field. If any of the validation steps fail, the ICMPv6 Prefix Redirect Message is silently discarded:</t>
	   <ul>
		   <li>The Prefix Length field value is no greater than 128 (which is possible as it is an 8 bit field).</li>
		   <li>The Prefix Length field value is no less than a host system implementation variable that limits how large the redirected prefix can be. By default, this system variable's value is 48, supporting a redirected prefix of a /48 or smaller, such as a /56 or /64.</li>
	   </ul>
	   <t>A host then combines the ICMPv6 Prefix Redirect Message Destination Address field with the Prefix Length field to determine the prefix that is being redirected.</t>
	   <t>An ICMPv6 Prefix Redirect Aware host will then update its route table with a route for the redirected prefix information and the ICMPv6 Prefix Redirect Message Target Address as the route's next hop.</t>
	   <t>This redirected prefix route MUST be removed from the host's route table if the next hop becomes unreachable, as detected by Neighbor Unreachability Detection (NUD) [RFC4861].</t>
		</section>

</section>



  <section anchor="IANA">
   <!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.-->
   <name>IANA Considerations</name>
   <t>This memo includes no request to IANA.</t>
  </section>




  <section anchor="Security">
   <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
   <name>Security Considerations</name>
   	<t>To come. Not all that different from ICMPv6 Redirect Messages.</t>
  </section>



  <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
 </middle>
 <back>
  <references>
   <name>References</name>
   <references>
    <name>Normative References</name>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
    <!-- The recommended and simplest way to include a well known reference -->
   </references>
   <references>
    <name>Informative References</name>
    <reference anchor="exampleRefMin">
     <!-- [REPLACE/DELETE] Example minimum reference -->
     <front>
      <title>Title [REPLACE]</title>
      <author initials="Initials [REPLACE]" surname="Surname [REPLACE]">
       <organization/>
      </author>
      <date year="2006"/>
      <!-- [CHECK] -->
     </front>
    </reference>
    <reference anchor="exampleRefOrg" target="http://www.example.com/">
     <!-- [REPLACE/DELETE] Example reference written by an organization not a person -->
     <front>
      <title>Title [REPLACE]</title>
      <author>
       <organization>Organization [REPLACE]</organization>
      </author>
      <date year="1984"/>
      <!-- [CHECK] -->
     </front>
    </reference>
   </references>
  </references>
  <section anchor="Acknowledgements" numbered="false">
   <!-- [REPLACE/DELETE] an Acknowledgements section is optional -->
   <name>Acknowledgements</name>
   <t>Your name here!</t>
  </section>
 </back>
</rfc>
