You are on page 1of 7

25/2/2014

BGP route reflectors - CT3

BGP route reflectors


Additional Resources

From CT3
By Ivan Pepelnjak

Route reflector is an IBGP feature that allows you to build scalable IBGP networks. The original BGPv4
(http://tools.ietf.org/html/rfc1771) contained no intra-AS loop prevention mechanism; routers were therefore
prohibited from sending routes received from an IBGP peer to another IBGP peer, requiring a full-mesh of
IBGP sessions between all BGP routers within an AS.
New BGP standard (RFC 4271 (http://tools.ietf.org/html/rfc4271) ) includes references to
the BGP route reflector functionality.
Route reflector functionality (defined in RFC 4456 (http://tools.ietf.org/html/rfc4456) ) adds a new attribute
(cluster list) which can detect route propagation loops within an AS, the full-mesh requirement is thus
significantly relaxed.

Contents
1 Route Reflector rules
2 Monitoring Route Reflection
3 Loop Detection and Avoidance
4 Route Reflector Design Rules
5 Cluster-ID is Obsolete
6 Additional Resources

Route Reflector rules


A BGP router implementing route reflector functionality propagates BGP routes according to these rules:
Locally originated routes and routes received from EBGP neighbors and selected as best routes are
propagated to all BGP peers (internal and external).
Routes received from an IGBP peer that is not a route-reflector client and selected as best routes are
propagated to all EBGP peers and all IGBP peers configured as route-reflector clients.
Routes received from a route-reflector client and selected as best routes are propagated to all BGP peers
(internal and external).
An IBGP route received from a route-reflector client is sent to all IBGP peers, including
the client from which it was received.
Whenever an IBGP route is reflected (propagated to another IBGP peer), the route reflector appends two
optional, non-transitive attributes to the BGP route:

http://wiki.nil.com/BGP_route_reflectors

1/7

25/2/2014

BGP route reflectors - CT3

If the route does not have the Originator ID attribute (it has not been reflected before), the router ID of
the IBGP peer from which the route has been received is copied into the Originator ID attribute.
If the route does not have the Cluster list attribute, its added to the route.
The value configured with the bgp cluster-id router configuration command (or the router ID of the
route reflector if the cluster-id is not configured) is prepended to the Cluster list attribute.
Route reflector does not change or remove any other attributes of the reflected routes (even non-transitive
attributes), ensuring that the IBGP routes are not changed within the autonomous system.
The next-hop-self neighbor configuration parameter or (most of the) set options of
outbound route-map configured on route-reflector clients are ignored for reflected routes.
BGP next-hop can be changed set ip next-hop route map command (BGP next hop
propagation feature
(http://www.cisco.com/en/US/docs/ios/12_2s/feature/guide/fs_bgpnh.html) introduced in
IOS release 12.2)
Standard and extended BGP communities are removed from the reflected routes unless
the neighbor send-community [both] is configured on the route reflector. The link
bandwidth community is removed from reflected route if the route-reflector performs
IBGP multipath load-sharing for that route.

Monitoring Route Reflection


The route reflector-related BGP attributes attached to a BGP route can be inspected with the show ip bgp
prefix command:
Edge#show ip bgp 10.2.2.0
BGP routing table entry for 10.2.2.0/24, version 12
Paths: (1 available, best #1, table default)
Flag: 0xA20
Not advertised to any peer
65001
10.0.1.1 (metric 129) from 10.0.1.3 (10.0.1.3)
Origin IGP, metric 0, localpref 100, valid, internal, best
Originator: 10.0.1.1, Cluster list: 10.0.1.3

The same command will also indicate whether a route was received from a route-reflector client (and will thus
be reflected to all IBGP peers):
RR#show ip bgp 10.2.2.0
BGP routing table entry for 10.2.2.0/24, version 18
Paths: (2 available, best #2, table default)
Multipath: eBGP iBGP
Flag: 0x1A20
Advertised to update-groups:
1
65001, (Received from a RR-client)
10.0.1.2 (metric 65) from 10.0.1.2 (10.0.1.2)
Origin IGP, metric 0, localpref 100, valid, internal, multipath
65001, (Received from a RR-client)
10.0.1.1 (metric 65) from 10.0.1.1 (10.0.1.1)
Origin IGP, metric 0, localpref 100, valid, internal, multipath, best

The route propagation policy of a route reflector is also displayed in the show ip bgp update-group printout:
http://wiki.nil.com/BGP_route_reflectors

2/7

25/2/2014

BGP route reflectors - CT3

RR#show ip bgp update-group


BGP version 4 update-group 1, internal, Address Family: IPv4 Unicast
BGP Update version : 22/0, messages 0
Route-Reflector Client
Community attribute sent to this neighbor
Extended-community attribute sent to this neighbor
Update messages formatted 59, replicated 47
Number of NLRIs in the update sent: max 1, min 0
Minimum time between advertisement runs is 0 seconds
Has 2 members (* indicates the members currently being sent updates):
10.0.1.2
10.0.1.4
BGP version 4 update-group 2, internal, Address Family: IPv4 Unicast
BGP Update version : 22/0, messages 0
Community attribute sent to this neighbor
Extended-community attribute sent to this neighbor
Update messages formatted 5, replicated 0
Number of NLRIs in the update sent: max 1, min 1
Minimum time between advertisement runs is 0 seconds
Has 1 member (* indicates the members currently being sent updates):
10.0.1.1

Loop Detection and Avoidance


The BGP routers implementing original route reflector RFC (RFC 1966 (http://tools.ietf.org/html/rfc1966) ) use
the following mechanisms to detect route-reflector-related loops:
If the Originator ID in an incoming IBGP route update is equal to the BGP router ID, the update is
ignored (reflected route was propagated back to its originator).
If the Cluster ID of a route-reflector appears in the Cluster list attribute of an incoming IBGP update,
the update is ignored (route reflector loop).
The route reflector functionality was introduced in IOS release 11.1. Its therefore relatively safe to assume that
every Cisco router encountered in a production network supports it.
Routers that do not support RFC 1966 would usually ignore IBGP routes with their own
Originator ID, as they would have a better EBGP or locally originated route.
Although the mechanisms specified in RFC 1966 ensure loop-free IBGP operation regardless of the actual
topology of the IBGP sessions, RFC 4456 added new route selection rules that improve the actual convergence
within an AS and reduce the amount of BGP updates propagated across the AS:
Routes with shorter Cluster list attribute are preferred. This rule ensures that all routers select routes with
minimum number of reflections, significantly reducing the amount of unnecessary BGP updates
(remember: only best routes selected by a route reflector are reflected to its clients).
The Originator ID attribute of a reflected route should be used as the Router ID attribute when
comparing otherwise identical IBGP routes, ensuring the stability of route selection across AS regardless
of the route reflectors.

Route Reflector Design Rules


Traditional design rules recommended a hierarchy of redundant route reflectors or an IBGP full-mesh between
route reflectors.
http://wiki.nil.com/BGP_route_reflectors

3/7

25/2/2014

BGP route reflectors - CT3

BGP route reflectors combined with IBGP full mesh between core routers

http://wiki.nil.com/BGP_route_reflectors

4/7

25/2/2014

BGP route reflectors - CT3

A hierarchy of BGP route reflectors

With the improved IBGP loop avoidance, you could use more relaxed designs, ranging from route-reflectorclient being configured on every IBGP neighbor to designs where the edge routers act as route reflector clients
and all other BGP routers in the AS act as route reflectors.

http://wiki.nil.com/BGP_route_reflectors

5/7

25/2/2014

BGP route reflectors - CT3

IBGP session topology with bidirectional route-reflector-client configuration

Cluster-ID is Obsolete
Cisco IOS implementation of route reflector functionality supports the bgp cluster-id parameter, which is used
in the Cluster list attribute instead of the Router ID. The cluster-id parameter is useful in redundant route
reflector scenarios where multiple route reflectors serve the same set of clients, but can lead to partial
connectivity when multiple IBGP sessions are disrupted.

http://wiki.nil.com/BGP_route_reflectors

6/7

25/2/2014

BGP route reflectors - CT3

Cluster of redundant BGP route reflectors

The revised BGP route selection rules ensure that a route reflector in a cluster always prefers route from a client
(with shorter Cluster list) over a reflected route, thus making the bgp cluster-id parameter obsolete. You
should not use the bgp cluster-id in new designs to increase the resilience of your network.
Retrieved from "http://wiki.nil.com/BGP_route_reflectors"
Category: BGP
This page was last modified on 30 April 2009, at 07:46.

http://wiki.nil.com/BGP_route_reflectors

7/7