BGP multihoming not working

Hello Vyos community!

I’m trying to setup BGP multihoming with 2 ISPs, one local and one over GRE, but looks like there is an issue with my BGP annoucements.

Everytime I announce my testing /24 on both BGP sessions one of the is withdrawn for some reason.

This is my configuration right now:

(I will be AS100, ISP1 will be AS110 and ISP2 will be AS120)

policy {
prefix-list EXPORT-AS100 {
    rule 10 {
        action permit
        description "My prefix"
        prefix 123.0.0.0/24
    }
}
route-map PREPEND3 {
    rule 1 {
		action permit
			match {
				ip {
					address {
						prefix-list EXPORT-AS100
					}
				}
			}
		set {
		as-path-prepend "100 100 100"
		}
	}
}
}
protocols {
    bgp 100 {
           neighbor 10.0.1.1 {
			nexthop-self
            prefix-list {
                export EXPORT-AS100
            }
			route-map {
				export PREPEND3
			}
            remote-as 110
            soft-reconfiguration {
                inbound
            }
			update-source 10.0.1.2
        } 
        neighbor 192.168.0.1 {
            prefix-list {
                export EXPORT-AS100
            }
            remote-as 120
            soft-reconfiguration {
                inbound
            }
        }
        network 123.0.0.0/24 {
        }
    }
    static {
        route 123.0.0.0/24 {
            blackhole {
            }
        }
    }
}

If i check the advertised routes I get:

> show ip bgp neighbors 10.0.1.1 advertised-routes
BGP table version is 0, local router ID is 123.0.0.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 123.0.0.0/24   10.0.1.2                 1    100  32768 100 100 100 i

Total number of prefixes 1

and

> show ip bgp neighbors 192.168.0.1 advertised-routes
BGP table version is 0, local router ID is 123.0.0.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 123.0.0.0/24   192.168.0.2            1         32768 i

Total number of prefixes 1

Everything looks good from my VyOS, but by checking at 10.0.1.1 I can see that VyOS is not annoucing my prefix to it for some reason:

> birdc show proto all vyos
BIRD 1.5.0 ready.
name     proto    table    state  since       info
vyos    BGP      master   up     13:57:14    Established
  Preference:     100
  Input filter:   ACCEPT
  Output filter:  ACCEPT
  Routes:         0 imported, 725065 exported, 0 preferred
  Route change stats:     received   rejected   filtered    ignored   accepted
    Import updates:              0          0          0          0          0
    Import withdraws:            1          0        ---          1          0
    Export updates:         731324          0          0        ---     731324
    Export withdraws:          414        ---        ---        ---        414
  BGP state:          Established
    Neighbor address: 10.0.1.2
    Neighbor AS:      100
    Neighbor ID:      123.0.0.1
    Neighbor caps:    refresh AS4
    Session:          internal AS4
    Source address:   10.0.1.1
    Hold timer:       112/180
    Keepalive timer:  25/60

Did I miss something in my setup to make vyos announce my prefix to both neighbors?

Any ideias would be really helpful as I’m new to vyos and BGP in general.

It looks like bird is ignoring the route for some reason, not that Vyos is not sending it.

As an aside, it’s possible that you have a redundant statement in your config - you’re using both a route-map and a prefix-list. The route-map will accomplish the same thing, maybe you don’t need the prefix-list for 10.0.1.1?

Thanks for the prompt response!

I tried that with no luck. This also happen with the other router, which is Cisco, if i annouce to it with prepends.

Looks like vyos is announce only the smaller path, for some strange reason.

Is there any way to debug how vyos is announcing my routes?

Wait - are the AS110 and AS120 routers connected to each other via BGP?

If so, then it’s correct behaviour for AS110 to ignore your route because it’s got a better one via AS120.

What’s the output of (or equivalent):
show ip bgp neighbors 10.0.1.2 received-routes

on the AS110 router?