<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="no"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-spring-pmtu-sr-policy-04" ipr="trust200902"
     obsoletes="" submissionType="IETF" updates="" xml:lang="en">
  <front>
    <title abbrev="SR-PMTU">Path MTU (PMTU) for Segment Routing (SR) Policy</title>

    <author fullname="Shuping Peng" initials="S." surname="Peng">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Rd.</street>

          <city>Beijing</city>

          <region/>

          <code>100095</code>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>pengshuping@huawei.com</email>

        <uri/>
      </address>
    </author>

        <author fullname="Dhruv Dhody" initials="D." surname="Dhody">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region/>

          <code></code>

          <country>India</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>dhruv.ietf@gmail.com</email>

        <uri/>
      </address>
    </author>

            <author fullname="Ketan Talaulikar" initials="K." surname="Talaulikar">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region/>

          <code></code>

          <country>India</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>ketant.ietf@gmail.com</email>

        <uri/>
      </address>
    </author>


        <author fullname="Gyan Mishra" initials="G." surname="Mishra">
      <organization>Verizon Inc.</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region/>

          <code></code>

          <country>USA</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>gyan.s.mishra@verizon.com</email>

        <uri/>
      </address>
    </author>


    <date year="2026"/>

    <area>Routing</area>

    <workgroup>SPRING Working Group</workgroup>

    <abstract>
      <t>This document defines the Path MTU (PMTU) for Segment Routing (SR) Policy (called SR-PMTU). It applies to both Segment Routing over IPv6 (SRv6) and SR-MPLS. This document specifies the framework of SR-PMTU for SR Policy including the link MTU collection, the SR-PMTU computation, the SR-PMTU enforcement, and the handling behaviours on the headend.</t>

    </abstract>

  </front>

  <middle>
    <section title="Introduction" toc="default">
      <t>Segment Routing (SR) <xref target="RFC8402"/> allows a node to steer a packet flow along any given path. The headend is a node where the instructions for source routing (i.e., segments) are encoded in the packet and hence
   becomes the starting node for a specific segment routing path. Intermediate per-path states are eliminated thanks to source routing.</t>

   <t>A Segment Routing Policy (SR Policy) <xref target="RFC9256"/> is an ordered list of segments (i.e., instructions) that represent a source-routed policy. The headend node is said to steer a flow into a SR Policy. The
   packets steered into an SR Policy have an ordered list of segments
   associated with that SR Policy written into them. <xref target="RFC8660"/>
   describes the representation and processing of this ordered list of
   segments as an MPLS label stack for SR-MPLS, while <xref target="RFC8754"/> and <xref target="RFC8986"/> describe the same for Segment Routing over IPv6 (SRv6) with the use of the Segment Routing Header (SRH).</t>

   <t><xref target="RFC8402"/> introduces the SR Policy construct and provides an overview of how it is leveraged for Segment Routing use-cases.
   <xref target="RFC9256"/> updates <xref target="RFC8402"/> to specify detailed concepts of SR Policy and steering packets into an SR Policy.</t>

   <t>This document extends the SR Policy to also include the Path MTU
   information to SR Policy and applies to both SRv6 and SR-MPLS. The
   SRv6-specific handling is specified in <xref target="srv6"/>.</t>

   <section title="Motivation" toc="default" anchor="motivation">
    <t>The motivation for handling SR-PMTU for the SR paths includes (but is not limited to):
<list style="symbols">
  <t>Being able to avoid fragmentation by being aware of the SR-PMTU associated with the SR paths and policies at the headend.</t>
  <t>Being able to generate ICMP messages at the headend.</t>
  <t>When fragmentation is unavoidable, the ability to do it correctly at the headend.</t>
  <t>Ability to use SR-PMTU as path computation constraint and optimization criteria at the headend or controller/PCE.</t>
</list>
    </t>
   </section>

    </section>

            <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 14
      <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>
    </section>

<section title="Terminology">
<list>
  <t>Link MTU: As per <xref target="RFC8899"/>, this could more properly be called the IP MTU. It is the size in bytes of the largest IP packet, including the IP header and payload, that can be transmitted over a link. In case of MPLS, it also includes the label stack, and in case of IPv6, it includes IPv6 extension headers (including SRH).</t>

  <t>Path MTU (PMTU): See <xref target="RFC8899"/>. In the scope of this document, this is also called SR-PMTU for the SR paths and policies. </t>

  <t>SR overhead: The SR-MPLS label stack or SRH. The link MTU takes the SR overhead into consideration.</t>
    <!--
      TBD: if the max size of label stack at the ingress is enough or we need
      to also take into consideration which links have less label stack because of pop.
    -->
</list>

