Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-127907

Only one route applied when ECMP was expected

Linking RHIVOS CVEs to...Migration: Automation ...RHELPRIO AssignedTeam ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • None
    • Important
    • rhel-jotnar
    • 0
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • Unspecified
    • Unspecified
    • Unspecified
    • None

      What were you trying to do that didn't work?\

      frr is used in Openstack (RHOSO) as a BGP agent. It runs containerized in dataplane nodes, establishing BGP sessions with peers. Our CI jobs deploy dataplane nodes directly connected to two routers (leafs), which provide default routes to the dataplane nodes via BGP. Hence, each dataplane node has two equal-cost default routes (ECMP). The expected result is:

       

      [root@r0-networker-0 ~]# ip r s default
      default nhid 176 proto bgp src 99.99.0.6 metric 20 
              nexthop via 100.64.0.5 dev eth2 weight 1 
              nexthop via 100.65.0.5 dev eth3 weight 1 
      [root@r0-networker-0 ~]# podman exec -ituroot frr vtysh -c 'show ip route 0.0.0.0/0'
      Routing entry for 0.0.0.0/0
        Known via "bgp", distance 200, metric 0, best
        Last update 00:00:37 ago
        * 100.64.0.5, via eth2, weight 1
        * 100.65.0.5, via eth3, weight 1
      

       

      However, we obtained a wrong result with `frr-8.5.3-11.el9.x86_64.rpm`:

       

      [root@r0-networker-0 ~]# ip r s default
      default nhid 176 proto bgp src 99.99.0.6 metric 20
      [root@r0-networker-0 ~]# podman exec -ituroot frr vtysh -c 'show ip route 0.0.0.0/0'
      Routing entry for 0.0.0.0/0                         
        Known via "bgp", distance 200, metric 0, best
        Last update 00:01:26 ago
        * 100.64.0.5, via eth2, weight 1
      

       

       

      After downgrading the frr version to `frr-8.5.3-10.el9.x86_64`, the problem was resolved:

       

      [root@r0-networker-0 ~]# podman cp /tmp/frr-8.5.3-10.el9.x86_64.rpm frr:/tmp              
      [root@r0-networker-0 ~]# podman exec -ituroot frr vtysh -c 'show run' > /tmp/frr-version11.conf                       
      [root@r0-networker-0 ~]# podman exec -ituroot frr bash             
      [root@r0-networker-0 /]# rpm -qa frr                                                                                                                          
      frr-8.5.3-11.el9.x86_64                                                                                                                                       
      [root@r0-networker-0 /]# rpm -Uv --force /tmp/frr-8.5.3-10.el9.x86_64.rpm
      Verifying packages...                              
      Preparing packages...                                                          
      frr-8.5.3-10.el9.x86_64                                                    
      frr-8.5.3-11.el9.x86_64                                                  
      [root@r0-networker-0 /]# rpm -qa frr                                     
      frr-8.5.3-10.el9.x86_64
      [root@r0-networker-0 /]#                         
      exit                                               
      [root@r0-networker-0 ~]# podman ps  | grep frr                                                    
      5379a342606c  quay.io/podified-antelope-centos9/openstack-frr@sha256:aac1deb2b5e9fdfd371c1e7325a1cd3af8ca78242dc3143cc6f24bbed73c99cd                         kolla_start  11 hours ago  Up 2 minutes                       frr
      [root@r0-networker-0 ~]# systemctl restart edpm_frr
      [root@r0-networker-0 ~]# podman ps | grep frr                                                                                                                 
      5379a342606c  quay.io/podified-antelope-centos9/openstack-frr@sha256:aac1deb2b5e9fdfd371c1e7325a1cd3af8ca78242dc3143cc6f24bbed73c99cd                         kolla_start  11 hours ago  Up 11 seconds                      frr                                                                                              
      [root@r0-networker-0 ~]# ip r  show default
      default nhid 176 proto bgp src 99.99.0.6 metric 20 
              nexthop via 100.64.0.5 dev eth2 weight 1 
              nexthop via 100.65.0.5 dev eth3 weight 1    
       
      [root@r0-networker-0 ~]# podman exec -ituroot frr vtysh -c 'show ip route 0.0.0.0/0'
      Routing entry for 0.0.0.0/0
        Known via "bgp", distance 200, metric 0, best
        Last update 00:00:37 ago
        * 100.64.0.5, via eth2, weight 1
        * 100.65.0.5, via eth3, weight 1
      [root@r0-networker-0 ~]# podman exec -ituroot frr vtysh -c 'show run' > /tmp/frr-version10.conf
      

                                      

      What is the impact of this issue to you?

      ECMP is not propely applied and due to this, there is no load balancing and no high availability.

      Please provide the package NVR for which the bug is seen:

      https://brewweb.engineering.redhat.com/brew/buildinfo?buildID=3878852

      How reproducible is this bug?:

      100%

      Steps to reproduce

      1. See previous description and attached files
      2.  
      3.  

      Expected results

      ECMP applied properly

      Actual results

      ECMP not applied properly

              jotnar-project Jötnar Project
              eolivare Eduardo Olivares Toledo
              Michal Ruprich Michal Ruprich
              Jötnar Project Jötnar Project
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated: