Bug 2215744

Summary: [ovs bond balance-tcp] After tirgger lacp_fallback_ab, active port didn't changed
Product: Red Hat Enterprise Linux Fast Datapath Reporter: mhou <mhou>
Component: openvswitchAssignee: Mike Pattrick <mpattric>
openvswitch sub component: other QA Contact: mhou <mhou>
Status: NEW --- Docs Contact:
Severity: high    
Priority: unspecified CC: ctrautma, mpattric, qding
Version: RHEL 9.0Flags: mhou: needinfo? (mpattric)
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description mhou 2023-06-18 09:31:03 UTC
Description of problem:
if some traffic host on balance-tcp port, and in this time remoev lacp channel group on switch site. the bond-primary didn't effected and traffic still in original active port.

Version-Release number of selected component (if applicable):
ovs version:openvswitch3.1-3.1.0-24.el9fdp.x86_64
kernel version: 5.14.0-318.el9.x86_64

# ethtool -i ens4f0
driver: i40e
version: 5.14.0-318.el9.x86_64
firmware-version: 9.20 0x8000d89c 1.3353.0
expansion-rom-version: 
bus-info: 0000:af:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

# ethtool -i ens4f1
driver: i40e
version: 5.14.0-318.el9.x86_64
firmware-version: 9.20 0x8000d89c 1.3353.0
expansion-rom-version: 
bus-info: 0000:af:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

How reproducible: 100%


