Bug 1983872 - [OVN] sctp load_balancer doesn't work when use dpdk in ovn
Summary: [OVN] sctp load_balancer doesn't work when use dpdk in ovn
Keywords:
Status: NEW
Alias: None
Product: Red Hat Enterprise Linux Fast Datapath
Classification: Red Hat
Component: OVN
Version: FDP 21.F
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: ---
: ---
Assignee: OVN Team
QA Contact: ying xu
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-07-20 04:20 UTC by ying xu
Modified: 2023-07-13 07:25 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description ying xu 2021-07-20 04:20:28 UTC
Description of problem:
sctp load_balancer doesn't work when use dpdk in ovn

Version-Release number of selected component (if applicable):
# rpm -qa|grep ovn
ovn-2021-host-21.06.0-4.el8fdp.x86_64
ovn-2021-21.06.0-4.el8fdp.x86_64
ovn-2021-central-21.06.0-4.el8fdp.x86_64


How reproducible:
always

Steps to Reproduce:
server:
systemctl start openvswitch                          

systemctl start ovn-northd     
ovn-nbctl set-connection ptcp:6641                                         
ovn-sbctl set-connection ptcp:6642

ovs-vsctl set Open_vSwitch . other_config={}
ovs-vsctl  set Open_vSwitch . other_config:dpdk-init=true
ovs-vsctl  set Open_vSwitch . other_config:dpdk-lcore-mask=0x02
ovs-vsctl  set Open_vSwitch . other_config:dpdk-socket-mem="1024,1024"
systemctl restart openvswitch
pmd_cmd="python2 /root/dpdk/get_pmd.py"
cpu_mask=$($pmd_cmd --cmd host_pmd --nic ens1f1 --pmd 2)
ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=$cpu_mask

ovs-vsctl add-br br-phy -- set bridge br-phy datapath_type=netdev
#ovs-vsctl add-br br-phy
#ovs-vsctl add-port br-phy ens1f0
ip link set br-phy up
#ip link set ens1f0 up
ip addr add 20.0.173.25/24 dev br-phy
dpdk1=$(ethtool -i ens1f0 | grep bus-info | awk '{print $2}')
ovs-vsctl add-port br-phy dpdk1 -- set Interface dpdk1 type=dpdk options:dpdk-devargs=$dpdk1

#ovs-vsctl set bridge br-int datapath_type=netdev

ovs-vsctl set open . external_ids:system-id=hv1 external_ids:ovn-remote=tcp:20.0.173.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=20.0.173.25 external_ids:ovn-bridge-datapath-type=netdev
#ovs-vsctl set open . external_ids:system-id=hv1 external_ids:ovn-remote=tcp:20.0.173.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=20.0.173.25
#ovs-vsctl set open . external_ids:system-id=hv1 external_ids:ovn-remote=tcp:20.0.173.25:6642 external_ids:ovn-encap-type=vxlan external_ids:ovn-encap-ip=20.0.173.25 external_ids:ovn-bridge-datapath-type=netdev
systemctl restart ovn-controller

dpdk0=$(ethtool -i ens1f1 | grep bus-info | awk '{print $2}')
ovs-vsctl add-port br-int dpdk0 -- set Interface dpdk0 type=dpdk options:dpdk-devargs=$dpdk0
ovs-vsctl set interface dpdk0 external_ids:iface-id=ls1p1

ovn-nbctl ls-add ls1
ovn-nbctl lsp-add ls1 ls1p1
ovn-nbctl lsp-set-addresses ls1p1 "00:00:00:01:01:02 192.168.173.1 2001:173::1"
ovn-nbctl lsp-add ls1 ls1p2
ovn-nbctl lsp-set-addresses ls1p2 "00:00:00:01:02:02 192.168.173.2 2001:173::2"
ovn-nbctl lsp-add ls1 ls1p3
ovn-nbctl lsp-set-addresses ls1p3 "00:00:00:01:03:02 192.168.173.3 2001:173::3"
ovn-nbctl lsp-add ls1 ls1p4
ovn-nbctl lsp-set-addresses ls1p4 "00:00:00:01:04:02 192.168.173.4 2001:173::4"

ovs-vsctl add-port br-int ls1p2 -- set interface ls1p2 type=internal external_ids:iface-id=ls1p2

ip netns add ls1p2
ip link set ls1p2 netns ls1p2
ip netns exec ls1p2 ip link set ls1p2 address 00:00:00:01:02:02
ip netns exec ls1p2 ip link set ls1p2 up
ip netns exec ls1p2 ip addr add 192.168.173.2/24 dev ls1p2
ip netns exec ls1p2 ip addr add 2001:173::2/64 dev ls1p2

ovs-vsctl add-port br-int ls1p4 -- set interface ls1p4 type=internal external_ids:iface-id=ls1p4

