<?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-02"
     ipr="trust200902">
  <front>
    <title abbrev="VTN-ID in MPLS">Carrying Virtual Transport Network
    Identifier 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="07" month="March" 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 network infrastructure. 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. 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 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 introduction of 5G, 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 refered to as "enhanced VPNs"
      (VPN+). <xref target="I-D.ietf-teas-enhanced-vpn"/> describes a
      framework and candidate component technologies for providing VPN+
      services.</t>

      <t>The enhanced properties of VPN+ require integration between the
      overlay connectivity and the characteristics provided by the underlay
      network. To meet the requirement of enhanced VPN services, a number of
      Virtual Transport Networks (VTNs) need to be created, each consists of a
      subset of the underlay 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 based on 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.dong-teas-nrp-scalability"/> describes
      the scalability considerations for VTN. 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
      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">RFC 2119</xref> <xref target="RFC8174">RFC
      8174</xref> 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 defines a new VTN extension header which is used to
      carry the VTN-ID and other VTN related information. In an MPLS packet,
      The VTN extension header follows the MPLS label stack, and precedes the
      header and payloads in the upper layer. 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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |Nibble | Length|    Flags      |         Reserved              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                             Options                           ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      
         Figure 1. The format of MPLS VTN Extension Header]]></artwork>
        </figure></t>

      <t>Where:</t>

      <t><list style="symbols">
          <t>Nibble: The first 4-bit field is set to the binary value 0010.
          This is to ensure that the VTN extension header will not be
          interpreted as an IP header or the ACH of pseudowire packet.</t>

          <t>Length: Indicate the length of the VTN extension header in 32-bit
          words.</t>

          <t>Flags: 8-bit Flags field. All the flags are reversed for future
          use. This field SHOULD be set to zero on transmission and MUST be
          ignored on receipt.</t>

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

      <t>A new VTN-ID Option is defined in this document, other option types
      may be defined in future documents. The format of the VTN-ID Option is
      shown as below:</t>

      <t><figure>
          <artwork><![CDATA[         Option   Option                Option
          Type   Data Len                Data
       +--------+--------+--------+--------+--------+--------+
       |BBCTTTTT|00000100|              VTN-ID               |
       +--------+--------+--------+--------+--------+--------+
                  Figure 2. The format of VTN-ID Option]]></artwork>
        </figure></t>

      <t>Option Type: 8-bit identifier of the type of option. The type of
      VTN-ID option is to be assigned by IANA. The highest-order bits of the
      type field are defined as below:</t>

      <t><list style="symbols">
          <t>BB 00 The highest-order 2 bits are set to 00 to indicate that a
          node which does not recognize this type will skip over it and
          continue processing the header.</t>

          <t>C 1 The third highest-order bit are set to 1 to indicate this
          option may change en route.</t>
        </list>Opt Data Len: 8-bit unsigned integer indicates the length of
      the option Data field of this option, in octets. The value of Opt Data
      Len of the VTN-ID option SHOULD be set to 4.</t>

      <t>Option Data: 4-octet identifier which uniquely identifies a VTN
      within a network domain.</t>

      <t>A new MPLS special-purpose label or extended special-purpose label is
      defined as the VTN Extension Header Indicator (VEHI), its value is to be
      assigned by IANA. The VEHI label is used to indicate the existence of
      the VTN Extension Header after the MPLS label stack in the packet. The
      position of the VEHI label in the MPLS label stack is not limited.</t>

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

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

      <section title="VTN 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 a VTN header SHOULD be inserted
        into 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 path traversed by the LSP. The VHI label SHOULD be
        inserted in the label stack to identify the existence of the VTH
        header.</t>
      </section>

      <section title="VTN based Packet Forwarding">
        <t>On receipt of a MPLS packet which carries the VHL and the VTN
        header, network nodes which support the mechanism defined in this
        document SHOULD scan the label stack to figure out the existence of
        the VHL. If there is a VHL in the label stack, then the network node
        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 top MPLS label and the VTN-ID. 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 VHL and the VTN header, and forward the packet only
        based on the top MPLS label.</t>

        <t>The egress node of the MPLS LSP SHOULD pop the VEHL together with
        other LSP labels, and decapsulate the VTN header.</t>
      </section>
    </section>

    <section title="Capability Advertisement and Negotiation">
      <t>Before inserting the VTN header into an MPLS packet, the ingress node
      MAY need to know whether the nodes along the LSP can process the VTN
      header properly according to the mechanisms defined in this document.
      This can be achieved by introducing the capability advertisement and
      negotiation mechanism for the VTN header. The ingress node also need to
      know whether the egress node of the LSP can remove the VTN 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 a new special-purpose label from the
      "Special-Purpose MPLS Label Values" or "Extended Special-Purpose MPLS
      Label Values" registry.</t>

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

      <t>IANA is requested to assign a new option type of the MPLS VTN
      extension header:</t>

      <t><figure>
          <artwork><![CDATA[   Value        Description            Reference 
   -------------------------------------------------
   TBD            VTN-ID             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.7274'?>

      <?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'?>
    </references>

    <references title="Informative References">
      <reference anchor="TS23501"
                 target="https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3144">
        <front>
          <title>3GPP TS23.501</title>

          <author>
            <organization/>
          </author>

          <date year="2016"/>
        </front>
      </reference>

      <?rfc include='reference.I-D.dong-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>
