Reviewed: https://review.opendev.org/c/openstack/neutron/+/931495 Committed: https://opendev.org/openstack/neutron/commit/7109294ea0785caa33bcc10f1009eecfe850637b Submitter: "Zuul (22348)" Branch: master
commit 7109294ea0785caa33bcc10f1009eecfe850637b Author: Dmitriy Rabotyagov <dmitriy.rabotya...@cleura.com> Date: Fri Oct 4 17:17:31 2024 +0200 [OVN] Do not supply gateway_port if it's not bound to chassis There is no reason to define gateway_port explicitly while create NAT rules for FIPs in case where LRP is not bound to chassis. Doing so will result in broken flows making NAT rules effectivelly ignored. This is a case, when Logical_Router is pinned to chassis instead of LRP Closes-Bug: #2083527 Change-Id: Iafaed72b6ac295db88497e16c54090952c410194 ** 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/2083527 Title: [OVN] dnat_and_snat rules are setting GATEWAY_PORT when LR pinned to chassis Status in neutron: Fix Released Bug description: Description =========== The problem is that in scenario, where FIP is created in a geneve network, which is marked as access_as_external, has no impact on traffic when it's assigned to the another geneve network. So dnat_and_snat rules are ignored and only router snat rules are respected. This happens because dnat_and_snat are provided with GATEWAY_PORT which is not pinned to chassis, while Logical_Router is pinned to it instead. This way even after assigning FIP to the port - it keeps using inner LRPs external_gateway instead of Floating IP. This regression happened after implementation of the LR pinning to chassis: https://review.opendev.org/c/openstack/neutron/+/909194 which did not account for https://review.opendev.org/q/I802b6bd8c281cb6dacdee2e9c15285f069d4e04c How to reproduce ================ This can be reproduced in AIO/Devstack environment. 1. Have a "default" public network after deployment 2. Create a geneve network: * openstack network create G-net * openstack subnet create --network G-net G-subnet --subnet-range 192.168.0.0/24 3. Create the router and connect geneve network with public network * openstack router create --external-gateway public G-router * openstack router add subnet G-router G-subnet 4. Ensure you're allowing incoming traffic by default * openstack security group rule create default --ingress --remote-ip 0.0.0.0/0 5. Create a server in geneve network, ensure it has connectivity to the world * openstack server create --network G-net --image cirros --flavor tempest G-host 6. Now mark the geneve network as external * openstack network rbac create --type network --action access_as_external --target-all-projects G-net 7. Create a new Geneve subnet * openstack network create A-net * openstack subnet create A-subnet --network A-net --subnet-range 192.168.5.0/24 --dhcp --gateway 192.168.5.1 8. Create a router that will connect these 2 geneve networks: * openstack router create --external-gateway G-net A-router * openstack router add subnet A-router A-subnet 9. Create a server on a nested geneve network. Ensure it has access to the world and to your VM on the upper layer geneve through L3 Router SNAT: * openstack server create --network A-net --image cirros --flavor tempest2 A-host 10. Create and assign a floating IP to the nested host * openstack floating ip create --port $(openstack port list --server A-host -f value -c id) G-net 11. Run tcpdump on G-host and run ping from A-host to G-host. 12. Run ping from G-host towards A-host FIP Current behaviour ================= * Traffic to G-host is coming from L3 router external port rather then from FIP adddress. * A-host VM is not available through assigned FIP from G-host Intended behaviour ================== * Traffic to G-host from A-host is properly SRC-NAT-ed through the assigned to the port FIP * A-host is reachable from G-host through the FIP To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/2083527/+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