Uploaded image for project: 'Red Hat OpenStack Services on OpenShift'
  1. Red Hat OpenStack Services on OpenShift
  2. OSPRH-17095

[DVR + VLAN tenant + SNAT] Connectivity issues from tenant VM to external provider VM

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • None
    • openstack-neutron
    • None
    • False
    • Hide

      None

      Show
      None
    • False
    • ?
    • rhos-connectivity-neutron
    • None
    • Important

      To Reproduce Steps to reproduce the behavior:

      1. Ensure distributed floating IP is enabled, i.e [ovn]/enable_distributed_floatin_ip=True
      2. Ensure tenant network types set to vlan i.e [ml2]/tenant_network_types=vlan,flat
      3. Create a external provider network of vlan or flat provider_network_type
      4. Create a router(enable-snat) with external-gateway=<external provider network> and add tenant network as subnet
      5. Create a tenant network and subnet
      6. Create 2 VMs connected to tenant network(add Floating IP to one of these in order to access) and one vm to external the provider network
      7. Try to ping Floating IP and VM connected to external provider network

      Expected behavior

      • Connectivity should work as in ml2/ovs or ml2/ovn geneve network

      Actual behavior

      • Connectivity broken
      (overcloud) [stack@undercloud-0 ~]$ openstack network show public
      opensta+---------------------------+--------------------------------------+
      | Field                     | Value                                |
      +---------------------------+--------------------------------------+
      | admin_state_up            | UP                                   |
      | availability_zone_hints   |                                      |
      | availability_zones        |                                      |
      | created_at                | 2025-05-26T11:27:29Z                 |
      | description               |                                      |
      | dns_domain                |                                      |
      | id                        | b30369a5-fff2-4e9b-a3e2-d4f90392c118 |
      | ipv4_address_scope        | None                                 |
      | ipv6_address_scope        | None                                 |
      | is_default                | False                                |
      | is_vlan_transparent       | True                                 |
      | mtu                       | 1500                                 |
      | name                      | public                               |
      | port_security_enabled     | True                                 |
      | project_id                | 656276275e57467fb50a11faa541e5aa     |
      | provider:network_type     | vlan                                 |
      | provider:physical_network | datacentre                           |
      | provider:segmentation_id  | 408                                  |
      | qos_policy_id             | None                                 |
      | revision_number           | 2                                    |
      | router:external           | External                             |
      | segments                  | None                                 |
      | shared                    | True                                 |
      | status                    | ACTIVE                               |
      | subnets                   | 86845913-8ffe-4b94-ae7b-d6374034e5b3 |
      | tags                      |                                      |
      | updated_at                | 2025-05-26T11:27:37Z                 |
      +---------------------------+--------------------------------------+
      
      (overcloud) [stack@undercloud-0 ~]$ openstack subnet show external_subnet
      +----------------------+--------------------------------------+
      | Field                | Value                                |
      +----------------------+--------------------------------------+
      | allocation_pools     | 10.46.54.25-10.46.54.59              |
      | cidr                 | 10.46.54.0/26                        |
      | created_at           | 2025-05-26T11:27:37Z                 |
      | description          |                                      |
      | dns_nameservers      |                                      |
      | dns_publish_fixed_ip | None                                 |
      | enable_dhcp          | True                                 |
      | gateway_ip           | 10.46.54.62                          |
      | host_routes          |                                      |
      | id                   | 86845913-8ffe-4b94-ae7b-d6374034e5b3 |
      | ip_version           | 4                                    |
      | ipv6_address_mode    | None                                 |
      | ipv6_ra_mode         | None                                 |
      | name                 | external_subnet                      |
      | network_id           | b30369a5-fff2-4e9b-a3e2-d4f90392c118 |
      | prefix_length        | None                                 |
      | project_id           | 656276275e57467fb50a11faa541e5aa     |
      | revision_number      | 0                                    |
      | segment_id           | None                                 |
      | service_types        |                                      |
      | subnetpool_id        | None                                 |
      | tags                 |                                      |
      | updated_at           | 2025-05-26T11:27:37Z                 |
      +----------------------+--------------------------------------+
      
      (overcloud) [stack@undercloud-0 ~]$ test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
      
      (overcloud) [stack@undercloud-0 ~]$ openstack keypair create --public-key ~/.ssh/id_rsa.pub default
      # create basic security group to allow ssh/ping/dns (overcloud) [stack@undercloud-0 ~]$ openstack security group create basic
      # allow ssh (overcloud) [stack@undercloud-0 ~]$ openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
      # allow ping (overcloud) [stack@undercloud-0 ~]$ openstack security group rule create --protocol icmp basic
      # allow DNS (overcloud) [stack@undercloud-0 ~]$ openstack security group rule create --protocol udp --dst-port 53:53 basic
      
      # Create net1 of type vlan provider network
      (overcloud) [stack@undercloud-0 ~]$ openstack network create net1
      (overcloud) [stack@undercloud-0 ~]$ openstack subnet create subnet1 --network net1 --subnet-range 192.0.2.0/24
      (overcloud) [stack@undercloud-0 ~]$ openstack router create router-temp
      (overcloud) [stack@undercloud-0 ~]$ openstack router set router-temp --external-gateway public
      (overcloud) [stack@undercloud-0 ~]$ openstack router add subnet router-temp subnet1
      (overcloud) [stack@undercloud-0 ~]$ openstack server create --nic net-id=net1 --image custom_neutron_guest_rhel_8.4.qcow2 --security-group basic --key-name default --flavor guest_image testvm --min 2 --max 2
      
      # net1 is tenant vlan network
      (overcloud) [stack@undercloud-0 ~]$ openstack server create --nic net-id=public --image custom_neutron_guest_rhel_8.4.qcow2 --security-group basic --key-name default --flavor guest_image testvmpub
      
      (overcloud) [stack@undercloud-0 ~]$ openstack server add floating ip testvm-1 10.46.54.32
      
      (overcloud) [stack@undercloud-0 ~]$ openstack server list --long
      +--------------------------------------+-----------+--------+------------+-------------+-------------------------------+-------------------------------------+--------------------------------------+-------------+-------------------+----------------------------+------------+
      | ID                                   | Name      | Status | Task State | Power State | Networks                      | Image Name                          | Image ID                             | Flavor      | Availability Zone | Host                       | Properties |
      +--------------------------------------+-----------+--------+------------+-------------+-------------------------------+-------------------------------------+--------------------------------------+-------------+-------------------+----------------------------+------------+
      | a4dbbd33-15b7-46a8-8649-55955b6273f7 | testvmpub | ACTIVE | None       | Running     | public=10.46.54.40            | custom_neutron_guest_rhel_8.4.qcow2 | 9507a026-e85f-45ca-a6d0-7cb05f3f4897 | guest_image | nova              | computesriov-1.localdomain |            |
      | c59f4686-4d87-47c6-9b65-b81f10cf9a64 | testvm-2  | ACTIVE | None       | Running     | net1=192.0.2.118              | custom_neutron_guest_rhel_8.4.qcow2 | 9507a026-e85f-45ca-a6d0-7cb05f3f4897 | guest_image | nova              | computesriov-0.localdomain |            |
      | ec5a35df-6e05-4365-be57-a981980844bd | testvm-1  | ACTIVE | None       | Running     | net1=10.46.54.32, 192.0.2.166 | custom_neutron_guest_rhel_8.4.qcow2 | 9507a026-e85f-45ca-a6d0-7cb05f3f4897 | guest_image | nova              | computesriov-1.localdomain |            |
      +--------------------------------------+-----------+--------+------------+-------------+-------------------------------+-------------------------------------+--------------------------------------+-------------+-------------------+----------------------------+------------+
      
      
      (overcloud) [stack@undercloud-0 ~]$ scp .ssh/id_rsa cloud-user@10.46.54.32:~
      Warning: Permanently added '10.46.54.32' (ED25519) to the list of known hosts.
      id_rsa                                                                                                                                                                                                                                        100% 2635     4.1MB/s   00:00    
      (overcloud) [stack@undercloud-0 ~]$ ssh cloud-user@10.46.54.32
      Warning: Permanently added '10.46.54.32' (ED25519) to the list of known hosts.
      Activate the web console with: systemctl enable --now cockpit.socket
      
      This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
      To register this system, run: insights-client --register
      
      Last login: Tue May 27 06:46:57 2025 from 10.46.4.29
      [cloud-user@testvm-1 ~]$ ssh -i id_rsa 192.0.2.118
      Activate the web console with: systemctl enable --now cockpit.socket
      
      This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
      To register this system, run: insights-client --register
      
      Last login: Tue May 27 06:49:10 2025 from 192.0.2.166
      
      # From testvm-2 which is not connected to FIP, issue can be seen i.e it can't access FIP and VM directly connected to provider network but can access external gateway and external network like 8.8.8.8 
      [cloud-user@testvm-2 ~]$ ping -c 1 10.46.54.32
      PING 10.46.54.32 (10.46.54.32) 56(84) bytes of data.
      
      --- 10.46.54.32 ping statistics ---
      1 packets transmitted, 0 received, 100% packet loss, time 0ms
      
      [cloud-user@testvm-2 ~]$ ping -c 1 10.46.54.40
      PING 10.46.54.40 (10.46.54.40) 56(84) bytes of data.
      
      --- 10.46.54.40 ping statistics ---
      1 packets transmitted, 0 received, 100% packet loss, time 0ms
      
      [cloud-user@testvm-2 ~]$ ping -c 1 10.46.54.62
      PING 10.46.54.62 (10.46.54.62) 56(84) bytes of data.
      64 bytes from 10.46.54.62: icmp_seq=1 ttl=63 time=24.8 ms
      --- 10.46.54.62 ping statistics ---
      1 packets transmitted, 1 received, 0% packet loss, time 0ms
      rtt min/avg/max/mdev = 24.845/24.845/24.845/0.000 ms
      
      [cloud-user@testvm-2 ~]$ ping -c 1 8.8.8.8
      PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
      64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=4.20 ms
      
      --- 8.8.8.8 ping statistics ---
      1 packets transmitted, 1 received, 0% packet loss, time 0ms
      rtt min/avg/max/mdev = 4.197/4.197/4.197/0.000 ms
      [cloud-user@testvm-2 ~]$ logout
      Connection to 192.0.2.118 closed.
      
      # From testvm-1(which is connected to distributed Floating IP) it works fine, this is connected to distributed FIP
      [cloud-user@testvm-1 ~]$ ping -c 1 10.46.54.40
      PING 10.46.54.40 (10.46.54.40) 56(84) bytes of data.
      64 bytes from 10.46.54.40: icmp_seq=1 ttl=63 time=1.17 ms
      
      --- 10.46.54.40 ping statistics ---
      1 packets transmitted, 1 received, 0% packet loss, time 0ms
      rtt min/avg/max/mdev = 1.174/1.174/1.174/0.000 ms
      [cloud-user@testvm-1 ~]$ logout
      Connection to 10.46.54.32 closed.
      (overcloud) [stack@undercloud-0 ~]$
      
      
      [root@controller-0 /]# ovn-nbctl show
      switch 800358ad-1bb0-4011-acc4-3c0ccf4614a5 (neutron-00e3093a-0014-4be2-9de9-d874e27dca55) (aka ovn_mac_addr_net)
          port provnet-1c8b4529-0d92-49ff-8367-92d195af1011
              type: localnet
              tag: 428
              addresses: ["unknown"]
          port f3789c6c-aafd-4c3b-aa2c-96108fd2ba2b (aka computesriov-1_ovn_physnet_datacentre)
              addresses: ["fa:16:3e:26:16:81"]
          port 308fb305-b230-4d1c-bed2-017b214c7a0c
              type: localport
              addresses: ["fa:16:3e:0c:ac:71"]
          port ac0bcaaa-c128-454e-ade4-ba85e8ad2b45 (aka computesriov-0_ovn_physnet_datacentre)
              addresses: ["fa:16:3e:4a:8d:2b"]
      switch d336e95a-0591-4eb6-b671-bf49fd393d2b (neutron-c9995400-aad3-4508-afed-7c53362a6c22) (aka net1)
          port 739da310-58bd-43e2-9085-276ec50321a7
              type: localport
              addresses: ["fa:16:3e:3f:a4:37 192.0.2.2"]
          port 89276377-a456-489b-a0ed-ba4242651be9
              addresses: ["fa:16:3e:00:4b:b5 192.0.2.166"]
          port 22fda294-0432-4f5b-9f00-be20a72fb700
              type: router
              router-port: lrp-22fda294-0432-4f5b-9f00-be20a72fb700
          port 641ebfcc-5f05-4eac-b54c-5b2a3083f97c
              addresses: ["fa:16:3e:7d:29:b0 192.0.2.118"]
          port provnet-f8dbe517-64f9-4c5d-b98b-0f9ddcf020fd
              type: localnet
              tag: 434
              addresses: ["unknown"]
      switch 4485f913-d6db-42f3-b19d-c9c0e643903b (neutron-b30369a5-fff2-4e9b-a3e2-d4f90392c118) (aka public)
          port dbfdef24-a996-431f-b2ce-55a9b069edde
              addresses: ["fa:16:3e:76:9d:a7 10.46.54.40"]
          port 724fa146-4d31-4b5b-ae64-354ee771d486
              type: localport
              addresses: ["fa:16:3e:cd:08:c1 10.46.54.25"]
          port 16d4cccd-9fc0-40ac-9db9-0668d3f2664b
              type: router
              router-port: lrp-16d4cccd-9fc0-40ac-9db9-0668d3f2664b
          port provnet-2f657bee-ed30-428d-a913-76f579b9e8a6
              type: localnet
              tag: 408
              addresses: ["unknown"]
      router 9a1c439c-2cbc-41fa-8860-f869d826761c (neutron-348882b3-52dc-4654-8dde-c7cfbade6086) (aka router-temp)
          port lrp-16d4cccd-9fc0-40ac-9db9-0668d3f2664b
              mac: "fa:16:3e:9a:8f:5a"
              networks: ["10.46.54.58/26"]
              gateway chassis: [44e6e6d8-a620-427a-a0ca-b45f72217bad 951e938b-f77f-464f-9051-b91dcc707b59 0aee5994-648e-4c99-b301-3422048e9318]
          port lrp-22fda294-0432-4f5b-9f00-be20a72fb700
              mac: "fa:16:3e:6e:4a:43"
              networks: ["192.0.2.1/24"]
          nat 0844e52b-b611-4d8f-b058-390a51d06f3b
              external ip: "10.46.54.32"
              logical ip: "192.0.2.166"
              type: "dnat_and_snat"
          nat ff7fc214-76db-4d51-92da-7a2f39e7aeab
              external ip: "10.46.54.58"
              logical ip: "192.0.2.0/24"
              type: "snat"
      
      [root@controller-0 /]# ovn-nbctl list nat
      _uuid               : ff7fc214-76db-4d51-92da-7a2f39e7aeab
      allowed_ext_ips     : []
      exempted_ext_ips    : []
      external_ids        : {}
      external_ip         : "10.46.54.58"
      external_mac        : []
      external_port_range : ""
      gateway_port        : []
      logical_ip          : "192.0.2.0/24"
      logical_port        : []
      options             : {}
      type                : snat
      
      _uuid               : 0844e52b-b611-4d8f-b058-390a51d06f3b
      allowed_ext_ips     : []
      exempted_ext_ips    : []
      external_ids        : {"neutron:fip_external_mac"="fa:16:3e:5a:dd:70", "neutron:fip_id"="13fc454e-d80c-484b-b652-774afce6ca67", "neutron:fip_network_id"="b30369a5-fff2-4e9b-a3e2-d4f90392c118", "neutron:fip_port_id"="89276377-a456-489b-a0ed-ba4242651be9", "neutron:revision_number"="10", "neutron:router_name"=neutron-348882b3-52dc-4654-8dde-c7cfbade6086}
      external_ip         : "10.46.54.32"
      external_mac        : "fa:16:3e:5a:dd:70"
      external_port_range : ""
      gateway_port        : []
      logical_ip          : "192.0.2.166"
      logical_port        : "89276377-a456-489b-a0ed-ba4242651be9"
      options             : {}
      type                : dnat_and_snat
      
      [root@controller-0 /]# ovn-sbctl --no-leader-only show
      Chassis "0aee5994-648e-4c99-b301-3422048e9318"
          hostname: controller-0.localdomain
          Encap geneve
              ip: "10.20.2.67"
              options: {csum="true"}
      Chassis "951e938b-f77f-464f-9051-b91dcc707b59"
          hostname: controller-2.localdomain
          Encap geneve
              ip: "10.20.2.61"
              options: {csum="true"}
          Port_Binding cr-lrp-16d4cccd-9fc0-40ac-9db9-0668d3f2664b
      Chassis "44e6e6d8-a620-427a-a0ca-b45f72217bad"
          hostname: controller-1.localdomain
          Encap geneve
              ip: "10.20.2.77"
              options: {csum="true"}
      Chassis "bf56c475-f609-4af1-9ebf-ea435a2f0def"
          hostname: computesriov-1.localdomain
          Encap geneve
              ip: "10.20.2.79"
              options: {csum="true"}
          Port_Binding "89276377-a456-489b-a0ed-ba4242651be9"
          Port_Binding "dbfdef24-a996-431f-b2ce-55a9b069edde"
      Chassis "5baf883b-8cf7-49c3-96c9-7c384645dc02"
          hostname: computesriov-0.localdomain
          Encap geneve
              ip: "10.20.2.62"
              options: {csum="true"}
          Port_Binding "641ebfcc-5f05-4eac-b54c-5b2a3083f97c"

      Device Info (please complete the following information):

      • Seen in Both 17.1 and 18.0, not checked 16.2 yet

      Bug impact

      • Users will not be able to get connectivity in above scenario

      Known workaround

      • None as of now

      Additional context

      Related slack thread https://redhat-internal.slack.com/archives/C046JULBVJ7/p1747404842118619

      Attached OVN DBS and OVS DBs from gateway chassis node and both compute nodes where VMs located

              mtomaska@redhat.com Miro Tomaska
              ykarel@redhat.com Yatin Karel
              rhos-dfg-networking-squad-neutron
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated: