name resolution error with DVR+HA routers
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
Medium
|
Armando Migliaccio |
Bug Description
Steps to repro:
* Deploy with multiple DHCP agents per network (e.g. 3) and multiple L3 agents per router (e.g. 2)
* Create a network
* Create a subnet
* Create a DVR+HA router
* Uplink router to external network
* Deploy a VM on the network
The resolv.conf of the VM looks something like this:
cat /etc/resolv.conf
search openstack.local
nameserver 192.168.0.2
nameserver 192.168.0.4
nameserver 192.168.0.3
Where .2, .3. and .4 are your DHCP servers that relay DNS requests.
Name resolution may fail when using one of these servers, due to the lack of qrouter namespace on one of the network nodes associated with the qdhcp namespace hosting the DHCP service for the network.
Expected behavior:
All nameservers can resolve correctly.
This happens in master and prior versions.
Changed in neutron: | |
importance: | Undecided → Medium |
tags: | added: l3-dvr-backlog |
tags: | added: l3-ha |
tags: | added: l3-ipam-dhcp |
Changed in neutron: | |
status: | New → Confirmed |
description: | updated |
Changed in neutron: | |
assignee: | nobody → Armando Migliaccio (armando-migliaccio) |
status: | Confirmed → In Progress |
Having looked at this myself I have pinpointed this issue to the following problem:
Whenever a DHCP port is created, a qrouter namespace should be provisioned alongside the qdhcp namespace hosting the DHCP port. When DVR+HA routers are involved it looks like a conditional in the l3_hamode_db mixin (which is not triggered in any other case) prevents the server from returning a non-empty list of routers to the node running L3/DHCP agent, and thus kick off the provisioning of the qrouter namespace.