DVR: floating IPs not working if initially associated with non-bound port
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
High
|
Lynn | ||
Kilo |
New
|
Undecided
|
Unassigned |
Bug Description
Floating agent gw port is only created for compute host when floating ip is associated with a VM resided on this host [1].
If associate neutron port with floating ip before booting a VM with that port, floating agent gw port won't be created (in case this is the first VM scheduled to a compute host).
In that case l3 agent on compute host will receive router info with floating ip but no floating agent gw port: it will subscribe the router for fip namespace [2] but namespace itself won't be created [3]:
[dvr_router.py]
def create_
if floating_ips:
if is_first and fip_agent_port:
if 'subnets' not in fip_agent_port:
...
Since l3 agent already subscribed the router for fip_ns it won't ever create fip namespace for that router - this results in floating ips not working anymore for ANY subsequent VMs on that compute host, no matter if floating ip was associated with a VM or with a non-binded port (later associated with a VM).
I see two possible fixes:
- add callback for PORT UDATE event to dvr server code to react on port with floating ip being associated with a VM.
This seems not optimal given lots of checks needed in the callback which will be called fairly often.
- l3 agent on a compute host should request floating agent gw creation by rpc in case it receives router info with floating ips but no floating agent gateway. There is already such a method in agent to plugin rpc interface which now seems not used anywhere except tests. I'm not seeing any cons here so that's what I'm going to propose.
[1] https:/
[2] https:/
[3] https:/
summary: |
- DVR: floating IPs not working if initially associated with non-binded + DVR: floating IPs not working if initially associated with non-bound port |
Changed in neutron: | |
assignee: | Swaminathan Vasudevan (swaminathan-vasudevan) → Lynn (lynn-li) |
Changed in neutron: | |
assignee: | Lynn (lynn-li) → Swaminathan Vasudevan (swaminathan-vasudevan) |
Changed in neutron: | |
assignee: | Swaminathan Vasudevan (swaminathan-vasudevan) → Lynn (lynn-li) |
tags: | removed: kilo-backport-potential |
Changed in neutron: | |
milestone: | none → liberty-2 |
status: | Fix Committed → Fix Released |
Changed in neutron: | |
milestone: | liberty-2 → 7.0.0 |
This bug seems to be a duplicate of #1445255