L3 Agent in DVR mode is removing FIP namespace on startup
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
High
|
Oleg Bondarev |
Bug Description
Rrestarting the L3 agent in DVR mode is causing the VM network downtime for configured floating IP.
The responsible for this situation is removing of FIP namespace at startup.
The reproduction steps:
1. Configure Openstack to have tenant network and external network with Floating IPs.
2. Launch VM and assign floating IP to it.
3. Ping the VM from external network machine.
4. Restart the L3 Agent on compute node where VM was placed.
5. You can observe that few pings are lost.
I guess the problem is at startup when network namespace are parsed, and the FIP namespace is not included in L3 server message - so it is treated as stale and removed.
The traceback when I raise exception in /neutron/
2015-08-06 06:35:28.469 DEBUG neutron.
2015-08-06 06:35:28.469 DEBUG neutron.
2015-08-06 06:35:28.469 DEBUG neutron.
Traceback (most recent call last):
File "/usr/local/
self.
File "/usr/local/
result = function(*args, **kwargs)
File "/usr/local/
service.start()
File "/opt/openstack
self.
File "/opt/openstack
self.
File "/opt/openstack
self.
File "/opt/openstack
self.
File "/opt/openstack
ns.delete()
File "/opt/openstack
raise TypeError("ss")
TypeError: ss
full log here:
http://
Changed in neutron: | |
assignee: | nobody → Oleg Bondarev (obondarev) |
tags: | added: l3-dvr-backlog |
tags: | added: l3-ipam-dhcp |
Changed in neutron: | |
importance: | Medium → High |
Changed in neutron: | |
milestone: | none → liberty-3 |
status: | Fix Committed → Fix Released |
Changed in neutron: | |
milestone: | liberty-3 → 7.0.0 |
The bug was introduced by me in commit 46608806aa7a9c6 0214e28429ca5a8 b87b2a15de.
The difference of fip namespace is that it's name is "fip-<external network id>" as opposed to qrouter and snat namespaces where id is taken from the router. On resync agent keeps only namespaces which ids are known routers ids. FIP namespace is removed because it's id is not known router id. Will come up with the fix shortly.