Missing flows with ovs dvr after openvswitch restart
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
Medium
|
LIU Yulong |
Bug Description
Certain flows are missing in a distributed openstack setup after restart of openvswitch.
I have tested this on openstack ussuri deployed with kolla-ansible on ubuntu bionic, so there is a chance that this has been either been fixed or is caused by specifics of the deployment.
## Steps to reproduce
There might be a simpler reproducer, but this is what I did:
* Setup a distributed openstack with at least one control node and two compute nodes
* Configure neutron with OVS and DVR
* Configure octavia with amphora driver
* Setup an external network as floating ip pool
* Create an instance with an http server
* Create a loadbalancer with an http listener/pool
* Add the instance as pool member to the loadbalancer
* Attach a floating IP to the loadbalancer's virtual IP
* Make sure that the loadbalancer amphora and the instance are on different compute nodes
* Ensure that you can make an http request, e.g.:
```
# curl -I http://
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Fri, 27 Jan 2023 15:00:00 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 27 Jan 2023 13:45:11 GMT
ETag: "63d3d567-264"
Accept-Ranges: bytes
0 612 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
```
* Restart openvswitch
```
# docker restart openvswitch_
openvswitch_
```
* Observe that the connection fails with, e.g.:
```
# curl -I http://
% Total % Received % Xferd Average Speed Time Time Time Current
0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0
curl: (7) Failed to connect to ${FLOATING_IP} port 80: No route to host
```
* Connections will re-establish only after restarting neutron-
## Flows before and after restart of openvswitch
Looking at the flows on the controller node on the tunnel bridge one can see, that flows are missing after restarting openvswitch:
```
# docker exec openvswitch_
# docker restart openvswitch_
openvswitch_
# docker exec openvswitch_
# awk '{print $3" "$(NF)}' < before_
# awk '{print $3" "$(NF)}' < after_ovs_
# diff before_
3,4d2
< table=0, actions=
< table=0, actions=
6,7d3
< table=1, actions=drop
< table=1, actions=
13d8
< table=4, actions=
20,22d14
< table=20, actions=
< table=20, actions=
< table=20, actions=
24,25d15
< table=21, actions=
< table=21, actions=
27,28d16
< table=22, actions=drop
< table=22, actions=
```
Please let me know if you need more information. I also have a heat stack which automates the openstack resource part of the reproducer, in case this makes things easier.
Changed in neutron: | |
assignee: | nobody → LIU Yulong (dragon889) |
importance: | Undecided → Medium |
Seems this is duplicated to this bug: /bugs.launchpad .net/neutron/ +bug/1978088
https:/