Cluster-Id
Scenario to verify BGP cluster-id parameter configuration for Route Reflectors.
In iBGP networks, the split-horizon rule prevents a router from re-announcing routes learned from one iBGP peer to another iBGP peer. This creates a full-mesh requirement that does not scale well in large networks. Route Reflectors (RR) solve this problem by reflecting routes between their clients, eliminating the need for a full mesh.
The cluster-id parameter identifies a cluster of Route Reflectors. By default,
the cluster-id equals the router-id of the RR. When you have redundant Route Reflectors
serving the same clients, you should configure them with the same cluster-id to prevent
routing loops. The cluster-id is included in the CLUSTER_LIST attribute of reflected
routes, and if a router receives a route with its own cluster-id in the list, it
discards the route to prevent loops.
Test BGP Cluster ID
Description
This test demonstrates the effect of cluster-id and route reflection in iBGP.
First, without route-reflector configuration, the iBGP split-horizon rule prevents
DUT0 from re-announcing routes learned from DUT1 to DUT2. DUT1 has
redistribute connected configured, so it announces its network 10.10.0.0/24.
Then, after configuring DUT0 as a Route Reflector with cluster-id 10.10.10.1
and marking both neighbors as route-reflector-client, the route gets reflected and
DUT2 receives it with the cluster-id in the attributes.
Scenario
Note
First we configure iBGP without route-reflector to observe the split-horizon rule.
Step 1: Set the following configuration in DUT0 :
set interfaces ethernet eth0 address 10.10.0.1/24 set interfaces ethernet eth1 address 20.20.0.1/24 set protocols bgp 100 neighbor client1 remote-address 10.10.0.2 set protocols bgp 100 neighbor client1 remote-as 100 set protocols bgp 100 neighbor client2 remote-address 20.20.0.2 set protocols bgp 100 neighbor client2 remote-as 100 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 2: Set the following configuration in DUT1 :
set interfaces ethernet eth0 address 10.10.0.2/24 set protocols bgp 100 neighbor rr remote-address 10.10.0.1 set protocols bgp 100 neighbor rr remote-as 100 set protocols bgp 100 redistribute connected set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 3: Set the following configuration in DUT2 :
set interfaces ethernet eth1 address 20.20.0.2/24 set protocols bgp 100 neighbor rr remote-address 20.20.0.1 set protocols bgp 100 neighbor rr remote-as 100 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Attention
Verify iBGP sessions establish between DUT0 and both clients.
Step 4: Run command protocols bgp show ip summary at DUT0 and check if output matches the following regular expressions:
10.10.0.2.*Established[\s\S]+20.20.0.2.*EstablishedShow output
IPv4 Unicast Summary: BGP router identifier 20.20.0.1, local AS number 100 VRF default vrf-id 0 BGP table version 1 RIB entries 1, using 128 bytes of memory Peers 2, using 47 KiB of memory Neighbor LocalAddr V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State PfxRcd PfxSnt Desc 10.10.0.2 10.10.0.1 4 100 4 4 1 0 0 00:00:02 Established 1 0 FRRouting/10.4.1 20.20.0.2 20.20.0.1 4 100 3 4 1 0 0 00:00:01 Established 0 0 FRRouting/10.4.1 Total number of neighbors 2
Attention
Verify DUT0 receives route 10.10.0.0/24 from DUT1 via redistribute connected.
Step 5: Run command protocols bgp show ip at DUT0 and check if output matches the following regular expressions:
10.10.0.0/24.*10.10.0.2Show output
BGP table version is 1, local router ID is 20.20.0.1, vrf id 0 Default local pref 100, local AS 100 local address - Status codes: s suppressed, d damped, h history, u unsorted, * 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 *ui 10.10.0.0/24 10.10.0.2 0 100 0 ? Displayed 1 routes and 1 total paths
Note
Without route-reflector, DUT2 does NOT receive the route due to iBGP split-horizon rule.
Step 6: Run command protocols bgp show ip at DUT2 and check if output does not match the following regular expressions:
10.10.0.0/24Show output
No BGP prefixes displayed, 0 exist
Note
Now we configure DUT0 as Route Reflector with cluster-id and mark neighbors as clients.
Step 7: Modify the following configuration lines in DUT0 :
set protocols bgp 100 neighbor client1 route-reflector-client set protocols bgp 100 neighbor client2 route-reflector-client set protocols bgp 100 parameters cluster-id 10.10.10.1
Attention
Verify iBGP sessions remain established after configuration change.
Step 8: Run command protocols bgp show ip summary at DUT0 and check if output matches the following regular expressions:
10.10.0.2.*Established[\s\S]+20.20.0.2.*EstablishedShow output
IPv4 Unicast Summary: BGP router identifier 20.20.0.1, local AS number 100 VRF default vrf-id 0 BGP table version 3 RIB entries 1, using 128 bytes of memory Peers 2, using 47 KiB of memory Neighbor LocalAddr V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State PfxRcd PfxSnt Desc 10.10.0.2 10.10.0.1 4 100 8 9 3 0 0 00:00:03 Established 1 1 FRRouting/10.4.1 20.20.0.2 20.20.0.1 4 100 6 9 0 0 0 00:00:01 Established 0 0 FRRouting/10.4.1 Total number of neighbors 2
Attention
Verify DUT2 now receives the reflected route 10.10.0.0/24.
Step 9: Run command protocols bgp show ip at DUT2 and check if output matches the following regular expressions:
10.10.0.0/24.*10.10.0.2Show output
BGP table version is 0, local router ID is 20.20.0.2, vrf id 0 Default local pref 100, local AS 100 local address - Status codes: s suppressed, d damped, h history, u unsorted, * 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 i 10.10.0.0/24 10.10.0.2 0 100 0 ? Displayed 1 routes and 1 total paths
Attention
Verify the route on DUT2 contains the cluster-id 10.10.10.1 in attributes.
Step 10: Run command protocols bgp show ip 10.10.0.0/24 at DUT2 and check if output contains the following tokens:
Originator: 10.10.0.2, Cluster list: 10.10.10.1Show output
BGP routing table entry for 10.10.0.0/24, version 0 Paths: (1 available, no best path) Not advertised to any peer Local 10.10.0.2 (inaccessible, import-check enabled) from 20.20.0.1 (10.10.0.2) Origin incomplete, metric 0, localpref 100, invalid, internal Originator: 10.10.0.2, Cluster list: 10.10.10.1 Last update: Thu Mar 5 14:54:26 2026