Bug 1893588 - [OVS-DPDK-BONDING][broadcom] create ovs dpdk bonding failed with var/run/openvswitch/db.sock: receive error: Connection reset by peer
Summary: [OVS-DPDK-BONDING][broadcom] create ovs dpdk bonding failed with var/run/open...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise Linux Fast Datapath
Classification: Red Hat
Component: openvswitch
Version: FDP 20.H
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
: ---
Assignee: Adrián Moreno
QA Contact: Hekai Wang
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-11-02 02:39 UTC by Hekai Wang
Modified: 2022-10-11 02:44 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-10-11 02:44:18 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker FD-918 0 None None None 2022-02-22 05:48:11 UTC

Description Hekai Wang 2020-11-02 02:39:35 UTC
Description of problem:
Can not set up ovs dpdk bonding with ovs openvswitch-2.9.7-1.el7fdn.x86_64 on broadcom interface .


Version-Release number of selected component (if applicable):

Distro RHEL-7.9-20200824.2

[root@dell-per740-10 ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	RedHatEnterpriseServer
Description:	Red Hat Enterprise Linux Server release 7.9 (Maipo)
Release:	7.9
Codename:	Maipo

[root@dell-per740-10 ~]# uname  -a
Linux dell-per740-10.rhts.eng.pek2.redhat.com 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux

[root@dell-per740-10 ~]# ovs-vsctl list Open_vSwitch
_uuid               : dd77ae47-1942-480d-bf34-3c5791c85325
bridges             : [1c05c9d2-581b-4d38-acd3-366ab4ab98c8]
cur_cfg             : 2
datapath_types      : [netdev, system]
db_version          : "7.15.1"
external_ids        : {hostname="dell-per740-10.rhts.eng.pek2.redhat.com", rundir="/var/run/openvswitch", system-id="995dc4d3-22cb-4e5c-aa61-380c49e9c0c1"}
iface_types         : [dpdk, dpdkr, dpdkvhostuser, dpdkvhostuserclient, geneve, gre, internal, lisp, patch, stt, system, tap, vxlan]
manager_options     : []
next_cfg            : 3
other_config        : {dpdk-init="true", dpdk-socket-mem="4096,4096", pmd-cpu-mask="0xa00000a00000", vhost-iommu-support="true"}
ovs_version         : "2.9.7"
ssl                 : []
statistics          : {}
system_type         : rhel
system_version      : "7.9"


[root@dell-per740-10 ~]# rpm -qa | grep dpdk
dpdk-tools-18.11.8-1.el7_8.x86_64
kernel-kernel-networking-ovs-dpdk-bonding-new-bonding-1.0-160.noarch
dpdk-18.11.8-1.el7_8.x86_64
[root@dell-per740-10 ~]# 





How reproducible:
100%

Steps to Reproduce:
Here a job link , just create ovs dpdk bonding 
https://beaker.engineering.redhat.com/jobs/4697478

install openvswitch
install dpdk and dpdk tools
enable dpdk port to vfio-pci driver 

bonding_nic() 
{
    local nic1_mac=$1
    local nic2_mac=$2
    local bond_mode=$3
    local mtu_val=$4
    
    # if [[ "$NIC_DRIVER" == "nfp" ]];then
    #     #here need update /etc/sysconfig/openvswitch
    #     sed -ie 's/OVS_USER_ID/#OVS_USER_ID/g' /etc/sysconfig/openvswitch 

    # fi
    enable_openvswitch_as_root_user

    local pmd_cpu_mask
    if i_am_server;then
        pmd_cpu_mask=$SERVER_PMD_CPU_MASK
    elif i_am_client;then
        pmd_cpu_mask=$CLIENT_PMD_CPU_MASK
    fi

    

	modprobe openvswitch
	systemctl stop openvswitch
	sleep 3
	systemctl start openvswitch
	sleep 3

	ovs-vsctl --if-exists del-br ovsbr0
	sleep 5

	ovs-vsctl set Open_vSwitch . other_config={}
	ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
	ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem="4096,4096"
	ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask="$pmd_cpu_mask"
    ovs-vsctl --no-wait set Open_vSwitch . other_config:vhost-iommu-support=true
	systemctl restart openvswitch
	sleep 3
	ovs-vsctl add-br ovsbr0 -- set bridge ovsbr0 datapath_type=netdev

    if [[ $NIC_DRIVER_NAME =~ mlx.* ]];then
        ovs-vsctl add-bond ovsbr0 dpdkbond dpdk0 dpdk1 "bond_mode=${bond_mode}" \
        -- set Interface dpdk0 type=dpdk options:dpdk-devargs=class=eth,mac=${nic1_mac} mtu_request=${mtu_val} \
        -- set Interface dpdk1 type=dpdk options:dpdk-devargs=class=eth,mac=${nic2_mac} mtu_request=${mtu_val}
    else
        ovs-vsctl add-bond ovsbr0 dpdkbond dpdk0 dpdk1 "bond_mode=${bond_mode}" \
        -- set Interface dpdk0 type=dpdk options:dpdk-devargs=${NIC1_BUS_INFO} \
        -- set Interface dpdk1 type=dpdk options:dpdk-devargs=${NIC2_BUS_INFO}
    fi

    ovs-vsctl set interface dpdk0 options:dpdk-lsc-interrupt=true
    ovs-vsctl set interface dpdk1 options:dpdk-lsc-interrupt=true

    #set dpdkbond port with vlan mode trunk and permit all vlans
    ovs-vsctl set Port dpdkbond vlan_mode=trunk
    ovs-vsctl list Port dpdkbond

    #set updelay and downdelay for test
    ovs-vsctl set Port dpdkbond bond_updelay=5
    ovs-vsctl set Port dpdkbond bond_downdelay=5

    local updelay=`ovs-vsctl list Port dpdkbond | grep bond_updelay | awk '{print $NF}'`
    local downdelay=`ovs-vsctl list Port dpdkbond | grep bond_downdelay | awk '{print $NF}'`
    rlAssertEquals "Check bond up delay time " "$updelay" "5"
    rlAssertEquals "Check bond down delay time " "$downdelay" "5"
    ovs-vsctl list Port dpdkbond
    ovs-vsctl set Port dpdkbond bond_updelay=0
    ovs-vsctl set Port dpdkbond bond_downdelay=0

    #set lacp_fallback_ab: and check
    #set bond-rebalance-interval
    if [[ $bond_mode == $OVS_BOND_MODE_BALANCE_TCP ]]
    then
        rlLog "Current mode ${bond_mode}"
        rlLog "set ther-config:lacp-fallback-ab"
        rlLog "set other_config:bond-rebalance-interval"
        ovs-vsctl set Port dpdkbond other-config:lacp-fallback-ab=true
        ovs-vsctl set Port dpdkbond other_config:bond-rebalance-interval=10000
    elif [[ $bond_mode == $OVS_BOND_MODE_BALANCE_SLB ]]
    then
        rlLog "set other_config:bond-rebalance-interval"
        ovs-vsctl set Port dpdkbond other_config:bond-rebalance-interval=10000
    else
        rlLog "Current mode ${bond_mode}"
    fi
	
    #ovs-vsctl add-port ovsbr0 vhost0 -- set interface vhost0 type=dpdkvhostuser
    ovs-vsctl add-port ovsbr0 vhost0 -- set interface vhost0 type=dpdkvhostuserclient options:vhost-server-path=/tmp/vhost0
	#chmod 777 /var/run/openvswitch/vhost0

	ovs-ofctl del-flows ovsbr0
	ovs-ofctl add-flow ovsbr0 actions=NORMAL

	sleep 2
	ovs-vsctl show
	sleep 5
	echo "after bonding nic, check the bond status"
	ovs-appctl bond/show
    sleep 30
    ovs-appctl bond/show
}

bonding_nic


1.
2.
3.

Actual results:
:: [ 20:57:01 ] :: [  BEGIN   ] :: Running 'bonding_nic 00:10:18:ad:1f:20 00:10:18:ad:1f:21 balance-tcp 1500'
ovs-vswitchd PID is: 5597
Setting up watches.
Watches established.
Setting up watches.
Watches established.
Setting up watches.
Watches established.
ovs-vswitchd PID is: 5791
Setting up watches.
Watches established.
2020-11-02T01:57:35Z|00002|jsonrpc|WARN|unix:/var/run/openvswitch/db.sock: receive error: Connection reset by peer
2020-11-02T01:57:35Z|00003|reconnect|WARN|unix:/var/run/openvswitch/db.sock: connection dropped (Connection reset by peer)
ovs-vswitchd PID is: 6046
Setting up watches.


Expected results:
It works fine .

Additional info:


Note You need to log in before you can comment on or make changes to this bug.