Uploaded image for project: 'Fast Datapath Product'
  1. Fast Datapath Product
  2. FDP-543

route would fail when bfd for one of the ecmp is down

    • False
    • Hide

      None

      Show
      None
    • False
    • None
    • +

      Description:

      route would fail when bfd for one of the ecmp is down

      Version:

      ovn24.03-24.03.0-5.el9

      reproducer:

      systemctl start openvswitch                                           
      systemctl start ovn-northd                                                   
      ovn-nbctl set-connection ptcp:6641                                 
      ovn-sbctl set-connection ptcp:6642                                      
      ovs-vsctl set open . external_ids:system-id=hv1 external_ids:ovn-remote=tcp:20.0.211.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=20.0.211.25
      systemctl restart ovn-controller                                 
      
      ovn-nbctl ls-add network1
      ovn-nbctl lsp-add network1 vm1
      ovn-nbctl lsp-set-addresses vm1 "40:44:00:00:00:01 192.168.1.11 2000::11"
      ovn-nbctl lsp-add network1 vm2
      ovn-nbctl lsp-set-addresses vm2 "40:44:00:00:00:02 192.168.1.12 2000::12"
      
      ovn-nbctl ls-add public
      ovn-nbctl lsp-add public public-localnet
      ovn-nbctl lsp-set-type public-localnet localnet
      ovn-nbctl lsp-set-addresses public-localnet unknown
      ovn-nbctl lsp-set-options public-localnet network_name=external
      ovs-vsctl add-br br-labNet
      ovs-vsctl set Open_vSwitch . external-ids:ovn-bridge-mappings=external:br-labNet
      ovs-vsctl add-port br-labNet ha_veth0
      ip link set br-labNet up
      
      ovn-nbctl lr-add router1
      ovn-nbctl lrp-add router1 router1-net1 40:44:00:00:00:04 192.168.1.1/24 2000::1/64
      ovn-nbctl lsp-add network1 net1-router1
      ovn-nbctl lsp-set-type net1-router1 router
      ovn-nbctl lsp-set-addresses net1-router1 router
      ovn-nbctl lsp-set-options net1-router1 router-port=router1-net1
      
      ovn-nbctl lrp-add router1 router1-public 40:44:00:00:00:06 172.16.1.1/24 2002::1/64
      ovn-nbctl lsp-add public public-router1
      ovn-nbctl lsp-set-type public-router1 router
      ovn-nbctl lsp-set-addresses public-router1 "40:44:00:00:00:06"
      ovn-nbctl lsp-set-options public-router1 router-port=router1-public
      
      ovn-nbctl lrp-set-gateway-chassis router1-public hv1
      ovn-nbctl lr-route-add router1 0.0.0.0/0 192.168.1.2
      ovn-nbctl lr-route-add router1 ::/0 2000::12
      
      ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal
      ip netns add vm1
      ip link set vm1 netns vm1
      ip netns exec vm1 ip link set lo up
      ip netns exec vm1 ip link set vm1 up
      ip netns exec vm1 ip link set vm1 address 40:44:00:00:00:01
      ip netns exec vm1 ip addr add 192.168.1.11/24 dev vm1
      ip netns exec vm1 ip -6 addr add 2000::11/64 dev vm1
      ip netns exec vm1 ip route add default via 192.168.1.1 dev vm1
      ip netns exec vm1 ip addr add 2000::11/64 dev vm1
      ip netns exec vm1 ip -6 route add default via 2000::1 dev vm1
      ovs-vsctl set Interface vm1 external_ids:iface-id=vm1
      
      ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal
      ip netns add vm2
      ip link set vm2 netns vm2
      ip netns exec vm2 ip link set lo up
      ip netns exec vm2 ip link set vm2 up
      ip netns exec vm2 ip link set vm2 address 40:44:00:00:00:02
      ip netns exec vm2 ip addr add 192.168.1.12/24 dev vm2
      ip netns exec vm2 ip -6 addr add 192.168.1.12/24 dev vm2
      ip netns exec vm2 ip route add default via 192.168.1.1 dev vm2
      ip netns exec vm2 ip addr add 2000::12/64 dev vm2
      ip netns exec vm2 ip -6 route add default via 2000::1 dev vm2
      ovs-vsctl set Interface vm2 external_ids:iface-id=vm2
      
      ip netns add external
      ip link add ha_veth0 type veth peer name ha_veth0_p netns external
      ip netns exec external ip link set lo up
      ip netns exec external ip link set ha_veth0_p up
      ip link set ha_veth0 up
      ip netns exec external ip addr add 172.16.1.50/24 dev ha_veth0_p
      ip netns exec external ip addr add 172.16.1.51/24 dev ha_veth0_p
      ip netns exec external ip -6 addr add 2002::50/64 dev ha_veth0_p
      ip netns exec external ip -6 addr add 2002::51/64 dev ha_veth0_p
      ip link add veth0 type veth peer name veth0_peer
      
      ip link set up dev veth0
      ip link set veth0_peer netns external
      ip netns exec external ip link set up dev veth0_peer
      ip netns exec external ip addr add 192.168.100.1/24 dev veth0_peer
      ip netns exec external ip -6 addr add 2003::1/24 dev veth0_peer
      ip addr add 192.168.100.2/24 dev veth0
      ip -6 addr add 2003::2/24 dev veth0
      ip route add 172.16.1.0/24 via 192.168.100.1
      ip -6 route add 2002::/64 via 2003::1
      ip netns exec external ip route add default via 172.16.1.1
      ip netns exec external ip -6 route add default via 2002::1
      ip netns exec external sysctl net.ipv4.ip_forward=1
      ip netns exec external sysctl net.ipv6.ip_forward=1
      
      ovn-nbctl --bfd lr-policy-add router1 1000 'ip4 && ip4.dst == 192.168.100.0/24' reroute 172.16.1.50,172.16.1.51
      ovn-nbctl --bfd lr-policy-add router1 1000 'ip6 && ip6.dst == 2003::/64' reroute 2002::50,2002::51
      ovn-nbctl --wait=hv sync
      ovn-nbctl list bfd
      ip netns exec vm1 ping 192.168.100.1 -c 1 -w 2 -W 2
      ip netns exec external bfdd-beacon --listen=0.0.0.0                                                      
      ip netns exec external bfdd-control allow 172.16.1.1
      sleep 5
      ovn-nbctl list bfd
      ip netns exec vm1 ping 192.168.100.1 -c 1 -w 2 -W 2
      ip netns exec external ip addr del 172.16.1.50/24 dev ha_veth0_p
      sleep 5
      ovn-nbctl list bfd
      ip netns exec vm1 ping 192.168.100.1 -c 1 -w 2 -W 2
      
      pkill bfdd
      ip netns exec vm1 ping6 2003::1 -c 1 -w 2 -W 2
      ip netns exec external bfdd-beacon --listen=::
      ip netns exec external bfdd-control allow 2002::1
      sleep 5
      ovn-nbctl list bfd
      ip netns exec vm1 ping6 2003::1 -c 1 -w 2 -W 2
      ip netns exec external ip -6 addr del 2002::50/64 dev ha_veth0_p
      sleep 10
      ovn-nbctl list bfd
      ip netns exec vm1 ping6 2003::1 -c 1 -w 2 -W 2  

      actual result:

      [root@wsfd-advnetlab18 FDP-234]# rpm -qa | grep -E "openvswitch|ovn"
      openvswitch-selinux-extra-policy-1.0-34.el9fdp.noarch
      openvswitch3.2-3.2.0-65.el9fdp.x86_64
      python3-openvswitch3.2-3.2.0-65.el9fdp.x86_64
      ovn24.03-24.03.1-5.el9fdp.x86_64
      ovn24.03-central-24.03.1-5.el9fdp.x86_64
      ovn24.03-host-24.03.1-5.el9fdp.x86_64
      
      + ovn-nbctl --bfd lr-policy-add router1 1000 'ip4 && ip4.dst == 192.168.100.0/24' reroute 172.16.1.50,172.16.1.51
      + ovn-nbctl --bfd lr-policy-add router1 1000 'ip6 && ip6.dst == 2003::/64' reroute 2002::50,2002::51
      
      <=== bfd can be set for router policy
      
      + ovn-nbctl --wait=hv sync
      + ovn-nbctl list bfd
      _uuid               : 79c6c6f1-5263-4f17-b8f0-d8b102c13ce8
      detect_mult         : []
      dst_ip              : "2002::50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : 5c7215ca-172a-4a56-b47a-d7294ce807e4
      detect_mult         : []
      dst_ip              : "2002::51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : 67354c5b-50a9-4a3b-96a6-5b09fb792633
      detect_mult         : []
      dst_ip              : "172.16.1.51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : cf3cf0ef-3287-4fc6-83ea-16eaad3822c3
      detect_mult         : []
      dst_ip              : "172.16.1.50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      + ip netns exec vm1 ping 192.168.100.1 -c 1 -w 2 -W 2
      PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
      
      
      --- 192.168.100.1 ping statistics ---
      2 packets transmitted, 0 received, 100% packet loss, time 1006ms
      
      
      + ip netns exec external bfdd-beacon --listen=0.0.0.0
      + ip netns exec external bfdd-control allow 172.16.1.1
      Allowing connections from 172.16.1.1
      + sleep 5
      + ovn-nbctl list bfd
      _uuid               : 79c6c6f1-5263-4f17-b8f0-d8b102c13ce8
      detect_mult         : []
      dst_ip              : "2002::50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : 5c7215ca-172a-4a56-b47a-d7294ce807e4
      detect_mult         : []
      dst_ip              : "2002::51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : 67354c5b-50a9-4a3b-96a6-5b09fb792633
      detect_mult         : []
      dst_ip              : "172.16.1.51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : up
      
      
      _uuid               : cf3cf0ef-3287-4fc6-83ea-16eaad3822c3
      detect_mult         : []
      dst_ip              : "172.16.1.50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : up
      + ip netns exec vm1 ping 192.168.100.1 -c 1 -w 2 -W 2
      PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
      64 bytes from 192.168.100.1: icmp_seq=1 ttl=63 time=1.63 ms
      
      
      --- 192.168.100.1 ping statistics ---
      1 packets transmitted, 1 received, 0% packet loss, time 0ms
      rtt min/avg/max/mdev = 1.625/1.625/1.625/0.000 ms
      + ip netns exec external ip addr del 172.16.1.50/24 dev ha_veth0_p
      + sleep 5
      + ovn-nbctl list bfd
      _uuid               : 79c6c6f1-5263-4f17-b8f0-d8b102c13ce8
      detect_mult         : []
      dst_ip              : "2002::50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : 5c7215ca-172a-4a56-b47a-d7294ce807e4
      detect_mult         : []
      dst_ip              : "2002::51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : 67354c5b-50a9-4a3b-96a6-5b09fb792633
      detect_mult         : []
      dst_ip              : "172.16.1.51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : up
      
      
      _uuid               : cf3cf0ef-3287-4fc6-83ea-16eaad3822c3
      detect_mult         : []
      dst_ip              : "172.16.1.50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      + ip netns exec vm1 ping 192.168.100.1 -c 1 -w 2 -W 2
      PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
      
      
      --- 192.168.100.1 ping statistics ---
      2 packets transmitted, 0 received, 100% packet loss, time 1013ms
      
      <==== ping failed when bfd for one of the ecmp is down
      
      + pkill bfdd
      + ip netns exec vm1 ping6 2003::1 -c 1 -w 2 -W 2
      PING 2003::1(2003::1) 56 data bytes
      
      
      --- 2003::1 ping statistics ---
      2 packets transmitted, 0 received, 100% packet loss, time 1016ms
      
      
      + ip netns exec external bfdd-beacon --listen=::
      + ip netns exec external bfdd-control allow 2002::1
      Allowing connections from 2002::1
      + sleep 5
      + ovn-nbctl list bfd
      _uuid               : 79c6c6f1-5263-4f17-b8f0-d8b102c13ce8
      detect_mult         : []
      dst_ip              : "2002::50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : up
      
      
      _uuid               : 5c7215ca-172a-4a56-b47a-d7294ce807e4
      detect_mult         : []
      dst_ip              : "2002::51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : up
      
      
      _uuid               : 67354c5b-50a9-4a3b-96a6-5b09fb792633
      detect_mult         : []
      dst_ip              : "172.16.1.51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : cf3cf0ef-3287-4fc6-83ea-16eaad3822c3
      detect_mult         : []
      dst_ip              : "172.16.1.50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      + ip netns exec vm1 ping6 2003::1 -c 1 -w 2 -W 2
      PING 2003::1(2003::1) 56 data bytes
      64 bytes from 2003::1: icmp_seq=1 ttl=63 time=0.989 ms
      
      
      --- 2003::1 ping statistics ---
      1 packets transmitted, 1 received, 0% packet loss, time 0ms
      rtt min/avg/max/mdev = 0.989/0.989/0.989/0.000 ms
      + ip netns exec external ip -6 addr del 2002::50/64 dev ha_veth0_p
      + sleep 10
      + ovn-nbctl list bfd
      _uuid               : 79c6c6f1-5263-4f17-b8f0-d8b102c13ce8
      detect_mult         : []
      dst_ip              : "2002::50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : 5c7215ca-172a-4a56-b47a-d7294ce807e4
      detect_mult         : []
      dst_ip              : "2002::51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : up
      
      
      _uuid               : 67354c5b-50a9-4a3b-96a6-5b09fb792633
      detect_mult         : []
      dst_ip              : "172.16.1.51"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      
      
      _uuid               : cf3cf0ef-3287-4fc6-83ea-16eaad3822c3
      detect_mult         : []
      dst_ip              : "172.16.1.50"
      external_ids        : {}
      logical_port        : router1-public
      min_rx              : []
      min_tx              : []
      options             : {}
      status              : down
      + ip netns exec vm1 ping6 2003::1 -c 1 -w 2 -W 2
      PING 2003::1(2003::1) 56 data bytes
      
      
      --- 2003::1 ping statistics ---
      2 packets transmitted, 0 received, 100% packet loss, time 1024ms 

      expected result:

      route can pass even bfd for one of the ecmp is down

              lorenzobianconi lorenzo bianconi
              rhn-support-jishi Jianlin Shi
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: