| Internet-Draft | RT-Constrain in Hierarchical RR Scenario | November 2026 |
| Dong, et al. | Expires 6 May 2027 | [Page] |
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.¶
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 RFC 2119 [RFC2119].¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 6 May 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
The Route Target (RT) Constrain mechanism specified in [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 [RFC4684] 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.¶
+-----+
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
¶
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 RR-22 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.¶
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, RR-31 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 [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.¶
This document specifies 2 solutions for the RTC issue in hierarchical RR scenario. The add-path based solution in Section 3.1 is RECOMMENDED as the primary solution, as it preserves the existing BGP loop detection mechanisms defined in [RFC4271] while allowing the higher-layer RR to advertise multiple RTC routes to the lower-layer RRs. Section 3.2 provides an alternative solution by allowing duplicated CLUSTER_ID in path selection, which can be used in deployments where add-path is not available. Appendix A describes another possible approach which is for further discussion.¶
This section provides one solution which is based on the add-path mechanism defined in [RFC7911]. It makes use of the add-path mechanism for RT-Constrain route advertisement between the hierarchical RRs. The solution is summarized as follows:¶
The route-reflector clients which themselves are also route-reflectors SHOULD be identified, then BGP add-paths [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 the BGP loop detection. In this case normal BGP path advertisement rules as defined in [RFC4271] SHOULD be applied. The RECOMMENDED number of paths to be advertised with add-path is a local decision of the operator. To ensure that sufficient RT-Constrain routes are advertised to build the RTC distribution graph, the RECOMMENDED add-path number is the maximum number of the BGP client sessions in the same cluster plus 1.¶
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 [RFC4684] SHOULD be applied.¶
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.¶
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 by an implementation to control whether CLUSTER_ID duplication is allowed or not, and the maximum number of duplication allowed for any CLUSTER_ID in the received CLUSTER_LIST can be configurable based on the network topology and the operator's policy.¶
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.¶
It should be noted that allowing duplicated CLUSTER_ID weakens the BGP loop detection for RT-Constrain routes. In a hierarchical RR topology, if the level-2 RR advertises the same RT-Constrain route back to the level-1 RRs from which it was received, and the level-1 RRs accept it due to the relaxed CLUSTER_ID check, the route may oscillate between the level-2 RR and the level-1 RRs. Operators SHOULD be aware of this risk. Route oscillation may be avoided if BGP policy is configured such that one path is consistently preferred over the other, e.g., by setting local-preference or MED so that the level-1 RRs always prefer the path received from their own clients over the path reflected from the level-2 RR.¶
Within an operator's network, a uniform mechanism SHOULD be selected for all hierarchical RR layers. Mixing add-path based solution (Section 3.1) on some RRs with the duplicated CLUSTER_ID solution (Section 3.2) on others is NOT RECOMMENDED, as it complicates the route distribution graph and makes troubleshooting difficult. The add-path based solution is RECOMMENDED for new deployments. Operators enabling it SHOULD configure the add-path path count as described in section 3.1. If the duplicated CLUSTER_ID solution as described in section 3.2 is used, operators SHOULD ensure that consistent local-preference or MED policy is applied on all lower-layer RRs.¶
When migrating from a non-hierarchical RR deployment to a hierarchical one, operator SHOULD verify that RTC routes are propagated across all RR layers and that no RT-Constrain route is silently dropped by loop detection.¶
This document makes no request of IANA.¶
This document does not change the security properties of BGP based VPNs and [RFC4684].¶
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ý Adam, Xiaohu Xu, Uttaro James, Shyam Sethuram, Saikat Ray and Bruno Decraene.¶
This section specifies one possible solution which proposes modifications to the intra-AS advertisement rule of RTC route.¶
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 [RFC4684]:¶
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 [RFC9107], where per-peer route selection is perfomed by the route reflector.¶
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.¶
Similar to Section 3.2, this approach does not rely on add-path and may in theory allow a route to be reflected back to the RR from which it was received if the "most disjoint path" selection is not consistently applied. In deployments where local-preference or MED is used to select one path as preferred, route ping-ponging may not occur. However, this behavior depends on consistent policy configuration across all RRs and is not guaranteed by the mechanism itself.¶