Total number of prefixes 3
Router2#
-.. _bgp-optimal-route-reflection:
-
-BGP Optimal Route Reflection
-----------------------------
-BGP Route Reflectors (RRs) are used to improve network scalability by reducing
-or eliminating the need for a full-mesh of IBGP sessions.
-
-When a BGP RR receives multiple paths for the same IP prefix, it typically
-selects a single best path to send for all its clients.
-If the RR has multiple nearly-equal best paths and the tie-break is determined
-by the next-hop cost, the RR advertises the path based on its view of next-hop
-costs, which leads to a non-optimal routing.
-The advertised route may differ from the path that a client would select
-if it had the visibility of the same set of candidate paths and used
-its own view of next-hop costs.
-
-Non-optimal advertisements by the RR can be a problem in hot-potato routing.
-Hot-potato routing aims to hand off traffic to the next AS using the closest
-possible exit point from the local AS.
-In this context, the closest exit point implies minimum IGP cost to
-reach the BGP next-hop.
-
-The BGP Optimal Route Reflection allows the RR to choose and send a different
-best path to a different or a set of RR clients.
-
-A link-state protocol is required. It can be OSPF or IS-IS.
-Current implementation of BGP ORR is based on the IGP cost to the BGP next hop,
-and not based on some configured policy.
-
-RR runs Shortest Path First (SPF) calculation with the selected
-router as the root of the tree and calculates the cost to every other router.
-
-This special SPF calculation with another router as the root, is referred to as
-a Reverse SPF (rSPF). This can only be done if the RR learns all the BGP paths
-from all the BGP border routers.
-
-There could be as many rSPFs run as there are RR clients.
-This will increase the CPU load somewhat on the RR.
-
-Current implementation allows up to three root nodes for the rSPF calculation.
-There is no need to configure each RR client as a root and run rSPF.
-Current implementation allows to configure three, the primary, the secondary,
-and the tertiary root, per set of RR clients, for redundancy purposes.
-For the BGP ORR feature to apply to any RR client, that RR client must be
-configured to be part of an ORR policy group.
-
-The BGP ORR feature is enabled per address family.
-
-The minimal configuration needed:
-
-1. ORR needs to be enabled for specific groups of BGP neighbors.
-2. For each group of BGP neighbors, at least one root needs to be configured.
- Optionally, a secondary and tertiary root can be configured.
-3. For OSPF, the root routers(RR clients) need additional configuration
- to make BGP ORR work.
- i.e. The MPLS TE configuration on the root router needs to have the minimal
- configuration for MPLS TE enabled so that OSPF advertises the MPLS TE
- router ID in an opaque-area LSA (type 10).
- Once the RR has an opaque-area LSA with the MPLS TE router-ID matching the
- configured root router address, rSPF can run and BGP on the RR can
- advertise the optimal route.
-
-.. clicmd:: neighbor A.B.C.D optimal-route-reflection NAME
-
- This command allows the neighbor to be part of the ORR group.
-
-.. clicmd:: optimal-route-reflection orr-1 A.B.C.D [A.B.C.D] [A.B.C.D]
-
- This command creates an ORR group with a mandatory primary root
- and optional secondary and/or tertiary roots.
- When primary is reachable it will be the active root.
- when primary goes down, secondary followed by tertiary takes over
- the active root's role.
- Always rSPF calculation runs active root as the root.
- Which means the RR advertises the path based on active root's
- view of next-hop costs.
-
-Sample Configuration
-^^^^^^^^^^^^^^^^^^^^
-
-Sample configuration on Route Reflector
-
-.. code-block:: frr
-
- !
- debug ospf 8 orr
- debug bgp optimal-route-reflection
- !
- interface enp0s8
- ip address 10.10.68.8/24
- ip ospf 8 area 0
- exit
- !
- interface lo
- ip address 10.100.1.8/32
- ip ospf 8 area 0
- exit
- !
- router bgp 1
- neighbor 10.100.1.1 remote-as 1
- neighbor 10.100.1.1 update-source lo
- neighbor 10.100.1.2 remote-as 1
- neighbor 10.100.1.2 update-source lo
- neighbor 10.100.1.3 remote-as 1
- neighbor 10.100.1.3 update-source lo
- neighbor 10.100.1.4 remote-as 1
- neighbor 10.100.1.4 update-source lo
- !
- address-family ipv4 unicast
- neighbor 10.100.1.1 route-reflector-client
- neighbor 10.100.1.1 optimal-route-reflection orr-1
- neighbor 10.100.1.2 route-reflector-client
- neighbor 10.100.1.2 optimal-route-reflection orr-1
- neighbor 10.100.1.3 route-reflector-client
- neighbor 10.100.1.3 optimal-route-reflection orr-1
- neighbor 10.100.1.4 route-reflector-client
- neighbor 10.100.1.4 optimal-route-reflection orr-1
- optimal-route-reflection orr-1 10.100.1.4 10.100.1.3 10.100.1.1
- exit-address-family
- exit
- !
- router ospf 8
- ospf router-id 8.8.8.8
- area 0 authentication
- capability opaque
- exit
- !
- end
-
-Sample configuration on RR clients
-
-.. code-block:: frr
-
- interface enp0s8
- ip address 10.10.34.4/24
- ip ospf 4 area 0
- link-params
- enable
- exit-link-params
- exit
- !
- interface enp0s9
- ip address 10.10.74.4/24
- ip ospf 4 area 0
- link-params
- enable
- exit-link-params
- exit
- !
- interface lo
- ip address 10.100.1.4/32
- ip ospf 4 area 0
- exit
- !
- router bgp 1
- neighbor 10.100.1.8 remote-as 1
- neighbor 10.100.1.8 update-source lo
- !
- address-family ipv4 unicast
- neighbor 10.100.1.8 soft-reconfiguration inbound
- exit-address-family
- exit
- !
- router ospf 4
- ospf router-id 4.4.4.4
- area 0 authentication
- capability opaque
- mpls-te on
- mpls-te router-address 10.100.1.4
- mpls-te inter-as area 0.0.0.0
- mpls-te export
- exit
- !
- end
-
-Sample Output
-^^^^^^^^^^^^^
-
-When Optimal Route Reflection is not enabled on RR, it sends 10.100.1.1 as the best path to its clients.
-
-.. code-block:: frr
-
- Router-RR# show ip bgp neighbors 10.100.1.4
-
- !--- Output suppressed.
-
- For address family: IPv4 Unicast
- Update group 2, subgroup 2
- Packet Queue length 0
- Route-Reflector Client
- Community attribute sent to this neighbor(all)
- 0 accepted prefixes
-
- !--- Output suppressed.
-
- Router-RR#
- Router-RR# show ip bgp
- BGP table version is 3, local router ID is 10.100.1.8, vrf id 0
- Default local pref 100, local AS 1
- Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
- i internal, r RIB-failure, S Stale, R Removed
- Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
- Origin codes: i - IGP, e - EGP, ? - incomplete
- RPKI validation codes: V valid, I invalid, N Not found
-
- Network Next Hop Metric LocPrf Weight Path
- * i203.0.113.0/24 10.100.1.2 0 100 0 i
- *>i 10.100.1.1 0 100 0 i
- *=i 10.100.1.3 0 100 0 i
-
- Displayed 1 routes and 3 total paths
- Router-RR#
-
- Router-PE4# show ip bgp
- BGP table version is 5, local router ID is 10.100.1.4, vrf id 0
- Default local pref 100, local AS 1
- Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
- i internal, r RIB-failure, S Stale, R Removed
- Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
- Origin codes: i - IGP, e - EGP, ? - incomplete
- RPKI validation codes: V valid, I invalid, N Not found
-
- Network Next Hop Metric LocPrf Weight Path
- *>i203.0.113.0/24 10.100.1.1 0 100 0 i
-
- Displayed 1 routes and 1 total paths
- Router-PE4#
-
-When Optimal Route Reflection is enabled on RR, it sends 10.100.1.3 as the best path to its clients.
-
-.. code-block:: frr
-
- Router-RR# show ip bgp neighbors 10.100.1.4
-
- !--- Output suppressed.
-
- For address family: IPv4 Unicast
- Update group 1, subgroup 1
- Packet Queue length 0
- Route-Reflector Client
- ORR group (configured) : orr-1
- Community attribute sent to this neighbor(all)
- 0 accepted prefixes
-
- !--- Output suppressed.
-
- Router-RR#
- Router-RR# show ip bgp
- BGP table version is 1, local router ID is 10.100.1.8, vrf id 0
- Default local pref 100, local AS 1
- Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
- i internal, r RIB-failure, S Stale, R Removed
- Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
- Origin codes: i - IGP, e - EGP, ? - incomplete
- RPKI validation codes: V valid, I invalid, N Not found
-
- Network Next Hop Metric LocPrf Weight Path
- * i203.0.113.0/24 10.100.1.2 0 100 0 i
- *>i 10.100.1.3 0 100 0 i
- * i 10.100.1.1 0 100 0 i
-
- Displayed 1 routes and 3 total paths
- Router-RR#
-
- Router-RR# show ip bgp optimal-route-reflection
-
- ORR group: orr-1, IPv4 Unicast
- Configured root: primary: 10.100.1.4(Router-PE4), secondary: 10.100.1.3(Router-PE3), tertiary: 10.100.1.1(Router-PE1)
- Active Root: 10.100.1.4(Router-PE4)
-
- RR Clients mapped:
- 10.100.1.1
- 10.100.1.2
- 10.100.1.3
- 10.100.1.4
-
- Number of mapping entries: 4
-
- Prefix Cost
- 10.10.34.0/24 100
- 10.10.61.0/24 300
- 10.10.63.0/24 200
- 10.10.67.0/24 200
- 10.10.68.0/24 300
- 10.10.72.0/24 200
- 10.10.74.0/24 100
- 10.100.1.1/32 300
- 10.100.1.2/32 200
- 10.100.1.3/32 100
- 10.100.1.4/32 0
- 10.100.1.6/32 200
- 10.100.1.7/32 100
- 10.100.1.8/32 300
-
- Number of mapping entries: 14
-
- Router-RR#
-
- Router-PE4# show ip bgp
- BGP table version is 3, local router ID is 10.100.1.4, vrf id 0
- Default local pref 100, local AS 1
- Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
- i internal, r RIB-failure, S Stale, R Removed
- Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
- Origin codes: i - IGP, e - EGP, ? - incomplete
- RPKI validation codes: V valid, I invalid, N Not found
-
- Network Next Hop Metric LocPrf Weight Path
- *>i203.0.113.0/24 10.100.1.3 0 100 0 i
-
- Displayed 1 routes and 1 total paths
- Router-PE4#
-
.. _bgp-debugging:
Debugging
Enable or disable debugging of communications between *bgpd* and *zebra*.
-.. clicmd:: debug bgp optimal-route-reflection
-
- Enable or disable debugging of BGP Optimal Route Reflection.
-
Dumping Messages and Routing Tables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^