<!--<t>This draft refers to the terms defined in <xref target="RFC8201"/>, <xref target="RFC4821"/> and <xref target="RFC3988"/>.</t>

      <t><figure>
          <artwork align="left"><![CDATA[

    Link MTU:  The Maximum Transmission Unit, i.e., maximum IP packet
    size in bytes, that can be conveyed in one piece over a link.

    For IETF documents, link MTU is uniformly defined as the IP MTU
    over the link.  This includes the IP header, but excludes link
    layer headers and other framing that is not part of IP or the IP
    payload.

    For the MPLS data plane, this size includes the IP header and data
    (or other payload) and the label stack but does not include any
    lower-layer headers.  A link may be an interface (such as Ethernet
    or Packet-over-SONET), a tunnel (such as GRE or IPsec), or an LSP.

    Path:  The set of links traversed by a packet between a source node
    and a destination node.

    Path MTU, or PMTU:  The minimum link MTU of all the links in a path
    between a source node and a destination node.

    For the MPLS data plane, it is the MTU of an LSP from a given LSR
    to the egress(es), over each valid (forwarding) path. This size
    includes the IP header and data (or other payload) and any part of
    the label stack that was received by the ingress LSR before it
    placed the packet into the LSP (this part of the label stack is
    considered part of the payload for this LSP). The size does not
    include any lower-level headers.

]]></artwork>
        </figure></t>-->

</section>


    <section title="SR-PMTU Definition for SR Policy" >
        <t>The Segment Routing policy architecture is specified in <xref target="RFC9256"/>. An SR Policy is associated with one or more candidate paths. A candidate path is either dynamic, explicit, or composite. The related concepts with the SR-PMTU definition in this document are listed as follows. </t>

        <t>An explicit/dynamic candidate path is expressed as a Segment-List or a set of Segment-Lists directly or by computation. If a candidate path is associated with a set of Segment-Lists, each Segment-List is associated with weight for weighted load balancing. The default weight is 1. </t>

        <t>A composite candidate path is defined in <xref target="RFC9256"/>. </t>

       <section title="SR-PMTU of a Segment List" anchor="seglist">
        <t>A Segment-List represents a specific source-routed path to send traffic from the headend to the endpoint of the corresponding SR policy <xref target="RFC9256"/>. The SR-PMTU of a segment list is defined as the minimum Link MTU of all the links in a path between a source node and a destination node. Refer to <xref target="Computation"/> for specific handling for Node, Adjacency and Binding SID (as well as their combinations).</t>



       </section>

       <section title="SR-PMTU of a Candidate Path" anchor="cp">
        <t>In the case of an explicit/dynamic candidate path, if it is expressed as a single Segment-List, then the SR-PMTU of the candidate path is the same as that of the SR-PMTU of the segment list as described in <xref target="seglist"/>. </t>

        <t>In the case of an explicit/dynamic candidate path, if it is expressed as a set of Segment-Lists (for load-balancing), then the SR-PMTU of the candidate path is defined as the minimum SR-PMTU of all the Segment-Lists in the set. </t>

        <t>In the case of a composite candidate path, the SR-PMTU is defined as the minimum SR-PMTU of all the constituent SR Policies. </t>

       </section>

       <section title="SR-PMTU of an SR Policy" anchor="policy">
        <t>According to <xref target="RFC9256"/>, an SR Policy is associated with one or more candidate paths. A candidate path is selected when it is valid and it is determined to be the best path of the SR Policy. The selected path is referred to as the "active path" of the SR policy. Then the SR-PMTU for an SR Policy is defined as the SR-PMTU of the selected/active candidate path of this SR policy. </t>

        <t>In the case of an explicit/dynamic candidate path, the SR-PMTU definition can be referred to in <xref target="cp"/>.  </t>

        <t>In the case of a composite candidate path, the SR-PMTU is defined as the minimum SR-PMTU of all the constituent SR policies. Since the constituent SR Policies of a composite candidate path can only be explicit/dynamic candidate paths, then the SR-PMTU definition of explicit/dynamic candidate path is as per <xref target="cp"/>. </t>

       </section>

    </section>

             <section title="The Framework of SR-PMTU for SR Policy">
        <t>The framework of SR-PMTU for SR Policy includes link MTU collection, SR-PMTU computation, SR-PMTU enforcement, and handling behaviors on the headend.</t>

              <t><figure align="center">
        <artwork><![CDATA[

                       +------------------+
              +--------|Network Controller| SR-PMTU computation
              |        +--------/|\-------+
              |                  |
    SR-PMTU enforcement   Link MTU Collection
              |                  |
           +-\|/-+   +-----------|-----------+   +-----+
 Handling  |Head |---|    Segment Routing    |---|End  |
 behaviors |end  |   |    Network Domain     |   |Point|
           +-----+   +-----------------------+   +-----+
              <---------Link MTU collection---------|


                    ]]>
         Figure 1. The Framework of SR-PMTU for SR Policy
        </artwork>
        </figure></t>


        <section title="Link MTU Collection">
        <t>The SR-PMTU of a segment list is defined as the
   minimum Link MTU of all the links in a path, see Section 4.1. The Link MTU can be collected in network through various mechanisms such as the ones defined in <xref target="I-D.hu-lsr-igp-path-mtu"/> and <xref target="I-D.ietf-idr-bgp-ls-link-mtu"/> without the knowledge of the services. </t>

        </section>

        <section title="SR-PMTU Computation" anchor="Computation">
        <t>The collected link MTU of all the related links are sent to the network controller or the headend where the SR-PMTU is computed. Depending upon the path type, the computation methods are different, which are described in the following subsections. </t>

        <section title="Loose Path">
        <t>In a loose path <xref target="RFC7855"/>, only Node SIDs are used along the path. Between two adjacent Node-SIDs, generally, there are equal-cost multipaths (ECMP). The SR-PMTU of the loose path is computed by finding the minimum SR-PMTU of all the ECMPs between two adjacent Node SIDs along the loose path. </t>


        </section>
        <section title="Strict TE Path">
        <t>In a strict TE path <xref target="RFC7855"/>, only Adj-SIDs are used along the path. Since the link MTU of all the links being indicated by the Adj-SIDs of the strict TE path are known to the network controller, the SR-PMTU of the strict SR-TE path is computed by finding out the minimum link MTU of all the links in the strict SR-TE path between its source node and destination node. </t>

        </section>
        <section title="Mixed Path">
        <t>In a mixed path, both Node SIDs-and Adj-SIDs are used along the path. The PMTU of the mixed TE path is computed by finding the minimum SR-PMTU of all the ECMPs between two adjacent Node SIDs and the link MTU of all the links indicated by the Adj SIDs. </t>

        </section>
        <section title="Binding Path">
        <t>The Binding SID (BSID) <xref target="RFC8402"/> is bound to an SR Policy, instantiation of which may involve a list of SIDs. The SR-PMTU of the binding path is the same as that of an SR Policy as specified in the above section modulo that it also includes the encapsulation overhead associated with it (i.e. the additional label stack pushed in case of SR-MPLS and the outer IPv6 header with its own SRH in case of SRv6). This is done to make sure the headend of the SR path that includes a BSID is able to compute the SR-PMTU correctly by taking the correct SR-PMTU of the binding path into consideration along with other SIDs in the SR path. </t>

        </section>
        <section title="TI-LFA">
        <t>Topology Independent Loop-free Alternate Fast Re-route (TI-LFA) <xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa"/>, aims to provide protection for node and adjacency segments within the SR framework. The PMTU of the repair path might be different from the original path's, which could lead to fragmentation while the repair path is in use.
