<?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-04"
     ipr="trust200902">
  <front>
    <title abbrev="NRP ID in MPLS">Carrying NRP Identifier and related
    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="21" month="October" year="2024"/>

    <abstract>
      <t>A Network Resource Partition (NRP) is a subset of the network
      resources and associated policies on each of a connected set of links in
      the underlay network. An NRP could be used as the underlay to support
      one or a group of enhanced VPN services. Multiple NRPs can be created by
      network operator to meet the diverse requirements of enhanced VPN
      services. In packet forwarding, some fields in the data packet needs to
      be used to identify the NRP the packet belongs to, so that the
      NRP-specific processing can be executed on the packet.</t>

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

  <middle>
    <section title="Introduction">
      <t>Virtual Private Networks (VPNs) <xref target="RFC4206"/> provide
      different customers with logically isolated connectivity over a common
      network infrastructure. With the introduction and evolvement of 5G and
      also in some existing network scenarios, some customers may require
      network connectivity services with advanced features comparing to
      conventional VPNs, such as resource isolation from other services or
      guaranteed performance. Such kind of network service is called enhanced
      VPN <xref target="I-D.ietf-teas-enhanced-vpn"/>. Enhanced VPN service
      requires the coordination and integration between the overlay VPNs and
      the capability and resources of the underlay network. Enhanced VPN can
      be used, for example, to deliver network slice services as described in
      <xref target="RFC9543"/>.</t>

      <t><xref target="RFC9543"/> also introduces the concept of the Network
      Resource Partition (NRP), which is a subset of the
      buffer/queuing/scheduling resources and associated policies on each of a
      connected set of links in the underlay network. An NRP can be associated
      with a logical network topology to select or specify the set of links
      and nodes involved.</t>

      <t>In packet forwarding, traffic of different Enhanced VPN services
      needs to be processed separately based on the network resources and the
      logical topology associated with the corresponding NRP. <xref
      target="I-D.ietf-teas-nrp-scalability"/> describes the scalability
      considerations and the possible optimizations for providing a relatively
      large number of NRPs. The approach to improve the data plane scalability
      of NRP is to introduce a dedicated data plane NRP ID in the data packets
      to identify the set of network resources allocated to an NRP, so that
      the packets mapped to an NRP can be processed and forwarded using the
      NRP-specific network resources, which could avoid possible resource
      competition with services in other NRPs. </t>

      <t>This document proposes a mechanism to carry the NRP Identifier
      (called data plane NRP 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 NRP. The procedure for processing the data plane NRP 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
      network resources used for processing the packet is determined by the
      NRP 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 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>

    <section title="Carrying NRP 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 "NRP extension header" is defined
      to carry the data plane NRP ID and other NRP related information. The
      type of NRP extension header is to be assigned by IANA. The format of
      NRP 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    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                     Data Plane NRP ID                         ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      
         Figure 1. The format of MPLS VTN Extension Header]]></artwork>
        </figure></t>

      <t>Where:</t>

      <t><list style="empty">
          <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. The most significant bit is defined in
          this document.</t>

          <t><figure>
              <artwork><![CDATA[                                   0 1 2 3 4 5 6 7
                                  +-+-+-+-+-+-+-+-+
                                  |S|U U U U U U U|
                                  +-+-+-+-+-+-+-+-+]]></artwork>
            </figure><list style="symbols">
              <t>S (Strict Match): The S flag is used to indicate whether the
              NRP ID MUST be strictly matched for the processing of the
              packet. When the S flag in the NR option of a received packet is
              set to 1, if the NRP ID in the packet does not match with any of
              the network resources provisioned on the network node, the
              packet MUST be dropped. When the S flag in the NRP option of a
              received packet is set to 0, if the NRP ID in the packet does
              not match with any of the network resources provisioned on the
              network node, the packet MUST be forwarded using the default set
              of resource and behavior as if the NRP option does not
              exist.</t>

              <t>U (Unused): These flags are reserved for future use. They
              MUST be set to 0 on transmission and MUST be ignored on
              receipt.</t>
            </list>Reserved: 8-bit field reserved for future use.</t>

          <t>Data Plane NRP ID: Network-wide identifier which uniquely
          identifies the set of network resources allocated to an NRP. The
          size of the NRP ID is determined by the value of HLEN. </t>
        </list></t>

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

      <t>The benefit of introducing the post-stack NRP Extension Header to
      carry the Data Plane NRP 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="NRP Extension Header Insertion">
        <t>When the ingress node of an LSP receives a packet intended for NRP
        based forwarding, according to traffic classification or mapping
        policy, the packet is steered into one of the NRPs in the network,
        then an MPLS NRP extension header SHOULD be inserted into the
        Post-Stack extension headers of the packet, and the NRP ID which the
        packet is mapped to SHOULD be carried in the NRP 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="NRP based Packet Forwarding">
        <t>On receipt of a MPLS packet which carries the NRP extension header,
        network nodes which support the mechanism defined in this document
        parse the NRP header and use the NRP ID to identify the NRP the packet
        belongs to, and use the local resources allocated to the NRP to
        process and forward the packet. The forwarding behavior is based on
        both the MPLS label stack and the NRP extension header. The top MPLS
        label is used for the lookup of the next-hop, and the NRP 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 NRPs. 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 NRP 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 data
        plane NRP-ID is used to further identify the virtual sub-interface
        which is associated with the NRP on the outgoing interface.</t>

        <t>Network nodes which do not support the mechanism in this document
        SHOULD ignore the NRP 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 NRP 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 NRP extension header into an MPLS packet, the
      ingress node MAY want to know whether the nodes along the LSP can
      process the NRP 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 NRP extension
      header. The ingress node also need to know whether the egress node of
      the LSP can remove the NRP 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 MPLS
      extension header in the "MPLS extension headers registry" as below:</t>

      <t><figure>
          <artwork><![CDATA[   Value        Description            Reference 
   -------------------------------------------------
   TBD          Data Plane NRP 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>The authors would like to thank Loa Andersson for the review and
      comments. </t>
    </section>
  </middle>

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

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

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

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

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

      <?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.4206'?>

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

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

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