<?xml version="1.0"?>
<!DOCTYPE rfc [
<!-- One method to get references from the online citation libraries.
    There has to be one entity for each item to be referenced.
    An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2205 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2205.xml">
<!ENTITY RFC3209 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3209.xml">
<!ENTITY RFC5920 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5920.xml">
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
]>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-alibee-teas-rsvp-inplace-lsp-bw-update-01" ipr="trust200902" submissionType="IETF" consensus="true">
  <front>
    <title abbrev="In-Place LSP BW Update">In-Place Bandwidth Update for MPLS RSVP-TE LSPs</title>

    <author initials="Z." surname="Ali" fullname="Zafar Ali">
      <organization>Cisco Systems, Inc</organization>
      <address>
	<email>zali@cisco.com</email>
      </address>
    </author>

    <author initials="V." surname="Beeram" fullname="Vishnu Pavan Beeram">
      <organization>Juniper Networks</organization>
      <address>
	<email>vbeeram@juniper.net</email>
      </address>
    </author>

    <author initials="P." surname="Schoenmaker" fullname="Peter Schoenmaker">
      <organization>Meta</organization>
      <address>
        <email>psch@meta.com</email>
      </address>
    </author>

    <date year="2025"/>

    <area>Routing</area>
    <workgroup>TEAS Working Group</workgroup>

    <keyword>In-Place LSP BW Update</keyword>

    <abstract>
      <t>
      This document describes the procedure for updating 
      the bandwidth of an MPLS RSVP-TE Label Switched Path (LSP) tunnel 
      in-place without employing make-before-break (MBB).
      </t>
    </abstract>

  </front>

  <middle>
    <section title="Introduction" anchor='intro'>
      <t>
      Sections 2.5 and 4.6.4 of <xref target="RFC3209"/> describe the 
      RSVP signaling procedure for increasing the bandwidth of an MPLS 
      TE tunnel using a make-before-break (MBB) operation. 
      A bandwidth-update-triggered MBB operation for an MPLS RSVP-TE 
      tunnel involves establishing a new LSP with a new LSP_ID and 
      transferring traffic from the old LSP onto it before tearing down 
      the old LSP. Establishing the new LSP involves programming the 
      forwarding plane with new tunnel labels along its path, even in 
      scenarios where both the old and new LSPs traverse the same path. 
      Such MBB events can occur frequently in networks that deploy the 
      'auto-bandwidth' feature on RSVP-TE tunnels to monitor bandwidth 
      utilization and periodically adjust tunnel bandwidth, causing a 
      considerable amount of signaling and label programming churn in 
      the network.
      </t>
      <t>
      <xref target="RFC3209"/> does not explicitly discuss the procedure
      for handling a decrease in the bandwidth of an MPLS RSVP-TE tunnel,
      allowing an ingress LER implementation to have the option
      to update the LSP bandwidth
      "in-place" without employing MBB.
      The in-place LSP bandwidth update mechanism reduces
      signaling churn. It eliminates the need to 
      reprogram labels at each transit Label Switch Router (LSR) along the 
      path of the LSP and shift traffic at the ingress Label Edge Router (LER) 
      from one LSP to another. However, the signaling procedure for handling 
      any failures that the RSVP transit node may encounter while processing 
      an in-place LSP bandwidth update request is unspecified. This document 
      clarifies this procedure. It describes how an implementation can leverage 
      the in-place LSP bandwidth update mechanism in both scenarios where the 
      bandwidth of the TE tunnel needs to be decreased or increased.
      </t>

      <t>
      This document does not cover the application of the in-place LSP bandwidth 
      update procedure to anything other than point-to-point MPLS RSVP-TE tunnels.  
      </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 14 <xref target="RFC2119"/> <xref target="RFC8174"/> 
       when, and only when, they appear in all capitals, as shown here.
       </t>
   </section>
    </section>

    <section title="Signaling In-Place LSP Bandwidth Update">
      <t>
      <xref target="in_place_success"/> illustrates an example RSVP signaling 
      sequence for a scenario where the bandwidth of an LSP is successfully 
      updated in-place. In the signaling sequence used for initial setup, the 
      LSP is signaled with a bandwidth of 60 Mbps. This bandwidth value is 
      encoded in the SENDER_TSPEC object of the PATH message sent hop-by-hop 
      from the ingress LER to the egress LER , and upon successful admission 
      control at each hop is encoded in the FLOWSPEC object of the RESV message 
      sent in the reverse direction. In the in-place update signaling sequence, 
      the same LSP instance, with no change to the LSP_ID in the SENDER_TEMPLATE 
      object, is signaled with a bandwidth of 40 Mbps. When the ingress LER 
      receives a RESV message with 40Mbps encoded in the FLOWSPEC object, the 
      in-place LSP bandwidth update signaling sequence is deemed successful.
     <figure align="center" anchor="in_place_success" title="In-Place LSP BW Update - Success">
       <artwork align="left"><![CDATA[
+----+         +----+         +----+         +----+         +----+
| R1 |---------| R2 |---------| R3 |---------| R4 |---------| R5 |
+----+         +----+         +----+         +----+         +----+
Initial Setup:
  PATH msg        PATH msg        PATH msg        PATH msg
   LSP-ID:X        LSP-ID:X        LSP-ID:X        LSP-ID:X
   TSpecRate:60    TSpecRate:60    TSpecRate:60    TSpecRate:60
  ------------>   ------------>   ------------>   ------------>

  RESV msg        RESV msg        RESV msg        RESV msg
   LSP-ID:X        LSP-ID:X        LSP-ID:X        LSP-ID:X
   FSpecRate:60    FSpecRate:60    FSpecRate:60    FSpecRate:60
  <------------   <------------   <------------   <------------

In-Pace LSP BW Update:
  PATH msg        PATH msg        PATH msg        PATH msg
   LSP-ID:X        LSP-ID:X        LSP-ID:X        LSP-ID:X
   TSpecRate:40    TSpecRate:40    TSpecRate:40    TSpecRate:40
  ------------>   ------------>   ------------>   ------------>

  RESV msg        RESV msg        RESV msg        RESV msg
   LSP-ID:X        LSP-ID:X        LSP-ID:X        LSP-ID:X
   FSpecRate:40    FSpecRate:40    FSpecRate:40    FSpecRate:40
  <------------   <------------   <------------   <------------
           ]]></artwork>
     </figure>
     </t>
     <t>
     <xref target="in_place_failure"/> illustrates an example RSVP signaling 
     sequence for a scenario where the bandwidth of an LSP is not successfully 
     updated in-place. In the initial setup signaling sequence, the LSP is 
     signaled with a bandwidth of 60 Mbps.  In the in-place update signaling 
     sequence, the same LSP instance, with no change to the LSP_ID in the 
     SENDER_TEMPLATE object, is signaled with a bandwidth of 80 Mbps. However, 
     node R3 fails admission control and sends a PathErr with an error code of 
     'Admission Control Failure (1)' and error value of 'Requested bandwidth 
     unavailable (2)'. When the ingress LER receives a PathErr message in 
     response to an in-place LSP bandwidth update request, the in-place LSP 
     bandwidth update signaling sequence is deemed a failure. A consequence of 
     this failed attempt is that the bandwidth reservation in the path segment of the 
     LSP upstream of R3 is inconsistent with the path segment downstream of R3. 
     Another scenario in which the in-place LSP update signaling sequence is 
     deemed a failure is when the ingress does not receive either a RESV message 
     or a PATHErr message within a reasonable interval (bandwidth update request timed out). 
     In such failed scenarios, the 
     onus is on the ingress LER to reroute the path using MBB.
     <figure align="center" anchor="in_place_failure" title="In-Place LSP BW Update - Failure">
       <artwork align="left"><![CDATA[
+----+         +----+         +----+         +----+         +----+
| R1 |---------| R2 |---------| R3 |---------| R4 |---------| R5 |
+----+         +----+         +----+         +----+         +----+
Initial Setup:
  PATH msg        PATH msg        PATH msg        PATH msg
   LSP-ID:X        LSP-ID:X        LSP-ID:X        LSP-ID:X
   TSpecRate:60    TSpecRate:60    TSpecRate:60    TSpecRate:60
  ------------>   ------------>   ------------>   ------------>

  RESV msg        RESV msg        RESV msg        RESV msg
   LSP-ID:X        LSP-ID:X        LSP-ID:X        LSP-ID:X
   FSpecRate:60    FSpecRate:60    FSpecRate:60    FSpecRate:60
  <------------   <------------   <------------   <------------

In-Pace LSP BW Update:
  PATH msg        PATH msg
   LSP-ID:X        LSP-ID:X
   TSpecRate:80    TSpecRate:80
  ------------>   ------------>

  PATHErr msg     PATHErr msg
   LSP-ID:X        LSP-ID:X
   ErrSpec:1,2     ErrSpec:1,2
  <------------   <------------

           ]]></artwork>
     </figure>
      </t>
      <section title="Procedure at the Ingress LER">
      <t>
      An ingress LER implementation that supports in-place LSP bandwidth 
      update MAY use local policy to determine whether to trigger the 
      "in-place LSP bandwidth update" functionality or the "MBB" procedure 
      to update LSP bandwidth. If the ingress LER is mandated by local policy 
      to use in-place LSP bandwidth update, it SHOULD do the following when 
      there is a need to update the bandwidth of the TE tunnel:
      <list style="hanging">
        <t hangText="-">
          Compute and check if the current signaled TE path can accommodate the new bandwidth:
          <list style="hanging">
            <t hangText="*">
              If it is determined that the current TE path cannot accommodate the new 
              bandwidth, compute a TE path that accommodates the new bandwidth and 
              initiate MBB signaling procedure.
            </t>
            <t hangText="*">
              If it is determined that the current TE path can accommodate the new bandwidth, 
              initiate in-place LSP bandwidth update signaling. 
              <list style="hanging">
                <t hangText="~">
                  If in-place LSP bandwidth update signaling succeeds (a RESV message with 
                  updated FLOWSPEC is received), consider the bandwidth update procedure to 
                  be complete.
                </t>
                <t hangText="~">
                  If in-place LSP bandwidth update signaling fails (non-destructive PATHErr 
                  message is received or bandwidth update request timed out), compute a TE 
                  path  that accommodates the desired bandwidth and initiate MBB
                  signaling procedure.
                </t>
                <t hangText="~">
                  If a destructive PATHErr message (with Path_State_Removed flag set) or a 
                  ResvTear message is received, initiate break-before-make signaling procedure.
                </t>
              </list>
            </t>
          </list>
        </t>
      </list>
      </t>
      </section>
      <section title="Procedure at the Transit LSR / Egress LER">
      <t>
      A transit LSR / egress LER implementation that supports in-place LSP 
      bandwidth update SHOULD perform an admission control procedure when 
      it receives an in-place LSP bandwidth update request. If the admission 
      control succeeds, the transit LSR / egress LER SHOULD allow the in-place 
      LSP bandwidth signaling sequence to complete. If the admission control 
      fails, the transit LSR / egress LER:
      <list style="hanging">
        <t hangText="-">
          SHOULD generate a non-destructive PATHErr message (without Path_State_Removed flag
          set) and let the ingress LER take appropriate action.
        </t>
        <t hangText="-">
          SHOULD NOT initiate the teardown of the LSP instance.
        </t>
      </list>
      </t>
      <t>
      [Editor's Notes: Should the document define a new error code/value or re-use (1,2)]
      </t>
      </section>
      <section title="Backward Compatibility">
      <t>
      Since the procedure for handling an in-place LSP bandwidth update 
      request at a transit/egress node is not specified in RFC3209, a transit/egress
      implementation that does not support this functionality may 
      exhibit one of the following behaviors:
      <list style="hanging">
        <t hangText="[A]">
          Teardown the signaling state associated with the LSP instance 
          and generate appropriate destructive error and tear messages.
        </t>
        <t hangText="[B]">
          Retain the signaling state associated with the LSP instance and 
          send an appropriate PathErr to the ingress.
        </t>
        <t hangText="[C]">
          Silently ignore the in-place LSP bandwidth update request, which 
          will result in the bandwidth update request getting timed out at the ingress.
        </t>
      </list>
      </t>
      <t>
      The in-place LSP bandwidth update functionality SHOULD NOT be enabled 
      at the ingress LERs in a network with non-compliant transit/egress nodes that
      exhibit behavior [A].  The functionality MAY be enabled at the ingress LERs
      in a network with non-compliant nodes that exhibit behavior [B] or [C]. 
      </t>
      </section>
    </section>

    <section title='Security Considerations' anchor='sec-con'>
      <t>
      This document does not introduce new security issues.  The security
      considerations pertaining to the original RSVP protocol <xref target="RFC2205"/> and
      RSVP-TE <xref target="RFC3209"/>, and those that are described in <xref target="RFC5920"/>, remain
      relevant.
      </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>
      This document has no IANA actions.
      </t>
    </section>

    <section title='Acknowledgments'>
      <t>
        The authors would like to thank Colby Barth, Stephane Litkowski and Robert Sawaya 
        for their review and suggestions.
      </t>
    </section>

    <section title='Contributors'>
     <t>The following people have contributed to this document:</t>
    <author initials="C." surname="Ramachandran" fullname="Chandra Ramachandran">
      <organization>Juniper Networks</organization>
      <address>
	<email>csekar@juniper.net</email>
      </address>
    </author>
    <author initials="J." surname="Parker" fullname="Jon Parker">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <email>jdparker@cisco.com</email>
      </address>
    </author>
    </section>


</middle>

<back>
  <references title='Normative References'>
    &RFC2119;
    &RFC2205;
    &RFC3209;
    &RFC8174;
  </references>
  <references title='Informative References'>
    &RFC5920;
  </references>
</back>
</rfc>