</t>
        <t>To avoid fragmentation, it is possible for the headend (or controller) to consider the FRR overhead when computing the SR-PMTU of the original path.
 </t>

        </section>


       </section>

       <section title="SR-PMTU Enforcement">
        <t>SR Policy as per <xref target="RFC9256"/> does not include SR-PMTU in the SR Policy encoding structure. As specified in <xref target="I-D.ietf-idr-sr-policy-path-mtu"/>, the SR-PMTU is encoded in the SR policy structure as shown in Figure 2. After the SR-PMTU computation, the SR-PMTU is enforced along with the SR Policy to the headend of the corresponding path. </t>

              <t><figure align="center">
        <artwork><![CDATA[

      SR Policy SAFI NLRI: <Distinguisher, Policy-Color, Endpoint>
      Attributes:
         Tunnel Encaps Attribute (23)
            Tunnel Type: SR Policy
                Binding SID
                Preference
                Priority
                Policy Name
                Explicit NULL Label Policy (ENLP)
                Segment List
                    Weight
              ----> Path MTU (SR-PMTU)
                    Segment
                    Segment
                    ...
                ...
                    ]]>
         Figure 2. The SR Policy encoding structure with SR-PMTU
        </artwork>
        </figure></t>

        <t>When there are multiple paths that can be selected, the one with the highest SR-PMTU will be used in order to avoid fragmentation on the headend. </t>
    <t>The PCEP extension to handle PMTU is specified in <xref target="I-D.ietf-pce-pcep-pmtu"/>.</t>

       </section>

       <section title="Handling behaviors on the headend">
        <t>After the SR-PMTU is computed, the headend performs the handling behaviors such as encapsulation and fragmentation, if needed. Note that this behavior is similar to the existing behaviors of MPLS and IPv6 dataplane. </t>

        <section title="SR-PMTU Constraints and Optimization">
        <t>Generally, considering the services being carried, the operators set an SR-PMTU constraint aiming for a proper path selection that fulfills packet size requirements hence avoiding fragmentation. Furthermore, the encapsulation on the headend will introduce the overhead on top of the packet to be encapsulated. Generally, the encapsulation overhead has to be estimated according to the possible path hops and sometimes the repair paths. Therefore, the SR-PMTU constraint is set considering both the carried services and the encapsulation overhead. </t>

        <t>When SR-PMTU-based path optimization is done, PCE will select the path with the highest SR-PMTU among all the possible paths. </t>

        <t>Even if the SR-PMTU is not considered by the PCE at the time of path computation, the computed SR-PMTU is useful at the headend for the reasons already stated in <xref target="motivation"/>.</t>

        <t>Once the SR-PMTU constraint is set on the headend, it is supposed to be the lowest bound of the SR-PMTUs of all the paths being computed locally or enforced by the controller in order to avoid fragmentation. </t>

        </section>

        <section title="Fragmentation processing">

        <t>If the SR-PMTU of all the paths being computed locally or enforced by the controller is smaller than the SR-PMTU constraint set on the headend, the fragmentation will have to be handled. If fragmentation is not possible, the headend could generate the ICMP messages <xref target="RFC4443"/> to notify the traffic source.</t>



        <t>Over this selected path, on the headend, the packets are fragmented in order to guarantee the size of the encapsulated packets is smaller than the PMTU of the selected path. </t>

        </section>

       </section>

       <section title="Link MTU Change">