Steps to Reproduce:
1. configure a balance-tcp port on ovs bridge
ovs-vsctl list bridge 2>/dev/null | grep name | awk '{
    system("ovs-vsctl --if-exist del-br "$3" &>/dev/null")
}'
systemctl stop openvswitch &>/dev/null
rm -rf /etc/openvswitch/*.db
rm -rf /var/lib/openvswitch/*
ip link set ens4f0 up
ip link set ens4f1 up
systemctl restart openvswitch
ovs-appctl vlog/set console:lacp:dbg syslog:lacp:dbg file:lacp:dbg
ovs-appctl vlog/set console:bond:dbg syslog:bond:dbg file:bond:dbg
ovs-appctl vlog/set console:ovs_rcu:dbg syslog:ovs_rcu:dbg file:ovs_rcu:dbg
ovs-appctl vlog/set console:memory:dbg syslog:memory:dbg file:memory:dbg
ovs-vsctl set Open_vSwitch . other_config={}
ovs-vsctl --if-exists del-br bondbridge
ovs-vsctl --may-exist add-br bondbridge
ovs-vsctl set int bondbridge mtu_request=9000
ovs-ofctl mod-port bondbridge bondbridge up
ovs-vsctl add-bond bondbridge balance-tcp ens4f0 ens4f1 lacp=passive bond_mode=balance-tcp  \
	-- set Interface ens4f0 mtu_request=9000  -- set Interface ens4f1 mtu_request=9000
ovs-vsctl --may-exist add-port  guestbridge patchguest -- set Interface patchguest type=patch \
	-- set Interface patchguest options:peer=patchbond mtu_request=9000
ovs-vsctl --may-exist add-br guestbridge
ovs-vsctl --may-exist add-port  guestbridge patchguest
	-- set Interface patchguest type=patch -- set Interface patchguest options:peer=patchbond mtu_request=9000
ovs-podman add-port guestbridge eth1 g1 --ipaddress=172.31.150.42/24 --ip6address=2001:db8:150::42/64 --mtu=9000 --macaddress=00:de:ad:96:02:02

# ovs-vsctl show
ee9ebf3e-a4a9-4ca3-90f5-79f67067ee36
    Bridge guestbridge
        Port "2798c25d35dc4_l"
            Interface "2798c25d35dc4_l"
        Port guestbridge
            Interface guestbridge
                type: internal
        Port patchguest
            Interface patchguest
                type: patch
                options: {peer=patchbond}
    Bridge bondbridge
        Port patchbond
            Interface patchbond
                type: patch
                options: {peer=patchguest}
        Port balance-tcp
            Interface ens4f1
            Interface ens4f0
        Port bondbridge
            Interface bondbridge
                type: internal
    ovs_version: "3.1.2"

2. configure lacp channel group
# swcfg setup_port_channel 9364 'Eth1/7/1 Eth1/7/2' active
spawn ssh admin.88.13
User Access Verification
(admin.88.13) Password: 

Cisco Nexus Operating System (NX-OS) Software
TAC support: http://www.cisco.com/tac
Copyright (C) 2002-2022, Cisco and/or its affiliates.
All rights reserved.
The copyrights to certain works contained in this software are
owned by other third parties and used and distributed under their own
licenses, such as open source.  This software is provided "as is," and unless
otherwise stated, there is no warranty, express or implied, including but not
limited to warranties of merchantability and fitness for a particular purpose.
Certain components of this software are licensed under
the GNU General Public License (GPL) version 2.0 or 
GNU General Public License (GPL) version 3.0  or the GNU
Lesser General Public License (LGPL) Version 2.1 or 
Lesser General Public License (LGPL) Version 2.0. 
A copy of each such license is available at
http://www.opensource.org/licenses/gpl-2.0.php and
http://opensource.org/licenses/gpl-3.0.html and
http://www.opensource.org/licenses/lgpl-2.1.php and
http://www.gnu.org/licenses/old-licenses/library.txt.
sw-cisco9364# \r
               ^
% Incomplete command at '^' marker.
sw-cisco9364# terminal length 0
sw-cisco9364# configure t
Enter configuration commands, one per line. End with CNTL/Z.
sw-cisco9364(config)# show running-config interface Eth1/7/1 

!Command: show running-config interface Ethernet1/7/1
!Running configuration last done at: Sun Jun 18 08:43:47 2023
!Time: Sun Jun 18 08:43:49 2023

version 9.3(10) Bios:version 05.47 

interface Ethernet1/7/1
  mtu 9216
  inherit port-profile mhou_profile

interface Eth1/7/1
sw-cisco9364(config)# interface Eth1/7/1
no inherit port-profile mhou_profile
sw-cisco9364(config-if)# no inherit port-profile mhou_profile
lacp rate normal
Message reported by command ::             no switchport mode
Warning: If the interface is configured with mappings, all the associated mappings would be removed when port mode is changed
sw-cisco9364(config-if)# lacp rate normal
channel-group 57 force mode active
sw-cisco9364(config-if)# channel-group 57 force mode active
show running-config interface Eth1/7/2 
sw-cisco9364(config-if)# show running-config interface Eth1/7/2 

!Command: show running-config interface Ethernet1/7/2
!Running configuration last done at: Sun Jun 18 08:43:54 2023
!Time: Sun Jun 18 08:43:54 2023

version 9.3(10) Bios:version 05.47 

interface Ethernet1/7/2
  mtu 9216
  inherit port-profile mhou_profile

interface Eth1/7/2
sw-cisco9364(config-if)# interface Eth1/7/2
no inherit port-profile mhou_profile
sw-cisco9364(config-if)# no inherit port-profile mhou_profile
lacp rate normal
Message reported by command ::             no switchport mode
Warning: If the interface is configured with mappings, all the associated mappings would be removed when port mode is changed
sw-cisco9364(config-if)# lacp rate normal
channel-group 57 force mode active
sw-cisco9364(config-if)# channel-group 57 force mode active
interface port-channel57
sw-cisco9364(config-if)# interface port-channel57
shutdown
sw-cisco9364(config-if)# shutdown
no lacp suspend-individual
sw-cisco9364(config-if)# no lacp suspend-individual
lacp graceful-convergence
Warning: !! Disable lacp suspend-individual only on port-channel with edge ports. Disabling this on network port port-channel could lead to loops.!
sw-cisco9364(config-if)# lacp graceful-convergence
no shutdown
sw-cisco9364(config-if)# no shutdown
inherit port-profile mhou_profile_channel
sw-cisco9364(config-if)# inherit port-profile mhou_profile_channel
mtu 9216
sw-cisco9364(config-if)# mtu 9216
end
sw-cisco9364(config-if)# end
sw-cisco9364# show port-channel summary
Flags:  D - Down        P - Up in port-channel (members)
        I - Individual  H - Hot-standby (LACP only)
        s - Suspended   r - Module-removed
        b - BFD Session Wait
        S - Switched    R - Routed
        U - Up (port-channel)
        p - Up in delay-lacp mode (member)
        M - Not in use. Min-links not met
--------------------------------------------------------------------------------
Group Port-       Type     Protocol  Member Ports
      Channel
--------------------------------------------------------------------------------
47    Po47(SD)    Eth      NONE      --
48    Po48(SD)    Eth      NONE      --
57    Po57(SD)    Eth      LACP      Eth1/7/1(D)  Eth1/7/2(D)  
sw-cisco9364# show port-channel internal info interface port-channel 57
end

port-channel57
channel    : 57
bundle     : 65535
ifindex    : 0x16000038
admin mode : active
oper mode  : active
nports     : 2
active     : 0
pre cfg    : 0
ltl        : 0x2 (2)
lif        : 0x1059
iod        : 0x5b (91)
global id  : 1
flag       : 0
lock count : 0
num. of SIs: 0
ac mbrs    : 0 0
lacp graceful conv disable   : 0 
lacp suspend indiv disable   : 1 
pc min-links                 : 1 
pc max-bundle                : 32 
pc max active members        : 32 
pc is-suspend-minlinks       : 0 
port load defer enable       : 0 
port-channel bfd config enabled     : 0 
port-channel bfd config complete: 0 
port-channel bfd destination: null 
port-channel bfd start timeout: 0 
lacp fast-select-hot-standby disable   : 0 
port-channel port hash-distribution    : none
ethpm bundle lock count : 0
lacp delayed-enable fop none 0x0 
lacp delayed-enable : 0 
lacp delayed-enable cfg-port none
lacp delayed-enable oper-port none
lacp delayed-enable local best priority : 0xffffffff 
lacp delayed-enable remote best priority : 0xffffffff 
lacp vpc conv enabled   : 0 
gir conv enabled   : 0 
bundle number map:
Members: 
Ethernet1/7/1     is_ltl_programmed = 0
Port BFD session state: 5 (none)
Ethernet1/7/2     is_ltl_programmed = 0
Port BFD session state: 5 (none)
port-channel external lock: 
Lock Info: resource [eth-port-channel 57] 
  type[0] p_gwrap[(nil)]
      FREE @ 58132 usecs after Sun Jun 18 08:43:53 2023
  type[1] p_gwrap[(nil)]
      FREE @ 739453 usecs after Sun Jun 18 08:44:00 2023
  type[2] p_gwrap[(nil)]
      FREE @ 490584 usecs after Sun Jun 18 08:43:58 2023
0x16000038
internal (ethpm bundle) lock: 
Lock Info: resource [eth-port-channel 57] 
  type[0] p_gwrap[(nil)]
      FREE @ 58116 usecs after Sun Jun 18 08:43:53 2023
  type[1] p_gwrap[(nil)]
      FREE @ 308350 usecs after Sun Jun 18 08:43:59 2023
  type[2] p_gwrap[(nil)]
      FREE @ 997967 usecs after Sun Jun 18 08:43:55 2023
0x16000038
sw-cisco9364# end
sw-cisco9364# exit


3. add other_config:lacp-fallback-ab=true other_config:bond-primary=ens4f0 to balance-tcp

# ovs-vsctl set port balance-tcp other_config:lacp-fallback-ab=true other_config:bond-primary=ens4f0
# ovs-appctl bond/show
---- balance-tcp ----
bond_mode: balance-tcp
bond may use recirculation: yes, Recirc-ID : 1
bond-hash-basis: 0
lb_output action: disabled, bond-id: -1
updelay: 0 ms
downdelay: 0 ms
next rebalance: 7853 ms
lacp_status: negotiated
lacp_fallback_ab: true
active-backup primary: ens4f0
active member mac: 3c:fd:fe:bd:1c:a5(ens4f1)

member ens4f0: enabled
  may_enable: true

member ens4f1: enabled
  active member
  may_enable: true


4. on guest bridge, use a container send ping traffic to peer side
# podman exec g1 ping 172.31.150.1
PING 172.31.150.1 (172.31.150.1) 56(84) bytes of data.
64 bytes from 172.31.150.1: icmp_seq=1 ttl=64 time=0.500 ms
64 bytes from 172.31.150.1: icmp_seq=2 ttl=64 time=0.207 ms
64 bytes from 172.31.150.1: icmp_seq=3 ttl=64 time=0.058 ms
64 bytes from 172.31.150.1: icmp_seq=4 ttl=64 time=0.055 ms
64 bytes from 172.31.150.1: icmp_seq=5 ttl=64 time=0.047 ms

5. remove lacp channel group on switch site 
# swcfg cleanup_port_channel 9364 'Eth1/7/1 Eth1/7/2'
spawn ssh admin.88.13
User Access Verification
(admin.88.13) Password: 

Cisco Nexus Operating System (NX-OS) Software
TAC support: http://www.cisco.com/tac
Copyright (C) 2002-2022, Cisco and/or its affiliates.
All rights reserved.
The copyrights to certain works contained in this software are
owned by other third parties and used and distributed under their own
licenses, such as open source.  This software is provided "as is," and unless
otherwise stated, there is no warranty, express or implied, including but not
limited to warranties of merchantability and fitness for a particular purpose.
Certain components of this software are licensed under
the GNU General Public License (GPL) version 2.0 or 
GNU General Public License (GPL) version 3.0  or the GNU
Lesser General Public License (LGPL) Version 2.1 or 
Lesser General Public License (LGPL) Version 2.0. 
A copy of each such license is available at
http://www.opensource.org/licenses/gpl-2.0.php and
http://opensource.org/licenses/gpl-3.0.html and
http://www.opensource.org/licenses/lgpl-2.1.php and
http://www.gnu.org/licenses/old-licenses/library.txt.
sw-cisco9364# \r
               ^
% Incomplete command at '^' marker.
sw-cisco9364# terminal length 0
sw-cisco9364# clear counters interface Eth1/7/1
sw-cisco9364# clear counters interface Eth1/7/2
sw-cisco9364# show running-config interface port-channel 57 

!Command: show running-config interface port-channel57
!Running configuration last done at: Sun Jun 18 08:40:14 2023
!Time: Sun Jun 18 08:41:20 2023

version 9.3(10) Bios:version 05.47 

interface port-channel57
  mtu 9216
  no lacp suspend-individual
  inherit port-profile mhou_profile_channel

configure t
sw-cisco9364# configure t
Enter configuration commands, one per line. End with CNTL/Z.
sw-cisco9364(config)# interface port-channel 57
no inherit port-profile mhou_profile_channel
sw-cisco9364(config-if)# no inherit port-profile mhou_profile_channel
exit
Message reported by command ::             no switchport mode
Warning: If the interface is configured with mappings, all the associated mappings would be removed when port mode is changed
sw-cisco9364(config-if)# exit
no interface port-channel57
sw-cisco9364(config)# no interface port-channel57
interface Eth1/7/1
sw-cisco9364(config)# interface Eth1/7/1
no lacp rate fast
sw-cisco9364(config-if)# no lacp rate fast
inherit port-profile mhou_profile
sw-cisco9364(config-if)# inherit port-profile mhou_profile
no shutdown
sw-cisco9364(config-if)# no shutdown
mtu 9216
sw-cisco9364(config-if)# mtu 9216
interface Eth1/7/2
sw-cisco9364(config-if)# interface Eth1/7/2
no lacp rate fast
sw-cisco9364(config-if)# no lacp rate fast
inherit port-profile mhou_profile
sw-cisco9364(config-if)# inherit port-profile mhou_profile
no shutdown
sw-cisco9364(config-if)# no shutdown
mtu 9216
sw-cisco9364(config-if)# mtu 9216
end
sw-cisco9364(config-if)# end
show port-channel summary
sw-cisco9364# show port-channel summary
end
Flags:  D - Down        P - Up in port-channel (members)
        I - Individual  H - Hot-standby (LACP only)
        s - Suspended   r - Module-removed
        b - BFD Session Wait
        S - Switched    R - Routed
        U - Up (port-channel)
        p - Up in delay-lacp mode (member)
        M - Not in use. Min-links not met
--------------------------------------------------------------------------------
Group Port-       Type     Protocol  Member Ports
      Channel
--------------------------------------------------------------------------------
47    Po47(SD)    Eth      NONE      --
48    Po48(SD)    Eth      NONE      --
sw-cisco9364# end
sw-cisco9364# 

6. check current port status of balance-tcp
# ovs-appctl bond/show
---- balance-tcp ----
bond_mode: balance-tcp
bond may use recirculation: no, Recirc-ID : -1
bond-hash-basis: 0
lb_output action: disabled, bond-id: -1
updelay: 0 ms
downdelay: 0 ms
lacp_status: configured
lacp_fallback_ab: true
active-backup primary: ens4f0
active member mac: 3c:fd:fe:bd:1c:a4(ens4f0)

member ens4f0: enabled
  may_enable: true

member ens4f1: enabled
  active member
  may_enable: true

7. check ovs-vswitchd.log
2023-06-18T08:51:17.502Z|00176|bond|DBG|bond balance-tcp: ens4f0 0kB (h85: 0kB + h209: 0kB), ens4f1 0kB
2023-06-18T08:51:27.696Z|00177|bond|DBG|bond balance-tcp: ens4f0 1kB (h85: 1kB + h209: 0kB), ens4f1 0kB
2023-06-18T08:51:35.794Z|00178|bond|INFO|member ens4f0: link state down
2023-06-18T08:51:35.794Z|00179|bond|INFO|member ens4f0: disabled
2023-06-18T08:51:35.794Z|00180|bond|INFO|bond balance-tcp: active member is now ens4f1
2023-06-18T08:51:36.711Z|00181|bond|INFO|member ens4f1: link state down
2023-06-18T08:51:36.711Z|00182|bond|INFO|member ens4f1: disabled
2023-06-18T08:51:36.711Z|00183|bond|INFO|bond balance-tcp: all members disabled
2023-06-18T08:51:36.712Z|00001|bond(revalidator3)|DBG|bond balance-tcp: member ens4f1: main thread has not yet enabled member
2023-06-18T08:51:36.718Z|00002|bond(revalidator3)|DBG|bond balance-tcp: member ens4f1: admissibility verdict is to drop pkt, active member: false, may_enable: false, enabled: false, LACP status: negotiated
2023-06-18T08:51:36.723Z|00003|bond(revalidator3)|DBG|bond balance-tcp: member ens4f1: admissibility verdict is to drop pkt, active member: false, may_enable: false, enabled: false, LACP status: negotiated
2023-06-18T08:51:37.725Z|00184|bond|DBG|bond balance-tcp:
2023-06-18T08:51:39.716Z|00004|bond(revalidator3)|DBG|bond balance-tcp: member ens4f1: active-backup bond received packet on backup member destined for 00:de:ad:96:02:02
2023-06-18T08:51:39.717Z|00005|bond(revalidator3)|DBG|bond balance-tcp: member ens4f1: admissibility verdict is to drop pkt, active member: false, may_enable: false, enabled: false, LACP status: configured
2023-06-18T08:51:48.792Z|00185|bond|INFO|member ens4f1: link state up
2023-06-18T08:51:48.792Z|00186|bond|INFO|member ens4f1: enabled
2023-06-18T08:51:48.792Z|00187|bond|INFO|bond balance-tcp: active member is now ens4f1
2023-06-18T08:51:54.088Z|00188|bond|INFO|member ens4f0: link state up
2023-06-18T08:51:54.088Z|00189|bond|INFO|member ens4f0: enabled
2023-06-18T08:54:04.410Z|00190|bond|INFO|member ens4f0: link state down
2023-06-18T08:54:04.411Z|00191|bond|INFO|member ens4f0: disabled
2023-06-18T08:54:09.136Z|00192|bond|INFO|member ens4f1: link state down
2023-06-18T08:54:09.136Z|00193|bond|INFO|member ens4f1: disabled
2023-06-18T08:54:09.136Z|00194|bond|INFO|bond balance-tcp: all members disabled
2023-06-18T08:54:09.137Z|00006|bond(revalidator3)|DBG|bond balance-tcp: member ens4f1: active-backup bond received packet on backup member destined for 00:de:ad:96:02:02
2023-06-18T08:54:09.137Z|00007|bond(revalidator3)|DBG|bond balance-tcp: member ens4f1: admissibility verdict is to drop pkt, active member: false, may_enable: true, enabled: false, LACP status: configured
2023-06-18T08:54:09.797Z|00195|bond|INFO|member ens4f0: link state up
2023-06-18T08:54:09.797Z|00196|bond|INFO|member ens4f0: enabled
2023-06-18T08:54:09.797Z|00197|bond|INFO|bond balance-tcp: active member is now ens4f0
2023-06-18T08:54:11.315Z|00198|bond|INFO|member ens4f0: link state down
2023-06-18T08:54:11.315Z|00199|bond|INFO|member ens4f0: disabled
2023-06-18T08:54:11.315Z|00200|bond|INFO|bond balance-tcp: all members disabled
2023-06-18T08:54:13.322Z|00201|bond|INFO|member ens4f0: link state up
2023-06-18T08:54:13.322Z|00202|bond|INFO|member ens4f0: enabled
2023-06-18T08:54:13.322Z|00203|bond|INFO|bond balance-tcp: active member is now ens4f0
2023-06-18T08:54:13.518Z|00204|bond|INFO|member ens4f0: link state down
2023-06-18T08:54:13.518Z|00205|bond|INFO|member ens4f0: disabled
2023-06-18T08:54:13.518Z|00206|bond|INFO|bond balance-tcp: all members disabled
2023-06-18T08:54:33.591Z|00207|bond|INFO|member ens4f1: link state up
2023-06-18T08:54:33.591Z|00208|bond|INFO|member ens4f1: enabled
2023-06-18T08:54:33.591Z|00209|bond|INFO|bond balance-tcp: active member is now ens4f1
2023-06-18T08:54:34.777Z|00210|bond|INFO|member ens4f1: link state down
2023-06-18T08:54:34.777Z|00211|bond|INFO|member ens4f1: disabled
2023-06-18T08:54:34.777Z|00212|bond|INFO|bond balance-tcp: all members disabled
2023-06-18T08:54:36.785Z|00213|bond|INFO|member ens4f1: link state up
2023-06-18T08:54:36.786Z|00214|bond|INFO|member ens4f1: enabled
2023-06-18T08:54:36.786Z|00215|bond|INFO|bond balance-tcp: active member is now ens4f1
2023-06-18T08:54:42.824Z|00216|bond|INFO|member ens4f0: link state up
2023-06-18T08:54:42.824Z|00217|bond|INFO|member ens4f0: enabled
2023-06-18T08:54:44.827Z|00218|bond|DBG|bond balance-tcp: ens4f1 0kB (h85: 0kB + h209: 0kB), ens4f0 0kB
2023-06-18T08:54:54.828Z|00219|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB), ens4f0 0kB
2023-06-18T08:55:04.830Z|00220|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB), ens4f0 0kB
2023-06-18T08:55:14.959Z|00221|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h225: 0kB + h209: 0kB), ens4f0 0kB
2023-06-18T08:55:24.959Z|00222|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h225: 0kB + h209: 0kB), ens4f0 0kB
2023-06-18T08:55:34.960Z|00223|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h225: 0kB), ens4f0 0kB
2023-06-18T08:55:45.354Z|00224|bond|DBG|bond balance-tcp: ens4f1 2kB (h85: 1kB + h130: 0kB + h166: 0kB + h209: 0kB + h225: 0kB), ens4f0 0kB
2023-06-18T08:55:55.356Z|00225|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h130: 0kB + h166: 0kB + h209: 0kB + h225: 0kB), ens4f0 0kB
2023-06-18T08:56:05.356Z|00226|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h130: 0kB + h166: 0kB + h225: 0kB), ens4f0 0kB
2023-06-18T08:56:15.362Z|00227|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h104: 0kB + h209: 0kB + h130: 0kB + h166: 0kB + h225: 0kB), ens4f0 0kB
2023-06-18T08:56:25.362Z|00228|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h104: 0kB + h130: 0kB + h166: 0kB), ens4f0 0kB
2023-06-18T08:56:35.364Z|00229|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h104: 0kB + h130: 0kB + h166: 0kB), ens4f0 0kB
2023-06-18T08:56:45.365Z|00230|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h104: 0kB + h130: 0kB + h166: 0kB), ens4f0 0kB
2023-06-18T08:56:55.371Z|00231|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h230: 0kB + h209: 0kB + h104: 0kB), ens4f0 0kB
2023-06-18T08:57:05.375Z|00232|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h230: 0kB + h104: 0kB), ens4f0 0kB
2023-06-18T08:57:15.378Z|00233|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h230: 0kB + h104: 0kB), ens4f0 0kB
2023-06-18T08:57:25.380Z|00234|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h230: 0kB), ens4f0 0kB
2023-06-18T08:57:35.383Z|00235|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h230: 0kB), ens4f0 0kB
2023-06-18T08:57:45.385Z|00236|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h230: 0kB), ens4f0 0kB
2023-06-18T08:57:55.386Z|00237|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB + h230: 0kB), ens4f0 0kB
2023-06-18T08:58:05.389Z|00238|bond|DBG|bond balance-tcp: ens4f1 1kB (h85: 1kB + h209: 0kB), ens4f0 0kB


Actual results:

1. traffic didn't migrate to ens4f0 which configure in bond-primary.
2. ovs-appctl still show ens4f1 as active member
 
Expected results:
1. traffic should migrate to ens4f0
2. ovs-appctl should show ens4f0 as active member

Additional info:

Comment 1 Mike Pattrick 2023-06-19 15:04:35 UTC
If the desired effect is to change the active member right away, there is a command for that:

> ovs-appctl bond/set-active-member balance-tcp ens4f0

Comment 2 mhou 2023-06-20 13:44:50 UTC
Hello Mike

From QE side, balance-tcp have a little different with active-backup mode. In balance-tcp mode, other_config:lacp-fallback-ab=true and other_config:bond-primary=ens4f0 was added before test port change to active-backup port. So when remove lacp channel group from switch side, The balance-tcp port is being reconstructed. And the object of the reconstruction is the active-backup port. I don't know if this refactoring corresponds to a kind of initialization. But it should not be interpreted as a running port.

If the port is not a running port. I can't conclude that this is expected behavior.(If the desired effect is to change the active member right away). I hope you can share more of your understanding so that QE don't think this is a bug.

Comment 3 mhou 2023-07-25 06:54:14 UTC
Hello Mike

This issue only occurred when configure ovs lacp as passive. When ovs lacp as active, other_config:lacp-fallback-ab=true and other_config:bond-primary=ens1f0np0 work according to the configuration. Please see the beaker job:

https://beaker.engineering.redhat.com/recipes/14281186#task163400891

ovs-bonding-balance-tcp-bond-primary-kernel-pf-bond-OVS-lacppassive-Switch-lacpactive --failed
ovs-bonding-balance-tcp-bond-primary-kernel-pf-bond-OVS-lacpactive-Switch-lacpactive -- pass
ovs-bonding-balance-tcp-bond-primary-kernel-pf-bond-OVS-lacpactive-Switch-lacppassive --pass


ovs-bonding-balance-tcp-bond-primary-dpdk-pf-bond-OVS-lacppassive-Switch-lacpactive --failed
ovs-bonding-balance-tcp-bond-primary-dpdk-pf-bond-OVS-lacpactive-Switch-lacpactive -- pass
ovs-bonding-balance-tcp-bond-primary-dpdk-pf-bond-OVS-lacpactive-Switch-lacppassive --pass