Bug 1983872
| Summary: | [OVN] sctp load_balancer doesn't work when use dpdk in ovn | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux Fast Datapath | Reporter: | ying xu <yinxu> |
| Component: | OVN | Assignee: | OVN Team <ovnteam> |
| Status: | CLOSED NEXTRELEASE | QA Contact: | ying xu <yinxu> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | FDP 21.F | CC: | ctrautma, i.maximets, jiji, jishi |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2024-02-14 21:13:10 UTC | 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: | |||
This issue is being closed as an automatic process due to the issue's age. If you wish to re-open this issue, please do so in Jira (https://issues.redhat.com) in the 'FDP' project. Please be sure to set the component to the latest OVN version where this issue is known to occur. If this is a feature request or improvement, please set the component to 'OVN'. FWIW, userspace datapath didn't have support for SCTP connection tracking until OVS 3.2. Should work with that version or later. If it's still a problem with openvswitch3.2+, please, open a Jira issue. |
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.