Bug 1947823
Summary: | [ovn] ARP responder flows for virtual ports in more than one chassis causing disruption and ARP suppression in the switches | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux Fast Datapath | Reporter: | Daniel Alvarez Sanchez <dalvarez> |
Component: | ovn2.13 | Assignee: | Numan Siddique <nusiddiq> |
Status: | CLOSED ERRATA | QA Contact: | Jianlin Shi <jishi> |
Severity: | high | Docs Contact: | |
Priority: | high | ||
Version: | FDP 21.B | CC: | averi, ctrautma, dcbw, dceara, eelahi, ffernand, fhallal, jishi, jmelvin, ljozsa, mchappel, mhofmann, nusiddiq, ralongi |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | ovn2.13-20.12.0-104 ovn-2021-21.03.0-33 | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2021-05-20 19:28:16 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: |
Description
Daniel Alvarez Sanchez
2021-04-09 10:31:15 UTC
Initial patch posted upstream: http://patchwork.ozlabs.org/project/ovn/patch/20210414133758.3410184-1-numans@ovn.org/ tested with following script: #!/bin/bash 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:20.0.175.25:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=20.0.175.25 systemctl restart ovn-controller ovn-nbctl ls-add ls ovn-nbctl lsp-add ls vm1 ovn-nbctl lsp-set-addresses vm1 00:00:00:00:00:01 ovn-nbctl lsp-add ls ls-vir ovn-nbctl lsp-set-addresses ls-vir "00:00:00:00:00:01 42.42.42.42" ovn-nbctl lsp-set-port-security ls-vir "00:00:00:00:00:01 42.42.42.42" ovn-nbctl lsp-set-type ls-vir virtual ovn-nbctl set logical_switch_port ls-vir options:virtual-ip=42.42.42.42 ovn-nbctl set logical_switch_port ls-vir options:virtual-parents=vm1 # Add an ACL that matches on ls-vir being bound locally. ovn-nbctl acl-add ls to-lport 1 'is_chassis_resident("ls-vir") && ip' allow # Bind an internal OVS interface to vm1. ip netns add vm1 ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal -- set Interface vm1 external_ids:iface-id=vm1 ip link set vm1 netns vm1 ip netns exec vm1 ip link set vm1 address 00:00:00:00:00:01 ip netns exec vm1 ip addr add 42.42.42.2/24 dev vm1 ip netns exec vm1 ip link set vm1 up ip netns exec vm1 ip r a default via 42.42.42.1 ip netns exec vm1 ip a a 42.42.42.42/32 dev vm1 ovn-nbctl --wait=hv sync # Inject a GARP from vm1 for 42.42.42.42: ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 sleep 1 # Check that an OF is generated for the ACL. ovs-ofctl --no-stats dump-flows br-int table=45 | grep priority=1001 # Release vm1, rebind vm1, reinject GARP for ls-vir, the OF is not reinserted # unless a full recompute is triggered. ovs-vsctl set interface vm1 external_ids:iface-id=foo ovs-ofctl --no-stats dump-flows br-int table=45 | grep priority=1001 ovs-vsctl set interface vm1 external_ids:iface-id=vm1 ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 ovs-ofctl --no-stats dump-flows br-int table=45 | grep priority=1001 reproduced on ovn2.13-20.12.0-95.el8fdp.x86_64: + ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 ARPING 42.42.42.42 from 42.42.42.42 vm1 Sent 1 probes (1 broadcast(s)) Received 0 response(s) + sleep 1 + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 cookie=0x3df02489, table=45, priority=1001,ipv6,metadata=0x1 actions=resubmit(,46) cookie=0x3df02489, table=45, priority=1001,ip,metadata=0x1 actions=resubmit(,46) + ovs-vsctl set interface vm1 external_ids:iface-id=foo + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 + ovs-vsctl set interface vm1 external_ids:iface-id=vm1 + ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 ARPING 42.42.42.42 from 42.42.42.42 vm1 Sent 1 probes (1 broadcast(s)) Received 0 response(s) + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 <=== no flow for acl added Verified on ovn2.13-central-20.12.0-104.el8fdp.x86_64: [root@wsfd-advnetlab21 bz1947823]# rpm -qa | grep ovn2.13 ovn2.13-central-20.12.0-104.el8fdp.x86_64 ovn2.13-20.12.0-104.el8fdp.x86_64 ovn2.13-host-20.12.0-104.el8fdp.x86_64 + ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 ARPING 42.42.42.42 from 42.42.42.42 vm1 Sent 1 probes (1 broadcast(s)) Received 0 response(s) + sleep 1 + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 cookie=0xfe7bff24, table=45, priority=1001,ipv6,metadata=0x1 actions=resubmit(,46) cookie=0xfe7bff24, table=45, priority=1001,ip,metadata=0x1 actions=resubmit(,46) + ovs-vsctl set interface vm1 external_ids:iface-id=foo + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 + ovs-vsctl set interface vm1 external_ids:iface-id=vm1 + ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 ARPING 42.42.42.42 from 42.42.42.42 vm1 Sent 1 probes (1 broadcast(s)) Received 0 response(s) + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 cookie=0xfe7bff24, table=45, priority=1001,ipv6,metadata=0x1 actions=resubmit(,46) cookie=0xfe7bff24, table=45, priority=1001,ip,metadata=0x1 actions=resubmit(,46) <=== flow added also verified on ovn-2021-21.03.0-21.el8fdp.x86_64: [root@wsfd-advnetlab21 bz1947823]# rpm -qa | grep ovn-2021 ovn-2021-21.03.0-21.el8fdp.x86_64 ovn-2021-host-21.03.0-21.el8fdp.x86_64 ovn-2021-central-21.03.0-21.el8fdp.x86_64 + ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 ARPING 42.42.42.42 from 42.42.42.42 vm1 Sent 1 probes (1 broadcast(s)) Received 0 response(s) + sleep 1 + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 cookie=0xe7fd05c3, table=45, priority=1001,ipv6,metadata=0x1 actions=resubmit(,46) cookie=0xe7fd05c3, table=45, priority=1001,ip,metadata=0x1 actions=resubmit(,46) + ovs-vsctl set interface vm1 external_ids:iface-id=foo + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 + ovs-vsctl set interface vm1 external_ids:iface-id=vm1 + ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 ARPING 42.42.42.42 from 42.42.42.42 vm1 Sent 1 probes (1 broadcast(s)) Received 0 response(s) + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 cookie=0xe7fd05c3, table=45, priority=1001,ipv6,metadata=0x1 actions=resubmit(,46) cookie=0xe7fd05c3, table=45, priority=1001,ip,metadata=0x1 actions=resubmit(,46) + ovn-appctl -t ovn-controller recompute + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 cookie=0xe7fd05c3, table=45, priority=1001,ipv6,metadata=0x1 actions=resubmit(,46) cookie=0xe7fd05c3, table=45, priority=1001,ip,metadata=0x1 actions=resubmit(,46) <=== flow added also verified on ovn2.13-20.12.0-104.el7fdp.x86_64: [root@wsfd-advnetlab16 bz1947823]# rpm -qa | grep ovn2.13 ovn2.13-host-20.12.0-104.el7fdp.x86_64 ovn2.13-central-20.12.0-104.el7fdp.x86_64 ovn2.13-20.12.0-104.el7fdp.x86_64 + ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 ARPING 42.42.42.42 from 42.42.42.42 vm1 Sent 1 probes (1 broadcast(s)) Received 0 response(s) + sleep 1 + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 cookie=0xa34c8767, table=45, priority=1001,ipv6,metadata=0x1 actions=resubmit(,46) cookie=0xa34c8767, table=45, priority=1001,ip,metadata=0x1 actions=resubmit(,46) + ovs-vsctl set interface vm1 external_ids:iface-id=foo + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 + ovs-vsctl set interface vm1 external_ids:iface-id=vm1 + ip netns exec vm1 arping -c 1 -A -I vm1 42.42.42.42 ARPING 42.42.42.42 from 42.42.42.42 vm1 Sent 1 probes (1 broadcast(s)) Received 0 response(s) + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 cookie=0xa34c8767, table=45, priority=1001,ipv6,metadata=0x1 actions=resubmit(,46) cookie=0xa34c8767, table=45, priority=1001,ip,metadata=0x1 actions=resubmit(,46) + ovn-appctl -t ovn-controller recompute + ovs-ofctl --no-stats dump-flows br-int table=45 + grep priority=1001 cookie=0xa34c8767, table=45, priority=1001,ipv6,metadata=0x1 actions=resubmit(,46) cookie=0xa34c8767, table=45, priority=1001,ip,metadata=0x1 actions=resubmit(,46) <=== flow added 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 (ovn 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-2021:2080 |