A Route Reflector configured with 3 BGP Peers:
set protocols bgp group iBGP-ORR type internal
set protocols bgp group iBGP-ORR multihop
set protocols bgp group iBGP-ORR local-address 10.157.228.212
set protocols bgp group iBGP-ORR hold-time 180
set protocols bgp group iBGP-ORR mtu-discovery
set protocols bgp group iBGP-ORR family inet unicast
set protocols bgp group iBGP-ORR family evpn signaling
set protocols bgp group iBGP-ORR cluster 10.157.228.0
set protocols bgp group iBGP-ORR optimal-route-reflection igp-primary 10.157.228.252
set protocols bgp group iBGP-ORR neighbor 10.157.228.252
set protocols bgp group iBGP-ORR neighbor 10.157.228.253
set protocols bgp group iBGP-ORR neighbor 10.157.228.254
Running ISIS-SR as the IGP and with L-ISIS preferred over ISIS (17 vs 18):
set protocols isis interface et-0/0/0:0.0 level 2 metric 1000
set protocols isis interface et-0/0/0:0.0 point-to-point
set protocols isis interface et-0/0/0:1.0 level 2 metric 10
set protocols isis interface et-0/0/0:1.0 point-to-point
set protocols isis interface et-0/0/0:2.0 level 2 metric 10
set protocols isis interface et-0/0/0:2.0 point-to-point
set protocols isis interface lo0.0
set protocols isis source-packet-routing srgb start-label 400000
set protocols isis source-packet-routing srgb index-range 8000
set protocols isis source-packet-routing node-segment ipv4-index 212
set protocols isis source-packet-routing node-segment ipv6-index 1212
set protocols isis source-packet-routing traffic-statistics statistics-granularity per-interface
set protocols isis level 1 disable
set protocols isis level 2 labeled-preference 17
set protocols isis level 2 wide-metrics-only
set protocols isis backup-spf-options node-link-degradation
set protocols isis traffic-engineering l3-unicast-topology
Receives a BGP route with Next Hop Self from 2 peers, 2.21.100.0/24:
labroot@e05-45> show route 2.21.100.0/24
inet.0: 8 destinations, 9 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
2.21.100.0/24 *[BGP/170] 12:37:05, localpref 100
AS path: 65251 I, validation-state: unverified
> to 10.157.228.253 via et-0/0/0:1.0
[BGP/170] 12:37:05, localpref 100
IGP Cost is better to 10.157.228.253 (10 vs 1000):
labroot@e05-45> show route 10.157.228.253
10.157.228.253/32 *[IS-IS/18] 14:29:02, metric 10
inet.3: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden)
10.157.228.253/32 *[L-ISIS/17] 12:41:12, metric 10
labroot@e05-45> show route 10.157.228.252
10.157.228.252/32 *[IS-IS/18] 14:29:35, metric 1000
> to 10.157.228.252 via et-0/0/0:0.0
10.157.228.252/32 *[L-ISIS/17] 12:41:19, metric 1000
ORR is set to use 10.157.228.252:
But, router advertises the route from 10.157.228.253:
labroot@e05-45> show route advertising-protocol bgp 10.157.228.254
Prefix Nexthop MED Lclpref AS path
* 2.21.100.0/24 10.157.228.253 100 65251 I
However, IF L-ISIS is set to a higher preference than ISIS:
labroot@e05-45> configure
Entering configuration mode
[edit]
labroot@e05-45# set protocols isis level 2 labeled-preference 20
labroot@e05-45# commit and-quit
commit complete
Exiting configuration mode
The configured ORR route is advertised:
10.157.228.253/32 *[IS-IS/18] 14:29:51, metric 10
10.157.228.253/32 *[L-ISIS/20] 00:00:06, metric 10
10.157.228.252/32 *[IS-IS/18] 14:30:23, metric 1000
10.157.228.252/32 *[L-ISIS/20] 00:00:12, metric 1000
2.21.100.0/24 10.157.228.252 100 65251 I
labroot@e05-45>
This is a limitation with respect to ORR. It cannot/does not use L-ISIS. This is loosely referenced here:
https://www.juniper.net/documentation/us/en/software/junos/bgp/topics/topic-map/bgp-rr.html#id-understanding-bgp-optimal-route-reflection
Or:
"Note: BGP-ORR only works when IGP is used for BGP route resolution. BGP-ORR does not work when MPLSLDP/RSVP is used for route resolution."
Specifically, ORR is only designed for resolution over IGP (directly or indirectly) and IGP metric is the tie breaker for path selection. This is usually not an issue on a non-forwarding RR because there is no need to run MPLS on non-forwarding RRs, even if the PEs have LSPs as the transport.
If you have VPN/BGP-LU routes which needs to be resolved over inet.3 or inet6.3 routes, the recommendation is to configure a rib-group to copy the IGP routes from inet.0/inet6.0 to inet.3 and inet6.3.
The other alternative is to set resolution-rib to inet.0 only but that’s a slightly less efficient solution. For example:
set routing-options resolution rib inet.0 resolution-ribs inet.0set routing-options resolution rib inet.0 import jtac-testset policy-options policy-statement jtac-test term 1 from family inetset policy-options policy-statement jtac-test term 1 from neighbor 10.157.228.252set policy-options policy-statement jtac-test term 1 from neighbor 10.157.228.253set policy-options policy-statement jtac-test term 1 from neighbor 10.157.228.254set policy-options policy-statement jtac-test term 1 then acceptset routing-options resolution rib inet.0 import jtac-test