Describes a BGP mechanism that prevents routing loops by tracking routing domains traversed by routes and blocking routes that would create loops.
A BGP Domain-Path feature for loop prevention is a routing mechanism that
-
keeps track of the distinct routing domains traversed by a route within the same VPN or extended VRFs, AS well AS across different VPNs or VRFs
-
detects when a route loops back to a VRF in a domain where it has already traversed, and
-
prevents the route from getting imported or accepted when it would lead to a loop.
BGP routing loop scenarios
BGP routing loops might occur in certain situations due to various conditions:
-
Intentional disabling of existing BGP loop prevention mechanisms, such AS AS Path checks
-
Route leaks across different VRFs or VPNs
This is an example scenario where a BGP routing loop might occur:
-
A prefix P1 received from a BGP IP L3Out peer is advertised in the ACI fabric using the Multiprotocol Border Gateway Protocol (MP-BGP).
-
AS a transit case, this prefix can be advertised out externally through an SR-MPLS infra L3Out.
-
This prefix could then be imported back into the ACI fabric from the core, either in the same VRF or in a different VRF.
-
A BGP routing loop would occur when this imported prefix is then advertised back to the originating switch, either from the same VRF or through a leak from a different VRF.
Within an ACI fabric, the VRF scope is global and is extended to all switches where it is configured. Therefore, a route that is exported out of a domain in a VRF is blocked from being received back into the VRF on any other switch.
These components are used with the BGP Domain-Path feature for loop prevention:
-
Routing domain ID: Every tenant VRF in an ACI site is associated with one internal fabric domain, one domain for each VRF in each SR-MPLS infra L3Out, and one domain for each IP L3Out. When the BGP Domain-Path feature is enabled, each of these domains is assigned a unique routing domain ID, in the format
Base:<variable>, where:-
Baseis the non-zero value that was entered in the Domain ID Base field in the BGP Route Reflector Policy page -
<variable>is a randomly-generated value specifically for that domain
-
-
Domain path: The domain segments traversed by a route are tracked using a BGP domain path attribute:
-
The domain ID of the VRF for the source domain where the route is received is prepended to the domain path
-
The source domain ID is prepended to the domain path while re-originating a route across domains on the border leaf switches
-
An external route is not accepted if any of the local domain IDs for the VRFs is in the domain path
-
The domain path is carried AS an optional and transitive BGP path attribute with each domain segment, represented AS <Domain-ID:SAFI>
-
The ACI border leaf switches prepend the VRF internal domain ID for both locally originated and external routes to track leaks within the domain
-
A route from the internal domain can be imported and installed in a VRF on a node with a conflicting external domain ID to provide an internal backup or transit path
-
For infra L3Out peers, the advertisement of a route to a peer is skipped if the domain ID of the peer domain is present in the domain path of the route (outbound check is not applicable for IP L3Out peers)
-
The border leaf switches and non-border leaf switches will both process the domain path attribute
-
You can configure the BGP Domain-Path feature for loop prevention, or simply enable the configuration to send a received domain path, through the GUI or REST API. You cannot configure the BGP Domain-Path feature for loop prevention or enable the configuration to send a received domain path through the NX-OS style CLI.
When upgrading to Release 5.1(3) from a previous release, if you have contracts configured for inter-VRF shared services, those contracts might not work AS expected with the BGP Domain-Path feature for loop prevention because the BGP domain ID would not have been set in those contracts that were configured before you upgraded to Release 5.1(3). In those situations, delete the contract and then add the contract back, which will allow the BGP domain update to occur. This is only an issue when you have contracts that were configured prior to your upgrade to Release 5.1(3); this is not an issue when you create new contracts after you've completed the upgrade to Release 5.1(3).