OVS: flow loop is created with openvswitch version 2.16
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Opinion
|
High
|
Unassigned |
Bug Description
* Summary
neutron-
* High level description
Running Neutron in Xena release using the openvswitch plugin is causing a flow loop when using openvswitch version 2.16. This does not occur when deploying openvswitch version 2.15.
* Pre-conditions
Ansible-Kolla based deployment using "source: ubuntu" in stable/xena release. neutron_
* Version:
** OpenStack version: Xena
** Linux distro: kolla-ansible stable/xena, Ubuntu 20.04.4 LTS
* Step-by-step
1. Deploy Openstack using kolla-ansible from stable/xena branch
2. Create a project network/subnet for Octavia
3. Create Octavia health-manager ports in Neutron for the 3 control nodes
4. Create the ports on each control node as ovs bridge ports
5. Assign IP addresses to the o-hm0 interfaces on all 3 nodes
6. try to ping one node from another node
ubuntu@ctl1:~$ openstack network show lb-mgmt
+------
| Field | Value |
+------
| admin_state_up | UP |
| availability_
| availability_zones | nova |
| created_at | 2022-04-
| description | |
| dns_domain | None |
| id | c0c1b3ec-
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | None |
| is_vlan_transparent | None |
| mtu | 1450 |
| name | lb-mgmt |
| port_security_
| project_id | 6cbb86e577a0424
| provider:
| provider:
| provider:
| qos_policy_id | None |
| revision_number | 2 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | bf004f5a-
| tags | |
| updated_at | 2022-04-
+------
ubuntu@ctl1:~$ openstack subnet show lb-mgmt
+------
| Field | Value |
+------
| allocation_pools | 172.16.
| cidr | 172.16.0.0/16 |
| created_at | 2022-04-
| description | |
| dns_nameservers | |
| dns_publish_
| enable_dhcp | True |
| gateway_ip | 172.16.0.1 |
| host_routes | |
| id | bf004f5a-
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | lb-mgmt |
| network_id | c0c1b3ec-
| project_id | 6cbb86e577a0424
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2022-04-
+------
openstack port list --device-owner octavia:health-mgrr
+------
| ID | Name | MAC Address | Fixed IP Addresses | Status |
+------
| b0c8a28b-
| cfdb1171-
| ea66498a-
+------
ubuntu@ctl1:~$ ip a s o-hm0
10: o-hm0: <BROADCAST,
link/ether fa:17:20:16:00:11 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.11/16 brd 172.16.255.255 scope global o-hm0
valid_lft forever preferred_lft forever
inet6 fe80::f817:
valid_lft forever preferred_lft forever
ubuntu@ctl1:~$ ovs-vsctl --columns name,external-
name : o-hm0
external_ids : {attached-
ofport : 4
error : []
ubuntu@ctl3:~$ ip a s o-hm0
9: o-hm0: <BROADCAST,
link/ether fa:17:20:16:00:13 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.13/16 brd 172.16.255.255 scope global o-hm0
valid_lft forever preferred_lft forever
inet6 fe80::f817:
valid_lft forever preferred_lft forever
ubuntu@ctl3:~$ ovs-vsctl --columns name,external-
name : o-hm0
external_ids : {attached-
ofport : 3
error : []
ubuntu@ctl1:~$ ping 172.16.0.13
PING 172.16.0.13 (172.16.0.13) 56(84) bytes of data.
^C
--- 172.16.0.13 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1025ms
ctl1:/var/
2022-04-
2022-04-
bridge("br-int")
----------------
0. priority 0, cookie 0x557db8f9194e8693
goto_table:60
60. priority 3, cookie 0x557db8f9194e8693
NORMAL
>>>> received packet on unknown port 6 <<<<
>> no input bundle, dropping
Final flow: unchanged
Megaflow: recirc_
Datapath actions: drop
2022-04-
2022-04-
2022-04-
2022-04-
2022-04-
bridge("br-int")
----------------
0. priority 0, cookie 0x557db8f9194e8693
goto_table:60
60. priority 3, cookie 0x557db8f9194e8693
NORMAL
>>>> received packet on unknown port 6 <<<<
>> no input bundle, dropping
Final flow: unchanged
Megaflow: recirc_
Datapath actions: drop
Is "fa:17:20:00:00:00" an overridden 'base_mac' config on your env? Did you try with default one?
What's the port with ofport 6 on ctl1?
Did you compare OVS flows on br-int and br-tun for working and non-working case?