<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.6 -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>
<rfc category="std" docName="draft-zhu-lsr-isis-sr-vtn-flexalgo-05"
     ipr="trust200902">
  <front>
    <title abbrev="Flex-Algo for SR VTN">Using Flex-Algo for Segment Routing
    (SR) based Virtual Transport Network (VTN)</title>

    <author fullname="Yongqing Zhu" initials="Y." surname="Zhu">
      <organization>China Telecom</organization>

      <address>
        <email>zhuyq8@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Jie Dong" initials="J." surname="Dong">
      <organization>Huawei Technologies</organization>

      <address>
        <email>jie.dong@huawei.com</email>
      </address>
    </author>

    <author fullname="Zhibo Hu" initials="Z." surname="Hu">
      <organization>Huawei Technologies</organization>

      <address>
        <email>huzhibo@huawei.com</email>
      </address>
    </author>

    <date day="11" month="July" year="2022"/>

    <workgroup>LSR Working Group</workgroup>

    <abstract>
      <t>Enhanced VPN (VPN+) aims to provide enhanced VPN service to support
      some application's needs of enhanced isolation and stringent performance
      requirements. VPN+ requires integration between the overlay VPN
      connectivity and the characteristics provided by the underlay network. A
      Virtual Transport Network (VTN) is a virtual underlay network which has
      a customized network topology and a set of network resources allocated
      from the physical network. A VTN could be used as the underlay for one
      or a group of VPN+ services.</t>

      <t>The topological constraints of a VTN can be defined using Flex-Algo,
      a mechanism to provide distributed constraint-path computation. In some
      network scenarios, each VTN can be associated with a unique Flex-Algo,
      and the set of network resources allocated to a VTN can be instantiated
      as layer-2 sub-interfaces or member links of the layer-3 interfaces.
      This document describes the mechanisms to build the Segment Routing (SR)
      based VTNs using SR Flex-Algo and IGP L2 bundles with minor extensions.
      This document updates RFC 8668 by defining a new flag in the Parent L3
      Neighbor Descriptor in the L2 Bundle Member Attributes TLV.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction" title="Introduction">
      <t>Enhanced VPN (VPN+) is an enhancement to VPN services to support the
      needs of new applications, particularly including the applications that
      are associated with 5G services. These applications require enhanced
      isolation and have more stringent performance requirements than that
      could be provided with existing overlay VPN techniques. Thus these
      properties require integration between the underlay and the overlay
      networks. <xref target="I-D.ietf-teas-enhanced-vpn"/> specifies the
      framework of enhanced VPN and describes the candidate component
      technologies in different network planes and layers. An enhanced VPN may
      be used for 5G transport network slicing, and will also be of use in
      other generic scenarios.</t>

      <t>To meet the requirement of enhanced VPN services, a number of virtual
      transport networks (VTN) can be created, each with a subset of the
      underlay network topology and a set of network resources allocated from
      the underlay network to meet the requirement of a specific VPN+ service
      or a group of VPN+ services. Another possible approach is to create a
      set of point-to-point paths, each with a set of network resource
      reserved along the path, such paths are called Virtual Transport Paths
      (VTPs). Although using a set of dedicated VTPs can provide similar
      characteristics as VTN, it has some scalability issues due to the
      per-path state in the network.</t>

      <t><xref target="I-D.ietf-spring-resource-aware-segments"/> introduces
      resource awareness to Segment Routing (SR) <xref target="RFC8402"/>. As
      described in <xref target="I-D.ietf-spring-sr-for-enhanced-vpn"/>, the
      resource-aware segment identifiers (SIDs) can be used to build VTNs with
      the required network topology and network resource attributes to support
      VPN+ services. With a segment routing based data plane, SIDs can be used
      to represent both the topology and the set of network resources
      allocated by network nodes to a VTN. The SIDs of each VTN together with
      its associated topology and resource attributes need to be distributed
      using the control plane.</t>

      <t><xref target="I-D.dong-lsr-sr-enhanced-vpn"/> defines the IGP
      mechanisms and extensions to provide scalable SR based VTNs. The
      mechanism in <xref target="I-D.dong-lsr-sr-enhanced-vpn"/> allows
      flexible combination of the topology and resource attribute to provide a
      relatively large number of VTNs. In some network scenarios, the number
      of required VTNs may be small, thus a solution to provide a small number
      of VTNs may also be desired.</t>

      <t>This document describes a mechanism to build the SR based VTNs using
      SR Flex-Algo <xref target="I-D.ietf-lsr-flex-algo"/> and IGP L2 bundle
      <xref target="RFC8668"/> with minor extensions. With this mechanism,
      each VTN is associated with a unique Flex-Algo, and the set of network
      resources allocated to the VTN is instantiated using layer-2
      sub-interfaces or layer-2 member links of the L3 interfaces. It can
      provide a relatively small number of VTNs, and can be considered as a
      transitional solution for the VTN deployment.</t>

      <t>This document updates <xref target="RFC8668"/> by defining a new flag
      in the Parent L3 Neighbor Descriptor in the L2 Bundle Member Attributes
      TLV. <xref target="RFC8668"/> states that all bit fields not defined in
      that document "MUST be set to zero on transmission and ignored on
      receipt". Section 3 of this document defines a new flag and specifies
      both when it is set and how it should be processed.</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="Advertisement of SR VTN Topology Attributes">
      <t/>

      <t><xref target="I-D.ietf-lsr-flex-algo"/> specifies the mechanism to
      provide distributed constraint-path computation, and the usage of
      SR-MPLS prefix-SIDs and SRv6 locators for steering traffic along the
      constrained paths.</t>

      <t>The Flex-Algo Definition (FAD) is the combination of
      calculation-type, metric-type and the topological constraints used for
      path computation. According to the network nodes' participation of a
      Flex-Algo, and the rules of including or excluding Admin Groups (i.e.
      colors) and Shared Risk Link Groups (SRLGs), the topology of a VTN can
      be described using the associated Flex-Algo. If each VTN is associated
      with a unique Flex-Algo, the Flex-Algo identifier could be reused as the
      identifier of the VTN in the control plane.</t>

      <t>With the mechanisms defined in<xref target="RFC8667"/> <xref
      target="I-D.ietf-lsr-flex-algo"/>, SR-MPLS prefix-SID advertisement can
      be associated with a specific topology and a specific algorithm, which
      can be a Flex-Algo. This allows the nodes to use the prefix-SIDs to
      steer traffic along distributed computed constraint paths according to
      the associated Flex-Algo in a particular topology.</t>

      <t><xref target="I-D.ietf-lsr-isis-srv6-extensions"/> specifies the
      IS-IS extensions to support SRv6 data plane, in which the SRv6 locators
      advertisement is associated with a topology and a specific algorithm,
      which can be a Flex-Algo. This allows the nodes to use the SRv6 locators
      to steer traffic along distributed computed constraint paths according
      to the associated Flex-Algo in a particular topology. In addition,
      topology/algorithm specific SRv6 End SIDs and End.X SIDs can be used to
      enforce traffic over the Loop-Free Alternatives (LFA) computed backup
      paths.</t>
    </section>

    <section title="Advertisement of SR VTN Resource Attributes">
      <t>Each VTN can be allocated a set of dedicated network resources on
      different network nodes and links.</t>

      <t>In order for a network controller or the ingress nodes to perform
      constraint based path computation for each VTN, the resource attributes
      of each VTN need to be advertised. This way, the network controller or
      the ingress node can compute an SR TE path in a VTN by taking both the
      Flex-Algo constraints and the resource attributes of the VTN into
      consideration.</t>

      <t>IS-IS L2 Bundle <xref target="RFC8668"/> was defined to advertise the
      link attributes of the layer-2 bundle member links. In this section, it
      is extended to advertise the set of network resource attributes
      associated with different VTNs on a layer-3 link.</t>

      <t>The layer-3 link must have the capability of partitioning the link
      resources into different subsets for the different VTNs it participates
      in. It may or may not be a bundle of layer-2 links to achieve this. One
      partition of the link resources can be instantiated as a layer-2
      sub-interface, which can be seen as a virtual layer-2 member link of the
      layer-3 link. If the layer-3 link is a layer-2 link bundle, it is
      possible that the set of link resources allocated to a specific VTN is
      provided by one or multiple physical layer-2 member links.</t>

      <t>A new flag "E" (Exclusive) is defined in the flag field of the Parent
      L3 Neighbor Descriptor in the L2 Bundle Member Attributes TLV (25).</t>

      <t><figure>
          <artwork><![CDATA[             0 1 2 3 4 5 6 7
            +-+-+-+-+-+-+-+-+
            |P|E|           |
            +-+-+-+-+-+-+-+-+]]></artwork>
        </figure></t>

      <t>E flag: When the E flag is set, it indicates each member link under
      the Parent L3 link is used exclusively for one VTN, and load sharing
      among the member links is not allowed. When the E flag is clear, it
      indicates load balancing and sharing among the member links are
      allowed.</t>

      <t>Note that legacy implementations of <xref target="RFC8668"/> will set
      the E flag to zero (clear) meaning that load balancing among component
      links is the default behavior. Further, when a legacy implementation
      receives an E flag that is set, it will ignore the flag and so will
      assume that load balancing among component links is allowed even when
      the sender has requested it to not be used. The Flex-Algo associated
      with the VTN can be defined that only nodes which support the E flag are
      included in the constraint-based path computation and packet forwarding
      of the VTN.</t>

      <t>For each virtual or physical layer-2 member link, the Admin Groups
      (AG) or Extended Admin Group (EAG) attribute MUST be advertised using
      the mechanisms as defined in <xref target="RFC8668"/>. This is for the
      correlation between the Flex-Algo specific forwarding entries and the
      layer-2 member link. Other TE attributes as defined in <xref
      target="RFC5305"/> such as the Maximum Link Bandwidth attribute MAY also
      be advertised for the constraint-based path computation performed by the
      controller or the ingress nodes. The SR-MPLS Adj-SIDs or SRv6 End.X SIDs
      associated with each of the virtual or physical layer-2 member links
      MUST be advertised according to <xref target="RFC8668"/> and <xref
      target="I-D.dong-lsr-l2bundle-srv6"/>.</t>

      <t>In order to correlate the virtual or physical layer-2 member links
      with the Flex-Algo ID which is used to identify the VTN, each VTN is
      assigned with a unique Admin Group (AG) or Extended Admin Group (EAG),
      and the virtual or physical layer-2 member links associated with this
      VTN are configured with the AG or EAG assigned to the VTN. The AG or EAG
      of the parent layer-3 link is set to the union of all the AGs or EAGs of
      its virtual or physical layer-2 member links. In the definition of the
      Flex-Algo corresponding to the VTN, it MUST use the Include-Any Admin
      Group rule with only the AG or EAG assigned to the VTN as the link
      constraints, the Include-All Admin Goup rule or the Exclude Admin Group
      rule MUST NOT be used. This is to ensure that the layer-3 link is
      included in the Flex-Algo constraint based path computation for each VTN
      it participates in.</t>
    </section>

    <section title="Forwarding Plane Operations">
      <t>For the SR-MPLS data plane, a prefix SID is associated with the paths
      calculated using the Flex-Algo corresponding to a VTN. An outgoing
      layer-3 interface is determined for each path. In addition, the
      prefix-SID also steers the traffic to use the virtual or physical
      layer-2 member link which is associated with the VTN on the outgoing
      layer-3 interface for packet forwarding. A forwarding entry MUST be
      installed in the forwarding plane using the MPLS label that corresponds
      to the Prefix-SID associated with the Flex-algorithm corresponding to
      the VTN. The Adj-SIDs associated with the virtual or physical member
      links of a VTN can be used together with the prefix-SIDs of the same VTN
      to build SR-MPLS TE paths under the topological and resource constraints
      of the VTN.</t>

      <t>For the SRv6 data plane, an SRv6 Locator is a prefix which is
      associated with the paths calculated using the Flex-Algo corresponding
      to a VTN. An outgoing Layer-3 interface is determined for each path. In
      addition, the SRv6 Locator prefix also steers the traffic to use the
      virtual or physical layer-2 member link which is associated with the VTN
      on the outgoing layer-3 interface for packet forwarding. A forwarding
      entry for the SRv6 Locator prefix MUST be installed in the forwarding
      plane for the Flex-algorithm corresponding to the VTN.The End.XU SIDs
      associated with the virtual or physical member links of a VTN can be
      used together with other types of SRv6 SIDs of the same VTN to build
      SRv6 paths under the topological and resource constraints of the
      VTN.</t>
    </section>

    <section title="Scalability Considerations">
      <t>The mechanism described in this document assumes that each VTN is
      associated with a unique Flex-Algo, so that the Flex-Algo IDs can be
      reused to identify the VTNs in the control plane. While this brings the
      benefit of simplicity, it also has some limitations. For example, it
      means that even if multiple VTNs share the same topological constraints,
      they still need to be identified using different Flex-Algo IDs in the
      control plane, then independent path computation needs to be executed
      for each VTN. The number of VTNs supported in a network may be dependent
      on the number of Flex-Algos supported, which is related to the number of
      Flex-Algos supported in the protocol (which is 128) and the control
      plane overhead on network nodes. The mechanism described in this
      document is applicable to network scenarios where the number of required
      VTN is relatively small. A detailed analysis about the VTN scalability
      and the possible optimizations for supporting a large number of VTNs can
      be found in <xref target="I-D.dong-teas-nrp-scalability"/>.</t>
    </section>

    <section anchor="security-considerations" title="Security Considerations">
      <t>This document introduces no additional security vulnerabilities to
      IS-IS.</t>

      <t>The mechanism proposed in this document is subject to the same
      vulnerabilities as any other protocol that relies on IGPs.</t>
    </section>

    <section anchor="iana-considerations" title="IANA Considerations">
      <t>This document does not request any IANA actions.</t>
    </section>

    <section anchor="acknowledgments" title="Acknowledgments">
      <t>The authors would like to thank Zhenbin Li, Peter Psenak, Adrian
      Farrel and Gyan Mishra for the review and discussion of this
      document.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="RFC2119"
                 target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement
          Levels</title>

          <author fullname="S. Bradner" initials="S." surname="Bradner">
            <organization/>
          </author>

          <date month="March" year="1997"/>

          <abstract>
            <t>In many standards track documents several words are used to
            signify the requirements in the specification. These words are
            often capitalized. This document defines these words as they
            should be interpreted in IETF documents. This document specifies
            an Internet Best Current Practices for the Internet Community, and
            requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>

        <seriesInfo name="BCP" value="14"/>

        <seriesInfo name="RFC" value="2119"/>

        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>

      <?rfc include='reference.RFC.8174'?>

      <?rfc include='reference.RFC.5305'?>

      <?rfc include='reference.RFC.8402'?>

      <?rfc include='reference.RFC.8667'?>

      <?rfc include='reference.RFC.8668'?>

      <?rfc include='reference.I-D.ietf-teas-enhanced-vpn'?>

      <?rfc include='reference.I-D.ietf-spring-resource-aware-segments'?>

      <?rfc include='reference.I-D.ietf-spring-sr-for-enhanced-vpn'?>

      <?rfc include='reference.I-D.ietf-lsr-isis-srv6-extensions'?>

      <?rfc include='reference.I-D.ietf-lsr-flex-algo'?>

      <?rfc include='reference.I-D.dong-lsr-l2bundle-srv6'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.I-D.dong-lsr-sr-enhanced-vpn'?>

      <?rfc include='reference.I-D.dong-teas-nrp-scalability'?>
    </references>
  </back>

  <!---->
</rfc>
