What is the expected iBGP behaviour for routes with different local_pref?
Tim Weippert
weiti+bird-users at weiti.org
Mon Jul 1 13:02:21 CEST 2024
Hi,
don't know if i'm right, but i think this has nothing to do with iBGP
and local_pref behaviour. As i see you don't use "add path", therefore i
understood that only "best paths" are exchanged and for your server137
the route with local_pref 100 is the best path.
If you want "all available" routes propagated via (i)BGP you should
use
add paths switch|rx|tx
in my opinion to also transport the "non preferred" paths.
HTH,
tim
On Mon, Jul 01, 2024 at 10:26:40AM GMT, Nico Schottelius via Bird-users wrote:
>
> Hello everyone,
>
> I was wondering how bird *should* behave if within one AS a route is
> received from outside multiple times but with different local_pref set?
>
> My expectation would be that using iBGP, the lower local_pref route
> would show up on all routers, but the higher one is selected.
>
> What I observe is that seems the router who initially receives the lower
> local_pref route does not export it via iBGP, even though it matches the
> export filter.
>
> Example:
>
> - server145 has a non-preferable uplink and imports all routes with
> local_pref = 80
> - server137 has a preferable uplink and imports all routes without
> local_pref modification, thus local_pref = 100
> - server145 has both routes
> - server137 only has the preferable route
> - It seems that server145 is not exporting its lower local_pref routes,
> even though they match the export filter
>
> Excerpt from server145, importing 2600:: route from outside, with
> setting local_pref to 80:
>
> --------------------------------------------------------------------------------
> bird> show route all for 2600::
> Table master6:
> 2600::/48 unicast [ibgp_server137 14:34:07.078 from 2a0a:e5c0:0:b::89] * (100/96) [AS1239i]
> via fe80::3eec:efff:fed2:d1e4 on eth0
> Type: BGP univ
> BGP.origin: IGP
> BGP.as_path: 209898 39040 1299 174 1239
> BGP.next_hop: 2a0a:e5c0:31:2::1
> BGP.local_pref: 100
> BGP.community: (1299,20000) (39040,100) (39040,109) (39040,1000)
> BGP.otc: 209898
> unicast [outgoing_server120 14:33:56.123] (100) [AS1239i]
> via 2a0a:e5c0:31:4::1 on tun1
> Type: BGP univ
> BGP.origin: IGP
> BGP.as_path: 209898 39040 1299 174 1239
> BGP.next_hop: 2a0a:e5c0:31:4::1 fe80::897b:493f:bd44:ec60
> BGP.local_pref: 80
> BGP.community: (1299,20000) (39040,100) (39040,109) (39040,1000)
> BGP.otc: 209898
> unicast [outgoing_server121 14:34:41.137] (100) [AS1239i]
> via 2a0a:e5c0:32:4::1 on tun0
> Type: BGP univ
> BGP.origin: IGP
> BGP.as_path: 209898 15576 3356 174 1239
> BGP.next_hop: 2a0a:e5c0:32:4::1 fe80::fa84:82d2:a117:43c
> BGP.local_pref: 80
> BGP.community: (3356,2) (3356,22) (3356,86) (3356,505) (3356,601) (3356,666) (3356,903) (3356,2074) (15576,100) (15576,102) (15576,1000)
> BGP.otc: 209898
> unicast [ibgp_server138 14:34:56.416 from 2a0a:e5c0:0:b::8a] (100/96) [AS1239i]
> via fe80::3eec:efff:fed2:d0c4 on eth0
> Type: BGP univ
> BGP.origin: IGP
> BGP.as_path: 209898 15576 3356 174 1239
> BGP.next_hop: 2a0a:e5c0:32:2::1
> BGP.local_pref: 100
> BGP.community: (3356,2) (3356,22) (3356,86) (3356,505) (3356,601) (3356,666) (3356,903) (3356,2074) (15576,100) (15576,102) (15576,1000)
> BGP.otc: 209898
> --------------------------------------------------------------------------------
>
> And on server137, this route is not visible, only the local_pref = 100
> are visible:
>
> --------------------------------------------------------------------------------
> bird> show route all for 2600::
> Table master6:
> 2600::/48 unicast [outgoing_server120 14:41:16.420] * (100) [AS1239i]
> via 2a0a:e5c0:31:2::1 on oserver120
> Type: BGP univ
> BGP.origin: IGP
> BGP.as_path: 209898 39040 1299 174 1239
> BGP.next_hop: 2a0a:e5c0:31:2::1
> BGP.local_pref: 100
> BGP.community: (1299,20000) (39040,100) (39040,109) (39040,1000)
> BGP.otc: 209898
> unicast [ibgp_server138 14:42:17.052 from 2a0a:e5c0:0:b::8a] (100/96) [AS1239i]
> via fe80::3eec:efff:fed2:d0c7 on eth5
> Type: BGP univ
> BGP.origin: IGP
> BGP.as_path: 209898 15576 3356 174 1239
> BGP.next_hop: 2a0a:e5c0:32:2::1
> BGP.local_pref: 100
> BGP.community: (3356,2) (3356,22) (3356,86) (3356,505) (3356,601) (3356,666) (3356,903) (3356,2074) (15576,100) (15576,102) (15576,1000)
> BGP.otc: 209898
> --------------------------------------------------------------------------------
>
> On the iBGP session we import/export everything that is either static or
> BGP,excerpt from server137:
>
> --------------------------------------------------------------------------------
> Channel ipv6
> State: UP
> Table: master6
> Preference: 100
> Input filter: ACCEPT
> Output filter: static_and_bgp
> Routes: 3 imported, 206002 exported, 2 preferred
> Route change stats: received rejected filtered ignored accepted
> Import updates: 211444 0 0 70 211374
> Import withdraws: 230070 0 --- 24038 206032
> Export updates: 645070 137427 98 --- 507545
> Export withdraws: 64508 --- --- --- 96296
> BGP Next hop: 2a0a:e5c0:0:b::89 fe80::3eec:efff:fed2:d1e4
> IGP IPv6 table: master6
> --------------------------------------------------------------------------------
>
> But it seems server145 is not exporting them from how it looks:
>
> --------------------------------------------------------------------------------
> Channel ipv6
> State: UP
> Table: master6
> Preference: 100
> Input filter: ACCEPT
> Output filter: static_and_bgp
> Routes: 206011 imported, 3 exported, 206008 preferred
> Route change stats: received rejected filtered ignored accepted
> Import updates: 503843 0 0 445 503398
> Import withdraws: 91701 0 --- 78 91623
> Export updates: 927807 684226 97 --- 243484
> Export withdraws: 33627 --- --- --- 230240
> BGP Next hop: 2a0a:e5c0:0:b::91 fe80::2f0:cbff:fefe:b70c
> IGP IPv6 table: master6
> --------------------------------------------------------------------------------
>
> Even though a lot more routes match the filter:
>
> --------------------------------------------------------------------------------
> bird> show route count filter static_and_bgp
> 3803744 of 3803746 routes for 950939 networks in table master4
> 824133 of 824170 routes for 206080 networks in table master6
> Total: 4627877 of 4627916 routes for 1157019 networks in 2 tables
> bird>
> --------------------------------------------------------------------------------
>
> So is this a misconfiguration or a bug or intended behaviour?
>
> Because *if* the upstream of server137 goes down, it starts receiving
> routes from server145, so failover works, but it seems wrong to me to
> not have the routes by default.
>
> Best regards,
>
> Nico
>
> p.s.: the config for server145 that does not export the routes is:
>
> --------------------------------------------------------------------------------
> define pref_tunnel_fiberstream = 80; # used
>
> filter static_and_bgp {
> if source ~ [ RTS_STATIC, RTS_BGP ] then accept;
> reject;
> }
>
>
> protocol bgp outgoing_server120 {
> local as myas;
> direct;
> password "...";
> bfd on;
>
> neighbor 2a0a:e5c0:31:4::1 as 209898;
> local role customer;
> default bgp_local_pref pref_tunnel_fiberstream;
>
>
> ipv6 {
> import filter allow_all;
> export filter p5_to_world;
> };
>
> ipv4 {
> import filter allow_all;
> export filter p5_to_world;
> extended next hop on;
> };
> }
>
>
> protocol bgp ibgp_server137 {
> local as myas;
> neighbor 2a0a:e5c0:0:b::89 as myas;
> direct;
> bfd on;
>
> ipv6 {
> import all;
> export filter static_and_bgp;
>
> gateway recursive;
> };
>
> ipv4 {
> import all;
> export filter static_and_bgp;
>
> gateway recursive;
> extended next hop on;
> };
> }
> --------------------------------------------------------------------------------
>
> --
> Sustainable and modern Infrastructures by ungleich.ch
--
Tim Weippert
http://weiti.org - weiti at weiti.org
GPG Fingerprint - E704 7303 6FF0 8393 ADB1 398E 67F2 94AE 5995 7DD8
More information about the Bird-users
mailing list