iBGP ECMP reflection

Hello community members!

I am not a NOC and my question ma by stupid

I want to reflect ECMP routes received from ibgp to ibgp route reflector clients

This is my route reflector bgp config

vyos@vyos4# show protocols bgp
 address-family {
     ipv4-unicast {
         maximum-paths {
             ibgp 100
         }
         network 192.168.10.0/30 {
         }
         network 192.168.10.4/30 {
         }
         network 192.168.10.8/30 {
         }
     }
 }
 neighbor 192.168.10.2 {
     address-family {
         ipv4-unicast {
             route-reflector-client
         }
     }
     remote-as internal
     update-source eth1
 }
 neighbor 192.168.10.6 {
     address-family {
         ipv4-unicast {
             route-reflector-client
         }
     }
     remote-as internal
     update-source eth2
 }
 neighbor 192.168.21.2 {
     address-family {
         ipv4-unicast {
         }
     }
     remote-as internal
     update-source eth1
 }
 neighbor 192.168.22.2 {
     address-family {
         ipv4-unicast {
         }
     }
     remote-as internal
     update-source eth2
 }
 neighbor 192.168.254.1 {
     address-family {
         ipv4-unicast {
             nexthop-self {
                 force
             }
             route-reflector-client
         }
     }
     remote-as internal
     update-source eth0
 }
 parameters {
     bestpath {
         as-path {
             multipath-relax
         }
     }
     router-id 192.168.254.10
 }
 system-as 65001

This is bgp routes that it received

vyos@vyos4:~$ show ip bgp
BGP table version is 33, local router ID is 192.168.254.10, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * 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
 *> 192.168.10.0/30  0.0.0.0                  0         32768 i
 *> 192.168.10.4/30  0.0.0.0                  0         32768 i
 *> 192.168.10.8/30  0.0.0.0                  0         32768 i
 *>i192.168.21.0/24  192.168.10.2             0    100      0 i
 *>i192.168.22.0/24  192.168.10.6             0    100      0 i
 *=i192.168.31.1/32  192.168.22.2                  100      0 i
 *>i                 192.168.21.2                  100      0 i

But on route reflector client I see only one rote to 192.168.31.1/32

yos@vyos1:~$ show ip bgp
BGP table version is 48, local router ID is 192.168.10.2, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * 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
 *>i192.168.10.0/30  192.168.10.1             0    100      0 i
 *>i192.168.10.4/30  192.168.10.1             0    100      0 i
 *>i192.168.10.8/30  192.168.10.1             0    100      0 i
 *> 192.168.21.0/24  0.0.0.0                  0         32768 i
 *>i192.168.22.0/24  192.168.10.6             0    100      0 i
 *>i192.168.31.1/32  192.168.21.2             0    100      0 i

Displayed  6 routes and 6 total paths

This is my route reflector client bgp config

vyos@vyos1# show protocols bgp
 address-family {
     ipv4-unicast {
         maximum-paths {
             ibgp 100
         }
         network 192.168.21.0/24 {
         }
     }
 }
 neighbor 192.168.10.1 {
     address-family {
         ipv4-unicast {
         }
     }
     remote-as internal
     update-source eth0
 }
 parameters {
     router-id 192.168.10.2
 }
 system-as 65001
[edit]

// Release version: 1.5-rolling-202310200118

Does your route reflector client have a valid route to the next-hop bgp is teaching it?

Yes, it has

vyos@vyos1:~$ show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

S>* 0.0.0.0/0 [1/0] via 192.168.10.1, eth0, weight 1, 1d15h08m
B   192.168.10.0/30 [200/0] via 192.168.10.1 inactive, weight 1, 06:07:39
C>* 192.168.10.0/30 is directly connected, eth0, 1d15h08m
B>* 192.168.10.4/30 [200/0] via 192.168.10.1, eth0, weight 1, 06:07:39
B>* 192.168.10.8/30 [200/0] via 192.168.10.1, eth0, weight 1, 06:07:39
C>* 192.168.21.0/24 is directly connected, eth1, 1d15h04m
B>  192.168.22.0/24 [200/0] via 192.168.10.6 (recursive), weight 1, 06:07:39
  *                           via 192.168.10.1, eth0, weight 1, 06:07:39
B>* 192.168.31.1/32 [200/0] via 192.168.21.2, eth1, weight 1, 06:07:39