<?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-ietf-6man-enhanced-vpn-vtn-id-07"
     ipr="trust200902">
  <front>
    <title abbrev="IPv6 NRP Option">Carrying Network Resource Partition (NRP)
    Information in IPv6 Extension Header</title>

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

    <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="Chongfeng Xie" initials="C." surname="Xie">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>China Telecom Beijing Information Science &amp; Technology,
          Beiqijia</street>

          <city>Beijing</city>

          <code>102209</code>

          <country>China</country>
        </postal>

        <email>xiechf@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Chenhao Ma" initials="C." surname="Ma">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>China Telecom Beijing Information Science &amp; Technology,
          Beiqijia</street>

          <city>Beijing</city>

          <code>102209</code>

          <country>China</country>
        </postal>

        <email>machh@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Gyan Mishra" initials="G." surname="Mishra">
      <organization>Verizon Inc.</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </author>

    <date day="8" month="July" year="2024"/>

    <abstract>
      <t>Virtual Private Networks (VPNs) provide different customers with
      logically separated 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 VPN services.
      Such kind of network service is called enhanced VPNs. Enhanced VPNs can
      be used, for example, to deliver network slice services.</t>

      <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. For packet forwarding in a
      specific NRP, some fields in the data packet are used to identify the
      NRP the packet belongs to, so that NRP-specific processing can be
      performed on each node along a path in the NRP.</t>

      <t>This document specifies a new IPv6 Hop-by-Hop option to carry the NRP
      related information in data packets, which could be used to identify the
      NRP-specific processing to be performed on the packets by each network
      node along a network path in the NRP.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>Virtual Private Networks (VPNs) <xref target="RFC4026"/> 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><xref target="I-D.ietf-teas-enhanced-vpn"/> specifies the framework
      of NRP-based enhanced VPN and describes the candidate component
      technologies in different network planes and network layers. An NRP
      could be used as the underlay to meet the requirement of one or a group
      of enhanced VPN services.</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. One approach to improve the data plane scalability
      of NRP is to introduce a dedicated NRP ID in the data packet to identify
      the set of network resources allocated to an NRP, so that packets in an
      NRP can be processed and forwarded using the NRP-specific network
      resources, which could avoid possible resource competition with services
      in other NRPs. An NRP ID can have network resource semantics, which
      represents a subset of the resources (e.g. bandwidth, buffer and queuing
      resources) allocated on a given set of links and nodes which constitute
      a logical network topology. The logical topology of an NRP could be
      defined and identified using mechanisms such as Multi-Topology <xref
      target="RFC4915"/>, <xref target="RFC5120"/> or Flex-Algo <xref
      target="RFC9350"/>.</t>

      <t>This document specifies a mechanism to carry NRP related information
      in a new IPv6 Hop-by-Hop option (Section 4.3 of <xref
      target="RFC8200"/>) called "NRP option". The NRP option is parsed by
      every intermediate node along the forwarding path, and the obtained NRP
      ID is used to invoke NRP-specific packet processing and forwarding using
      the set of NRP-specific resources. This provides a scalable solution to
      support a relatively large number of NRPs in an IPv6 network <xref
      target="I-D.ietf-teas-nrp-scalability"/>.</t>

      <t>Although in this document the application of the NRP option is to
      indicate the NRP-specific resource information, the NRP option is
      considered as a generic mechanism to convey network wide NRP ID and
      information with different semantics to meet the possible use cases in
      the future. Some considerations about generalization are described in
      Section 5.</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="New IPv6 Extension Header Option for NRP">
      <t>A new Hop-by-Hop option (Section 4.3 of <xref target="RFC8200"/>)
      type "NRP" is defined to carry the NRP related information. Its format
      is shown in Figure 1.</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
                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     |  Option Type  |  Opt Data Len |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Flags     | Context Type  |            Reserved           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                      Data Plane NRP ID                        ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
                 Figure 1. The format of NRP Option]]></artwork>
        </figure></t>

      <t>Option Type: 8-bit identifier of the type of option. The type of NRP
      option is to be assigned by IANA. The 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 0 The third highest-order bit is set to 0 to indicate this
          option does not change en route.</t>

          <t>TTTTT To be assigned by IANA.</t>
        </list></t>

      <t>Opt Data Len: 8-bit unsigned integer indicates the length of the
      option Data field of this option, in octets.</t>

      <t>Flags: 8-bit flags field. The most significant bit is defined in this
      document.</t>

      <t><figure>
          <artwork align="center"><![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 NRP option of a received packet is set to 1, if
          the NRP ID in the packet does not match with any of the NRP ID
          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 NRP ID
          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></t>

      <t>The setting of the S flag depends on the operator's policy. Such
      policy can be NRP-specific, and may be at a fine granularity to apply to
      a subset of packets within an NRP. Such policy needs to be provided to
      the ingress nodes to apply to packets which are mapped to corresponding
      NRPs. For a given NRP, the suggested default policy is to make the S
      flag set.</t>

      <t>As an example, for OAM packets which are used to detect the
      availability of a forwarding path associated with NRP-specific
      resources, the S flag SHOULD be set to 1. This way, only when the set of
      network resources and policy are correctly instantiated for the NRP on
      all network links along the path, the OAM packets can be received by the
      egress endpoint and the availability check can be passed.</t>

      <t>The S flag in the NRP option provides an approach for flexible and
      fine-granular control of the forwarding policy of packets whose NRP ID
      do not match with the NRPs provisioned on the transit network nodes. One
      alternate approach is to specify the forwarding policy of packets in
      different NRPs via configuration, while additional configuration would
      be needed when non-default fine-granular policy is required for a given
      NRP.</t>

      <t>Context Type (CT): One-octet field used to indicate the semantics of
      the NRP ID carried in the option. The context value defined in this
      document is as follows:</t>

      <t><list style="symbols">
          <t>CT=0: The NRP ID is a network-wide unique resource ID, which is
          used to identify the subset of network resources allocated to the
          NRP on the involved network links.</t>
        </list>Reserved: 2-octet field reserved for future use. They MUST be
      set to 0 on transmission and MUST be ignored on receipt.</t>

      <t>Data Plane NRP ID: The identifier of an NRP carried in data packets,
      the semantics of the ID is determined by the Context Type. The length of
      the NRP-ID is the Opt Data Length minus 4.</t>

      <t>Note that, in the context of 5G network slicing, if a deployment
      found it useful, a four-octet NRP ID field may be derived from the
      four-octet Single Network Slice Selection Assistance Information
      (S-NSSAI) defined in 3GPP <xref target="TS23501"/>.</t>
    </section>

    <section title="Procedures">
      <t>This section describes the procedures for NRP option processing when
      the Context Type in the NRP option is set to 0. The processing
      procedures for NRP option with other Context Types are out of the scope
      of this document and will be specified in separate documents which
      introduce those Context Types.</t>

      <section title="Adding NRP Option to Packets">
        <t>When an ingress node of an IPv6 domain receives a packet, according
        to the traffic classification and mapping policy, the packet needs to
        be steered into one of the NRPs in the network, then the packet MUST
        be encapsulated in an outer IPv6 header with the source and
        destination addresses set according to the policy, and the NRP ID of
        the NRP which the packet is mapped to according to the policy MUST be
        carried in the NRP option of the Hop-by-Hop Options header, which is
        associated with the outer IPv6 header.</t>
      </section>

      <section title="NRP-specific Packet Forwarding">
        <t>On receipt of a packet with the NRP option, each network node which
        can process the Hop-by-Hop Options header and the NRP option in fast
        path <xref target="I-D.ietf-6man-hbh-processing"/> MUST use the NRP ID
        to determine the set of local network resources which are allocated to
        the NRP. The packet forwarding behavior is based on both the
        destination IP address and the NRP ID. More specifically, the
        destination IP address SHOULD be used to determine the next-hop and
        the outgoing interface, and NRP ID SHOULD be used to determine the set
        of network resources on the outgoing interface which are allocated to
        the NRP for processing and sending the packet. If the NRP ID does not
        match with any of the NRP ID provisioned on the outgoing interface,
        the S flag in the NRP option SHOULD be used to determine whether the
        packet should be dropped or forwarded using the default set of network
        resources of the outgoing interface. The Traffic Class field of the
        outer IPv6 header MAY be used to provide differentiated treatment for
        packets which belong to the same NRP. The egress node of the IPv6
        domain MUST decapsulate the outer IPv6 header and the Hop-by-Hop
        Options header which includes the NRP option.</t>

        <t>In the forwarding plane, there can be different approaches of
        partitioning the local network resources and allocating them to
        different NRPs. For example, on one physical interface, a subset of
        the forwarding plane resources (e.g. bandwidth and the associated
        buffer and queuing resources) can be allocated to a particular NRP and
        represented as a virtual sub-interface or a data channel with reserved
        bandwidth resource. In packet forwarding, the IPv6 destination address
        of the received packet is used to identify the next-hop and the
        outgoing layer-3 interface, and the NRP ID is used to further identify
        the virtual sub-interface or the data channel on the outgoing
        interface which is associated with the NRP.</t>

        <t>Network nodes which do not support the processing of Hop-by-Hop
        Options header SHOULD ignore the Hop-by-Hop options header and forward
        the packet only based on the destination IP address. Network nodes
        which support Hop-by-Hop Options header, but do not support the NRP
        option SHOULD ignore the NRP option and forward the packet only based
        on the destination IP address. The network node MAY process the rest
        of the Hop-by-Hop options in the Hop-by-Hop Options header.</t>
      </section>
    </section>

    <section title="Operational Considerations">
      <t>As described in <xref target="RFC8200"/>, network nodes may be
      configured to ignore the Hop-by-Hop Options header, drop packets
      containing a Hop-by-Hop Options header, or assign packets containing a
      Hop-by-Hop Options header to a slow processing path. In networks with
      such network nodes, it is important that packets of an NRP are not
      dropped due to the existence of the Hop-by-Hop Options header. Operators
      need to make sure that all the network nodes involved in an NRP can
      either process the Hop-by-Hop Options header in the fast path, or ignore
      the Hop-by-Hop Options header. Since an NRP is associated with a logical
      network topology, one practical approach is to ensure that all the
      network nodes involved in that logical topology support the processing
      of the Hop-by-Hop Options header and the NRP option in the fast path,
      and constrain the packet forwarding path to the logical topology of the
      NRP.</t>

      <t><xref target="I-D.ietf-6man-hbh-processing"/> specifies the modified
      procedures for the processing of IPv6 Hop-by-Hop Options header, with
      the purpose of making the Hop-by-Hop Options header useful. Network
      nodes complying with <xref target="I-D.ietf-6man-hbh-processing"/> will
      not drop packets with Hop-by-Hop Options header and the NRP option.</t>
    </section>

    <section title="Considerations about Generalization">
      <t>During the discussion of this document in the 6MAN WG, one of the
      suggestions received is to make the NRP option more generic in terms of
      semantics and encoding. This section gives some analysis about to what
      extent the semantics of NRP could be generalized, and how the
      generalization could be achieved with the proposed encoding.</t>

      <t>Based on the NRP definition in <xref target="RFC9543"/>, the concept
      of NRP could be extended as: an underlay network construct which is
      associated with a set of network-wide attributes and states maintained
      on each participating network node. The attributes associated with an
      NRP may include but not limited to: network resource attributes, network
      topology attributes, and network function attributes etc.</t>

      <t><list style="symbols">
          <t>The network resource can refer to various type of data plane
          resources, including link bandwidth, bufferage and queueing
          resources.</t>

          <t>The network topology can be multipoint-to-multipoint,
          point-to-point, point-to-multipoint or multipoint-to-point.</t>

          <t>The network functions may include both data forwarding actions
          and other types network functions which can be executed on data
          packets mapped to an NRP.</t>
        </list>This shows the semantics of NRP can be quite generic. Although
      generalization is something good to have, it would be important to
      understand and identify the boundary of generalization. In this
      document, It is anticipated that for one network attribute to be
      included in NRP, it needs to be a network-wide attribute rather than a
      node-specific attribute. Thus whether a network-wide view can be
      provided or not could be considered as one prerequisite of making one
      attribute part of the NRP option.</t>

      <t>The format of the NRP option contains the Flags field, the Context
      Type field and the Reserved field, which provide the capability for
      future extensions. That said, since the NRP option needs to be processed
      by network nodes in the fast path, the capability of network devices
      need to be considered when new semantics and encoding are
      introduced.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document requests IANA to assign a new option type from
      "Destination Options and Hop-by-Hop Options" registry <xref
      target="IANA-HBH"/>.</t>

      <t><figure>
          <artwork><![CDATA[   Hex Value      Binary Value      Description      Reference 
                  act chg rest
   -----------------------------------------------------------
      TBA         00   0  tba       NRP Option      [this document] ]]></artwork>
        </figure></t>

      <t>This document requests IANA to create a new registry for the "NRP
      Option Context Type" under the "Internet Protocol Version 6 (IPv6)
      Parameters" registry. The allocation policy of this registry is
      "Standards Action". The initial code points are assigned by this
      document as follows:</t>

      <t><figure>
          <artwork><![CDATA[   Value          Description       Reference 
   -----------------------------------------------
     0            Resource ID      [this document]
   1-254          Unassigned
    255           Reserved         [this document]
]]></artwork>
        </figure></t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The security considerations with IPv6 Hop-by-Hop Options header are
      described in <xref target="RFC8200"/>, <xref target="RFC7045"/>, <xref
      target="RFC9098"/> <xref target="RFC9099"/> and <xref
      target="I-D.ietf-6man-hbh-processing"/>. This document introduces a new
      IPv6 Hop-by-Hop option which is either processed in the fast path or
      ignored by network nodes, thus it does not introduce additional security
      issues.</t>
    </section>

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

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Juhua Xu, James Guichard, Joel
      Halpern, Tom Petch, Aijun Wang, Zhenqiang Li, Tom Herbert, Adrian
      Farrel, Eric Vyncke, Erik Kline, Mohamed Boucadair and Ketan Talaulikar
      for their review and valuable comments.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="IANA-HBH"
                 target="https://www.iana.org/assignments/ipv6-parameters/">
        <front>
          <title>IANA, "Destination Options and Hop-by-Hop Options"</title>

          <author>
            <organization/>
          </author>

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

      <?rfc include="reference.RFC.2119"?>

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

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

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

      <?rfc include='reference.I-D.ietf-teas-enhanced-vpn'?>
    </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.RFC.4026'?>

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

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

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

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

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

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

      <?rfc include='reference.I-D.ietf-teas-nrp-scalability'?>

      <?rfc include='reference.I-D.ietf-6man-hbh-processing'?>
    </references>
  </back>
</rfc>