<t>The Link MTU collected as described in Section 5.1 may change over time due to factors such as device configuration updates or topological modifications, such as the addition of a new link with a lower MTU. These changes can impact the SR-PMTU of the data path, and the computed SR-PMTU value may remain outdated until the control plane converges. This behavior is similar to changes in other link metrics.</t>
</section>

       </section>



       <section title="SRv6-Specific Handling" anchor="srv6">
        <t>In the case of SRv6, the SRH is included in the calculation of the Link MTU and thus in the SR-PMTU. Note that the PMTU considerations for IPv6 <xref target="RFC8201"/> apply for the SRv6. <xref target="RFC8754"/> also specify the MTU considerations related to encapsulation with an outer IPv6 header with SRH.</t>

       </section>


    <section title="Security Considerations" toc="default">
      <t><xref target="RFC9256"/> specifies in detail the SR Policy construct (introduced in <xref target="RFC8402"/>) and its security considerations. The additional SR-MTU attribute information can be sensitive in some deployments and could be used to influence SR path setup and selection with adverse effect. The protocol extensions that include SR-PMTU need to take this into consideration. This document does not define any new protocol extensions and thus does not introduce any further security considerations.</t>
    </section>

    <section title="IANA Considerations" toc="default">
      <t>This document does not include any IANA requests.</t>

    </section>

      <!--<section title="Contributors">
      <t><figure>
          <artwork><![CDATA[Dhruv Dhody
Huawei Technologies
]]></artwork>
        </figure></t>

      <t>Email: dhruv.ietf@gmail.com</t>

      <t><figure>
          <artwork><![CDATA[Cheng Li
Huawei Technologies
]]></artwork>
        </figure></t>

      <t>Email: c.l@huawei.com</t>

      </section>-->

      <section title="Acknowledgement" toc="default">
      <t>Thanks to xx for useful discussions and comments.</t>
    </section>

  </middle>


  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.8174"?>

      <?rfc include="reference.RFC.8402"?>

      <?rfc include="reference.RFC.8754"?>

      <?rfc include="reference.RFC.8660"?>

      <?rfc include="reference.RFC.8986"?>



      <?rfc include="reference.RFC.9256"?>

	  <?rfc include="reference.RFC.8201"?>

	  <?rfc include="reference.RFC.8899"?>

      <?rfc include='reference.I-D.ietf-rtgwg-segment-routing-ti-lfa'?>




    </references>

    <references title="Informative References">
      <!--<?rfc include="reference.RFC.3988"?>-->

      <?rfc include="reference.RFC.4443"?>

      <?rfc include="reference.RFC.7855"?>



      <!--<?rfc include="reference.I-D.ietf-pce-multipath"?>-->

      <?rfc include="reference.I-D.ietf-idr-bgp-ls-link-mtu"?>

      <?rfc include="reference.I-D.hu-lsr-igp-path-mtu"?>

    <?rfc include='reference.I-D.ietf-idr-sr-policy-path-mtu'?>
    <?rfc include='reference.I-D.ietf-pce-pcep-pmtu'?>


    </references>
  </back>
</rfc>
