<?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-dong-lsvr-bgp-spf-vtn-01" ipr="trust200902">
  <front>
    <title abbrev="BGP SPF for VTN">BGP SPF for Virtual Transport Network
    (VTN)</title>

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

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Road</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

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

    <author fullname="Zhenbin Li" initials="Z." surname="Li">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Road</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

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

    <date day="24" month="October" year="2021"/>

    <area>Routing Area</area>

    <workgroup>LSVR Working Group</workgroup>

    <abstract>
      <t>A Virtual Transport Network (VTN) is a virtual underlay network which
      consists of a customized network topology and a set of network resource
      allocated from the physical network. In a network, multiple VTNs can be
      created to meet different service requirements, and services may be
      mapped to the same or different VTNs.</t>

      <t>In networks where BGP Shortest Path First (SPF) is used to distribute
      the link-state information among network nodes, the information of VTNs
      needs to be distributed along with the basic network information. This
      document specifies the BGP SPF mechanisms with necessary extensions to
      distribute the VTN information and perform VTN-specific path
      computaton.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction" title="Introduction">
      <t>The concept of Virtual Transport Network (VTN) is introduced in <xref
      target="I-D.ietf-teas-enhanced-vpn"/>. A VTN is a virtual underlay
      network which has customized network topology and a set of dedicated or
      shared network resources. In a network, different VTNs may be created to
      meet different service requirements, and services can be mapped to the
      same or different VTNs.</t>

      <t><xref target="I-D.ietf-spring-sr-for-enhanced-vpn"/> describes the
      use of resource-aware segments <xref
      target="I-D.ietf-spring-resource-aware-segments"/> to build SR based
      VTNs. The SIDs of each VTN and the associated topology and resource
      attributes need to be distributed using the control plane. <xref
      target="I-D.dong-lsr-sr-enhanced-vpn"/> specifies the IGP mechanism and
      extensions to build a set of SR based VTNs. <xref
      target="I-D.dong-idr-bgpls-sr-enhanced-vpn"/> further specifies the
      BGP-LS mechanisms and extensions to advertise the VTN information in
      each domain and the VTN information on the inter-domain links to the
      network controller, so that the controller could use the collected
      information to build the inter-domain SR VTNs.</t>

      <t>In networks where BGP SPF is used to distribute the link-state
      information among network nodes, the VTN information needs to be
      distributed along with the basic network link state and TE information.
      And comparing with the Internal Gateway Protocols (IGPs), BGP SPF may
      have some advantage in supporting a relatively large number of VTNs.
      This document specifies the BGP SPF mechanisms with necessary extensions
      to advertise the information of VTNs. The proposed mechanism is
      applicable to segment routing with MPLS data plane (SR-MPLS), segment
      routing with IPv6 data plane (SRv6), and native IPv6 data plane.</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
        BCP14 <xref target="RFC2119">RFC 2119</xref> <xref
        target="RFC8174">RFC 8174</xref> when, and only when, they appear in
        all capitals, as shown here.</t>
      </section>
    </section>

    <section title="Applicability of VTN related BGP-LS Extensions to BGP SPF">
      <t/>

      <section title="Reuse of BGP-LS TLVs for BGP SPF VTN">
        <t>As described in <xref target="I-D.ietf-lsvr-bgp-spf"/>, the NLRI
        and TLVs of BGP-LS can be reused by BGP SPF, this section describes
        the TLVs which are defined in BGP-LS and can be reused in BGP SPF for
        the distribution of VTN related information.</t>

        <t>According to <xref target="I-D.ietf-teas-enhanced-vpn"/>, a virtual
        transport network (VTN) has a customized network topology and a set of
        dedicated or shared network resources. Thus a VTN can be defined as
        the combination of a set of network attributes, including the topology
        attribute and the network resource attribute. A VTN is associated with
        a Multi-Topology ID (MT-ID) and/or an Algorithm ID which are used to
        define the VTN topology and path computation constraints. In some
        cases, each VTN may be associated with a separate MT-ID or a Flex-Algo
        ID. When the amount of VTNs in a network is large, as described in
        <xref target="I-D.dong-teas-enhanced-vpn-vtn-scalability"/>, multiple
        VTNs may be associated with the same topology and/or algorithm, so
        that the amount of topology-specific path computation can be shared by
        a group of VTNs, this could help to reduce the computation overhead in
        the control plane.</t>

        <t><xref target="I-D.ietf-lsvr-bgp-spf"/> does not cover the usage of
        Multi-Topology or Flex-Algo with BGP SPF. While the mechanism in this
        document is based on Multi-Topology <xref target="RFC4915"/><xref
        target="RFC5120"> </xref> or Flex-Algo <xref
        target="I-D.ietf-lsr-flex-algo"/> with BGP SPF for topology and/or
        algorithm -specific link-state information distribution and path
        computation. For this purpose, the Multi-topology TLV as defined in
        <xref target="I-D.ietf-idr-rfc7752bis"/>, the SR Algorithm TLV as
        defined <xref target="RFC9085"/>, and the Flex-Algo Definition TLV as
        defined in <xref target="I-D.ietf-idr-bgp-ls-flex-algo"/> are reused
        for BGP SPF.</t>

        <t><xref target="I-D.ietf-lsvr-bgp-spf"/> does not explicitly
        describes the usage with Segment Routing data plane. To build SR based
        VTN, the SR-MPLS and SRv6 TLVs as defined in <xref target="RFC9085"/>
        and <xref target="I-D.ietf-idr-bgpls-srv6-ext"/> are reused for BGP
        SPF.</t>

        <t>The VTN extensions to BGP-LS as defined in <xref
        target="I-D.dong-idr-bgpls-sr-enhanced-vpn"/> applies to BGP SPF as
        well. This section lists the TLVs which are reused by BGP SPF, the
        detailed format of the TLVs are described in <xref
        target="I-D.dong-idr-bgpls-sr-enhanced-vpn"/>.</t>

        <t>The BGP-LS Attribute TLVs which are defined in <xref
        target="I-D.dong-idr-bgpls-sr-enhanced-vpn"/> and reused with
        BGP-LS-SPF SAFI are listed as below:</t>

        <t><list style="symbols">
            <t>Virtual Transport Network Definition (VTND) TLV: This is used
            to advertise the association between the VTN and the topology ID
            and/or algorithm ID. It can be carried in BGP-LS attribute
            associated with a Node NLRI.</t>

            <t>VTN ID TLV: This is used to describe the identifiers of one or
            more VTNs a link belongs to. It can be carried in BGP-LS attribute
            which is associated with a Link NLRI, or it could be carried as a
            sub-TLV in the L2 Bundle Member Attribute TLV.</t>

            <t>Link Attribute Flags TLV: This is used to specify the
            characteristics of a link, its functionality is similar to the
            IS-IS Link Attribute sub-TLV defined in <xref target="RFC5029"/>.
            It can be carried in BGP-LS attribute which is associated with a
            Link NLRI, or it could be carried as a sub-TLV in the L2 Bundle
            Member Attribute TLV.</t>

            <t>VTN-specific prefix-SID TLV: This is used to advertise the
            prefix-SID and its associated VTN. It can be carried in BGP-LS
            attribute which is associated with a Prefix NLRI.</t>

            <t>VTN-specific Adj-SID TLV: This is used to advertise the adj-SID
            and its associated VTN. It can be carried in BGP-LS attribute of
            the associated Link NLRI.</t>
          </list></t>

        <t>Further BGP-LS TLVs may be defined in <xref
        target="I-D.dong-idr-bgpls-sr-enhanced-vpn"/>, their usage with BGP
        SPF will be specified in a future version of this document.</t>
      </section>

      <section title="VTN Topology and Resource Distribution ">
        <t>In network scenarios where each VTN is associated with a unique
        MT-ID, The BGP-LS mechanisms used to distribute the VTN topology and
        resource information to the network controller are described in <xref
        target="I-D.xie-idr-bgpls-sr-vtn-mt"/>. Such mechanism can be reused
        for the distribution of VTN information with BGP SPF.</t>

        <t>In network scenarios where each VTN is associated with a unique
        Flex-Algo ID, The BGP-LS mechanisms used to distribute the VTN
        topology and resource information to the network controller are
        described in <xref target="I-D.zhu-idr-bgpls-sr-vtn-flexalgo"/>. Such
        mechanism can be reused for the distribution of VTN information with
        BGP SPF.</t>

        <t>In network scenarios where multiple VTNs are associated with the
        same &lt;topology, algorithm&gt; tuple, while each VTN has different
        resource attributes, the BGP-LS mechanisms which can be used to
        distribute the VTN topology and resource information to the network
        controller are described in <xref
        target="I-D.dong-idr-bgpls-sr-enhanced-vpn"/>. Such mechanism can be
        reused for the distribution of VTN information with BGP SPF.</t>

        <t>The Sequence Number TLV as defined in <xref
        target="I-D.ietf-lsvr-bgp-spf"/> MUST be carried in the BGP-LS
        attribute associated with the BGP-LS-SPF NLRI. If the Sequence-Number
        TLV is not received then the corresponding Link NLRI is considered as
        malformed and MUST be handled as 'Treat-as- withdraw'. An
        implementation MAY log an error for further analysis.</t>
      </section>
    </section>

    <section title="SPF Calculation for VTNs">
      <t><xref target="I-D.ietf-lsvr-bgp-spf"/> describes the mechanisms of
      using the BGP-LS-SPF Node, Link, and Prefix NLRI for shortest path
      computation. With the introduction of VTN, the same mechanism is used
      for the shortest path computation of each VTN. The path computation for
      a VTN is based on the topology attributes and the constraints specified
      with the MT-ID and/or Algorithm ID associated with the VTN. When
      multiple VTNs are associated with the same topology, the result of the
      shortest path computation based on that topology could be shared by
      these VTNs.</t>
    </section>

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

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

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

    <section anchor="acknowledgments" title="Acknowledgments">
      <t>The authors would like to thank Haibo Wang 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.I-D.ietf-lsvr-bgp-spf'?>

      <?rfc include='reference.I-D.ietf-idr-rfc7752bis'?>

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

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

      <?rfc include='reference.I-D.ietf-idr-bgpls-srv6-ext'?>

      <?rfc include='reference.I-D.ietf-idr-bgp-ls-flex-algo'?>

      <?rfc include='reference.I-D.dong-idr-bgpls-sr-enhanced-vpn'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.4915'?>

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

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

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

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

      <?rfc include='reference.I-D.dong-teas-enhanced-vpn-vtn-scalability'?>

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

      <?rfc include='reference.I-D.dong-lsr-sr-enhanced-vpn'?>

      <?rfc include='reference.I-D.xie-idr-bgpls-sr-vtn-mt'?>

      <?rfc include='reference.I-D.zhu-idr-bgpls-sr-vtn-flexalgo'?>
    </references>
  </back>

  <!---->
</rfc>
