Reviewed: https://review.opendev.org/c/openstack/neutron/+/938657 Committed: https://opendev.org/openstack/neutron/commit/1364715541247d9aa941f3305acef4b8f9e37274 Submitter: "Zuul (22348)" Branch: master
commit 1364715541247d9aa941f3305acef4b8f9e37274 Author: Vasyl Saienko <vsaie...@mirantis.com> Date: Tue Jan 7 16:28:55 2025 +0200 Install DVR src to MAC flow for AAPs Add missing flows in distributed virtual router for MAC address specified in allowed address pairs. Closes-Bug: #2093248 Change-Id: Ife280712d6f45704a96a77ec3bfc07daa2e8e229 ** Changed in: neutron Status: In Progress => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/2093248 Title: DVR flow is not installed for allowed address pairs mac in DVR_TO_SRC_MAC table=1 Status in neutron: Fix Released Bug description: We install DVR to src mac flow only for fixed IPs but not for AAPs. As result its not possible to communicate to IP address specified in AAP via distributed router. https://github.com/openstack/neutron/blob/f2c3e3e68c0fa77cff5cdd22d847e3f6ea7cdd84/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py#L569 Issue may be reproduced by creating the following topology. ump-01 (instance) --- netA (10.10.11.0/24) --- router ---- net B (192.168.0.0/24) ---- fw-01 (instance VIP: 192.168.0.10/32) Port for instance B1 +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | admin_state_up | UP | | allowed_address_pairs | ip_address='192.168.0.10/32', mac_address='00:00:5e:00:01:32' | | | ip_address='0.0.0.0/0', mac_address='fa:16:3e:0c:7d:6c' | | binding_host_id | vs-ps-y7eajqtcjwcm-2-v3xgrdrpb2ao-server-6rwxod6xp2yi | | binding_profile | | | binding_vif_details | bound_drivers.0='openvswitch', bridge_name='br-int', connectivity='l2', datapath_type='system', ovs_hybrid_plug='False', port_filter='True' | | binding_vif_type | ovs | | binding_vnic_type | normal | | created_at | 2025-01-08T11:13:05Z | | data_plane_status | None | | description | | | device_id | dd41d063-717f-4795-99b2-00783bce81f6 | | device_owner | compute:nova | | device_profile | None | | dns_assignment | fqdn='oc-virtual-lab-server-fw-01.openstack.internal.', hostname='oc-virtual-lab-server-fw-01', ip_address='192.168.0.63' | | dns_domain | | | dns_name | oc-virtual-lab-server-fw-01 | | extra_dhcp_opts | | | fixed_ips | ip_address='192.168.0.188', subnet_id='7425f886-b2db-4474-af23-dc8e164be243' | | hardware_offload_type | None | | hints | | | id | e71f0314-35a2-4a5c-8ac4-2216ded5addd | | ip_allocation | None | | mac_address | fa:16:3e:17:78:99 | | name | oc-virtual-lab-port-fw-01 | | network_id | fefa44ca-5b56-46f6-a31a-3e0a67b99ffe | | numa_affinity_policy | None | | port_security_enabled | True | | project_id | 59592b24e56641afa2d7dc705da006e7 | | propagate_uplink_status | None | | resource_request | None | | revision_number | 6 | | qos_network_policy_id | None | | qos_policy_id | None | | security_group_ids | d926157a-91f0-491b-980a-3ab33d7e4a50 | | status | ACTIVE | | tags | | | trunk_details | None | | updated_at | 2025-01-08T11:21:56Z | +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ port show for A1 +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | admin_state_up | UP | | allowed_address_pairs | | | binding_host_id | vs-ps-y7eajqtcjwcm-2-v3xgrdrpb2ao-server-6rwxod6xp2yi | | binding_profile | | | binding_vif_details | bound_drivers.0='openvswitch', bridge_name='br-int', connectivity='l2', datapath_type='system', ovs_hybrid_plug='False', port_filter='True' | | binding_vif_type | ovs | | binding_vnic_type | normal | | created_at | 2025-01-08T11:13:05Z | | data_plane_status | None | | description | | | device_id | c9844224-7154-4b91-a15f-92bb515964d7 | | device_owner | compute:nova | | device_profile | None | | dns_assignment | fqdn='oc-virtual-lab-server-jump-01.openstack.internal.', hostname='oc-virtual-lab-server-jump-01', ip_address='10.10.11.203' | | dns_domain | | | dns_name | oc-virtual-lab-server-jump-01 | | extra_dhcp_opts | | | fixed_ips | ip_address='10.10.11.203', subnet_id='6cc27493-bafc-4c93-9290-1cefd6c74bd0' | | hardware_offload_type | None | | hints | | | id | 006cca82-c38c-4311-a6db-0fc5acc6e977 | | ip_allocation | None | | mac_address | fa:16:3e:d1:4d:dc | | name | oc-virtual-lab-jump-port-jump-01 | | network_id | 8392d7ee-0c5f-46f6-805f-527afe68b5f8 | | numa_affinity_policy | None | | port_security_enabled | False | | project_id | 59592b24e56641afa2d7dc705da006e7 | | propagate_uplink_status | None | | resource_request | None | | revision_number | 4 | | qos_network_policy_id | None | | qos_policy_id | None | | security_group_ids | | | status | ACTIVE | | tags | | | trunk_details | None | | updated_at | 2025-01-08T11:13:36Z | +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ On instance fw-01 start VIP 192.168.0.10/32 with keepalived and following configuration ubuntu@oc-virtual-lab-server-fw-01:~$ cat /etc/keepalived/keepalived.conf vrrp_instance VI_1 { interface ens3 virtual_router_id 50 nopreempt priority 100 advert_int 1 virtual_ipaddress { 192.168.0.10/32 } notify_master "/etc/keepalived/notify_master.sh" use_vmac vmac_xmit_base } and sysctl settings ubuntu@oc-virtual-lab-server-fw-01:~$ cat /etc/sysctl.d/vrrp.conf net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=1 net.ipv4.conf.all.arp_filter=0 net.ipv4.conf.ens3.arp_filter = 1 When jump-01 and fw-01 are on same host connectivity works, but when they are on different hypervisors its failed due to missing dvr flow ovs-ofctl -O OpenFlow14 dump-flows br-int |grep table=1 cookie=0xf2a4abee1cb41511, duration=328.546s, table=1, n_packets=3179, n_bytes=231080, priority=20,dl_vlan=5,dl_dst=fa:16:3e:17:78:99 actions=set_field:fa:16:3e:59:84:ef->eth_src,goto_table:58 cookie=0xf2a4abee1cb41511, duration=336.209s, table=1, n_packets=116933, n_bytes=11456946, priority=1 actions=drop If add this flow connectivity is restored ovs-ofctl -O OpenFlow14 add-flow br-int 'table=1,priority=20,dl_vlan=5,dl_dst=00:00:5e:00:01:32,actions=set_field:fa:16:3e:59:84:ef->eth_src,goto_table:58' There is reproducer terraform script available, will require DVR environment with at least 2 compute hosts https://github.com/jumpojoy/something/tree/master/terraform/openstack_vrrp To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/2093248/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp