Bug 2220938

Summary: OVN Controller should not claim subport if its parent port is bound to a different chassis
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Ihar Hrachyshka <ihrachys>
Component: ovn22.12Assignee: Mohammad Heib <mheib>
Status: CLOSED ERRATA QA Contact: Ehsan Elahi <eelahi>
Severity: unspecified Docs Contact:
Priority: high    
Version: FDP 22.LCC: averdagu, bcafarel, ctrautma, jiji, jishi, mheib, mmichels
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: ovn22.12-22.12.1-96.el9fdp Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2024-06-10 00:08:19 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Comment 5 Jianlin Shi 2024-05-08 03:19:24 UTC
tested with following script:
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:127.0.0.1:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=127.0.0.1
systemctl restart ovn-controller 

ovn-nbctl ls-add ls1
ovn-nbctl lsp-add ls1 vm1 -- lsp-set-addresses vm1 "00:00:00:00:01:05 192.168.100.5"
ovn-nbctl lsp-add ls1 vm1.1 vm1 10 -- lsp-set-addresses vm1.1 "00:00:00:00:01:10 192.168.200.10"
ovn-nbctl lsp-add ls1 vm2 -- lsp-set-addresses vm2 "00:00:00:00:02:05 192.168.100.6"

ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal external_ids:iface-id=vm1
ip netns add vm1
ip link set vm1 netns vm1
ip netns exec vm1 ip link set vm1 address 00:00:00:00:01:05
ip netns exec vm1 ip link set vm1 up
ip netns exec vm1 ip addr add 192.168.100.5/24 dev vm1
ip netns exec vm1 ip route add default via 192.168.100.1
ip netns exec vm1 ip link add link vm1 name vm1.10 type vlan id 10
ip netns exec vm1 ip link set vm1.10 up

ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal external_ids:iface-id=vm2
ip netns add vm2
ip link set vm2 netns vm2
ip netns exec vm2 ip link set vm2 address 00:00:00:00:02:05
ip netns exec vm2 ip link set vm2 up
ip netns exec vm2 ip addr add 192.168.100.6/24 dev vm2
ip netns exec vm2 ip route add default via 192.168.100.1 

ovn-nbctl --wait=hv sync
ovn-sbctl show
ovn-nbctl --wait=hv set logical_switch_port vm1 options:requested-chassis=foo
ovn-sbctl show

reproduced on ovn22.12-22.12.1-95.el9:

[root@wsfd-advnetlab18 bug2220938]# rpm -qa | grep -E "openvswitch|ovn"
openvswitch-selinux-extra-policy-1.0-34.el9fdp.noarch
openvswitch3.2-3.2.0-73.el9fdp.x86_64
python3-openvswitch3.2-3.2.0-73.el9fdp.x86_64
ovn22.12-22.12.1-95.el9fdp.x86_64
ovn22.12-central-22.12.1-95.el9fdp.x86_64
ovn22.12-host-22.12.1-95.el9fdp.x86_64
+ ip netns exec vm2 ip route add default via 192.168.100.1
+ ovn-nbctl --wait=hv sync
+ ovn-sbctl show
Chassis hv1
    hostname: wsfd-advnetlab18.anl.eng.rdu2.dc.redhat.com
    Encap geneve
        ip: "127.0.0.1"
        options: {csum="true"}
    Port_Binding vm2
    Port_Binding vm1.1
    Port_Binding vm1
+ ovn-nbctl --wait=hv set logical_switch_port vm1 options:requested-chassis=foo
+ ovn-sbctl show
Chassis hv1
    hostname: wsfd-advnetlab18.anl.eng.rdu2.dc.redhat.com
    Encap geneve
        ip: "127.0.0.1"
        options: {csum="true"}
    Port_Binding vm2
    Port_Binding vm1.1

<=== vm1.1 is still claimed

Verified on ovn22.12-22.12.1-100.el9:
[root@wsfd-advnetlab18 bug2220938]# rpm -qa | grep -E "openvswitch|ovn"
openvswitch-selinux-extra-policy-1.0-34.el9fdp.noarch
openvswitch3.2-3.2.0-73.el9fdp.x86_64
python3-openvswitch3.2-3.2.0-73.el9fdp.x86_64
ovn22.12-22.12.1-100.el9fdp.x86_64
ovn22.12-central-22.12.1-100.el9fdp.x86_64
ovn22.12-host-22.12.1-100.el9fdp.x86_64
+ ip netns exec vm2 ip route add default via 192.168.100.1
+ ovn-nbctl --wait=hv sync
+ ovn-sbctl show
Chassis hv1
    hostname: wsfd-advnetlab18.anl.eng.rdu2.dc.redhat.com
    Encap geneve
        ip: "127.0.0.1"
        options: {csum="true"}
    Port_Binding vm1.1
    Port_Binding vm1
    Port_Binding vm2
+ ovn-nbctl --wait=hv set logical_switch_port vm1 options:requested-chassis=foo
+ ovn-sbctl show
Chassis hv1
    hostname: wsfd-advnetlab18.anl.eng.rdu2.dc.redhat.com
    Encap geneve
        ip: "127.0.0.1"
        options: {csum="true"}
    Port_Binding vm2

<=== vm1.1 is not claimed

Comment 7 errata-xmlrpc 2024-06-10 00:08:19 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (ovn22.12 bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2024:3732