FRRouting / frr

The FRRouting Protocol Suite

Home Page:https://frrouting.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FRR errors after ugrading from frr 9.1 to 10.0 on Centos 7

pedrompcaetano opened this issue · comments

Description

After updating packages on a centos 7 64 bit system, frr is unable to establish peering with upstream routers.

Version

# sh version 
FRRouting 10.0 (vspasr1pxyq01) on Linux(3.10.0-1160.118.1.el7.x86_64).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
configured with:
    '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sbindir=/usr/lib/frr' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-static' '--disable-werror' '--enable-multipath=256' '--enable-vtysh' '--enable-ospfclient' '--enable-ospfapi' '--enable-rtadv' '--enable-ldpd' '--enable-pimd' '--enable-pim6d' '--enable-pbrd' '--enable-nhrpd' '--enable-eigrpd' '--enable-babeld' '--enable-vrrpd' '--enable-user=frr' '--enable-group=frr' '--enable-vty-group=frrvty' '--enable-fpm' '--enable-watchfrr' '--disable-bgp-vnc' '--enable-isisd' '--enable-rpki' '--enable-bfdd' '--enable-pathd' '--enable-snmp' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

How to reproduce

After upgrading a centos7 system running frr from official repository, frr is unable to establish peering with upstream routers.
On a 'twin system' running frr 9.1, everything works as expected. (this system was not updated)

Expected behavior

# rpm -qa frr
frr-9.1-01.el8.x86_64
# sh interface brief
Interface       Status  VRF             Addresses
---------       ------  ---             ---------
ens161          up      default         10.185.23.201/21
ens192          up      default         10.150.0.11/24
                                        10.150.0.5/32
                                        10.150.0.6/32
ens224          up      default         10.0.0.234/27
                                        10.11.12.1/32
ens256          up      default         192.168.170.11/24
lo              up      default
# sh ip bgp neighbors upstream bestpath-routes
BGP table version is 8, local router ID is 10.11.12.1, vrf id 0
Default local pref 100, local AS 4200000272
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
 *> 0.0.0.0/0        10.0.0.243               100      0 15525 8657 ?

Total number of prefixes 1

vspasr1pxyp01# sh ip fib
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, A - Babel, F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

B>* 0.0.0.0/0 [200/0] via 10.0.0.243, ens224, weight 1, 02w1d14h
  *                   via 10.0.0.244, ens224, weight 1, 02w1d14h
K>* 10.0.0.0/8 [0/101] via 10.150.0.254, ens192, 09w0d11h
C>* 10.150.0.0/24 is directly connected, ens192, 09w0d11h
C>* 10.150.0.5/32 is directly connected, ens192, 05w0d03h
C>* 10.150.0.6/32 is directly connected, ens192, 05w0d12h
C>* 10.185.16.0/21 is directly connected, ens161, 09w0d11h
K>* 172.16.0.0/12 [0/101] via 10.150.0.254, ens192, 09w0d11h
K>* 192.168.0.0/16 [0/101] via 10.150.0.254, ens192, 09w0d11h
C>* 192.168.170.0/24 is directly connected, ens256, 09w0d11h
C>* 10.0.0.0.224/27 is directly connected, ens224, 09w0d11h
C>* 10.11.12.1/32 is directly connected, ens224, 09w0d11h

Actual behavior

# rpm -q frr
frr-10.0-01.el7.x86_64
# sh interface brief 
Interface       Status  VRF             Addresses
---------       ------  ---             ---------
ens161          up      default         10.185.23.203/21
ens192          up      default         10.150.0.13/24
ens224          up      default         10.0.0.250/27
                                        10.11.12.3/32
ens256          up      default         192.168.170.13/24
lo              up      default         
# sh ip bgp neighbors upstream bestpath-routes 
BGP table version is 1, local router ID is 10.0.0.3, vrf id 0
Default local pref 100, local AS 4200000272
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
# sh ip fib 
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, A - Babel, F - PBR, f - OpenFabric,
       t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* 10.0.0.0/8 [0/101] via 10.150.0.254, ens192, 00:11:00
L>* 10.150.0.13/32 is directly connected, ens192, 00:11:00
L>* 10.185.23.203/32 is directly connected, ens161, 00:11:00
K>* 172.16.0.0/12 [0/101] via 10.150.0.254, ens192, 00:11:00
K>* 192.168.0.0/16 [0/101] via 10.150.0.254, ens192, 00:11:00
L>* 192.168.170.13/32 is directly connected, ens256, 00:11:00
L>* 10.0.0.250/32 is directly connected, ens224, 00:11:00
L>* 10.11.12.3/32 is directly connected, ens224, 00:11:00

There are no routes installed as Connected in fib.
The routes that should (?) be Connected are displayed as Local. (192.168.170.13/32 10.0.0.250/32 and 10.11.12.3/32, note the netmasks are not correct)

Additional context

The configuration is pretty straightforward:

frr version 10.0
frr defaults traditional
hostname myhostname
log daemon bgpd file /var/log/frr/bgpd.log informational
no ip forwarding
no ipv6 forwarding
!
router bgp 4200000272
 bgp graceful-restart
 neighbor upstream peer-group
 neighbor upstream remote-as 4200000272
 neighbor 10.0.0.243 peer-group upstream
 neighbor 10.0.0.244 peer-group upstream
 !
 address-family ipv4 unicast
  network 10.11.12.2/32
  neighbor upstream prefix-list upstream in
  neighbor upstream prefix-list squid_outbound out
  maximum-paths 2
  maximum-paths ibgp 2
 exit-address-family
exit
!
ip prefix-list upstream seq 5 permit 0.0.0.0/0
ip prefix-list squid_outbound description squid_outbound
ip prefix-list squid_outbound seq 25 permit 10.11.12.2/32
!
route-map community permit 10
 match extcommunity one
exit
!
route-map lpref permit 10
 match community 50
 set local-preference 50
exit
!
route-map lpref permit 20
 match community 75
 set local-preference 75
exit
!
route-map lpref permit 30
 match community 125
 set local-preference 125
exit
!
route-map lpref permit 40
 match community 150
 set local-preference 150
exit
!
route-map ASPATHPREPEND permit 10
 match community prepend1
 set as-path prepend last-as 1
exit
!
route-map ASPATHPREPEND permit 20
 match community prepend2
 set as-path prepend last-as 2
exit
!
route-map ASPATHPREPEND permit 30
 match community prepend3
 set as-path prepend last-as 3
exit
!

Attached to this issue is the output of journalctl -u frr

Checklist

  • I have searched the open issues for this bug.
  • I have not included sensitive information in this report.
    frr-error.txt

NetworkManager has decided that it will install addresses on interfaces as noprefixroute. With this change FRR cannot use the corresponding prefix as a connected route anymore as that if you were to do a redistribute connected into a routing protocol and then tried to ping the other side of the interface it will no longer work. I would suggest that you no longer use NetworkManager.

Thank you for your help.
This has indeed solved the issue.
Best,
Pedro

FYI, this isn't just a NetworkManager thing. systemd-networkd also apparently installs addresses with noprefixroute when they are learned via DHCP or SLAAC.