<?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-05"
     ipr="trust200902">
  <front>
    <title abbrev="NRP Info in MPLS">Carrying NRP related Information in MPLS
    Packets</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="13" month="February" year="2025"/>

    <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 as the NRP Selector 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 NRP Selector ID and
      related information in MPLS packets. The procedure for processing the
      NRP Selector ID and related information 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 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 identifier (which is
      called NRP Selector 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 Selector ID and
      related information in MPLS <xref target="RFC3031"/> data packets, so
      that the packet will be processed by network nodes using the subset of
      network resources and policy of the corresponding NRP. The procedure for
      processing the NRP Selector 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 and policy used for
      processing the packet is determined by the NRP action carried as
      post-stack data (PSD) <xref target="I-D.jags-mpls-ps-mna-hdr"/>. 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 Packets">
      <t>The NRP Selector ID and related information are carried as Ancillary
      Data of the MPLS NRP action. In this document, the NRP action and
      ancillary data are defined using Post-Stack Data (PSD) due to the
      following reasons:</t>

      <t><list style="symbols">
          <t>NRP Selector ID with 32-bit length does not fit well into the
          MPLS Label Stack Entry (LSE) due to the existence of S bit in LSE
          (e.g., in 31-bit Format D).</t>

          <t>Optional NRP related information which may be mutable or variable
          is more suitable and efficient to be encoded as Post-stack Data.</t>
        </list></t>

      <t>This document makes use of the post-stack header mechanism as defined
      in <xref target="I-D.jags-mpls-ps-mna-hdr"/>. A new type of Post-Stack
      network action called "Network Resource Partition (NRP)" is defined to
      carry the NRP Selector ID and other NRP related information. The Opcode
      of the NRP action is to be assigned by IANA. The format of the NRP
      action and its ancillary data 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  PS-NRP-OP  |R|U|   PS-NAL    |     Flags   |     Reserved    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       NRP Selector ID                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~               Optional NRP related information                ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            Figure 1. The format of MPLS NRP Extension Header]]></artwork>
        </figure></t>

      <t>Where:</t>

      <t><list style="empty">
          <t>PS-NRP-OP: Post-stack Opcode for the NRP action, the value is to
          be assigned by IANA.</t>

          <t>PS-NAL: Post-Stack network action length in 4-octet units,
          excludeing 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>NRP Selector ID: 4-octet Network-wide identifier which uniquely
          identifies the set of network resources allocated to an NRP. The
          size of the NRP Selector ID is determined by the value of
          PS-NAL.</t>

          <t>Optional NRP related information: Other NRP related information
          which may be carried as ancillary data of the NRP action. One
          example is the traffic accounting data of a specific NRP. The
          detailed encoding and mechanisms are out of the scope of this
          document. The length of the optional NRP related information in
          4-octet units is determined by the value of PS-NAL minus 1.</t>
        </list></t>

      <t>The PS-NRP action SHOULD be processed hop-by-hop (HBH). It is
      suggested the PS-NRP action be placed closer to the top of the PSD than
      any Post-Stack actions with the Ingress-To-Egress scope</t>
    </section>

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

      <section title="PS-NRP Action Insertion">
        <t>When an LSP ingress receives a packet, the traffic classifications
        and mapping policies are checked. If a match is found that the packet
        needs to be steered on to one of the NRPs of the MPLS network, the
        packet is encapsulated with an MPLS Label Stack and a Post-Stack
        Header <xref target="I-D.jags-mpls-ps-mna-hdr"/> is added after the
        label stack. The Post-Stack Header contains a Post-Stack NRP action,
        which includes the NRP Selector ID and optional NRP related
        information.</t>
      </section>

      <section title="NRP based Packet Forwarding">
        <t>On receipt of an MPLS packet which carries the PS-NRP action,
        network nodes which support the mechanism defined in this document
        MUST parse the Post-Stack header and the NRP action, and use the NRP
        Selector ID to identify the NRP the packet belongs to, then the local
        resources allocated to the NRP are used to process and forward the
        packet. The forwarding behavior is based on both the MPLS label stack
        and the Post-Stack NRP action. The top MPLS label is used for the
        lookup of the next-hop, and the NRP Selector 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. Network nodes
        which do not support the mechanism in this document MUST ignore the
        NRP action, and forward the packet only based on the top MPLS
        label.</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 resources (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 NRP
        Selector ID is used to further identify the virtual sub-interface
        which is associated with the NRP on the outgoing interface.</t>

        <t>The egress node of the MPLS LSP MUST pop the Post-Stack NRP action,
        together with the Post-Stack header and other Post-Stack actions if
        there is any.</t>
      </section>
    </section>

    <section title="Capability Advertisement and Negotiation">
      <t>Before inserting the Post-Stack NRP action into an MPLS packet, the
      ingress node wants 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 Post-Stack NRP action.
      The ingress node also needs to know whether the egress node of the LSP
      can remove the Post-Stack NRP action as part of the Post-Stack header
      properly before parsing the upper layer and sending the packet to the
      next hop. The signaling mechanism for capability advertisement and
      negotiation is out of the scope of this document.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA is requested to assign the code point for the PS-NRP action from
      the "Post-Stack Network Action Opcodes" registry as below:</t>

      <t><figure>
          <artwork><![CDATA[   Value                    Description                Reference 
   ----------------------------------------------------------------
   TBA          Post-Stack Network Action for NRP     this document ]]></artwork>
        </figure></t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The security considerations in <xref target="RFC3032"/> and <xref
      target="I-D.jags-mpls-ps-mna-hdr"/> apply to this document.</t>

      <t>The introduction of Post-Stack NRP actions allows attacking traffic
      targeting at a specific NRP in the network, which can impact the
      performance of services carried by the NRP. Operator needs to make sure
      that only trusted network nodes can add Post-stack NRP action to
      packets.</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.3032'?>

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

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

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

      <?rfc include='reference.I-D.jags-mpls-ps-mna-hdr'?>
    </references>

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

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

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