<?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-06"
     ipr="trust200902">
  <front>
    <title abbrev="RT-Constrain in Hierarchical RR Scenario">RT-Constrain
    Optimization 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>Individual</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>mach.chen@outlook.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="3" month="September" 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
      solutions 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 solutions
      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="Solutions">
      <t>This document specifies 2 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>

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

    <section anchor="egAPP" title="Another Possible Solution">
      <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>
  </back>
</rfc>
