BGP multihoming not working


#1

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.


#3

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?


#4

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?


#5

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?