<?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="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-li-mpls-enhanced-vpn-vtn-id-03"
     ipr="trust200902">
  <front>
    <title abbrev="VTN Information in MPLS">Carrying Virtual Transport Network
    (VTN) Information in MPLS Packet</title>

    <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>

    <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>

    <date day="16" month="October" year="2022"/>

    <abstract>
      <t>A Virtual Transport Network (VTN) is a virtual network which has a
      customized network topology and a set of dedicated or shared network
      resources allocated from the underlying physical network. Multiple VTNs
      can be created by network operator for using as the underlay for one or
      a group of VPNs services to provide enhanced VPN (VPN+) services. In
      packet forwarding, some fields in the data packet needs to be used to
      identify the VTN the packet belongs to, so that the VTN-specific
      processing can be executed on the packet. In the context of network
      slicing, a VTN can be instantiated as a Network Resource Partition
      (NRP).</t>

      <t>This document proposes a mechanism to carry the data plane VTN ID in
      an MPLS packet to identify the VTN the packet belongs to. The procedure
      for processing the VTN ID is also specified.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>Virtual Private Networks (VPNs) provide different groups of users
      with logically isolated connectivity over a common shared network
      infrastructure. With the evolution of 5G and cloud, new service types
      may require connectivity services with advanced characteristics
      comparing to traditional VPNs, such as strict isolation from other
      services or guaranteed performance. These services are referred to as
      "enhanced VPNs" (VPN+). <xref target="I-D.ietf-teas-enhanced-vpn"/>
      describes a framework and candidate component technologies for
      delivering VPN+ services.</t>

      <t>The enhanced properties of VPN+ require integration between the
      overlay connectivity and the resource and characteristics provided by
      the underlay network. To meet the requirement of VPN+ services, a number
      of Virtual Transport Networks (VTNs) need to be created, each has a
      logical network topology and a set of network resources allocated from
      the underlay network to meet the requirement of one or a group of VPN+
      services. In the network, traffic of different VPN+ services may to be
      processed separately according to the topology and the network resources
      associated with the corresponding VTN. <xref
      target="I-D.ietf-teas-ietf-network-slices"/> introduces the concept
      Network Resource Partition (NRP) as a set of network resources that are
      available to carry traffic and meet the SLOs and SLEs. In the context of
      network slicing, a VTN can be instantiated as a Network Resource
      Partition (NRP).</t>

      <t>For network scenarios where a large number of VTNs need to be created
      and maintained, <xref target="I-D.ietf-teas-nrp-scalability"/> describes
      the scalability considerations for NRP. One approach to improve the data
      plane scalability is introducing a dedicated VTN Identifier (VTN ID) in
      data packets to identify the VTN the packets belong to, so that
      VTN-specific packet processing can be performed by network nodes.</t>

      <t>This document proposes a mechanism to carry the VTN Identifier (VTN
      ID) and the related information in MPLS <xref target="RFC3031"/> data
      packets, so that the packet will be processed by network nodes using the
      set of network resources allocated to the corresponding VTN. The
      procedure for processing the VTN ID is also specified. The destination
      and forwarding path of the MPLS LSP is determined using the MPLS label
      stack in the packet, and the set of local network resources used for
      processing the packet is determined by the VTN ID. The mechanism
      introduced in this document is applicable to both MPLS networks with
      RSVP-TE <xref target="RFC3209"/> or LDP <xref target="RFC5036"/> LSPs,
      and MPLS networks with Segment Routing (SR) <xref target="RFC8402"/>
      <xref target="RFC8660"/>.</t>
    </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 BCP14
      <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>
    </section>

    <section title="Carrying VTN Information in MPLS Packet">
      <t>This document makes use of the post stack extension header mechanism
      as defined in <xref target="I-D.song-mpls-extension-header"/>. A new
      type of MPLS extension header called "VTN extension header" is defined
      to carry the VTN ID and other VTN related information. The type of VTN
      extension header is to be assigned by IANA. The format of VTN extension
      header is shown as below:</t>

      <t><figure>
          <artwork align="center"><![CDATA[    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      NH       |     HLEN      |     Flags   |     Reserved    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                             VTN ID                            ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      
         Figure 1. The format of MPLS VTN Extension Header]]></artwork>
        </figure></t>

      <t>Where:</t>

      <t><list style="symbols">
          <t>NH: 8-bit indicator for the Next Header type.</t>

          <t>HLEN: 8-bit unsigned integer for the Extension Header Length in
          4-octet units, not including the first 4 octets.</t>

          <t>Flags: 8-bit flag field. None of them is allocated in this
          version.</t>

          <t>Reserved: 8-bit field reserved for future use.</t>

          <t>VTN ID: 4-octet identifier which uniquely identifies the set of
          network resources allocated to a VTN.</t>
        </list></t>

      <t>The VTN extension header SHOULD be processed hop-by-hop (HBH). Thus
      it is suggested the VTN extension header be positioned in precedence
      over the end-to-end (E2E) extension headers.</t>

      <t>The benefit of introducing the post-stack VTN Extension Header to
      carry the VTN ID and related information is that it provides the
      flexibility to encode information which cannot be accommodated in an
      MPLS label stack, and the length of the extension header can be
      variable.</t>
    </section>

    <section title="Procedures">
      <t/>

      <section title="VTN Extension Header Insertion">
        <t>When the ingress node of an LSP receives a packet, according to
        traffic classification or mapping policy, the packet is steered into
        one of the VTNs in the network, then an MPLS VTN extension header
        SHOULD be inserted into the Post-Stack extension headers of the
        packet, and the VTN ID which the packet is mapped to SHOULD be carried
        in the VTN header. The ingress node SHOULD also encapsulates the
        packet with an MPLS label stack which are used to determine the
        destination and path of the LSP.</t>
      </section>

      <section title="VTN based Packet Forwarding">
        <t>On receipt of a MPLS packet which carries the VTN extension header,
        network nodes which support the mechanism defined in this document
        SHOULD parse the VTN header and use the VTN ID to identify the VTN the
        packet belongs to, and use the local resources allocated to the VTN to
        process and forward the packet. The forwarding behavior is based on
        both the MPLS label stack and the VTN extension header. The top MPLS
        label is used for the lookup of the next-hop, and the VTN ID can be
        used to determine the set of network resources allocated by the
        network nodes for processing and sending the packet to the
        next-hop.</t>

        <t>There can be different approaches used for allocating network
        resources on each network node to the VTNs. For example, on one
        interface, a subset of forwarding plane resource (e.g., bandwidth and
        the associated buffer/queuing/scheduling resources) allocated to a
        particular VTN can be considered as a virtual layer-2 sub-interface
        with dedicated bandwidth and the associated resources. In packet
        forwarding, the top MPLS label of the received packet is used to
        identify the next-hop and the outgoing Layer 3 interface, and the
        VTN-ID is used to further identify the virtual sub-interface which is
        associated with the VTN on the outgoing interface.</t>

        <t>Network nodes which do not support the mechanism in this document
        SHOULD ignore the VTN extension header, and forward the packet only
        based on the top MPLS label.</t>

        <t>The egress node of the MPLS LSP SHOULD pop the VTN extension
        header, together with other post-stack extension headers if there is
        any.</t>
      </section>
    </section>

    <section title="Capability Advertisement and Negotiation">
      <t>Before inserting the VTN extension header into an MPLS packet, the
      ingress node MAY want to know whether the nodes along the LSP can
      process the VTN extension header properly based on the mechanisms
      defined in this document. This can be achieved by introducing the
      capability advertisement and negotiation mechanism for the VTN extension
      header. The ingress node also need to know whether the egress node of
      the LSP can remove the VTN extension header as part of the post-stack
      action header properly before parsing the upper layer and send the
      packet to the next hop. The capability advertisement and negotiation
      mechanism will be described in a future version of this document.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA is requested to assign the code point for a new type of
      extension header as below:</t>

      <t><figure>
          <artwork><![CDATA[   Value        Description            Reference 
   -------------------------------------------------
   TBD            VTN                this document ]]></artwork>
        </figure></t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>TBD</t>
    </section>

    <section title="Contributors">
      <t><figure>
          <artwork><![CDATA[   Zhibo Hu  
   Email: huzhibo@huawei.com
]]></artwork>
        </figure></t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2119'?>

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

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

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

      <?rfc include='reference.I-D.ietf-teas-ietf-network-slices'?>

      <?rfc include='reference.I-D.song-mpls-extension-header'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.I-D.ietf-teas-nrp-scalability'?>

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

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

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

      <?rfc include='reference.RFC.8660'?>
    </references>
  </back>
</rfc>