ip netns add ls1p4
ip link set ls1p4 netns ls1p4
ip netns exec ls1p4 ip link set ls1p4 address 00:00:00:01:04:02
ip netns exec ls1p4 ip link set ls1p4 up
ip netns exec ls1p4 ip addr add 192.168.173.4/24 dev ls1p4
ip netns exec ls1p4 ip addr add 2001:173::4/64 dev ls1p4

ovn-nbctl lr-add lr1
ovn-nbctl lrp-add lr1 lr1ls1 00:01:02:0d:01:01 192.168.173.254/24 2001:173::a/64
ovn-nbctl lsp-add ls1 ls1lr1
ovn-nbctl lsp-set-type ls1lr1 router
ovn-nbctl lsp-set-options ls1lr1 router-port=lr1ls1
ovn-nbctl lsp-set-addresses ls1lr1 "00:01:02:0d:01:01 192.168.173.254 2001:173::a"

uuid=`ovn-nbctl create load_balancer vips:192.168.173.5="192.168.173.1,192.168.173.2
ovn-nbctl set load_balancer $uuid vips:'"192.168.173.254:8000"'='"192.168.173.1:80,192.168.173.2:80"'
ovn-nbctl set load_balancer $uuid vips:'"192.168.1.10:1234"'='"192.168.173.4:8000,192.168.173.2:8000"'
ovn-nbctl set logical_switch ls1 load_balancer=$uuid

ovn-nbctl set load_balancer $uuid protocol=sctp




client:
systemctl start openvswitch

ovs-vsctl set Open_vSwitch . other_config={}
ovs-vsctl  set Open_vSwitch . other_config:dpdk-init=true
ovs-vsctl  set Open_vSwitch . other_config:dpdk-lcore-mask=0x02
ovs-vsctl  set Open_vSwitch . other_config:dpdk-socket-mem="1024,1024"
systemctl restart openvswitch
pmd_cmd="python2 /root/dpdk/get_pmd.py"
cpu_mask=$($pmd_cmd --cmd host_pmd --nic ens1f1 --pmd 2)
ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=$cpu_mask

ovs-vsctl add-br br-phy -- set bridge br-phy datapath_type=netdev
#ovs-vsctl add-br br-phy
#ovs-vsctl add-port br-phy ens1f0
ip link set br-phy up
#ip link set ens1f0 up
ip addr add 20.0.173.26/24 dev br-phy
dpdk1=$(ethtool -i ens1f0 | grep bus-info | awk '{print $2}')
ovs-vsctl add-port br-phy dpdk1 -- set Interface dpdk1 type=dpdk options:dpdk-devargs=$dpdk1



ovs-vsctl set open . external_ids:system-id=hv0 external_ids:ovn-remote=tcp:20.0.173.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=20.0.173.26 external_ids:ovn-bridge-datapath-type=netdev
#ovs-vsctl set open . external_ids:system-id=hv0 external_ids:ovn-remote=tcp:20.0.173.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=20.0.173.26
#ovs-vsctl set open . external_ids:system-id=hv0 external_ids:ovn-remote=tcp:20.0.173.25:6642 external_ids:ovn-encap-type=vxlan external_ids:ovn-encap-ip=20.0.173.26 external_ids:ovn-bridge-datapath-type=netdev
systemctl start ovn-controller 

ovs-vsctl add-port br-int ls1p3 -- set interface ls1p3 type=internal external_ids:iface-id=ls1p3

ip netns add ls1p3
ip link set ls1p3 netns ls1p3
ip netns exec ls1p3 ip link set ls1p3 address 00:00:00:01:03:02
ip netns exec ls1p3 ip link set ls1p3 up
ip netns exec ls1p3 ip addr add 192.168.173.3/24 dev ls1p3
ip netns exec ls1p3 ip addr add 2001:173::3/64 dev ls1p3
ip netns add ls1p1
ip link set ens1f1 netns ls1p1
ip netns exec ls1p1 ip link set ens1f1 address 00:00:00:01:01:02
ip netns exec ls1p1 ip link set ens1f1 up
ip netns exec ls1p1 ip addr add 192.168.173.1/24 dev ens1f1
ip netns exec ls1p1 ip addr add 2001:173::1/64 dev ens1f1



then, start ncat listening on server:
ip netns exec ls1p2 ncat --sctp -l 80 -k >> sctp.log&

and client:
ip netns exec ls1p1 ncat --sctp -l 80 -k >> sctp.log&

then, from ls1p4 start sctp ncat,
 ip netns exec ls1p4 ncat --sctp 192.168.173.254 8000 <<< s
Ncat: Connection refused.


Actual results:
sctp  connection fail.

Expected results:
sctp LB work.


Additional info:
tried tcp and udp, work normally.


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