<?xml version="1.0" encoding="utf-8"?>
<!-- 
     draft-rfcxml-general-template-standard-00
  
     This template includes examples of the most commonly used features of RFCXML with comments 
     explaining how to customise them. This template can be quickly turned into an I-D by editing 
     the examples provided. Look for [REPLACE], [REPLACE/DELETE], [CHECK] and edit accordingly.
     Note - 'DELETE' means delete the element or attribute, not just the contents.
     
     Documentation is at https://authors.ietf.org/en/templates-and-schemas
-->
<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->

<rfc
xmlns:xi="http://www.w3.org/2001/XInclude"
  category="std"
  docName="draft-li-idr-bgp-nrp-00"
  ipr="trust200902"
  obsoletes=""
  sortRefs="true"
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="3">
<!-- [REPLACE] 
       * docName with name of your draft
     [CHECK] 
       * category should be one of std, bcp, info, exp, historic
       * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
       * updates can be an RFC number as NNNN
       * obsoletes can be an RFC number as NNNN 
-->

  <front>
    <title abbrev="BGP Extensions for NRP">BGP Extensions for Network Resource Partition</title>
    <!--  [REPLACE/DELETE] abbrev. The abbreviated title is required if the full title is longer than 39 characters -->

    <seriesInfo name="Internet-Draft" value="draft-li-idr-bgp-nrp-00"/> 
   
    <author fullname="Zhenqiang Li" initials="Z" role="editor" surname="Li">
      <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->
    <!-- Can have more than one author -->
      
    <!-- all of the following elements are optional -->
      <organization>China Mobile</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
          <street>29 Finance Avenue, Xicheng District</street>
          <city>Beijing</city>
          <country>CN</country>
          <!-- Uses two letter country code -->
        </postal>        
        <email>lizhenqiang@chinamobile.com</email>  
        <!-- Can have more than one <email> element -->
      </address>
    </author>
	<author fullname="Ruiqian Hu" initials="R" role="editor" surname="Hu">
      <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->
    <!-- Can have more than one author -->
      
    <!-- all of the following elements are optional -->
      <organization>China Mobile</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
          <street>10 Manbai Road, Changping District, Changping District</street>
          <city>BeiJing</city>
          <country>CN</country>
          <!-- Uses two letter country code -->
        </postal>
        <email>huruiqian@chinamobile.com</email>  
        <!-- Can have more than one <email> element -->
        
      </address>
    </author>
   
    <date year="2026"/>
    <!-- On draft subbmission:
         * If only the current year is specified, the current day and month will be used.
         * If the month and year are both specified and are the current ones, the current day will
           be used
         * If the year is not the current one, it is necessary to specify at least a month and day="1" will be used.
    -->

    <area>Routing</area>
    <workgroup>Inter-Domain Routing</workgroup>
    <!-- "Internet Engineering Task Force" is fine for individual submissions.  If this element is 
          not present, the default is "Network Working Group", which is used by the RFC Editor as 
          a nod to the history of the RFC Series. -->

    <keyword>BGP</keyword>
	<keyword>Network Slice</keyword>
	<keyword>Network Resource Partition</keyword>
    <!-- [REPLACE/DELETE]. Multiple allowed.  Keywords are incorporated into HTML output files for 
         use by search engines. -->

    <abstract>
		<t>Existing approaches bind a Segment Routing (SR) Policy to a Network Resource Partition (NRP) on a one-to-one basis, which lacks flexibility and introduces significant operational overhead as the number of NRPs scales, especially when the NRPs share the same SR Policy path.</t>

		<t>This document defines BGP extensions to advertise NRP identifier (NRP ID) information between network nodes, which decouples SR Policy from NRP, allowing multiple NRPs to share a common SR Policy path and thus avoiding linear growth of SR Policies.</t>

		<t>This design reduces operational complexity and is also applicable to SR Best Effort (SR BE) scenario.</t>
    </abstract>
 
  </front>

  <middle>
    
    <section>
      <name>Introduction</name>
	  <t>In 5G and future heterogeneous network scenarios,  network slicing serves as the core technology for supporting differentiated services. Network Resource Partition (NRP),  which underpins network slicing at the underlying layer, is 
	  officially defined in <xref target="RFC9543"/> .  <xref target="RFC9543"/> explicitly delineates the core positioning 
	  and operational framework of NRP; through the logical partitioning 
	  of physical network resources, NRP achieves the guarantee and isolation 
	  of resource allocation and Quality of Service (QoS) for diverse services, 
	  and can thus meet differentiated service level objectives such as low 
	  latency and high reliability. NRP and network slicing are conceptually equivalent throughout this document.</t>
	  
	  <t><xref target="I-D.ietf-idr-sr-policy-nrp"/> binds NRPs to Segment Routing (SR) Policies <xref target="RFC9256"/>. In this approach, 
	  one SR Policy corresponds to one NRP, and the NRP identifier (NRP ID) associated with the SR Policy is distributed together when the SR Policy 
	  is created, via the extended BGP SR Policy protocol <xref target="RFC9830"/>. Since the paths of 
	  SR Policies cannot be shared among multiple network slices, this solution lacks flexibility. 
	  As the number of network slices in the network increases, the number of SR Policies needs 
	  to be expanded accordingly, imposing heavy burdens on network maintenance.</t>
	  
	  <t>To address the aforementioned drawbacks, this document introduces NRP ID Extended Communities Attribute to the BGP protocol <xref target="RFC4760"/>, which decouples SR Policies from NRPs. In this way,  network elements can advertise network slice information to each other 
	  while exchanging routes through the BGP protocol, enabling automatic traffic steering to the corresponding network slices. 
	  Meanwhile, this document supports the sharing of a common 
	  SR Policy path by multiple network slices. When the number of network slices 
	  in the network grows, the number of SR Policies does not need to increase in a one-to-one ratio, thus reducing the complexity of network maintenance. </t>

	<t>Owing to the decoupling of SR Policies and network slices, the approach introduced in this document is also applicable to the SR Best Effort (BE) scenarios where SR Policies are not deployed.</t>
	  
      <section>
        <name>Requirements Language</name>
        <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 BCP 14 <xref target="RFC2119"/>
          <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.</t>
      </section>
      <!-- [CHECK] The 'Requirements Language' section is optional -->

    </section>
    
    <section>
      <name>BGP Extended Communities Attribute for NRP ID</name>

		<t>To support automatic traffic steering to NRP,  and decouple NRP from SR Policy,  this document proposes to use BGP Extended Communities Attribute <xref target="RFC4360"/> to carry NRP ID , thereby enabling the associative mapping between routes and NRPs. This BGP Extended Communities Attribute is a Transitive Opaque Extended Community, designated as NRP ID Extended Communities Attribute. Its detailed encoding structure is as follows:</t>
	  
	<figure align="center">
    <name>NRP ID Extended Communities Attribute</name>
    <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Type high(0x03)|   Type low(*)   |      Reserved(2 octets)     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |                           NRP ID(4 octets)                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]]></artwork>
    </figure>
	  
	  <t>Where:</t> 
	  <t> Type high(1 octet): The value of this field is 0x03, which indicates it is transitive.</t> 
 	  <t>Type low(1 octet): The value of this field is to be assigned by IANA, together with Type High, indicating that this Extended Communities Attribute is the NRP ID Extended Communities Attribute, which carries the NRP ID in the value field.</t>
	  <t>Reserved(2 octets): reserved for future extension. This field SHOULD be set to zero on transmission and MUST be ignored on receipt.</t>	
	  <t>NRP ID (4 octets): carry the unique identifier of a NRP. </t>

    </section>
    

		<section>
        <name>Route Advertisement</name>
        <t>The route advertisement process involves only the headend node and the endpoint node of NRP traffic. The two nodes complete the advertisement and association of NRP ID through the BGP protocol with NRP ID Extended Communities Attribute.</t>

		<t>As the initiator of BGP routes, the headend node or the the endpoint node constructs BGP messages that contain route information and NRP ID according to service requirements. For Traffic Engineering (TE) mode, Color information needs to be additionally carried in BGP messages (within Color Extended Community <xref target="RFC9012"/> ), which is used to map to the corresponding SR Policy. For Best Effort (BE) mode, only route information and NRP ID need to be carried.</t>

		<t>When BGP speaker generates BGP update messages with network slice information, it needs to carry the NRP ID in the NRP ID Extended Communities Attribute in accordance with the format defined in Chapter 2 of this document.</t>

		<t>After receiving such BGP update messages, the BGP speaker recognizes the NRP ID Extended Communities Attribute by the values of Type high and Type low. It MUST ignore the value of the Reserved field and extract the network slice identifier (i.e., NRP ID) from the NRP ID field. The generated Routing Information Base (RIB) and Forwarding Information Base (FIB) MUST include the NRP ID to maintain the association between routes and corresponding NRPs, ensuring the correct forwarding and management of routes. The specific data structure used to associate the routes and the NRPs is  is implementation-specific and thus out of the scope of this document.</t>

		</section>
		
		<section>
        <name>Traffic Forwarding</name>
        <t>The traffic forwarding process involves the headend node, intermediate nodes, and the endpoint node. </t>

		<t>Headend Node: When the headend node receives a packet matching the BGP route corresponding to the target slice, it MUST extract the NRP ID associated with the route, and encapsulate the packet accordingly (for example, encapsulate the NRP ID into the source IP field of the packet or the IPv6 extension header). The encapsulated packet is then forwarded to the forwarding path corresponding to the NRP ID (such as a VLAN with bandwidth guarantee). In TE mode, the packet is encapsulated  in accordance with the matching SR Policy together with the NRP ID, and the encapsulated packet is forwarded based on the SR Policy with resources guaranteed according to the NRP ID. </t>

		<t>Intermediate Node: After receiving a packet with NRP ID, the intermediate node needs to perform corresponding operations based on the destination IP address and NRP ID in the packet. First, it needs to determine the Layer 3 egress interface: extract the destination IP address of the packet, look up the local FIB table, and determine the Layer 3 egress interface of the packet according to the route matching result to complete basic route forwarding. If the destination IP address of the packet is a SID, the packet is forwarded based on the functional behavior of the SID. At the same time, the intermediate node extracts the NRP ID from the packet and forwards the packet to the corresponding network slice resources in the determined Layer 3 egress interface (such as slice sub-interfaces, slice queues, etc.) according to the locally configured mapping between NRP ID and network slice resources. Through these network slice resources, the packet reaches the next-hop node, thereby realizing resource guarantee and forwarding of slice traffic.</t>

		<t>Endpoint Node: After receiving a packet with NRP ID, the endpoint node decapsulates the packet, i.e., strips the outer packet header containing the NRP ID, and forwards the inner packet accordingly. In TE mode, the received packet is with SR Policy encapsulation, the endpoint node strips the outer packet header corresponding to the SR Policy encapsulation and processes the inner packet based on the functional behavior of the SID in the destination field of the stripped outer header.</t>
		</section>
	
    <section anchor="IANA">
    <!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.-->
      <name>IANA Considerations</name>
      <t>IANA is requested to assign the following code point from the subregistry of "BGP Transitive Extended Community Types" in the registry of "Border Gateway Protocol (BGP) Extended Communities" :</t>

  <figure align="center">
    <name>Code Point for the BGP message </name>
    <artwork align="center"><![CDATA[
       +============+========================+============================+
       | Code Point |       Description      |         Reference          |
       +============+========================+============================+
       |    TBD1    |         NRP ID         |       This document        |
       +------------+------------------------+----------------------------+
    ]]></artwork>
  </figure>

<t/>
    
	
    </section>
    
    <section anchor="Security">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
      <name>Security Considerations</name>
      <t>The security considerations specified in <xref target="RFC4360"/>、<xref target="RFC9543"/> and <xref target="RFC9012"/> apply to this document.  This document introduces no new security considerations.</t>
    </section>
    
    <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4360.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4760.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9012.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9543.xml"/>
        <!-- The recommended and simplest way to include a well known reference -->
        
      </references>
	  
	  <references>
        <name>Informative References</name>
        
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9256.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9830.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-sr-policy-nrp.xml" />
		<!-- xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-teas-ietf-network-slice-nbi-yang.xml" / -->
	
        <!-- The recommended and simplest way to include a well known reference -->
        
      </references>

    </references>
 
 </back>
</rfc>
