<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<rfc
      xmlns:xi="http://www.w3.org/2001/XInclude"
      category="info"
      docName="draft-liu-6man-max-header-size-00"
      ipr="trust200902"
      obsoletes=""
      updates=""
      submissionType="IETF"
      xml:lang="en"
      tocInclude="true"
      tocDepth="4"
      symRefs="true"
      sortRefs="true"
      version="3">

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

 <front>


   <title abbrev="IPv6 Maximum Header Size">IPv6 Maximum Header Size Requirement</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-6man-max-header-size-00"/>


   <author fullname="Yao Liu" surname="Liu">
      <organization>ZTE</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <phone></phone>
        <email>liu.yao71@zte.com.cn</email>

     </address>
    </author>	

   <author fullname="Yiming Shen" surname="Shen">
      <organization>ZTE</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

          <region/>
          <code/>
          <country>China</country>
        </postal>
        <phone></phone>
        <email>shen.yiming@zte.com.cn</email>

     </address>
    </author>	

	
	
    <date year="2023"/>

   <!-- Meta-data Declarations -->

   <area>Internet</area>
    <workgroup>6MAN</workgroup>
    <!-- WG name at the upperleft corner of the doc,
        IETF 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 IETF. -->

   <keyword>Maximum Packet Depth</keyword>
   <keyword>Maximum Packet Size</keyword>
    <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

   <abstract>
    <t>
This document proposes the concept and the requirement of IPv6 Maximum Header Size to represent the total header size that a node is able to process from an incoming packet in IPv6, as well as the requirement for it.
    </t>
    </abstract>
  </front>
  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>	  
	<t>In terms of packet processing, a device has various capabilities. For IPv6 routers, one of the capabilities is the Maximum Header Size that a node can read and  process from an incoming packet. And the Maximum Header Size include the IPv6 header and IPv6 extension header.</t>
	<t>The introduction of IPv6 extension headers especially SRH, has increased the packet header size greatly. And the possibility of combination of extension headers packets makes the situation worse.</t>
	<t>Without the knowledge of the processing abilities of downstream nodes, the total header size of the packets sent by the upstream may exceed the Maximum Header Size that the downstreams can process, which may cause the packets to be discarded.</t>
	<t>Although for some network devices, even when the size of the header accepted exceeds the header processing buffer of the device, they can still try to process this packet by recycling, but it's an impact of packet forwarding efficiency.</t>
	<t>So for efficient packet forwarding, in many cases it's very important to know the maximum header size that each downstream nodes is able to process at full forwarding rate.</t>
	
		<t>Although there're already some related works on packet processing size, but they are not sufficient.</t>
		<t>The concept Maximum SID Depth (MSD) is originally introduced for SR-MPLS to represent the number of SIDs supported by a node or a link on a node. MSD is further extended for SRv6 as per <xref target="RFC9352" format="default"></xref>. This can be collected via IS-IS <xref target="RFC8491" format="default"></xref>, OSPF <xref target="RFC8476" format="default"></xref>, BGP-LS <xref target="RFC8814" format="default"></xref>, or PCEP <xref target="RFC8664" format="default"></xref>. </t>
		<t>MSD types for SRv6 are related with the number of SRv6 SIDs, but other components within SRH such as SRH TLVs are not in the scope of MSD. Not to speak of other IPv6 extension headers.</t>
		<t>Based on the considerations above, this document defines the term "IPv6 Maximum Header Size", which means, the maximum packet size, starting from the IPv6 header, that a node is able to process at full forwarding rate from an incoming IPv6 packet.  And the signaling requirement is also included.</t>
   
    </section>
	


	
<section numbered="true" toc="default">
        <name>Conventions used in this document</name>	
		<section numbered="true" toc="default">
        <name>Terminology</name>
        <t>MSD: Maximum SID Depth as in <xref target="RFC8491" format="default"></xref>. </t>
		<t>Full Forwarding Rate: As in <xref target="I-D.ietf-6man-hbh-processing"></xref> this is the rate that a router can forward packets without adversely impacting the aggregate forwarding rate.</t>
		<t>MPD: Maximum Packet Depth supported by a node or a link on a node.</t>		
		</section>
	
	    <section numbered="true" toc="default">
        <name>Requirements Language</name>
		<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 14 <xref target="RFC2119" format="default"></xref> <xref target="RFC8174" format="default"></xref> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
</section>

	  
<section numbered="true" toc="default">
<name>Use Cases</name>		 	  
<t>The headend node can attach data on the packet.</t>
<t>For SRv6 IOAM pre-allocated trace, the headend attachs the hop-by-hop options header with the IOAM data fields ahead of SRH as introduced in <xref target="RFC9486" format="default"></xref>.</t>  
<t>In the case of SR service programming<xref target="I-D.ietf-spring-sr-service-programming"></xref>, the SRH Opaque Metadata TLV and NSH Carrier TLV may be inserted by the headend.</t> 	
<t>For network slicing purpose, the VTN Option in IPv6 Hop-by-Hop option may be carried in the packet <xref target="I-D.ietf-6man-enhanced-vpn-vtn-id"></xref>.</t>
<t>And all the above functions may be used in combination.</t>
<t>The intermediate nodes may increase the size of the packet. The IPv6 extension headers, as well as their TLVs may be attached by the intermediate destination nodes(e.g SR Segment Endpoint nodes) via inserting or tunneling. In this case it is very important for attaching nodes to obtain the packet processing sizes of the downstream nodes.</t> 
<t>For an SR Segment Endpoint nodes with an End.B6.Encaps<xref target="RFC8986" format="default"></xref> SID instantiated, it will push a new IPv6 header with its own SRH containing an segment list above the original IPv6 header.</t>
</section>	  
	
<section numbered="true" toc="default">
<name>Signaling Requirements</name>	
<t>Based on the usecases, there're requirements for the headend and intermediate nodes to be aware of the IPv6 Maximum Header Size of other nodes.</t>
<t>Considering of the exsiting works for MSD in IGP <xref target="RFC8491" format="default"></xref><xref target="RFC8476" format="default"></xref>, using IGP to advertise this capability at node and/or link granularity is an feasible solution.</t>
<t>BGP-LS MAY also needed if there's an controller needs to collect this information and it does not participate in IGP routing.</t>
</section>




	
<section numbered="true" toc="default">
	<name>IANA Considerations</name>
	<t>This document makes no request of IANA.</t>

	</section>	

<section numbered="true" toc="default">
	<name>Security Considerations</name>
    <t>TBD</t>
</section>	

	
  </middle>
  <!--  *****BACK MATTER ***** -->

 <back>

   <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
		<?rfc include="reference.RFC.2119.xml"?>
		<?rfc include="reference.RFC.8174.xml"?>	
	<?rfc include="reference.I-D.ietf-6man-hbh-processing"?>	
      </references>
      <references>
        <name>Informative References</name>
	<?rfc include="reference.RFC.9352.xml"?>
	<?rfc include="reference.RFC.8491.xml"?>
	<?rfc include="reference.RFC.8476.xml"?>
	<?rfc include="reference.RFC.8814.xml"?>
	<?rfc include="reference.RFC.8664.xml"?>
	<?rfc include="reference.I-D.ietf-6man-enhanced-vpn-vtn-id.xml"?>	
	<?rfc include="reference.I-D.ietf-spring-sr-service-programming"?>
	<?rfc include="reference.RFC.9486.xml"?>
	<?rfc include="reference.RFC.8986.xml"?>	
      </references>
    </references>


 </back>
</rfc>
