<?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-idr-rtc-hierarchical-rr-05"
     ipr="trust200902">
  <front>
    <title abbrev="RT-Constrain in Hierarchical RR Scenario">Extensions to
    RT-Constrain in Hierarchical Route Reflection Scenarios</title>

    <author fullname="Jie Dong" initials="J." surname="Dong">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

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

        <email>jie.dong@huawei.com</email>
      </address>
    </author>

    <author fullname="Mach(Guoyi) Chen" initials="M." surname="Chen">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

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

        <email>mach.chen@huawei.com</email>
      </address>
    </author>

    <author fullname="Robert Raszuk" initials="R." surname="Raszuk">
      <organization>Arrcus</organization>

      <address>
        <postal>
          <street/>
        </postal>

        <email>robert@raszuk.net</email>
      </address>
    </author>

    <date day="19" month="July" year="2026"/>

    <abstract>
      <t>The Route Target (RT) Constrain mechanism specified in RFC 4684 is
      used to build a route distribution graph in order to restrict the
      propagation of Virtual Private Network (VPN) routes. In network
      scenarios where hierarchical route reflection (RR) is used, the existing
      RT-Constrain mechanism cannot guarantee a correct route distribution
      graph. This document describes the problem scenario and proposes a
      solution to address the RT-Constrain issue in hierarchical RR
      scenarios.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>The Route Target (RT) Constrain mechanism specified in <xref
      target="RFC4684"/> is used to build a route distribution graph in order
      to restrict the propagation of Virtual Private Network (VPN) routes. In
      network scenarios where hierarchical route reflection (RR) is used, the
      existing advertisment rules of RT membership information as defined in
      section 3.2 of <xref target="RFC4684"/> cannot guarantee a correct route
      distribution graph.</t>

      <t>This document describes the problem scenario and proposes a solution
      to address the RT-Constrain issue in hierarchical RR scenarios.</t>
    </section>

    <section title="Problem Statement">
      <t/>

      <t><figure>
          <artwork align="center"><![CDATA[                 +-----+
         Clu-1   | RR-1| 
                 +-----+
                 / / \ \
         ------/  /   \  \--------
        /        /     \          \
      /  Clu-2  /       \   Clu-3  \
  +-/---+  +---/-+      +\----+  +--\--+
  |RR-21|  |RR-22|      |RR-31|  |RR-32|
  +-----+  +-----+      +-----+  +-----+
     | \    / |            | \    / |
     |   \/   |            |   \/   |
     |   /\   |            |   /\   |
     | /    \ |            | /    \ |
  +-----+  +-----+      +-----+  +-----+
  | PE-1|  | PE-2|      | PE-3|  | PE-4|
  +-----+  +-----+      +-----+  +-----+

    RT-1     RT-1         RT-1     RT-1
  +-----+  +-----+      +-----+  +-----+
  |VPN-1|  |VPN-1|      |VPN-1|  |VPN-1|
  +-----+  +-----+      +-----+  +-----+
 Figure 1. RT-Constrain with Hierarchical RRs
]]></artwork>
        </figure></t>

      <t>As shown in Figure 1, hierarchical RRs are deployed in the network,
      RR-21, RR-22 and RR-31, RR-32 are level-1 route-reflectors which connect
      to the PEs, and are also the clients of the level-2 route-reflector
      RR-1. RR-21 and RR22 are in RR cluster 1, RR-31 and RR-32 are in RR
      cluster 2. If each PE advertises RT membership information of RT-1 to
      the upstream RRs, after the best path selection, the level-1 RRs (RR-21,
      RR-22, RR-31 and RR-32 would create the CLUSTER_LIST attribute, prepend
      their local CLUSTER_ID and then advertise the best path to RR-1 and
      their clients respectively.</t>

      <t>On receipt of the RT-Constrain routes from the level-1 RRs, RR-1
      selects one of the received routes as the best route, here assume the
      route received from RR-21 is selected by RR-1 as the best route. Then
      RR-1 needs to advertise the best RT-Constrain route to RR-21, RR-22,
      RR31 and RR-32 to create the route distribution graph of VPN-1. RR-1
      would prepend its CLUSTER_ID to the CLUSTER_LIST of the path. According
      to the rules in Section 3.2 of <xref target="RFC4684"/>, it sets the
      ORIGINATOR_ID to its own router-id, and sets the NEXT_HOP to the local
      address for the session. Then RR-1 would advertise this route to RR-21,
      RR-22, RR-31 and RR-32 respectively. On receipt of the RT-Constrain
      route from RR-1, RR-21 and RR-22 checks the CLUSTER_LIST and find its
      own CLUSTER_ID in the list, so this route will be ignored by RR-21 and
      RR-22. As a result, RR-21 and RR-22 will not form the outbound filter of
      RT-1 towards RR-1, hence it will not advertise the VPN routes of VPN-1
      to RR-1.</t>
    </section>

    <section title="Potential Solutions">
      <t>This document specifies 3 potential solutions for the RTC issue in
      hierarchical RR scenario.</t>

      <section title="Add-path Based Solution">
        <t>This section provides one solution which is based on the add-path
        mechanism defined in <xref target="RFC7911"/>. It makes use of the
        add-path mechanism for RTC route advertisement between the
        hierarchical RRs. The solution is summerized as follows:</t>

        <t><list style="symbols">
            <t>The route-reflector clients which themselves are also
            route-reflectors SHOULD be identified, then BGP add-paths <xref
            target="RFC7911"/> SHOULD be enabled for RT membership NLRI on the
            BGP sessions between the higher layer RR and the lower layer RRs
            to ensure that sufficient RT-Constrain routes can be advertised by
            the higher layer RR to the lower layer RRs to pass BGP loop
            detection. In this case normal BGP path advertisement rules as
            defined in <xref target="RFC4271"/> SHOULD be applied. The number
            of RT-Constrain routes to be advertised with add-path mechanism is
            a local decision of operators. To ensure that sufficient
            RT-Constrain routes are advertised to build the distribution
            graph, the RECOMMENDED add-path number is the maximum number of
            the BGP client sessions in the same cluster plus 1.</t>

            <t>When advertising an RT membership NLRI to a route-reflector
            client which is not a lower layer RR, the advertisement rule as
            defined in section 3.2 of <xref target="RFC4684"/> SHOULD be
            applied.</t>
          </list>With the above advertisement rule, RR-1 in figure 1 SHOULD
        advertise to RR-21 the RT-Constrain routes received from RR-21, RR-22
        and RR-31, then the RTC route from RR-31 will pass the BGP loop
        detection on RR-21 and RR-22, and the route from RR-21 will pass the
        BGP loop detection on RR-31 and RR-32, thus the route distribution
        graph can be set up correctly.</t>
      </section>

      <section title="Allowing Duplicated CLUSTER_ID">
        <t>This section provides another solution for the distribution of
        RT-Constrain routes in hierarchical RR scenarios. As the RT-Constrain
        route may be ignored due to duplicated CLUSTER_ID in the CLUSTER_LIST
        of the received BGP Update, one knob can be introduced to control
        whether CLUSTER_ID duplication is allowed or not, and the times of
        duplication of any CLUSTER_ID allowed in the received CLUSTER_LIST can
        be configurable.</t>

        <t>In the scenario shown in Figure 1, this knob can be enabled on all
        the level-1 RRs (RR-21, RR-22, RR-31 and RR-32) respectively, so that
        the RT-Constrain route received from the RR-1 can pass the route
        selection, and the route distribution graph can be set up
        correctly.</t>
      </section>

      <section title="Disjoint Path Selection">
        <t>This section specifies one possible solution which proposes
        modifications to the intra-AS advertisement rule of RTC route.</t>

        <t>Since the advertisement of RT-Constrain route is to set up a route
        distribution graph and not to guide the data packet forwarding,
        actually all the available RT-Constrain routes should be considered in
        setting up the route distribution graph, not just the best one. Thus
        the following advertisment rule for RT membership information is
        proposed to replace the rule i and ii in section 3.2 of <xref
        target="RFC4684"/>:</t>

        <t><list style="symbols">
            <t>When advertising an RT membership NLRI to a route-reflector
            peer (either client or non-client), the route which has the most
            disjoint path comparing to the route received from this peer
            SHOULD be selected and advertised. The most disjoint path is the
            path whose CLUSTER_LIST and ORIGINATOR_ID attributes are diverse
            from the attributes of the path received from this peer. This is
            analagous to the mechanism specified in <xref target="RFC9107"/>,
            where per-peer route selection is perfomed by the route
            reflector.</t>
          </list>With the above advertisement rule, RR-1 in figure 1 would
        advertise to RR-21 the RT-Constrain route received from RR-31 or
        RR-32, which is the most disjoint alternative route compared with the
        route received from RR-21. In this way, RR-21 will not discard the
        RT-constrain route received from RR-1, and the route distribution
        graph can be set up correctly.</t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document makes no request of IANA.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This document does not change the security properties of BGP based
      VPNs and <xref target="RFC4684"/>.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Yaqun Xiao for the discussion of
      RT-Constrain issue in hierarchical RR scenario. Many people have made
      valuable comments and suggestions, including Susan Hares, Jeffrey Haas,
      Stephane Litkowski, Vitkovsk&yacute; Adam, Xiaohu Xu, Uttaro James,
      Shyam Sethuram, Saikat Ray and Bruno Decraene.</t>
    </section>
  </middle>

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

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

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

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

    <references title="Informative References">
      <?rfc include='reference.RFC.9107'?>
    </references>
  </back>
</rfc>
