Bug 1788456
Summary: | [OVN] Traffic to a FIP assigned to an OVN Load Balancer IP doesn't work | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux Fast Datapath | Reporter: | Numan Siddique <nusiddiq> |
Component: | ovn2.11 | Assignee: | Numan Siddique <nusiddiq> |
Status: | CLOSED ERRATA | QA Contact: | Jianlin Shi <jishi> |
Severity: | high | Docs Contact: | |
Priority: | high | ||
Version: | RHEL 7.7 | CC: | apevec, chrisw, ctrautma, dalvarez, ekuris, lhh, majopela, mjozefcz, mmichels, nusiddiq, rhos-maint, rsafrono, scohen, stephenm, twilson |
Target Milestone: | --- | Keywords: | Triaged, ZStream |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | 2.11.1-29 | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | 1719291 | Environment: | |
Last Closed: | 2020-03-10 10:07:57 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: | |||
Bug Depends On: | |||
Bug Blocks: | 1719291, 1787077 |
Description
Numan Siddique
2020-01-07 09:33:05 UTC
the fix is available in 2.11.1-29. This should be available in FDP 20.B Hi Numan, could you give suggestions on how to reproduce the issue? thanks Hi Jianlin, Create a load balancer. For example : 10.0.0.4:80="10.0.0.10:80,20.0.0.10:80" Then create dnat_and_snat entry for logical port (which has 10.0.0.4). If suppose the provider network CIDR is 172.16.0.0/24, then 10.0.0.4 <-> 172.16.0.4 Then update the LB with another VIP - "172.16.0.4:80=10.0.0.10:80,20.0.0.10:80". From external, curl 172.16.0.4:80 and it should work. Let me know if you have more questions. reproduced on ovn2.11.1-20 with following steps: on one system: #!/bin/bash systemctl restart openvswitch systemctl restart ovn-northd ovn-nbctl set-connection ptcp:6641 ovn-sbctl set-connection ptcp:6642 ovs-vsctl set open . external-ids:system-id=hv0 external-ids:ovn-remote=tcp:20.0.30.26:6642 external-ids:ovn-encap-type=geneve external-ids:ovn-encap-ip=20.0.30.26 systemctl restart ovn-controller ovn-nbctl ls-add ls1 ovn-nbctl lsp-add ls1 ls1p1 ovn-nbctl lsp-set-addresses ls1p1 00:01:02:01:01:01 ovn-nbctl lsp-add ls1 ls1p2 ovn-nbctl lsp-set-addresses ls1p2 00:01:02:01:01:02 ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal ip netns add server0 ip link set vm1 netns server0 ip netns exec server0 ip link set lo up ip netns exec server0 ip link set vm1 up ip netns exec server0 ip link set vm1 address 00:01:02:01:01:01 ip netns exec server0 ip addr add 192.168.0.1/24 dev vm1 ovs-vsctl set Interface vm1 external_ids:iface-id=ls1p1 ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal ip netns add server1 ip link set vm2 netns server1 ip netns exec server1 ip link set lo up ip netns exec server1 ip link set vm2 up ip netns exec server1 ip link set vm2 address 00:01:02:01:01:02 ip netns exec server1 ip addr add 192.168.0.2/24 dev vm2 ovs-vsctl set Interface vm2 external_ids:iface-id=ls1p2 ovn-nbctl lr-add lr1 ovn-nbctl lrp-add lr1 lr1ls1 00:01:02:0d:01:01 192.168.0.254/24 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.0.254" ovn-nbctl lrp-add lr1 lr1p 00:01:02:0d:0f:01 172.16.1.254/24 ovn-nbctl ls-add public ovn-nbctl lsp-add public plr1 ovn-nbctl lsp-set-type plr1 router ovn-nbctl lsp-set-options plr1 router-port=lr1p ovn-nbctl lsp-set-addresses plr1 "00:01:02:0d:0f:01 172.16.1.254" ovn-nbctl lsp-add public ln_public ovn-nbctl lsp-set-type ln_public localnet ovn-nbctl lsp-set-addresses ln_public unknown ovn-nbctl lsp-set-options ln_public network_name=provider ovs-vsctl add-br br-provider ovs-vsctl set open . external-ids:ovn-bridge-mappings=provider:br-provider ip link set br-provider up #ovn-nbctl set logical_router_port lr1p options:redirect-chassis=hv0 ovn-nbctl lrp-set-gateway-chassis lr1p hv0 20 ovn-nbctl lrp-set-gateway-chassis lr1p hv1 10 ovn-nbctl lb-add lb0 192.168.2.1:80 192.168.0.1:80,192.168.0.2:80 ovn-nbctl lb-add lb0 172.16.1.10:80 192.168.0.1:80,192.168.0.2:80 ovn-nbctl lr-lb-add lr1 lb0 ip netns add client0 ip link add veth0_c0 type veth peer name veth0_c0_p ip link set veth0_c0 netns client0 ip netns exec client0 ip link set lo up ip netns exec client0 ip link set veth0_c0 up ip netns exec client0 ip addr add 172.16.1.1/24 dev veth0_c0 ip netns exec client0 ip route add default via 172.16.1.254 ovs-vsctl add-port br-provider veth0_c0_p ip link set veth0_c0_p up ovs-vsctl add-port br-provider ens4f4d1 ip netns exec server0 ip route add default via 192.168.0.254 ip netns exec server1 ip route add default via 192.168.0.254 ovn-nbctl lr-nat-add lr1 dnat_and_snat 172.16.1.10 192.168.2.1 on the other system: #!/bin/bash systemctl restart openvswitch ovs-vsctl set open . external-ids:system-id=hv1 external-ids:ovn-remote=tcp:20.0.30.26:6642 external-ids:ovn-encap-type=geneve external-ids:ovn-encap-ip=20.0.30.25 systemctl restart ovn-controller ovs-vsctl add-br br-provider ovs-vsctl set open . external-ids:ovn-bridge-mappings=provider:br-provider ip link set br-provider up ip netns add client1 ip link add veth0_c1 type veth peer name veth0_c1_p ip link set veth0_c1 netns client1 ip netns exec client1 ip link set lo up ip netns exec client1 ip link set veth0_c1 up ip netns exec client1 ip addr add 172.16.1.2/24 dev veth0_c1 ip netns exec client1 ip route add default via 172.16.1.254 ovs-vsctl add-port br-provider veth0_c1_p ip link set veth0_c1_p up ovs-vsctl add-port br-provider p4p2 after setup on ovn2.11.1-20: run arping on client0: ip netns exec client0 arping 172.16.1.10 -c 1 get two arp reply: [root@hp-dl380pg8-12 ovn2.11.1-20]# ip netns exec client0 tcpdump -i any -nnle arp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes 07:42:13.361136 Out 1a:87:42:f6:89:5c ethertype ARP (0x0806), length 44: Request who-has 172.16.1.10 (ff:ff:ff:ff:ff:ff) tell 172.16.1.1, length 28 07:42:13.361400 In 00:01:02:0d:0f:01 ethertype ARP (0x0806), length 44: Reply 172.16.1.10 is-at 00:01:02:0d:0f:01, length 28 07:42:13.361882 In 00:01:02:0d:0f:01 ethertype ARP (0x0806), length 62: Reply 172.16.1.10 is-at 00:01:02:0d:0f:01, length 46 <=== two arp reply verified on 2.11.1-32: [root@hp-dl380pg8-12 bz1788456]# ip netns exec client0 arping 172.16.1.10 -c 1 ARPING 172.16.1.10 from 172.16.1.1 veth0_c0 Unicast reply from 172.16.1.10 [00:01:02:0D:0F:01] 0.759ms Sent 1 probes (1 broadcast(s)) Received 1 response(s) [root@hp-dl380pg8-12 bz1788456]# ^C [root@hp-dl380pg8-12 bz1788456]# rpm -qa | grep -E "openvswitch|ovn" ovn2.11-2.11.1-32.el7fdp.x86_64 openvswitch-selinux-extra-policy-1.0-14.el7fdp.noarch ovn2.11-central-2.11.1-32.el7fdp.x86_64 openvswitch2.11-2.11.0-35.el7fdp.x86_64 ovn2.11-host-2.11.1-32.el7fdp.x86_64 [root@hp-dl380pg8-12 ovn2.11.1-32]# ip netns exec client0 tcpdump -i any -nnle arp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes 07:57:09.962138 Out be:a7:5e:a6:fd:a5 ethertype ARP (0x0806), length 44: Request who-has 172.16.1.10 (ff:ff:ff:ff:ff:ff) tell 172.16.1.1, length 28 07:57:09.962378 In 00:01:02:0d:0f:01 ethertype ARP (0x0806), length 44: Reply 172.16.1.10 is-at 00:01:02:0d:0f:01, length 28 <=== receive one arp reply 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, 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-2020:0750 |