rfc-2796

BGP Route Reflection - An Alternative to Full Mesh IBGP

T. Bates, R. Chandra, E. Chen
date2000-04 streamIETF areartg wgidr statusPROPOSED STANDARD pages11 canonicalhttps://www.rfc-editor.org/rfc/rfc2796 doi10.17487/RFC2796
This document describes the use and design of a method known as "Route Reflection" to alleviate the the need for "full mesh" IBGP. [STANDARDS-TRACK]

obsoleted by

updates

Extracted elements (21)

design-rationale §9

Route reflection topology should be congruent with the physical network topology when multiple paths exist for a prefix, to prevent routing loops and maintain consistent routing views. POP-based reflection (each POP has its own fully-meshed RRs) is a commonly used approach.

bgp, routing

design-rationale §2

Route Reflection was designed to satisfy three criteria: simplicity (easy to configure and understand), easy transition (no topology or AS changes required), and compatibility (non-compliant IBGP peers can continue operating without loss of routing information). These criteria were motivated by operational experience with large, topology-rich networks.

bgp, routing

design-rationale §9

The BGP protocol provides no mechanism for a Client to dynamically identify itself as a Client of an RR; the simplest approach is manual configuration. The RR summarizes routing information and reflects only its best path, which is a key component in addressing the scaling issue.

bgp, routing

design-rationale §Appendix

The CLUSTER_LIST prepend order was changed from RFC 1966's 'append' to 'prepend' to reflect actual deployed code behavior. This correction was a key change in this revision.

bgp, routing

design-rationale §1

The full mesh IBGP requirement requires n*(n-1)/2 unique IBGP sessions for n BGP speakers, which does not scale for large networks. Route Reflection allows a Route Reflector to re-advertise IBGP-learned routes to other IBGP peers, eliminating the need for full mesh.

bgp, routing

design-rationale §9

With certain route reflection topologies, the route selection result may differ from full IBGP mesh because MEDs are not always comparable and IGP metrics may differ per router. Mitigation strategies include configuring intra-cluster IGP metrics better than inter-cluster, using LOCAL_PREF to reflect MED values, or using community-based policies.

bgp, routing

interoperability-note §5

Conventional BGP speakers that do not understand Route Reflectors can co-exist in the same AS as either members of a Non-Client group or a Client group, enabling easy and gradual migration from full mesh IBGP to the Route Reflection model.

bgp, routing

interoperability-note §Appendix

This document updates RFC 1966 with clarifications on terminology, loop handling, CLUSTER_ID prepend vs append order, and expanded deployment considerations. References to EBGP routes/peers were removed.

bgp, routing

normative-requirement §7 SHOULD NOT

A BGP speaker SHOULD NOT create an ORIGINATOR_ID attribute if one already exists in the route being reflected.

bgp, routing

normative-requirement §7 SHOULD

A router which recognizes the ORIGINATOR_ID attribute SHOULD ignore a route received with its own ROUTER_ID as the ORIGINATOR_ID, to prevent routing loops.

bgp, routing

normative-requirement §8 SHOULD

Care should be taken to ensure that none of the BGP path attributes (ORIGINATOR_ID, CLUSTER_LIST) can be modified through configuration when exchanging internal routing information between RRs and Clients and Non-Clients, as modification could result in routing loops.

bgp, routing

normative-requirement §7 SHOULD

If the local CLUSTER_ID is found in the CLUSTER_LIST of a received advertisement, the advertisement SHOULD be ignored to prevent routing loops caused by misconfiguration.

bgp, routing

normative-requirement §7 MUST

When a RR reflects a route, it MUST prepend the local CLUSTER_ID to the CLUSTER_LIST. If the CLUSTER_LIST is empty, it must create a new one.

bgp, routing

normative-requirement §8 SHOULD NOT

When a RR reflects a route, it should not modify the following path attributes: NEXT_HOP, AS_PATH, LOCAL_PREF, and MED, as their modification could potentially result in routing loops.

bgp, routing

protocol-element §6

A cluster is identified by the ROUTER_ID of the single RR when only one RR exists. To support multiple RRs in the same cluster (for redundancy), all RRs in the cluster are configured with the same 4-byte CLUSTER_ID.

bgp, routing

protocol-element §4

A Route Reflector (RR) divides its internal peers into two groups: Client Peers and Non-Client Peers. A RR along with its client peers forms a Cluster. Non-Client peers must be fully meshed, but Client peers need not be.

bgp, routing

protocol-element §7

CLUSTER_LIST is a new optional, non-transitive BGP attribute of Type code 10, encoded as a sequence of 4-byte CLUSTER_ID values representing the reflection path the route has traversed. The Length field specifies the number of octets.

bgp, routing

protocol-element §7

ORIGINATOR_ID is a new optional, non-transitive BGP attribute of Type code 9, 4 bytes long, created by a RR when reflecting a route. It carries the ROUTER_ID of the originator of the route in the local AS.

bgp, routing

protocol-element §5

When a RR receives a route from a Non-Client IBGP peer and selects it as best path, it reflects the route to all Client peers only. When received from a Client peer, it reflects to all Non-Client peers and all Client peers.

bgp, routing

security-consideration §10

This extension to BGP does not change the underlying security issues inherent in the existing IBGP; the security properties are the same as baseline IBGP as described in RFC 2385 (TCP MD5 Signature Option).

bgp, routing, security

wire-format §7

CLUSTER_LIST is encoded with Attr. Flags (1 byte), Attr. Type Code (1 byte), Length (1 byte indicating number of octets), followed by a sequence of 4-byte CLUSTER_ID values.

bgp, routing