BGP Optimal Route Reflector
Feature Name |
Release Information |
Feature Description |
BGP ORR 6PE |
Release 7.3.1 |
This feature is introduced. If there is no path selectable as bestpath for a given ORR table, you can assign the default table’s bestpath as ORR group’s bestpath. This feature enables IPv6 label-unicast with IPv4 nexthop and fallback default path. New keyword introduced in this release:
|
BGP-ORR (optimal route reflector) enables virtual route reflector (vRR) to calculate the best path from a route reflector (RR) client's point of view.
BGP ORR calculates the best path by:
-
Running SPF multiple times in the context of its RR clients or RR clusters (set of RR clients)
-
Saving the result of different SPF runs in separate databases
-
Using these databases to manipulate BGP best path decision and thereby allowing BGP to use and announce best path that is optimal from the client’s point of view
In an autonomus system, a BGP route reflector acts as a focal point and advertises routes to its peers (RR clients) along with the RR's computed best path. Since the best path advertised by the RR is computed from the RR's point of view, the RR's placement becomes an important deployment consideration.
With network function virtualization (NFV) becoming a dominant technology, service providers (SPs) are hosting virtual RR functionality in a cloud using servers. A vRR can run on a control plane device and can be placed anywhere in the topology or in a SP data center. Cisco IOS XRv 9000 Router can be implemented as vRR over a NFV platform in a SP data center. vRR allows SPs to scale memory and CPU usage of RR deployments significantly. Moving a RR out of its optimal placement requires vRRs to implement ORR functionality that calculates the best path from a RR client's point of view.
BGP ORR offers these benefits:
-
calculates the bestpath from the point of view of a RR client.
-
enables vRR to be placed anywhere in the topology or in a SP data center.
-
allows SPs to scale memory and CPU usage of RR deployments.
Note |
Enabling the ORR feature increases the memory footprint of BGP and RIB. With increased number of vRR configured in the network, ORR adversely impacts convergence for BGP. |
Use Case
Consider a BGP Route Reflector topology where:
-
Router R1, R2, R3, R4, R5 and R6 are route reflector clients
-
Router R1 and R4 advertise 6/8 prefix to vRR
vRR receives prefix 6/8 from R1 and R4. Without BGP ORR configured in the network, the vRR selects R4 as the closest exit point for RR clients R2, R3, R5, and R6, and reflects the 6/8 prefix learned from R4 to these RR clients R2, R3, R5, and R6. From the topology, it is evident that for R2 the best path is R1 and not R4. This is because the vRR calculates best path from the RR's point of view.
When the BGP ORR is configured in the network, the vRR calculates the shortest exit point in the network from R2’s point of view and determines that R1 is the closest exit point to R2. vRR then reflects the 6/8 prefix learned from R1 to R2.
Configure BGP ORR
Enable BGP ORR for IPv4 unicast and 6PE scenario though the folowing steps:
1. Define the ORR globally under router BGP mode
2. Enable the ORR group under address-family mode
3. Specify a neighbor as an ORR client
router bgp 100
optimal-route-reflection ipv4 foo 10.1.1.1 10.1.1.2 10.1.1.3
optimal-route-reflection ipv6 bar abcd::1 abcd::2 abcd::3
address-family ipv4 unicast
optimal-route-reflection apply foo
address-family ipv6 unicast
optimal-route-reflection apply foo
allocate-label {all | route-policy <>}
neighbor 2.2.2.2
remote-as 100
address-family ipv4 unicast
optimal-route-reflection foo
address-family ipv6 label-unicast
optimal-route-reflection foo
Enable the selection of default table’s bestpath in the absence of bestpath for an ORR group.
router bgp 65000
bgp router-id 10.1.1.1
address-family ipv4 unicast
optimal-route-reflection fallback-default-bestpath
Verification
To verify whether R2 received the best exit, execute the show bgp <prefix> command (from R2) in EXEC mode. In the above example, R1 and R4 advertise the 6/8 prefix; run the show bgp 6.0.0.0/8 command:
R2# show bgp 6.0.0.0/8
Tue Apr 5 20:21:58.509 UTC
BGP routing table entry for 6.0.0.0/8
Versions:
Process bRIB/RIB SendTblVer
Speaker 8 8
Last Modified: Apr 5 20:00:44.022 for 00:21:14
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
Local
192.0.2.1 (metric 20) from 203.0.113.1 (192.0.2.1)
Origin incomplete, metric 0, localpref 100, valid, internal, best, group-best
Received Path ID 0, Local Path ID 1, version 8
Originator: 192.0.2.1, Cluster list: 203.0.113.1
The above show output states that the best path for R2 is through R1, whose IP address is 192.0.2.1 and the metric of the path is 20.
Execute the show bgp command from the vRR to determine the best path calculated for R2 by ORR. R2 has its own update-group because it has a different best path (or different policy configured) than those of other peers:
VRR#show bgp 6.0.0.0/8
Thu Apr 28 13:36:42.744 UTC
BGP routing table entry for 6.0.0.0/8
Versions:
Process bRIB/RIB SendTblVer
Speaker 13 13
Last Modified: Apr 28 13:36:26.909 for 00:00:15
Paths: (2 available, best #2)
Advertised to update-groups (with more than one peer):
0.2
Path #1: Received by speaker 0
ORR bestpath for update-groups (with more than one peer):
0.1
Local, (Received from a RR-client)
192.0.2.1 (metric 30) from 192.0.2.1 (192.0.2.1)
Origin incomplete, metric 0, localpref 100, valid, internal, add-path
Received Path ID 0, Local Path ID 2, version 13
Path #2: Received by speaker 0
Advertised to update-groups (with more than one peer):
0.2
ORR addpath for update-groups (with more than one peer):
0.1
Local, (Received from a RR-client)
192.0.2.4 (metric 20) from 192.0.2.4 (192.0.2.4)
Origin incomplete, metric 0, localpref 100, valid, internal, best, group-best
Received Path ID 0, Local Path ID 1, version 13
Note |
Path #1 is advertised to update-group 0.1. R2 is in update-group 0.1. |
Execute the show bgp command for update-group 0.1 verify whether R2 is in update-group 0.1.
VRR# show bgp update-group 0.1
Thu Apr 28 13:38:18.517 UTC
Update group for IPv4 Unicast, index 0.1:
Attributes:
Neighbor sessions are IPv4
Internal
Common admin
First neighbor AS: 65000
Send communities
Send GSHUT community if originated
Send extended communities
Route Reflector Client
ORR root (configured): g1; Index: 0
4-byte AS capable
Non-labeled address-family capable
Send AIGP
Send multicast attributes
Minimum advertisement interval: 0 secs
Update group desynchronized: 0
Sub-groups merged: 0
Number of refresh subgroups: 0
Messages formatted: 5, replicated: 5
All neighbors are assigned to sub-group(s)
Neighbors in sub-group: 0.2, Filter-Groups num:1
Neighbors in filter-group: 0.2(RT num: 0)
192.0.2.2
For further verification, check the contents of the table created on vRR as a result of configuring the g1 policy. From R2’s point of view, the cost of reaching R1 is 20 and the cost of reaching R4 is 30. Therefore, the closest and best exit for R2 is through R1:
VRR#show orrspf database g1
Thu Apr 28 13:39:20.333 UTC
ORR policy: g1, IPv4, RIB tableid: 0xe0000011
Configured root: primary: 192.0.2.2, secondary: NULL, tertiary: NULL
Actual Root: 192.0.2.2, Root node: 2000.0100.1002.0000
Prefix Cost
203.0.113.1 30
192.0.2.1 20
192.0.2.2 0
192.0.2.3 30
192.0.2.4 30
192.0.2.5 10
192.0.2.6 20
Number of mapping entries: 8
Verification for ORR 6PE
show bgp ipv6 labeled-unicast 1111::1/128
Tue Mar 2 10:25:00.748 PST
BGP routing table entry for 1111::1/128
Versions:
Process bRIB/RIB SendTblVer
Speaker 4 4
Last Modified: Mar 2 10:18:53.000 for 00:06:08
Paths: (3 available, best #3)
Advertised IPv6 Labeled-unicast paths to update-groups (with more than one peer):
0.2
Path #1: Received by speaker 0
ORR bestpath for update-groups (with more than one peer):
0.1
Local, (Received from a RR-client)
192.168.0.3 (metric 75) from 192.168.0.3 (192.168.0.3)
Received Label 24007
Origin incomplete, metric 0, localpref 100, valid, internal, add-path, labeled-unicast
Received Path ID 0, Local Path ID 2, version 4
Path #2: Received by speaker 0
Not advertised to any peer
Local, (Received from a RR-client)
192.168.0.4 (metric 190) from 192.168.0.4 (192.168.0.4)
Received Label 24007
Origin incomplete, metric 0, localpref 100, valid, internal, labeled-unicast
Received Path ID 0, Local Path ID 0, version 0
Path #3: Received by speaker 0
Advertised IPv6 Labeled-unicast paths to update-groups (with more than one peer):
0.2
Local, (Received from a RR-client)
192.168.0.5 (metric 65) from 192.168.0.5 (192.168.0.5)
Received Label 24007
Origin incomplete, metric 0, localpref 100, valid, internal, best, group-best, labeled-unicast
Received Path ID 0, Local Path ID 1, version 3
show bgp ipv6 labeled-unicast update-group
Tue Mar 2 10:25:51.308 PST
Update group for IPv6 Labeled-unicast, index 0.1:
Attributes:
Neighbor sessions are IPv4
Internal
Common admin
First neighbor AS: 1
Send communities
Send GSHUT community if originated
Send extended communities
Route Reflector Client
ORR root (configured): orr-grp-1; Index: 0
4-byte AS capable
Send AIGP
Send multicast attributes
Minimum advertisement interval: 0 secs
Update group desynchronized: 0
Sub-groups merged: 0
Number of refresh subgroups: 0
Messages formatted: 1, replicated: 2
All neighbors are assigned to sub-group(s)
Neighbors in sub-group: 0.2, Filter-Groups num:1
Neighbors in filter-group: 0.2(RT num: 0)
192.168.0.2 192.168.0.4
Update group for IPv6 Labeled-unicast, index 0.2:
Attributes:
Neighbor sessions are IPv4
Internal
Common admin
First neighbor AS: 1
Send communities
Send GSHUT community if originated
Send extended communities
Route Reflector Client
4-byte AS capable
Send AIGP
Send multicast attributes
Minimum advertisement interval: 0 secs
Update group desynchronized: 0
Sub-groups merged: 0
Number of refresh subgroups: 0
Messages formatted: 1, replicated: 4
All neighbors are assigned to sub-group(s)
Neighbors in sub-group: 0.1, Filter-Groups num:1
Neighbors in filter-group: 0.1(RT num: 0)
192.168.0.3 192.168.0.5
show bgp ipv6 unicast orr-group all
Tue Mar 2 10:26:41.072 PST
Name Tableid Nbrcnt Index Root
orr-grp-1 0xe0000019 2 0 192.168.0.3
The following show command displays the BGP speaker global ORR policy group table.
Router# show bgp orr-group global all
Wed Apr 8 16:46:29.929 PDT
Name Policy-afi Global Tableid AFI-count Root
orr-grp-3 IPv4 Yes 0xe0000014 1 1.1.2.1
orr-grp-2 Ipv6 Yes 0xe0800013 0 1::1
orr-grp-1 IPv4 Yes 0xe0000012 2 192.168.0.3
The following show command displays the details of a global ORR group entry for the given ORR name.
Router# show bgp orr-group global orr-grp-1
Wed Apr 8 16:46:51.596 PDT
ORR Name : orr-grp-1
policy afi : IPv4
global Defined : Yes
tableid : 0xe0000012
aficnt : 2
IPv4 unicast used : Yes
IPv6 unicast used : Yes
root : 192.168.0.3
The following show command displays the BPM ORR policy group table:
Router# show bgp orr-group bpm all
Wed Apr 8 16:49:44.223 PDT
Name Policy-afi Global AFI-cnt Nbr-af-cnt Root
orr-grp-3 IPv4 Yes 1 0 1.1.2.1
orr-grp-2 IPv6 Yes 0 0 1::1
orr-grp-1 IPv4 Yes 2 4 192.168.0.3
The following show command displays the detail of a BPM ORR group entry for the given ORR name.
Router# show bgp orr-group bpm orr-grp-1
Wed Apr 8 16:50:02.437 PDT
ORR Name : orr-grp-1
v4 policy : Yes
global Defined : Yes
AFI count : 2
total nbr af cnt : 4
IPv4 unicast used : Yes
IPv6 unicast used : Yes
IPv4 nbr af cnt : 2
IPv6 nbr af cnt : 2
root : 192.168.0.3