bird 1.3.7 setting incorrect nexthop on FreeBSD
Hello there, people! I have a strange moment with bird's behaviour on FreeBSD 9.0-RC3 (FreeBSD 9.0-RC3 i386 GENERIC): It establishes BGP sessions, succesfully exchanges routes and when exporting them to kernel sets 127.0.0.1 via lo0 as next hop. An example: bird> show route all 192.168.2.0/24 192.168.2.0/24 unreachable [Cisco 22:11 from 172.16.0.252] * (100/-) [AS65002i] Type: BGP unicast univ BGP.origin: IGP BGP.as_path: 65002 BGP.next_hop: 172.16.0.252 BGP.med: 0 BGP.local_pref: 100 BGP.community: (65001,252) bird> show route all export kernel1 192.168.2.0/24 192.168.2.0/24 unreachable [Cisco 22:11 from 172.16.0.252] * (100/-) [AS65002i] Type: BGP unicast univ BGP.origin: IGP BGP.as_path: 65002 BGP.next_hop: 172.16.0.252 BGP.med: 0 BGP.local_pref: 100 BGP.community: (65001,252) [22:11][border][~] # netstat -rn -f inet | grep 192.168.2.0 192.168.2.0/24 127.0.0.1 UR1 0 8 lo0 [22:15][border][~] # route get 192.168.2.1 route to: 192.168.2.1 destination: 192.168.2.0 mask: 255.255.255.0 interface: lo0 flags: <UP,REJECT,DONE,PROTO1> recvpipe sendpipe ssthresh rtt,msec mtu weight expire 0 0 0 0 16384 1 0 And from the other side there's Cisco's router (the problem also persists on BGP between bird and quagga): OfficeCisco#show ip bgp neighbors 172.16.0.253 advertised-routes | in 192.168.2 *> 192.168.2.0 172.16.0.38 0 0 65002 i OfficeCisco#show ip route 192.168.2.0 255.255.255.0 Routing entry for 192.168.2.0/24 Known via "bgp 65001", distance 20, metric 0 Tag 65002, type external Last update from 172.16.0.38 3d02h ago Routing Descriptor Blocks: * 172.16.0.38, from 172.16.0.38, 3d02h ago Route metric is 0, traffic share count is 1 AS Hops 1 This same route with exactly same settings is also advertised to another FreeBSD box running quagga and the route is correctly handled and installed with correct nexthop: [22:21][db][~] $ netstat -rn -f inet | grep 192.168.2.0 192.168.2.0/24 172.16.0.252 UG1 0 1475392 LAN [22:21][db][~] $ s vtysh -c 'sh ip bgp 192.168.2.0/24' BGP routing table entry for 192.168.2.0/24 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 65002 172.16.0.252 (metric 1) from 172.16.0.252 (192.168.0.2) Origin IGP, metric 0, localpref 100, valid, internal, best Last update: Thu Aug 30 10:56:20 2012 My BGP neighbors and kernel configuration here: protocol kernel { learn; persist; scan time 10; import all; export where source = RTS_BGP; } protocol static AS65001 { description "Nets that we export"; route 192.168.0.0/24 reject; route 192.168.1.0/24 reject; route 172.16.0.248/29 reject; route 95.158.3.122/32 reject; route 0.0.0.0/0 reject; } filter bgp_from_db{ if net = 0.0.0.0/0 then { reject; }else{ bgp_community=add(bgp_community,(65001,253)); accept; } } filter bgp_from_cisco{ if net = 0.0.0.0/0 then { reject; }else{ bgp_community=add(bgp_community,(65001,252)); accept; } } filter bgp_to_db { if proto="AS65001" then { bgp_community=add(bgp_community,(65001,254)); accept; } else reject; } filter bgp_to_cisco { if net ~ 192.168.1.0/24 then reject; if proto="AS65001" then { bgp_community=add(bgp_community,(65001,254)); accept; } else reject; } protocol bgp DB { description "DB Server"; local as 65001; neighbor 172.16.0.253 as 65001; import filter bgp_from_db; export filter bgp_to_db; } protocol bgp Cisco { description "Office<->Service 2620"; local as 65001; neighbor 172.16.0.252 as 65001; import filter bgp_from_cisco; export filter bgp_to_cisco; } And this is what bird shows in log: 30-08-2012 22:25:35 <TRACE> kernel1: 192.168.2.0/24: seen 30-08-2012 22:25:35 <TRACE> kernel1: Pruning table master 30-08-2012 22:25:35 <TRACE> kernel1: Pruning inherited routes 30-08-2012 22:25:45 <TRACE> device1: Scanning interfaces 30-08-2012 22:25:45 <TRACE> kernel1: Scanning routing table 30-08-2012 22:25:45 <TRACE> Setting fib to 0 for route dump 30-08-2012 22:25:45 <TRACE> kernel1: 0.0.0.0/0: [alien] seen 30-08-2012 22:25:45 <TRACE> kernel1: 95.158.3.120/29: ignored 30-08-2012 22:25:45 <TRACE> kernel1: 95.158.3.122/32: [alien] seen 30-08-2012 22:25:45 <TRACE> kernel1: 95.158.3.123/32: seen 30-08-2012 22:25:45 <TRACE> kernel1: 172.16.0.0/27: seen 30-08-2012 22:25:45 <TRACE> kernel1: 172.16.0.36/30: seen 30-08-2012 22:25:45 <TRACE> kernel1: 172.16.0.248/29: ignored 30-08-2012 22:25:45 <TRACE> kernel1: 172.16.0.254/32: [alien] seen 30-08-2012 22:25:45 <TRACE> kernel1: 192.168.0.0/24: ignored 30-08-2012 22:25:45 <TRACE> kernel1: 192.168.0.1/32: [alien] seen 30-08-2012 22:25:45 <TRACE> kernel1: 192.168.0.4/32: seen 30-08-2012 22:25:45 <TRACE> kernel1: 192.168.1.0/24: ignored 30-08-2012 22:25:45 <TRACE> kernel1: 192.168.1.1/32: [alien] seen 30-08-2012 22:25:45 <TRACE> ... 30-08-2012 22:25:45 <TRACE> kernel1: 192.168.2.0/24: seen 30-08-2012 22:25:45 <TRACE> kernel1: Pruning table master 30-08-2012 22:25:45 <TRACE> kernel1: Pruning inherited routes Thank you guys for help! -- ~~~ WBR, Vitaliy Turovets Systems Administrator Corebug.Net +38(093)265-70-55 VITU-RIPE
On Thu, Aug 30, 2012 at 10:30:00PM +0300, ?????????????? ?????????????? wrote:
Hello there, people! I have a strange moment with bird's behaviour on FreeBSD 9.0-RC3 (FreeBSD 9.0-RC3 i386 GENERIC): It establishes BGP sessions, succesfully exchanges routes and when exporting them to kernel sets 127.0.0.1 via lo0 as next hop. An example:
You most probably hit a problem with recursive next hops. See point 'IBGP does not work after upgrade to BIRD 1.3 (or newer)' in FAQ: https://git.nic.cz/redmine/projects/bird/wiki/FAQ . -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
2012/8/30 Ondrej Zajicek <santiago@crfreenet.org>:
On Thu, Aug 30, 2012 at 10:30:00PM +0300, ?????????????? ?????????????? wrote:
Hello there, people! I have a strange moment with bird's behaviour on FreeBSD 9.0-RC3 (FreeBSD 9.0-RC3 i386 GENERIC): It establishes BGP sessions, succesfully exchanges routes and when exporting them to kernel sets 127.0.0.1 via lo0 as next hop. An example:
You most probably hit a problem with recursive next hops.
See point 'IBGP does not work after upgrade to BIRD 1.3 (or newer)' in FAQ: https://git.nic.cz/redmine/projects/bird/wiki/FAQ .
-- Elen sila lumenn' omentielvo
Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAlA/ybAACgkQw1GB2RHercNHpQCePgvFTVn/uAG5gQmjvABwExd9 dGwAn2UqSikSIXQYBZyQK1/hG19PEuTJ =79b2 -----END PGP SIGNATURE-----
Hi there Ondrej! Thank you a lot, "gateway direct" is exactly what i needed, now everything works like a charm! -- ~~~ WBR, Vitaliy Turovets Systems Administrator Corebug.Net +38(093)265-70-55 VITU-RIPE
participants (2)
-
Ondrej Zajicek -
Виталий Туровец