Bug 2078026
| Summary: | ovn-controller is not handling the IPv6 Neigh Adv message properly for mac learning | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux Fast Datapath | Reporter: | Numan Siddique <nusiddiq> |
| Component: | ovn-2021 | Assignee: | Numan Siddique <nusiddiq> |
| Status: | CLOSED ERRATA | QA Contact: | Ehsan Elahi <eelahi> |
| Severity: | urgent | Docs Contact: | |
| Priority: | urgent | ||
| Version: | FDP 21.K | CC: | ctrautma, ealcaniz, jiji, mmichels, xzhou, yinxu |
| Target Milestone: | --- | Keywords: | CustomerScenariosInitiative |
| Target Release: | FDP 22.D | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | ovn-2021-21.12.0-46 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2022-05-27 18:14:06 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
Numan Siddique
2022-04-22 21:48:07 UTC
Patch to fix this issue is submitted for review - https://patchwork.ozlabs.org/project/ovn/patch/20220423181452.3698721-1-numans@ovn.org/ Patch is merged u/s - https://github.com/ovn-org/ovn/commit/80187a8031b6abe01fb23657a9bed2372ae23af5 Reproduced on [root@bz-2078026 ~]# rpm -qa |grep -E 'ovn|openvswitch' ovn-2021-central-21.12.0-42.el8fdp.x86_64 openvswitch-selinux-extra-policy-1.0-28.el8fdp.noarch openvswitch2.15-2.15.0-93.el8fdp.x86_64 ovn-2021-21.12.0-42.el8fdp.x86_64 ovn-2021-host-21.12.0-42.el8fdp.x86_64 systemctl start ovn-northd ovn-nbctl set-connection ptcp:6641 ovn-sbctl set-connection ptcp:6642 systemctl start openvswitch ovs-vsctl set open . external_ids:system-id=hv1 ovs-vsctl set open . external_ids:ovn-remote=tcp:42.42.42.1:6642 ovs-vsctl set open . external_ids:ovn-encap-type=geneve ovs-vsctl set open . external_ids:ovn-encap-ip=42.42.42.1 systemctl start ovn-controller ovn-nbctl lr-add rtr ovn-nbctl lrp-add rtr rtr-ls1 00:00:00:00:01:00 42.42.42.1/24 2000::1/64 ovn-nbctl lrp-add rtr rtr-ls2 00:00:00:00:02:00 77.77.77.1/24 2002::1/64 ovn-nbctl ls-add ls1 ovn-nbctl lsp-add ls1 ls1-rtr ovn-nbctl lsp-set-addresses ls1-rtr 00:00:00:00:01:00 ovn-nbctl lsp-set-type ls1-rtr router ovn-nbctl lsp-set-options ls1-rtr router-port=rtr-ls1 ovn-nbctl lsp-add ls1 vm1 ovn-nbctl lsp-set-addresses vm1 00:00:00:00:00:01 ovn-nbctl ls-add ls2 ovn-nbctl lsp-add ls2 ls2-rtr ovn-nbctl lsp-set-addresses ls2-rtr 00:00:00:00:02:00 ovn-nbctl lsp-set-type ls2-rtr router ovn-nbctl lsp-set-options ls2-rtr router-port=rtr-ls2 ovn-nbctl lsp-add ls2 vm2 ovn-nbctl lsp-set-addresses vm2 00:00:00:00:00:02 ip netns add vm1 ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal 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 -6 addr add 2000::2/64 dev vm1 ip netns exec vm1 ip link set vm1 up ip netns exec vm1 ip route add default via 42.42.42.1 ip netns exec vm1 ip -6 route add default via 2000::1 ovs-vsctl set Interface vm1 external_ids:iface-id=vm1 ip netns add vm2 ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal ip link set vm2 netns vm2 ip netns exec vm2 ip link set vm2 address 00:00:00:00:00:02 ip netns exec vm2 ip addr add 77.77.77.2/24 dev vm2 ip netns exec vm2 ip -6 addr add 2002::2/64 dev vm2 ip netns exec vm2 ip link set vm2 up ip netns exec vm2 ip link set lo up ip netns exec vm2 ip route add default via 77.77.77.1 ip netns exec vm2 ip -6 route add default via 2002::1 ovs-vsctl set Interface vm2 external_ids:iface-id=vm2 ip netns exec vm1 ping 77.77.77.2 -c 3 [root@bz-2078026 ~]# ovn-sbctl dump-flows | grep -e lr_in_lookup_neighbor -e lr_in_learn_neighbor table=1 (lr_in_lookup_neighbor), priority=100 , match=(arp.op == 2), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;) table=1 (lr_in_lookup_neighbor), priority=100 , match=(inport == "rtr-ls1" && arp.spa == 42.42.42.0/24 && arp.op == 1), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;) table=1 (lr_in_lookup_neighbor), priority=100 , match=(inport == "rtr-ls2" && arp.spa == 77.77.77.0/24 && arp.op == 1), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;) table=1 (lr_in_lookup_neighbor), priority=100 , match=(nd_na), action=(reg9[2] = lookup_nd(inport, nd.target, nd.tll); next;) table=1 (lr_in_lookup_neighbor), priority=100 , match=(nd_ns), action=(reg9[2] = lookup_nd(inport, ip6.src, nd.sll); next;) table=1 (lr_in_lookup_neighbor), priority=0 , match=(1), action=(reg9[2] = 1; next;) table=2 (lr_in_learn_neighbor), priority=100 , match=(reg9[2] == 1), action=(next;) table=2 (lr_in_learn_neighbor), priority=90 , match=(arp), action=(put_arp(inport, arp.spa, arp.sha); next;) table=2 (lr_in_learn_neighbor), priority=90 , match=(nd_na), action=(put_nd(inport, nd.target, nd.tll); next;) table=2 (lr_in_learn_neighbor), priority=90 , match=(nd_ns), action=(put_nd(inport, ip6.src, nd.sll); next;) Verified on: [root@wsbz-2078026 ~]# rpm -qa |grep -E 'ovn|openvswitch' openvswitch2.15-2.15.0-93.el8fdp.x86_64 ovn-2021-central-21.12.0-46.el8fdp.x86_64 openvswitch-selinux-extra-policy-1.0-28.el8fdp.noarch ovn-2021-host-21.12.0-46.el8fdp.x86_64 ovn-2021-21.12.0-46.el8fdp.x86_64 [root@bz-2078026 ~]# ovn-sbctl dump-flows | grep -e lr_in_lookup_neighbor -e lr_in_learn_neighbor | sort table=1 (lr_in_lookup_neighbor), priority=0 , match=(1), action=(reg9[2] = 1; next;) table=1 (lr_in_lookup_neighbor), priority=100 , match=(arp.op == 2), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;) table=1 (lr_in_lookup_neighbor), priority=100 , match=(inport == "rtr-ls1" && arp.spa == 42.42.42.0/24 && arp.op == 1), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;) table=1 (lr_in_lookup_neighbor), priority=100 , match=(inport == "rtr-ls2" && arp.spa == 77.77.77.0/24 && arp.op == 1), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;) table=1 (lr_in_lookup_neighbor), priority=100 , match=(nd_na), action=(reg9[2] = lookup_nd(inport, nd.target, nd.tll); next;) table=1 (lr_in_lookup_neighbor), priority=100 , match=(nd_ns), action=(reg9[2] = lookup_nd(inport, ip6.src, nd.sll); next;) table=2 (lr_in_learn_neighbor), priority=100 , match=(reg9[2] == 1), action=(next;) table=2 (lr_in_learn_neighbor), priority=90 , match=(arp), action=(put_arp(inport, arp.spa, arp.sha); next;) table=2 (lr_in_learn_neighbor), priority=90 , match=(nd_na), action=(put_nd(inport, nd.target, nd.tll); next;) table=2 (lr_in_learn_neighbor), priority=90 , match=(nd_ns), action=(put_nd(inport, ip6.src, nd.sll); next;) table=2 (lr_in_learn_neighbor), priority=95 , match=(nd_na && nd.tll == 0), action=(put_nd(inport, nd.target, eth.src); next;) <======== target link layer option is zero in neighbor advertisement so ovn-controller can learn the mac from the packet's eth source 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-2022:4784 |